カスタムモデルコンポーネント¶
カスタムモデルを作成してアップロードするには、2つのコンポーネント、つまりモデルコンテンツと、そのモデルコンテンツが実行される環境を定義する必要があります。
-
モデルコンテンツは、PythonまたはRで記述されたコードです。 DataRobotで正しく解析するには、コードは特定の条件に従う必要があります。 モデルアーティファクトの構造は、モデルで使用されるライブラリと一致する必要があります。 さらに、Python、R、およびJavaモデルに適切な カスタムフックを使用する必要があります。 (オプション)アップロードしてモデルのコードとともに使用するファイルを追加できます(たとえば、カスタムモデルにテキスト前処理が含まれている場合、別のファイルに辞書を追加したい場合があります)。
-
モデル環境は、Dockerファイルと追加のファイルを使用して定義されます。この機能により、DataRobotはモデルが実行されるイメージを構築できます。 さまざまなビルトイン環境があります。ユーザーはLinuxパッケージをインストールする必要がある場合にのみ独自の環境を構築する必要があります。 詳細については、 カスタムモデル環境に関するセクションを参照してください。
高レベルでは、これらのコンポーネントのあるカスタムモデルを定義するステップには以下が含まれます。
-
ローカル(コンピューター)でモデルコンテンツを定義してテストします。
-
(オプション)モデルを実行するコンテナ環境を作成します。
-
モデルコンテンツと環境(該当する場合)をDataRobotにアップロードします。
モデルコンテンツ¶
カスタムモデルを定義するには、以下のテーブルにリストされているファイルを含むローカルフォルダーを作成します(詳細については表を参照してください)。
ヒント
構築済みのカスタムモデルフォルダーのコンテンツが正しいことを確認するために、これらのファイルの例がGitHubの DataRobotモデルテンプレートリポジトリにあります。
ファイル | 説明 | 必須 |
---|---|---|
モデルアーティファクトファイル または custom.py /custom.R ファイル |
モデルアーティファクトおよびカスタムコードファイルを提供します。
|
はい |
model-metadata.yaml |
入/出力データ要件や ランタイムパラメーターを含むモデルのメタデータを記述したファイル。 ブループリントを構築してトレーニングする際にモデルを検証するために使用できるスキーマを供給できます。 スキーマを使用してカスタムモデルがサポートするか出力するかを指定できます。
|
カスタムモデルが非数値データを出力するときに必要です。 提供しない場合、デフォルトスキーマが使用されます。 |
requirements.txt |
基本環境に追加するPythonまたはRパッケージのリスト。 このリストは、カスタムモデルで使用されるが、基本環境には含まれていないPythonまたはRパッケージをプレインストールします。 | いいえ |
追加ファイル | モデルで使用するその他のファイル(たとえば、custom.py 内で使用するヘルパー関数を定義するファイル)。 |
いいえ |
Pythonでは、バージョン(行に1つのパッケージ)でパッケージのリストを提供します。 例:
numpy>=1.16.0, <1.19.0
pandas==1.1.0
scikit-learn==0.23.1
lightgbm==3.0.0
gensim==3.8.3
sagemaker-scikit-learn-extension==1.1.0
Rでは、バージョン(行に1つのパッケージ)でパッケージのリストを提供します。 例:
dplyr
stats
モデルコード¶
DataRobotのフレームワークを使用してカスタムモデルを定義するには、カスタムモデルには、選択した環境言語に対応するモデルアーティファクト、custom.py
(Pythonモデルの場合)またはcustom.R
(Rモデルの場合)ファイルのカスタムコード、またはその両方が含まれている必要があります。 (モデルアーティファクトなしで)カスタムコードのみを指定する場合は、load_model
フックを使用する必要があります。 フックは、カスタムモデルのライフサイクル内の特定の時間中に、カスタムモデルフレームワークによって呼び出される関数です。 以下のフックはカスタムコードで使用できます。
フック(機能) | 非構造化 / 構造化 | 目的 |
---|---|---|
init() |
両方 | モデルライブラリをロードしてモデルファイルを読み取り、モデル実行を初期化します。 このフックは、実行の開始時に1回だけ実行されます。 |
load_model() |
両方 | 複数のアーティファクトからすべてのサポート対象オブジェクトとトレーニング済みオブジェクトをロードするか、DataRobotでネイティブにはサポートされていない形式でアーティファクトに保存されているトレーニング済みオブジェクトをロードします。 このフックは、実行の開始時に1回だけ実行されます。 |
read_input_data() |
構造化 | モデルがデータを読み取る方法をカスタマイズします。例えば、エンコーディングや欠損値の処理などです。 |
transform() |
構造化 | 変換されたデータを生成するために、カスタムのトランスフォーマーおよび推定器で使用されるロジックを定義します。 |
score() |
構造化 | 予測を生成するカスタム推定器で使用するロジックを定義します。 |
score_unstructured() |
非構造化 | カスタム推定器の出力を定義し、出力データに予測を返します。 変換モデルにこのフックは使用しないでください。 |
post_process() |
構造化 | モデルの予測に適用される後処理ステップを定義します。 |
カスタムモデルのフック実行順序
それぞれのフックがカスタムモデルのライフサイクルステップを表すように、これらのフックは、リストされた順序で実行されます。
カスタムモデルのコードの定義に関する詳細については、 構造化カスタムモデルまたは 非構造化カスタムモデルのフックを参照してください。
モデルメタデータ¶
カスタムモデルのメタデータと入力検証スキーマを定義するには、model-metadata.yaml
ファイルを作成し、model/modelディレクトリのトップレベルに追加します。 このファイルでは、runtimeParameterDefinitions
による ランタイムパラメーターなど、カスタムモデルに関する追加情報を指定します。
モデル環境¶
カスタムモデルが実行される環境を定義するための複数のオプションがあります。 以下を実行することが可能です。
-
さまざまな ドロップイン環境から選択します。
-
モデルの
requirements.txt
ファイルでパッケージを指定して、欠損しているPythonパッケージまたはRパッケージを含めるようにドロップイン環境を変更します。 提供された場合、requirements.txt
をモデルコンテンツ内のcustom.py
またはcustom.R
と共にアップロードする必要があります。 モデルコンテンツにサブフォルダーが含まれている場合、上部フォルダーに置く必要があります。 -
Linuxパッケージをインストールする必要がある場合、 カスタム環境を構築してください。
カスタムモデルを作成する場合、使用するカスタム環境にはモデルコンテンツとの互換性がある必要があります(モデルのランタイム環境が定義されます)。 互換性ガイドラインを確実に遵守するには:
-
カスタムモデルとの互換性のある カスタム環境テンプレートを使用または変更します。
-
独自の環境を構築するためのガイドラインを参照してください。 環境テンプレートを使用することをお勧めします。特定のユースケース(DRUMを使用せず、独自の予測サーバーを実装する場合など)を除き、独自の環境を構築することは推奨されません。
-
-
デフォルトでは、モデルのバージョンを作成するとき、選択された実行環境が変更されない場合、その実行環境のバージョンは、より新しい環境のバージョンが利用可能であっても、以前のカスタムモデルのバージョンから維持されます。 カスタムモデルのバージョンが最新バージョンの実行環境を使用するようにする方法の詳細については、 基本実行環境の更新をトリガーするを参照してください。
基本実行環境の更新をトリガーする
新しい環境バージョンが使用可能であっても、実行環境バージョンがカスタムモデルバージョン間で保持される、実行環境バージョン選択のデフォルトの動作をオーバーライドするには、基本環境の設定を一時的に変更する必要があります。 これを行うには、別の基本環境設定を使用して新しいカスタムモデルバージョンを作成してから、目的の基本環境に切り替えて、新しいカスタムモデルバージョンを作成します。 この変更後、カスタムモデルの最新バージョンでは、実行環境の最新バージョンが使用されます。