IBM watsonx.aiRuntime の外部でトレーニングされた機械学習モデルをインポートして、モデルをデプロイしてテストできるようにします。 モデルのインポートに使用できるモデル・フレームワークを確認します。
ここで、 トレーニング済みモデルをインポートする は以下を意味します:
- 学習済みモデルをwatsonx.aiRuntime リポジトリに保存する
- オプション:ストアドモデルをwatsonx.aiRuntime サービスにデプロイする
また、 リポジトリー は、 Cloud Object Storage バケットを意味します。 詳しくは、 デプロイメント・スペースの作成を参照してください。
以下の方法でモデルをインポートできます。
詳しくは、以下を参照してください。
Python クライアントを使用してプログラムでモデルを追加する方法の例については、このノートブックを参照してください。
REST APIを使用してプログラムでモデルを追加する方法の例については、以下のノートブックを参照してください。
フレームワーク・タイプごとにモデルをインポートするために使用可能な方法
この表は、フレームワークの種類ごとに、watsonx.aiRuntime にモデルをインポートする方法を示したものです。
import オプション | Spark MLlib | Scikit-learn | XGBoost | TensorFlow | PyTorch |
---|---|---|---|---|---|
モデル・オブジェクトのインポート | ✓ | ✓ | ✓ | ||
ファイルへのパスを使用したモデルのインポート | ✓ | ✓ | ✓ | ✓ | |
ディレクトリーへのパスを使用したモデルのインポート | ✓ | ✓ | ✓ | ✓ |
UI を使用したモデルの追加
PMML 形式でモデルをインポートする場合は、モデルの .xml
ファイルを直接インポートできます。
UI を使用してモデルをインポートするには、以下のようにします。
- watsonx.aiRuntime のスペースのAssetsタブで、Import assets をクリックします。
- 「ローカル・ファイル」 に移動し、 「モデル」を選択します。
- インポートするモデル・ファイルを選択し、 「インポート」をクリックします。
インポート・メカニズムは、 .xml
ファイル内のバージョン・ストリングに基づいて、一致するモデル・タイプとソフトウェア仕様を自動的に選択します。
モデル・オブジェクトのインポート
このインポート方式は、限られた数の ML フレームワークによってサポートされます。 詳しくは、 フレームワーク・タイプごとにモデルをインポートするために使用可能な方法を参照してください。
モデル・オブジェクトをインポートするには:
- モデルがリモート・ロケーションにある場合は、 リモート・ロケーションに保管されているモデルのダウンロードに従ってください。
- モデルオブジェクトをwatsonx.aiRuntime リポジトリに保存します。 詳しくは、 watsonx.aiRuntime リポジトリにモデルを保存するをご覧ください。
ファイルへのパスを使用したモデルのインポート
このインポート方式は、限られた数の ML フレームワークによってサポートされます。 詳しくは、 フレームワーク・タイプごとにモデルをインポートするために使用可能な方法を参照してください。
ファイルへのパスを使用してモデルをインポートするには、以下のようにします。
モデルがリモート・ロケーションにある場合は、 リモート・ロケーションに保管されているモデルのダウンロード に従ってダウンロードします。
モデルがローカルに配置されている場合は、特定のディレクトリーに置いてください:
!cp <saved model> <target directory> !cd <target directory>
scikit-learn、 XGBoost、 Tensorflow、および PyTorch の各モデルでは、ダウンロードしたファイルが
.tar.gz
アーカイブではない場合、アーカイブを作成します:!tar -zcvf <saved model>.tar.gz <saved model>
モデル・ファイルは、ディレクトリーの最上位フォルダーになければなりません。以下に例を示します。
assets/ <saved model> variables/ variables/variables.data-00000-of-00001 variables/variables.index
保存したファイルへのパスを使用して、モデルファイルをwatsonx.aiRuntime リポジトリに保存します。 詳しくは、 watsonx.aiRuntime リポジトリにモデルを保存するをご覧ください。
ディレクトリーへのパスを使用したモデルのインポート
このインポート方式は、限られた数の ML フレームワークによってサポートされます。 詳しくは、 フレームワーク・タイプごとにモデルをインポートするために使用可能な方法を参照してください。
ディレクトリーへのパスを使用してモデルをインポートするには、以下のようにします。
モデルがリモート・ロケーションにある場合は、 リモート・ロケーションに保存されているモデルのダウンロードを参照してください。
モデルがローカルに配置されている場合は、特定のディレクトリーに置いてください:
!cp <saved model> <target directory> !cd <target directory>
scikit-learn、 XGBoost、 Tensorflow、および PyTorch モデルの場合、モデル・ファイルはディレクトリーの最上位フォルダーになければなりません。以下に例を示します。
assets/ <saved model> variables/ variables/variables.data-00000-of-00001 variables/variables.index
モデルファイルをwatsonx.aiRuntime リポジトリに保存するには、ディレクトリパスを使用します。 詳しくは、 watsonx.aiRuntime リポジトリにモデルを保存するをご覧ください。
リモート・ロケーションに保存されているモデルのダウンロード
以下のサンプル・コードに従って、リモート・ロケーションからモデルをダウンロードします:
import os
from wget import download
target_dir = '<target directory name>'
if not os.path.isdir(target_dir):
os.mkdir(target_dir)
filename = os.path.join(target_dir, '<model name>')
if not os.path.isfile(filename):
filename = download('<url to model>', out = target_dir)
モデルをインポートする際の考慮事項
特定のモデル・タイプのインポートについて詳しくは、以下を参照してください。
watsonx.aiRuntime で使用できるフレームワークの詳細については、サポートされているフレームワークをご覧ください。
PMML 形式で保存されたモデル
- PMML からインポートされるモデルに使用可能なデプロイメント・タイプは、オンライン・デプロイメントのみです。
- PMML ファイルのファイル拡張子は
.xml
でなければなりません。 - PMML モデルを SPSS ストリーム・フローで使用することはできません。
- PMML ファイルにはプロローグを含めることはできません。 モデルの保存時に使用しているライブラリーによっては、デフォルトでプロローグがファイルの先頭に追加される場合があります。 例えば、ファイルに
spark-mllib-lr-model-pmml.xml
などのプロローグ・ストリングが含まれている場合は、PMML ファイルをデプロイメント・スペースにインポートする前に、そのストリングを削除してください。
モデルの保存時に使用しているライブラリーによっては、以下の例のように、デフォルトでプロローグがファイルの先頭に追加される場合があります。
::::::::::::::
spark-mllib-lr-model-pmml.xml
::::::::::::::
PMML ファイルをwatsonx.aiRuntime にインポートする前に、このプロログを削除する必要があります。
Spark MLlib モデル
- 使用できるのは、分類モデルと回帰モデルのみです。
- カスタム変換プログラム、ユーザー定義関数、およびクラスは使用できません。
Scikit-learn モデル
.pkl
および.pickle
は、使用可能なインポート形式です。- モデルをシリアライズまたはピックするには、
joblib
パッケージを使用します。 - 使用できるのは、分類モデルと回帰モデルのみです。
predict()
API の Pandas データ・フレーム入力タイプは使用できません。- scikit-learn モデルに使用できるデプロイメント・タイプは、オンライン・デプロイメントのみです。
XGBoost モデル
.pkl
および.pickle
は、使用可能なインポート形式です。- モデルをシリアライズまたはピックするには、
joblib
パッケージを使用します。 - 使用できるのは、分類モデルと回帰モデルのみです。
predict()
API の Pandas データ・フレーム入力タイプは使用できません。- XGBoost モデルで使用可能なデプロイメント・タイプは、オンライン・デプロイメントのみです。
TensorFlow モデル
.pb
、.h5
、および.hdf5
は、使用可能なインポート形式です。- TensorFlow モデルを保存またはシリアライズするには、
tf.saved_model.save()
メソッドを使用します。 tf.estimator
は使用できません。- TensorFlow モデルで使用可能なデプロイメント・タイプは、オンライン・デプロイメントとバッチ・デプロイメントのみです。
PyTorch モデル
PyTorch モデルに使用可能なデプロイメント・タイプは、オンライン・デプロイメントのみです。
Pytorch モデルをwatsonx.aiRuntime にインポートするには、事前に '
.onnx
フォーマットにエクスポートしておく必要があります。 このコードを参照してください。torch.onnx.export(<model object>, <prediction/training input data>, "<serialized model>.onnx", verbose=True, input_names=<input tensor names>, output_names=<output tensor names>)
watsonx.aiランタイムリポジトリにモデルを保存する
このコードを使用して、モデルをwatsonx.aiRuntime リポジトリに保存します:
from ibm_watson_machine_learning import APIClient
client = APIClient(<your credentials>)
sw_spec_uid = client.software_specifications.get_uid_by_name("<software specification name>")
meta_props = {
client.repository.ModelMetaNames.NAME: "<your model name>",
client.repository.ModelMetaNames.SOFTWARE_SPEC_UID: sw_spec_uid,
client.repository.ModelMetaNames.TYPE: "<model type>"}
client.repository.store_model(model=<your model>, meta_props=meta_props)
注記:
使用されるモデル・フレームワークに応じて、
<your model>
は、実際のモデル・オブジェクト、保存されたモデル・ファイルへの絶対パス、またはモデル・ファイルが配置されているディレクトリーへのパスになります。 詳しくは、 フレームワーク・タイプごとにモデルをインポートするために使用可能な方法を参照してください。<software specification name>
として使用する使用可能なソフトウェア仕様のリストについては、client.software_specifications.list()
メソッドを使用してください。model_type
として使用できるモデル・タイプのリストについては、 デプロイメントのためのソフトウェア仕様とハードウェア仕様を参照してください。Pytorch モデルを '
.onnx
フォーマットにエクスポートするときは、'keep_initializers_as_inputs=True
フラグを指定し、'opset_version
を 9 に設定しますwatsonx.aiランタイムのデプロイメントでは、'caffe2
ONNX ランタイムを使用します。)torch.onnx.export(net, x, 'lin_reg1.onnx', verbose=True, keep_initializers_as_inputs=True, opset_version=9)
親トピック: デプロイメント・スペース内のアセット