CPU 上での XGBoost、LightGBM、CatBoost 推論の高速化

同カテゴリーの次の記事

Microsoft* Azure* 上にセキュアな Kubeflow* パイプラインを構築

この記事は、The Parallel Universe Magazine 54 号に掲載されている「Faster XGBoost, LightGBM, and CatBoost* Inference on the CPU」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。


parallel_v54_04

最近は生成 AI の人気が高まっていますが、決定木で勾配ブースティングを使用することが表形式データを処理する最適な方法であることに変わりはありません。ほかの多くの技術やニューラル・ネットワークと比較した場合でも、より高い精度を提供します。XGBoost、LightGBM、および CatBoost 勾配ブースティングは、現実世界のさまざまな問題の解決、研究、Kaggle コンペティションで幅広く利用されています。これらのフレームワークは、デフォルトの設定でも優れたパフォーマンスを提供しますが、推論スピードには向上の余地があります。推論はマシンラーニング・ワークフローの最も重要なステージであることを考慮すると、パフォーマンス向上によってもたらされる利点は少なくありません。

次の例は、品質を損なうことなく、より高速な予測を得るためにモデルを変換する方法を示しています (表 1)。


表 1. daal4py の推論パフォーマンスと XGBoost、LightGBM、および CatBoost の比較。色分けは各列の最良のケースと最悪のケースを示し、値が大きいほどパフォーマンスが優れていることを示します。

oneDAL のアップデート

推論の高速化に関する前回の記事 (43 号の「XGBoost と LightGBM 推論パフォーマンスの向上」) から数年が経過し、以下のような変更と改善が行われました。

  1. API の簡素化および勾配ブースティング・フレームワークとの連携
  2. CatBoost モデルのサポート
  3. 欠損値のサポート
  4. パフォーマンスの向上

API の簡素化および勾配ブースティング・フレームワークとの連携

メソッドが convert_model() と predict() のみになり、最小限の変更で既存のコードに簡単に統合できます。

トレーニング済みモデルを daal4py に変換することもできます。

XGBoost:
d4p_model = d4p.mb.convert_model(xgb_model)

LightGBM:
d4p_model = d4p.mb.convert_model(lgb_model)

CatBoost:
d4p_model = d4p.mb.convert_model(cb_model)

scikit-learn* 形式の推定器もサポートされました。

from daal4py.sklearn.ensemble import GBTDAALRegressor
reg = xgb.XGBRegressor()
reg.fit(X, y)
d4p_predt = GBTDAALRegressor.convert_model(reg).predict(X)

アップデートされた API では、XGBoost、LightGBM、および CatBoost モデルをすべて 1 カ所で使用できます。メイン・フレームワークの場合と同様に、分類と予測の両方に同じ predict() メソッドを使用することもできます。詳細は、ドキュメント (英語) を参照してください。

CatBoost モデルのサポート

daal4py に CatBoost モデルのサポートを追加すると、勾配ブースティング・タスクの処理におけるライブラリーの汎用性と効率を大きく向上させました。CatBoost (Categorical Boosting の略)は、卓越したスピードとパフォーマンスで知られていますが、daal4py アクセラレーションを使用することで、さらに高速に処理できます (注: カテゴリー特徴は推論ではサポートされていません)。CatBoost のサポートにより、daal4py は、最も一般的な 3 つの勾配ブースティング・フレームワークをサポートしました。

関連記事