LightGBM v4
Created by

発表時間
勉強会日時
2023/07/20
概要
LightGBM v4では、CUDA実装が全面的に書き換えられ、GPU上での演算が増え、CPU上でのトレーニング速度が向上した。また、Pythonパッケージではscikit-build-coreをビルドバックエンドとして使用し、多くの新しい機能が追加された。Rパッケージでも、より多くのデータ型がサポートされ、より使いやすいインターフェースが提供されるようになった。
Summary of improvements:
- totally-rewritten CUDA implementation, and more operations in the CUDA implementation performed on the GPU
- quantized training can be used for greatly improved training speeds on CPU (paper link)
- support for C++17
- Python package:
- now uses
scikit-build-core
(link) as its build backend manylinux_2_28
Linux wheels now support GPU (OpenCL-based, not CUDA) build automatically... justpip install lightgbm
then pass{"device": "gpu"}
in params (thanks @jgiannuzzi!)- much more use of inline type hints, exported with
py.typed
so any code using LightGBM can benefit - support for Python 3.10, 3.11
- support for
pandas
nullable types - configurable threshold (
lgb.early_stopping(..., min_delta=n)
) for how much eval metrics must improve to be considered "improved" for early stopping - custom objective functions in Dask
scikit-learn
is no longer a required dependency- all callbacks are now pickleable (for better interoperability with e.g.
ray
, Dask) (thanks @Yard1!)
- R package:
- efficient support for more data types in prediction, like
dgCMatrix
anddsparseMatrix
(thanks @david-cortes!) - much more idomatic interface... e.g. support for
saveRDS()
andreadRDS()
forBooster
,print()
andsummary()
methods forDataset
(thanks @david-cortes!) - various bug fixes related to multiple competing ways to provide parameters
- support for R 4.2, 4.3
改善点のまとめ:
CUDA実装を全面的に書き換え、GPU上で実行されるCUDA実装の演算を増やした。
量子化されたトレーニングを使用することで、CPU上でのトレーニング速度が大幅に向上(論文リンク)
C++17のサポート
Pythonパッケージ:
ビルドバックエンドとしてscikit-build-core (リンク)を使用するようになりました。
manylinux_2_28 LinuxホイールがGPU(OpenCLベース、CUDAではない)ビルドを自動的にサポートするようになりました...pip install lightgbmし、paramで{"device": params に {"device": "gpu"} を渡すだけだ(@jgiannuzzi に感謝!)。
py.typedでエクスポートされるインライン型ヒントをより多く使えるようになったので、LightGBMを使う全てのコードが恩恵を受けられる。
Python 3.10, 3.11 をサポート。
pandas の nullable 型のサポート
設定可能な閾値(lgb.early_stopping(..., min_delta=n))が追加されました。
Daskのカスタム目的関数
scikit-learnはもはや必須の依存関係ではない
すべてのコールバックが pickleable になった (ray や Dask などとの相互運用性が向上した) (@Yard1 に感謝!)
Rパッケージ:
dgCMatrix や dsparseMatrix のような予測におけるより多くのデータ型を効率的にサポートするようになった (@david-cortes ありがとう!)。
例えば、BoosterのsaveRDS()とreadRDS()、Datasetのprint()とsummary()メソッドをサポートした。
複数の競合するパラメータ提供方法に関する様々なバグ修正。
R 4.2、4.3をサポート。