ModelOps - 初めてのGITモデルのインポートとデプロイ
概要
これは、ClearScape Analytics ModelOps を初めてご利用になる方を対象としたハウツーです。このチュートリアルでは、ModelOpsで新しいプロジェクトを作成し、必要なデータをVantageにアップロードし、コードテンプレートを使用してModelOpsのGITモデルの方法論に従ってデモモデルのライフサイクルを完全に追跡することができるようになります。
前提条件
-
Teradata VantageインスタンスとClearScape Analytics(ModelOpsを含む)へのアクセス。
-
Jupyter Notebookを実行する機能
Vantage のテスト インスタンスが必要な場合は、 https://clearscape.teradata.com. で無料でプロビジョニングできます。 |
必要なファイル
まず、このチュートリアルに必要なファイルをダウンロードすることから始めましょう。これら4つの添付ファイルをダウンロードし、Notebookのファイルシステムにアップロードしてください。ModelOpsのバージョンに応じてファイルを選択します。
ModelOpsバージョン6(2022年10月):
または、以下のレポをgit cloneしてください。
git clone https://github.com/willfleury/modelops-getting-started
git clone https://github.com/Teradata/modelops-demo-models/
ModelOpsバージョン7 (2023 年 4 月):
git clone -b v7 https://github.com/willfleury/modelops-getting-started.git git clone https://github.com/Teradata/modelops-demo-models/
データベースとJupyter環境のセットアップ
ModelOps_Training Jupyter Notebook に従って、デモに必要なデータベース、テーブル、ライブラリのセットアップを行います。
新しいプロジェクトを作成するか、既存のプロジェクトを使用する
新しいプロジェクトを追加する
-
プロジェクトを作成する
-
詳細
-
名前: Demo: your-name
-
説明: ModelOps Demo
-
グループ: your-name
-
信頼証明: 信頼証明なし
-
ブランチ: master
ここで git 接続をテストできます。緑色の場合は、保存して続行します。ここではサービス接続設定をスキップします。
新しいプロジェクトを作成するとき、ModelOpsは新しい接続をリクエストします。
パーソナル接続を作成する
パーソナル接続
-
名前: Vantage personal your-name
-
説明: Vantage デモ環境
-
ホスト: tdprd.td.teradata.com (teradata transcendの内部のみ)
-
データベース: your-db
-
VAL データベース: TRNG_XSP (teradata transcendの内部のみ)
-
BYOM データベース: TRNG_BYOM (teradata transcendの内部のみ)
-
ログインメカニズム: TDNEGO
-
ユーザー名/パスワード
BYOM の評価とスコアリングのために Vantage テーブルを識別するためのデータセットを追加する
新しいデータセット テンプレートを作成してから、トレーニング用に 1 つのデータセット、評価用に 2 つのデータセットを作成して、2 つの異なるデータセットでモデルの品質メトリクスを監視できるようにしましょう。
データセットの追加
-
データセットテンプレートの作成
-
カタログ
-
名前: PIMA
-
説明: PIMA Diabetes
-
フィーチャカタログ: Vantage
-
データベース: your-db
-
テーブル: aoa_feature_metadata
フィーチャ クエリー:
SELECT * FROM {your-db}.pima_patient_features
エンティティ キー: PatientId フィーチャ: NumTimesPrg、PlGlcConc、BloodP、SkinThick、TwoHourSerIns、BMI、DiPedFunc、Age
エンティティとターゲット クエリー:
SELECT * FROM {your-db}.pima_patient_diagnoses
エンティティキー: PatientId Target: HasDiabetes
予測
-
データベース: your-db
-
表:pima_patient_predictions
エンティティの選択:
クエリー:
SELECT * FROM pima_patient_features WHERE patientid MOD 5 = 0
v6のみ(v7では、これをBYOMのコードなし画面で定義する):BYOMターゲットカラム:CAST(CAST(json_report AS JSON).JSONExtractValue('$.predicted_HasDiabetes')AS INT)
トレーニングデータセットの作成
ベーシック
-
名前: トレーニング
-
説明: トレーニングデータセット
-
スコープ: トレーニング
-
エンティティとターゲット
クエリー:
SELECT * FROM {your-db}.pima_patient_diagnoses WHERE patientid MOD 5 = 1
評価データセット1を作成する
ベーシック
-
名前: Evaluate
-
説明: Evaluate データセット
-
スコープ: Evaluation
-
エンティティとターゲット
クエリー:
SELECT * FROM {your-db}.pima_patient_diagnoses WHERE patientid MOD 5 = 2
評価データセット2を作成する
ベーシック
-
名前: Evaluate
-
説明: Evaluate データセット
-
スコープ: Evaluation
-
エンティティとターゲット
クエリー:
SELECT * FROM {your-db}.pima_patient_diagnoses WHERE patientid MOD 5 = 3
コードテンプレートを準備する
Gitモデルでは、新しいモデルを追加するときに使用可能なコードテンプレートを入力する必要があります。
これらのコードスクリプトは、gitリポジトリのmodel_definitions/your-model/model_modules/に保存されます。
-
init.py: これはPythonモジュールに必要な空のファイルです
-
training.py: このスクリプトには train 関数が含まれています
def train(context: ModelContext, **kwargs):
aoa_create_context()
# your training code
# save your model
joblib.dump(model, f"{context.artifact_output_path}/model.joblib")
record_training_stats(...)
Operationalize Notebookを参照して、ModelOps UI の代替として CLI またはNotebookからこれを実行する方法を確認してください。
-
evaluation.py:このスクリプトには評価関数が含まれています
def evaluate(context: ModelContext, **kwargs):
aoa_create_context()
# read your model
model = joblib.load(f"{context.artifact_input_path}/model.joblib")
# your evaluation logic
record_evaluation_stats(...)
Operationalize Notebookを参照して、ModelOps UI の代わりに CLI またはNotebookからこれを実行する方法を確認してください。
-
scoring.py: このスクリプトにはスコア関数が含まれています
def score(context: ModelContext, **kwargs):
aoa_create_context()
# read your model
model = joblib.load(f"{context.artifact_input_path}/model.joblib")
# your evaluation logic
record_scoring_stats(...)
Operationalize Notebookを参照して、ModelOps UI の代替として CLI またはNotebookからこれを実行する方法を確認してください。
-
requirements.txt:このファイルには、コードスクリプトに必要なライブラリ名とバージョンが含まれています。例:
%%writefile ../model_modules/requirements.txt
xgboost==0.90
scikit-learn==0.24.2
shap==0.36.0
matplotlib==3.3.1
teradataml==17.0.0.4
nyoka==4.3.0
aoa==6.0.0
-
config.json: 親フォルダ (モデルフォルダ) にあるこのファイルには、デフォルトのハイパーパラメータが含まれています
%%writefile ../config.json
{
"hyperParameters": {
"eta": 0.2,
"max_depth": 6
}
}
リポジトリにあるデモモデルのコードスクリプトを確認します。 https://github.com/Teradata/modelops-demo-models/
model_definitions→python-diabetes→model_modulesに移動します。
新しい GIT のモデル ライフサイクル
-
プロジェクトを開いて、GIT から利用可能なモデルを確認する
-
新しいモデルのバージョンをトレーニングする
-
コードリポジトリからのCommitIDがどのように追跡されているかを確認する
-
評価する
-
データセットの統計情報やモデルのメトリクスを含む評価レポートを確認する
-
他のモデルバージョンと比較する
-
承認する
-
Vantage でデプロイする - エンジン、パブリッシュ、スケジュール。スコアリング データセットが必要です。 接続を使用してデータベースを選択してください。例: "aoa_byom_models"
-
Docker Batch でデプロイする - エンジン、パブリッシュ、スケジュール。スコアリング データセットが必要です。 接続を使用してデータベースを選択してください。例: "aoa_byom_models"
-
Restful Batchでデプロイする - エンジン、パブリッシュ、スケジュール。スコアリング データセットが必要です。 接続を使用してデータベースを選択してください。例: "aoa_byom_models"
-
デプロイメント/実行する
-
dataset2 を使用して再度評価する - モデル メトリクスの動作を監視します
-
Model Driftを監視する - データとメトリクス
-
Vantage にデプロイされている場合、BYOM Notebookを開いて、SQL コードから PMML 予測を実行します。
-
ModelOps UIまたはcurlコマンドからRestfulをテストする
-
デプロイメントをリタイアする
まとめ
このクイック スタートでは、GIT モデルのライフサイクル全体をたどって ModelOps にデプロイメントする方法と、GIT モデルを Edge デプロイメント用の Vantage または Dockerコンテナにデプロイする方法を学びました。次に、バッチ スコアリングをスケジュールしたり、レストフル スコアリングまたはオンデマンド スコアリングをテストしたり、データ ドリフトとモデル品質のメトリクスの監視を監視したりする方法を説明します。
さらに詳しく
-
リンク:https://docs.teradata.com/search/documents?query=ModelOps&sort=last_update&virtual-field=title_only&content-lang=
ご質問がある場合、またはさらにサポートが必要な場合は、コミュニティ フォーラムにアクセスしてサポートを受け、他のコミュニティ メンバーと交流してください。 |