0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CP4DaaSのプロジェクトにONNX形式のモデルをインポートする

Last updated at Posted at 2025-06-23

目次

1.はじめに
2.ONNXモデルをプロジェクトに資産として保存する
3.作成したONNXモデルを別プロジェクトに資産としてインポートする
4.インポートしたモデルに対してスコアリングを実行する
5.おわりに

1. はじめに

本記事では、IBM Cloud上で提供される Cloud Pak for Data as a Service(以降CP4DaaSと表記)において、ONNX形式のモデルをプロジェクト資産として登録する方法についてご紹介します。

2. ONNXモデルをプロジェクトに資産として保存する

CP4DaaS上においてNotebookで機械学習モデルを作成し、その作成したモデルをプロジェクトに資産として保存する方法についてご紹介します。

今回は、NotebookでLightGBMのモデルを作成したケースです。LightGBMのモデルをCP4DaaSに直接保存することはできませんが、ONNX形式へ変換することで保存・デプロイが可能です。

LightGBMモデルの作成とONNX形式への変換については、IBMが提供しているこちらのサンプルノートブックをもとに行います。

前提として、Notebookの先頭にプロジェクト・トークンを挿入しておく必要があります。
image.png

2-1.LightGBMのモデルを作成する

LightGBMモデルを作成し、トレーニングします。
まずサンプルデータ(Irisデータセット)を読み込み、訓練用とテスト用に分割します。

iris = datasets.load_iris()
x, y = iris.data, iris.target
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.20, random_state=42)

そしてIrisデータを使ってLightGBMモデルをトレーニングします。

model = LGBMClassifier(objective='multiclass')
model.fit(x_train, y_train)

最後にトレーニング済みのモデルに対し、テストデータの一部を使って予測を実行します。

eval_data = x_test[:3]
model.predict(eval_data)

2-2.モデルをONNX形式に変換する

そしてここからは、LightGBMモデルを作成した後の手順です。
まず必要なライブラリを読み込みます。

import json
import getpass
import onnx
import onnxruntime as ort
from ibm_watsonx_ai import APIClient, Credentials
from lightgbm import LGBMClassifier
from onnxmltools import convert_lightgbm
from onnxmltools.utils import save_model
from skl2onnx.common.data_types import FloatTensorType
from sklearn import datasets
from sklearn.model_selection import train_test_split

つぎに、モデルをONNX形式に変換します。

initial_types = [("float_input", FloatTensorType([None, best_model.n_features_]))]
onnx_model = convert_lightgbm(model=best_model, initial_types=initial_types, zipmap=False, target_opset=9)

2-3.ONNX形式のモデルをプロジェクトに保存する

そして、プロジェクトのデータ資産へモデルを保存します。
image.png

onnx_model_filename = f"任意のファイル名.onnx"
save_model(onnx_model, onnx_model_filename)
wslib.upload_file(onnx_model_filename, overwrite=True)

上記のセルを実行すると、プロジェクトに.onnxのファイルが資産として保存されます。image.png

続いては、プロジェクト資産に機械学習モデルを追加します。
まずはwatsonx.ai Runtime レポジトリに保存するためにモデルをzip化します。
image.png

onnx_model_zip = "任意のファイル名.zip"
!zip {onnx_model_zip} {onnx_model_filename}

つぎに、現在サポートされるONNX形式用のソフトウェア仕様を確認し、指定します。サポートされるバージョンは随時更新されるため、都度確認が必要です。
こちらの公式ドキュメントよりご確認いただけます。

image.png
今回はモデルタイプ:onnxruntime_1.16、ソフトウェア仕様:onnxruntime_opset_19を指定します。

sofware_spec_id = watsonx_ai_client.software_specifications.get_id_by_name("onnxruntime_opset_19")
model_type = "onnxruntime_1.16"

そして、watsonx.ai Runtime レポジトリにモデルを保存します。

model_props = {
    watsonx_ai_client.repository.ModelMetaNames.NAME: '任意のモデル名_onnx',
    watsonx_ai_client.repository.ModelMetaNames.TYPE: 'onnxruntime_1.16',
    watsonx_ai_client.repository.ModelMetaNames.SOFTWARE_SPEC_ID: sofware_spec_id,
    
published_model_details = watsonx_ai_client.repository.store_model(
    model=任意のファイル名_zip,
    meta_props=model_props,
)

上記のセルを実行すると、プロジェクトに機械学習モデルが資産として保存されます。
スクリーンショット 2025-06-10 170521.png

ちなみに、この「機械学習モデル」の資産はローカルに保存することができず、「カタログに公開」または「スペースへのプロモート」しか選択できません。
スクリーンショット 2025-06-10 170737.png

一方で、.onnxのデータ資産のファイルは「ダウンロード」からローカルに保存することができます。スクリーンショット 2025-06-10 171003.png

この通り、lgbm_model.onnxのファイルをローカルにダウンロードすることができました。
スクリーンショット 2025-06-10 171206.png

3. 作成したONNXモデルを別プロジェクトに資産としてインポートする

ローカル上にあるONNX形式のモデルを、CP4DaaSのプロジェクトにインポートしていきます。

プロジェクトの資産の画面で、「資産のインポート」を押下します。
image.png

資産タイプは「モデル」を選択し、「ローカル・ファイル」を選択します。
image.png

このとき、インポートしたいモデルファイルはZIP形式にしておく必要があります。
image.png

ZIP化されたモデルファイルを選択します。
image.png

「名前」の欄に任意の名前を入力し、「モデル・タイプ」の欄でモデル・タイプを選択します。このとき、アップロードしたモデルファイルに基づくモデル・タイプが自動で提示されるため、ユーザー自身で値を選択する必要はありません。
image.png

最後に「追加」を押下すると、プロジェクトにモデルがインポートされます。
プロジェクトの画面にはこのようにモデルが表示されます。
image.png

4. インポートしたモデルに対してスコアリングを実行する

インポートしたモデルをデプロイし、スコアリングを実行していきます。

まずはプロジェクト内にある機械学習モデルを、スペースにプロモートします。
image.png

プロモートするデプロイメントスペースを選択し、右下の青い「プロモート」ボタンを押下します。
image.png

デプロイメントスペースの資産に機械学習モデルが追加されます。「デプロイ」を選択します。
image.png

デプロイメント・タイプが選択できます。今回はオンラインデプロイメントを作成したいため、「オンライン」を選択します。
そして「名前」の欄に任意の名前を入力し、右下の青い「作成」ボタンを押下します。
image.png

オンラインデプロイメントが作成できました。
image.png

作成したデプロイメントの詳細画面を開き、「テスト」タブを開きます。
image.png

この画面からスコアリングを実行することができます。
JSONの欄に手動でJSON形式のデータを入力し、右下の青い「予測」ボタンを押下します。
image.png

今回使用したデータは以下です。

{
  "input_data": [
    {
      "fields": ["feature1", "feature2", "feature3", "feature4"],
      "values": [
        [5.1, 3.5, 1.4, 0.2],
        [6.2, 2.9, 4.3, 1.3]
      ]
    }
  ]
}

すると、予測結果がこのような画面で表示されます。
image.png

今回の予測結果は以下の通りです。

[
	{
		"id": "label",
		"values": [
			0,
			1
		]
	},
	{
		"id": "probabilities",
		"values": [
			[
				0.9999876022338867,
				0.000011821748557849787,
				6.486750976364419e-7
			],
			[
				0.00001045464159687981,
				0.9996751546859741,
				0.00031440649763680995
			]
		]
	}
]

以上でスコアリング実行は完了です。

5. おわりに

本記事では、CP4DaaSのプロジェクトにONNX形式のモデルをインポートする方法についてご紹介しました。
CP4DaaSにおけるONNXモデルのデプロイの詳細については、以下の公式ドキュメントを参照ください。

「ONNX形式に変換されたモデルの展開」(https://jp-tok.dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/deploy-onnx-overview.html?locale=ja&context=cpdaas&audience=wdp)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?