LightGBM v4
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 (link) as its build backend
- Linux wheels now support GPU (OpenCL-based, not CUDA) build automatically... just then pass in params (thanks @jgiannuzzi!)
- much more use of inline type hints, exported with so any code using LightGBM can benefit
- support for Python 3.10, 3.11
- support for nullable types
- configurable threshold () for how much eval metrics must improve to be considered "improved" for early stopping
- custom objective functions in Dask
- is no longer a required dependency
- all callbacks are now pickleable (for better interoperability with e.g. , Dask) (thanks @Yard1!)
- R package:
- efficient support for more data types in prediction, like and (thanks @david-cortes!)
- much more idomatic interface... e.g. support for and for , and methods for (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をサポート。