基于numba的实验性梯度提升机器
项目描述
pygbm

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文档可在以下位置找到:
您还可以查看此存储库中的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的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 563184b56759daafcb9f4b81ac1ad264307aecb636cb1f9fc5c99876feed753c |
|
MD5 | 9f94c5795c1ff5b3ec767261cc4fedba |
|
BLAKE2b-256 | dad1b71d06888f0c6a6f45f0592f90ed1c07e7041a99ba2fc389d59302958862 |