跳转到主要内容

基于numba的实验性梯度提升机器

项目描述

pygbm 构建状态 codecov python versions

Python中的实验性梯度提升机器。

此项目的目标是评估是否可以在纯Python且高效地实现梯度提升树(可能包含所有LightGBM优化)的直方图分箱,同时保持在纯Python 3.6+中使用numba jit编译器。

pygbm提供了一套与scikit-learn兼容的估计器类,这些类应该可以很好地与scikit-learn的Pipeline和模型选择工具(网格搜索和随机超参数搜索)一起使用。

长期计划包括与dask和dask-ml集成,以在集群上进行离核和分布式拟合。

安装

项目可在PyPI上找到,可以使用pip进行安装。

pip install pygbm

您至少需要Python 3.6。

文档

API文档可在以下位置找到:

https://pygbm.readthedocs.io/

您还可以查看此存储库中的examples/文件夹。

状态

该项目是实验性的。API可能会更改,而不会发出弃用通知。使用风险自担。

我们欢迎在github issue tracker中提供任何反馈

https://github.com/ogrisel/pygbm/issues

运行开发版本

使用pip以“可编辑”模式安装

git clone https://github.com/ogrisel/pygbm.git
cd pygbm
pip install -r requirements.txt
pip install --editable .

使用pytest运行测试

pip install -r requirements.txt
pytest

基准测试

benchmarks文件夹包含一些脚本来评估pygbm各个部分的计算性能。请注意,numba的JIT编译需要时间

性能分析

要分析基准测试,您可以使用snakeviz以交互式HTML报告的形式获取

pip install snakeviz
python -m cProfile -o bench_higgs_boson.prof benchmarks/bench_higgs_boson.py
snakeviz bench_higgs_boson.prof

调试numba类型推断

要检查由给定基准测试脚本调用的numba部分的类型推断步骤的结果

numba --annotate-html bench_higgs_boson.html benchmarks/bench_higgs_boson.py

特别是,检查由snakeviz性能分析报告突出显示的热循环中的数值变量是否具有预期的精度级别(例如,损失计算使用float32,分箱特征值使用uint8等)非常有意义。

基于线程的并行化的影响

一些基准测试可以调用利用内置线程并行性的numba函数,使用@njit(parallel=True)prange循环。在多核机器上,您可以通过显式设置NUMBA_NUM_THREAD环境变量来评估线程并行化的扩展性。例如,尝试

NUMBA_NUM_THREADS=1 python benchmarks/bench_binning.py

vs

NUMBA_NUM_THREADS=4 python benchmarks/bench_binning.py

致谢

Nicolas Hug的工作得到了国家科学基金会(Grant No. 1740305)和DARPA(Grant No. DARPA-BAA-16-51)的支持。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

本发布版没有提供源分布文件。请参阅生成分发存档的教程

构建分布

pygbm-0.1.0-py3-none-any.whl (32.5 kB 查看哈希)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面