LightGBM v4

Created by
Yosuke YoshidaYosuke Yoshida
発表時間
勉強会日時
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... just pip 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 and dsparseMatrix (thanks @david-cortes!)
    • much more idomatic interface... e.g. support for saveRDS() and readRDS() for Boosterprint() and summary() methods for Dataset (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をサポート。