はじめに
この記事では、LightGBMモデルをONNX形式に変換することで、異なるプラットフォーム間での互換性と展開の容易さを向上させるための手順について紹介します。LightGBMモデルの準備、モデルの変換、そして変換されたモデルでの推論についてカバーします。
LightGBMモデルの準備
LightGBMモデルをONNXに変換する前に、必要なライブラリのインストール、データセットの読み込み、そしてモデルのトレーニングを行う必要があります。
必要なライブラリのインストール
最初に、LightGBMを扱うために必要なライブラリをインストールします。
$ pip install lightgbm numpy scikit-learn
データセットの読み込みとモデルのトレーニング
このセクションでは、Irisデータセットを使用してLightGBMモデルをトレーニングするプロセスをデモンストレーションします。Irisデータセットは、3種類のアイリスの花のがくと花弁の長さと幅を表す4つの特徴を持つ150のサンプルから成ります。
次の例では、データセットの読み込みとモデルのトレーニングを行います。
import lightgbm as lgb
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# Load Iris dataset
iris = load_iris()
X = iris.data
y = iris.target
# Split the dataset into train and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Train the LightGBM model
train_data = lgb.Dataset(X_train, label=y_train)
params = {'objective': 'multiclass', 'num_class': 3, 'metric': 'multi_logloss'}
model = lgb.train(params, train_data, num_boost_round=50)
上記のコードでは、必要なライブラリを最初にインポートし、Irisデータセットをロードします。その後、80:20の比率でトレーニングとテスト用にデータセットを分割します。次に、トレーニング用のLightGBMデータセットオブジェクトを作成し、モデルパラメータを設定します。最後に、lgb.train()
関数を使用してモデルをトレーニングします。
LightGBMモデルのONNXへの変換
LightGBMモデルを準備したら、次のステップはONNX形式に変換することです。ONNXは、機械学習モデルを表現するための標準形式を提供し、異なるフレームワークやツールの間での相互運用性を可能にします。
ONNXMLToolsライブラリのインストール
LightGBMモデルをONNXに変換するために、onnxmltools
ライブラリを使用します。このライブラリには、さまざまな機械学習モデルの変換関数が提供されています。次のコマンドを使用してライブラリをインストールします。
$ pip install onnxmltools
変換プロセス
必要なライブラリがインストールされたので、トレーニングされたLightGBMモデルをONNX形式に変換することができます。次の例では、変換プロセスをデモンストレーションしています。
import onnxmltools
# Convert the LightGBM model to ONNX
onnx_model = onnxmltools.convert_lightgbm(model)
# Save the ONNX model to a file
onnxmltools.utils.save_model(onnx_model, 'lightgbm_iris.onnx')
上記のコードスニペットでは、onnxmltools
ライブラリをインポートし、convert_lightgbm()
関数を使用してLightGBMモデルをONNXモデルに変換しています。変換が完了したら、ONNXモデルをlightgbm_iris.onnx
というファイルに保存します。
変換されたONNXモデルでの推論
LightGBMモデルがONNX形式に変換されたら、ONNX Runtimeライブラリを使用して推論を実行できます。ONNX Runtimeは高速かつクロスプラットフォームの推論ライブラリで、さまざまなハードウェアアクセラレータやプラットフォームをサポートしています。
ONNX Runtimeのインストール
ONNXモデルを使用して推論を実行するためには、ONNX Runtimeライブラリをインストールする必要があります。
$ pip install onnxruntime
ONNXモデルの読み込みと実行
ONNX Runtimeライブラリがインストールされたので、ONNXモデルをロードし、テストデータセットで推論を実行できます。次の例では、ONNXモデルをロードし、推論を実行しています。
import onnxruntime as rt
import numpy as np
# Load the ONNX model
sess = rt.InferenceSession('lightgbm_iris.onnx')
# Run inference using the ONNX model
input_name = sess.get_inputs()[0].name
output_name = sess.get_outputs()[0].name
# Perform inference on the test dataset
predictions = sess.run([output_name], {input_name: X_test.astype(np.float32)})[0]
# Convert predictions to class labels
predicted_labels = np.argmax(predictions, axis=1)
# Calculate and print the accuracy of the ONNX model
accuracy = np.sum(predicted_labels == y_test) / len(y_test)
print(f"Accuracy of the ONNX model: {accuracy:.2f}")
上記のコードでは、まずONNX Runtimeライブラリをインポートし、InferenceSession
クラスを使用してONNXモデルをロードします。次に、モデルの入力と出力の名前を取得します。その後、sess.run()
メソッドを使用してテストデータセットで推論を実行し、各サンプルのもっとも高い確率を持つクラスを選択して予測結果をクラスラベルに変換します。最後に、予測されたラベルを真のラベルと比較して、ONNXモデルの精度を計算し出力しています。
参考