翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Neptune ML でのカスタムモデル開発
カスタムモデルの開発を開始する良い方法は、以下を実行することです。Neptune ML ツールキットの例
さらに、ツールキットには、モデルトレーニングおよびモデル変換時に必要なアーティファクトを生成するのに役立つユーティリティ関数が用意されています。この Python パッケージは、カスタム実装にインポートできます。ツールキットで提供されている関数またはモジュールは、Neptune ML トレーニング環境でも使用できます。
Python モジュールに外部依存関係が追加されている場合は、モジュールのディレクトリにある requirements.txt
ファイルを指定してこれらの追加依存関係を含めることができます。requirements.txt
ファイルに一覧表示されているこのパッケージは、トレーニングスクリプトが実行される前にインストールされます。
少なくとも、カスタムモデルを実装する Python モジュールには、次のものが含まれている必要があります。
トレーニングスクリプトのエントリポイント
トランスフォームスクリプトのエントリポイント
model-hpo-configuration.json
ファイル
Neptune ML でのカスタムモデルトレーニングスクリプト開発
カスタムモデルトレーニングスクリプトは、Neptune ML ツールキットtrain.py
model-hpo-configuration.json
ファイルから取得します。ハイパーパラメータの値は、ハイパーパラメータが調整可能な場合は有効なハイパーパラメータの範囲内に入るか、調整可能でない場合はデフォルトのハイパーパラメータ値を使用します。
トレーニングスクリプトは、次のような構文を使用して SageMaker トレーニングインスタンスで実行されます。
python3
(script entry point)
--(1st parameter)
(1st value)
--(2nd parameter)
(2nd value)
(...)
すべてのタスクについて、Neptune ML AutoTrainer は、指定したハイパーパラメータに加えて、いくつかの必須パラメータをトレーニングスクリプトに送信しますが、適切に動作させるには、スクリプトがこれらの追加パラメータを処理できる必要があります。
これらの追加必須パラメータは、タスクによって多少異なります。
ノード分類またはノード回帰の場合
-
task
— Neptune ML によって内部的に使用されるタスクタイプ。ノード分類の場合、これはnode_class
であり、ノード回帰についてはnode_regression
です。 -
model
— Neptune ML によって内部的に使用されるモデル名。この場合、custom
です。 -
name
— Neptune ML によって内部的に使用されるタスクの名前。この場合、ノード分類の場合node_class-custom
で、ノード回帰の場合node_regression-custom
です。 -
target_ntype
— 分類または回帰のノードタイプの名前。 -
property
— 分類または回帰のノードプロパティの名前。
リンク予測の場合
-
task
— Neptune ML によって内部的に使用されるタスクタイプ。リンク予測の場合、これはlink_predict
です。 -
model
— Neptune ML によって内部的に使用されるモデル名。この場合、custom
です。 -
name
— Neptune ML によって内部的に使用されるタスク名。この場合、link_predict-custom
です。
エッジ分類またはエッジ回帰の場合
-
task
— Neptune ML によって内部的に使用されるタスクタイプ。エッジ分類の場合、これはedge_class
であり、エッジ回帰についてはedge_regression
です。 -
model
— Neptune ML によって内部的に使用されるモデル名。この場合、custom
です。 -
name
— Neptune ML によって内部的に使用されるタスクの名前。この場合、エッジ分類の場合edge_class-custom
で、エッジ回帰の場合edge_regression-custom
です。 -
target_etype
— 分類または回帰のエッジタイプの名前。 -
property
— 分類または回帰のエッジプロパティの名前。
スクリプトは、モデルのパラメータと、トレーニングの終了時に必要となるその他のアーティファクトを保存する必要があります。
Neptune ML Toolkit ユーティリティ関数を使用して、処理されたグラフデータの場所、モデルパラメータを保存する場所、およびトレーニングインスタンスで使用可能な GPU デバイスを決定できます。フレームワークの使用の詳細については、これらのユーティリティ関数の使用方法の例を示す train.py
Neptune ML でのカスタムモデル変換スクリプト開発
モデルの再トレーニングを行わずに進化するグラフのモデル推論のための Neptune ML 増分ワークフローを利用するには、トランスフォームスクリプトが必要です。モデルのデプロイに必要なすべてのアーティファクトがトレーニングスクリプトによって生成された場合でも、モデルを再トレーニングせずに更新されたモデルを生成する場合は、変換スクリプトを提供する必要があります。
注記
リアルタイムの帰納的推論は、現在、カスタムモデルではサポートされていません。
カスタムモデルトレーニングスクリプトは、Neptune ML ツールキット transform.py
このスクリプトは、次のような構文で SageMaker トレーニングインスタンスで実行されます。
python3
(your transform script entry point)
トランスフォームスクリプトには、次のようなさまざまな情報が必要です。
処理されたグラフデータの場所。
モデルパラメータが保存され、新しいモデルアーティファクトが保存される場所。
そのインスタンスで使用可能なデバイス。
最適なモデルを生成したハイパーパラメータ。
これらの入力は、スクリプトが呼び出すことができる Neptune ML ユーティリティ関数を使用して取得されます。その方法の例としてツールキットのサンプル transform.py
スクリプトは、ノード埋め込み、ノード ID マッピング、および各タスクのモデル展開に必要なその他のアーティファクトを保存する必要があります。さまざまな Neptune ML タスクに必要なモデルアーティファクトの詳細については、モデルアーティファクトのドキュメントを参照してください。
Neptune MLのカスタム model-hpo-configuration.json
ファイル
model-hpo-configuration.json
ファイルは、カスタムモデルのハイパーパラメータを定義します。それは Neptune ML 組み込みモデルで使用される model-hpo-configuration.json
ファイルと同じフォーマットで、Neptune ML によって自動生成され、処理されたデータの場所にアップロードされるバージョンよりも優先されます。
新しいハイパーパラメータをモデルに追加するときは、ハイパーパラメータがトレーニングスクリプトに渡されるように、このファイルにハイパーパラメータのエントリを追加する必要があります。
ハイパーパラメータを調整できるようにするには、ハイパーパラメータの範囲を指定し、tier-1
、tier-2
または tier-3
param に設定します。ハイパーパラメータは、構成されたトレーニングジョブの総数で、階層内のハイパーパラメータの調整ができる場合に調整されます。調整不可能なパラメータの場合は、デフォルト値を指定し、ハイパーパラメータをファイルの fixed-param
セクションに追加します。その方法の例についてはツールキットのサンプルサンプル model-hpo-configuration.json
ファイル
また、SageMaker HyperParameter Optimization ジョブがトレーニングした候補モデルの評価に使用するメトリクス定義も指定する必要があります。これを行うには、次のように eval_metric
JSON オブジェクトを model-hpo-configuration.json
ファイルに追加します。
"eval_metric": { "tuning_objective": { "MetricName": "
(metric_name)
", "Type": "Maximize" }, "metric_definitions": [ { "Name": "(metric_name)
", "Regex": "(metric regular expression)
" } ] },
eval_metric
オブジェクトの metric_definitions
配列は、SageMaker がトレーニングインスタンスから抽出する各指標のメトリクス定義オブジェクトを一覧表示します。各メトリクス定義オブジェクトには、メトリクスの名前 (「精度」、「f1」など) を指定できる Name
キーがあります。Regex
キー を使用すると、特定のメトリックがトレーニングログに出力される方法に一致する正規表現文字列を指定できます。メトリクスの定義方法の詳細については、SageMaker HyperParameter Tuning ページを参照してください。
eval_metric
の tuning_objective
オブジェクトでは、metric_definitions
のどのメトリクスをハイパーパラメータ最適化の目標指標として機能する評価メトリクスとして使用するかを指定できます。MetricName
の値は、metric_definitions
の定義の 1 つである Name
の値と一致する必要があります。メトリクスが greater-is-better (「精度」など) または less-is-better (「平均二乗誤差」など) のどちらで解釈されるべきかに応じて、Type
の値は「最大化」または「最小化」のいずれかになります。
model-hpo-configuration.json
ファイルのこのセクションのエラーは、SageMaker HyperParameter Tuning ジョブが最適なモデルを選択できないため、Neptune ML モデルトレーニング API ジョブが失敗する可能性があります。
Neptune ML でのカスタムモデル実装のローカルテスト
Neptune ML ツールキット Conda 環境を使用して、モデルをテストおよび検証するために、コードをローカルで実行できます。Neptune ノートブックインスタンスで開発している場合、この Conda 環境は Neptune Notebook インスタンスにプレインストールされます。別のインスタンスで開発する場合は、Neptune ML ツールキットのローカルセットアップ手順
Conda 環境は、モデルトレーニング API を呼び出す際にモデルが実行する環境を正確に再現します。トレーニングスクリプトと変換スクリプトの例はすべて、簡単にデバッグできるように、ローカル環境でスクリプトを実行するコマンドライン --local
フラグを渡すことができます。これは、モデルの実装を対話的かつ反復的にテストできるので、独自のモデルを開発する際には良い方法です。Neptune ML プロダクショントレーニング環境でのモデルトレーニング中は、このパラメータは省略されます。