Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Amazon SageMaker Clarifyで始めるモデルモニタリング

Amazon SageMaker Clarifyで始めるモデルモニタリング

モデルを作りっぱなしにしていませんか?
モデルは学習させて推論させる以外にも見ておくべき情報があります。
今回はSageMakerで使えるClarifyを使った方法をご紹介します。

クルトン

July 20, 2023
Tweet

More Decks by クルトン

Other Decks in Programming

Transcript

  1. 3つの開発環境
 
 • SageMaker notebook instance
 • SageMaker Studio
 •

    SageMaker Studio Lab
 SageMakerの開発環境 Jupyterノートブックインスタンスが立ち上がり開発 ができる
  2. 
 1. データを用意
 2. S3バケットへ用意したデータをアップロード
 3. モデルを用意
 4. S3にあるデータを使って学習
 5.

    モデルを推論エンドポイントへデプロイ
 6. 推論エンドポイントを使って予測 SageMakerの特徴 学習データ準備 モデル学習 推論 プロビジョニングや環境構築を 自分でしなくて良い!
  3. 
 1. データを用意
 2. S3バケットへ用意したデータをアップロード
 3. モデルを用意
 4. S3にあるデータを使って学習
 5.

    学習済みモデルで推論エンドポイント作成
 6. 推論エンドポイントを使って予測 SageMakerの一通りの処理の流れ
  4. 
 1. データを用意
 2. S3バケットへ用意したデータをアップロード
 3. モデルを用意
 4. S3にあるデータを使って学習
 5.

    学習済みモデルで推論エンドポイント作成
 6. 推論エンドポイントを使って予測 SageMakerの一通りの流れ 学習データ準備
  5. 
 1. データを用意
 2. S3バケットへ用意したデータをアップロード
 3. モデルを用意
 4. S3にあるデータを使って学習
 5.

    学習済みモデルで推論エンドポイント作成
 6. 推論エンドポイントを使って予測 SageMakerの一通りの流れ 学習データ準備 モデル学習 推論
  6. 
 1. データを用意
 2. S3バケットへ用意したデータをアップロード
 3. モデルを用意
 4. S3にあるデータを使って学習
 5.

    学習済みモデルで推論エンドポイント作成
 6. 推論エンドポイントを使って予測 SageMakerの一通りの流れ 学習データ準備 モデル学習 推論
  7. 
 1. データを用意
 2. S3バケットへ用意したデータをアップロード
 3. モデルを用意
 4. S3にあるデータを使って学習
 5.

    学習済みモデルで推論エンドポイント作成
 6. 推論エンドポイントを使って予測 SageMakerの一通りの流れ 学習データ準備 モデル学習 推論
  8. SageMakerの一通りの流れ Amazon SageMaker Amazon S3 (学習データ) Amazon S3 (推論データ) 推論エンドポイント

    学習データ セット アップロード 学習 作成 アップロード 推論結果 推論
  9. 
 1. データを用意
 2. S3バケットへ用意したデータをアップロード
 3. モデルを用意
 4. S3にあるデータを使って学習
 5.

    モデルを推論エンドポイントへデプロイ
 6. 推論エンドポイントを使って予測 SageMakerの特徴2 学習データ準備 モデル学習 推論 開発に集中できるサービス
  10. 学習時のコード import sagemaker sess = sagemaker.Session() bucket = sess.default_bucket() prefix

    = "<フォルダ名>" import boto3 from sagemaker import get_execution_role role = get_execution_role() sagemaker-リージョン名-ア カウントID 実行するのに必要な権限を 揃えたRole
  11. PDP: 特徴量Aを確認 元のデータ 特徴量A 特徴量B 特徴量C 予測結果 3 3 6

    f(3,3,6) = 0.113 5 4 1 f(5,4,1) = 0.314 5 5 3 f(5,5,3) = 0.697 予測結果の平均: 0.374666…
  12. SHAPとは: 限界貢献度 Aさんが作る商品数の各状況における最大数を確認したい • Aさんのみなら5個 • Bさんが働いてる時 ◦ Aさん加わると8-4=4個がプラス •

    Cさんが働いてる時 ◦ Aさん加わると11-5=6個がプラス • BさんとCさんが働いてる時 ◦ Aさん加わると20-7=13個がプラス 人物 作られる商品 の個数 A 5 B 4 C 5 A, B 8 A, C 11 B, C 7 A,B,C 20
  13. SHAPとは: 限界貢献度 Aさんが作る商品数の各状況における最大数を確認したい • Aさんのみなら5個 • Bさんが働いてる時 ◦ Aさん加わると8-4=4個がプラス •

    Cさんが働いてる時 ◦ Aさん加わると11-5=6個がプラス • BさんとCさんが働いてる時 ◦ Aさん加わると20-7=13個がプラス 人物 作られる商品 の個数 A 5 B 4 C 5 A, B 8 A, C 11 B, C 7 A,B,C 20 各データにおいて 注目している特徴量でどういったデータが予 測に役立っているか確認可能
  14. SHAPとは: 限界貢献度の平均 Aさんが働いたら作られる商品の平均的な個数を知る 人物 できる商品の 個数 A 5 B 4

    C 5 A, B 8 A, C 11 B, C 7 A,B,C 20 作業開始順 Aさんの限界 貢献度 A→B→C 5 A→C→B 5 B→A→C 4 B→C→A 13 C→A→B 6 C→B→A 13 (5+5+4+13+6+13) / 6 = 7.666……個
  15. SHAPとは: 限界貢献度の平均 Aさんが働いたら作られる商品の平均的な個数を知る 人物 できる商品の 個数 A 5 B 4

    C 5 A, B 8 A, C 11 B, C 7 A,B,C 20 作業開始順 Aさんの限界 貢献度 A→B→C 5 A→C→B 5 B→A→C 4 B→C→A 13 C→A→B 6 C→B→A 13 (5+5+4+13+6+13) / 6 = 7.666……個 各特徴量について限界貢献度の平均を求め るとどの特徴量が予測に役立っているか 確認できる
  16. モデルのデプロイ model_name = "<学習済みモデルの名前>" model = xgb.create_model(name=model_name) container_def = model.prepare_container_def()

    sess.create_model(model_name,role,container_def) Modelクラスのイ ンスタンス作成 コンテナの情報を 取得 AWS環境へデプ ロイ
  17. config2つ目: SHAPConfig SHAPの出力 shap_config = clarify.SHAPConfig( baseline=[<データ>], num_samples=15, agg_method="mean_abs", )

    SHAP値計算の基 準 SHAP値の計算に 使うデータ数 SHAP値の絶対値 の平均
  18. config4つ目: ModelConfig 推論エンドポイントのインスタンス model_config = clarify.ModelConfig( model_name=model_name, instance_type="ml.m4.xlarge", instance_count=1, accept_type="text/csv",

    content_type="text/csv", ) デプロイしたモデ ルの名前 モデルがアウトプットする ファイル拡張子 モデルがインプットを受け 付けるファイル拡張子