モデル・アーティファクトの準備

モデルをトレーニングした後、モデル・アーティファクトを作成してモデル・カタログにモデルとともに保存する必要があります。

これにより、モデル・メタデータを追跡するためのモデル・アーティファクトの一元化されたストレージが作成されます。

モデル・アーティファクトは、モデル・デプロイメントとしてモデルをデプロイする、またはノートブック・セッションに再度ロードするために必要なファイルのzipアーカイブです。

様々な機械学習フレームワークおよびモデル形式のモデル・アーティファクトを含む様々なモデル・カタログの例が提供されています。ONNX、Scikit-learn、Keras、PyTorch、LightGBMおよびXGBoostモデルの例があります。次のファイルを含むモデル・アーティファクト・テンプレートを取得して開始します:

ファイル 説明
score.py シリアライズされたモデル・オブジェクトをメモリーにロードするためのカスタム・ロジックを含み、推論エンドポイント(predict())を定義します。
runtime.yaml データ・サイエンス・モデル・デプロイメントを使用してモデルをデプロイするときに使用するconda環境について説明します。
README.md モデル・アーティファクトを準備し、モデル・カタログに保存するための一連のステップバイステップの指示を提供します。このステップに従うことを強くお薦めします。
artifact-introspection-test/requirements.txt イントロスペクション・テストを実行する前にローカル環境にインストールする必要があるサードパーティの依存関係をリストします。
artifact-introspection-test/model_artifact_validate.py モデル・アーティファクトをモデル・カタログに保存する前にモデル・アーティファクトに対して実行できるオプションの一連のテスト定義を提供します。これらのモデル・イントロスペクション・テストは、モデル・アーティファクトを準備する際の最も一般的なエラーの多くを取得します。

モデル・アーティファクトのディレクトリ構造は、次の例と一致する必要があります。

.
|-- runtime.yaml
|-- score.py
|--<your-serialized-model>
|--<your-custom-module.py>
重要

score.pyでインポートされるその他のPythonモジュール。推論に使用されるコードは、score.pyと同じレベルまたはファイルの任意のレベルで圧縮することをお薦めします。必要なファイルがscore.pyファイルの前のフォルダ・レベルに存在する場合、ファイルは無視され、デプロイメントが失敗する可能性があります。

score.pyファイル

このファイルには、モデルをメモリーにロードして予測を行うために必要な関数定義が含まれています。

load_model()およびpredict()という2つの関数がコールされます。関数のパラメータはカスタマイズできません。たとえば、エスティメータ・オブジェクトの推論メソッドをコールする前に、predict()でデータ変換を定義できます。複数のエスティメータ・オブジェクトをメモリーにロードし、アンサンブル評価を実行できます。predict()関数は、モデル・デプロイメントの/predictエンドポイントの背後にあります。predict()dataパラメータのデータ型が、モデル・デプロイメントで予想されるペイロード形式と一致していることを確認します。

重要

モデル・デプロイメントでは、JSONペイロードおよびバイトのみがサポートされます。predict()のデータ・パラメータがJSON BLOBまたはバイトであることを確認してください。

ADS (oracle-ads)は、モデル登録フレームワーク固有のクラスを提供します。たとえば、SklearnModelクラスが.prepare()とともに使用されている場合、デフォルトでADSはモデルをjoblibにシリアライズします。XgboostModelを使用すると、デフォルトで.prepare()によってモデルがJSONファイルに保存されます。

score.pyテンプレートは、load_model()を使用してモデル・エスティメータ・オブジェクトを返します。predict()関数は、データおよびload_model()によって返されたモデル・オブジェクトを引数とします。どちらの関数もカスタマイズ可能で、定義が必要です。predict()の本体には、モデル予測が行われる前に、データ変換およびその他のデータ操作タスクを含めることができます。カスタムPythonモジュールは、score.pyでインポートできます(アーティファクト・ファイルで使用可能な場合、またはテンプレートなどの推論目的で使用されるconda環境の一部として使用可能な場合)。

ヒント

predict()で呼び出される他のヘルパー関数は、score.pyで定義できます。たとえば、カスタム変換を定義するdata_transformation()関数を定義できます。

これらのファイルを効果的に作成するには、モデル・アーティファクトのベスト・プラクティスを確認してください。

score.pyファイルを含む様々なモデル・カタログの例およびテンプレートが提供されています。ONNX、scikit-learn、Keras、PyTorch、LightGBMおよびXGBoostモデルの例があります。