Amazon SageMakerのガバナンス機能を使ってみる
データアナリティクス事業本部の鈴木です。
『クラスメソッド 機械学習チーム アドベントカレンダー 2022』の16日目のエントリーになります。
昨日はAmazon Textractの再入門でした。
本日はAmazon SageMakerです。
re:Invent2022では、ラスベガスからSwami Sivasubramanian Keynoteに参加して、Amazon SageMaker ML Governanceの発表をお伝えしましたが、帰国して少し時間ができたので、実際に一部機能を試してみました。
発表されたガバナンス機能は、「ロールマネジャー」「モデルダッシュボード」「モデルカード」ですが、今回は後の2つがどんな感じか、特にモデルカードを中心にご紹介します。
UI上でのガバナンス機能の利用について
SageMakerでのUI上では、以下のガバナンスメニューから新しい機能を使用できるようになっています。
モデルダッシュボードは、モデルの情報を一元的に監視を行う機能、モデルカードはモデル情報をプロジェクトで共有するための文書を作成できる機能なのでした。
より詳細は、以下のドキュメントを参照ください。
準備
参考にするチュートリアル
まずはモデルダッシュボードとモデルカードで表示するためのモデルを作成していきます。なお、ここは検証を再現しやすいように記載したので、ガバナンス機能だけ使いたい方は飛ばして頂いて問題ありません。
今回は、以下のチュートリアルのステップ3までを実行して、モデルを作成してみました。
ステップ3までは以下のことを行います。
- SageMakerノートブックインスタンスの作成
- データの準備
- データから学習するためのモデルのトレーニング
ステップ4以降はやりません。
使用するデータは、チュートリアルに記載がありますが、Bank Marketing Data Setで、このデータを使って2値分類問題を解くためのモデルを訓練することになります。
モデルの作成
チュートリアルに沿って進めていきますが、やったことや少しアレンジしたことを記載します。
ステップ1
データ準備用のノートブックインスタンスを作成します。今回は東京リージョンで実施しました。
ノートブックインスタンス
からノートブックインスタンスの作成
を押します。
ノートブックインスタンス設定で、ノートブックインスタンス名
とノートブックインスタンスのタイプ
を入力しました。インスタンスタイプはチュートリアルとは異なるml.t3.medium
を選びました。今回は大きな理由はありませんが、On-Demand Pricingでほとんど価格が変わらないことが分かっているので、新しい世代にしました。
その下のアクセス許可と暗号化では、新しいIAMロールを作成して設定しました。ほかはデフォルトでノートブックインスタンスの作成
を押します。
なお、IAMロールの作成画面は以下のような感じでした。チュートリアルでも説明がありますが、今回はS3バケットへの権限をそこまで絞るつもりもなかったので、任意のS3バケットに対してアクセスすることを許可して作成しました。
ステップ2
モデル作成に使うデータの準備を進めます。ノートブックインスタンスのステータスがInService
になったら、Jupyterを開く
をクリックしてノートブックを作成していきます。
Jupyterの画面が表示されるので、New
からconda_python3
を選択して、ノートブックを作成します。
順番にチュートリアルのコードを入力して、実行していきます。一部自分で入力するところがありますが、チュートリアルのコードが非常にスムーズに動作するのでとてもありがたいです。
ここは、S3バケットの名前を自分で入力して実行します。
以下のようにS3バケットが作成されました。
データを取得して加工し、S3バケットにアップロードします。
このような形でデータが作成されました。
ステップ3
機械学習モデルをトレーニングします。
こちらもチュートリアル通りにモデルを作成しますが、使用する手法はXGBoostで、binary:logistic
を使って学習します。
sess = sagemaker.Session() xgb = sagemaker.estimator.Estimator(xgboost_container,role, instance_count=1, instance_type='ml.m4.xlarge',output_path='s3://{}/{}/output'.format(bucket_name, prefix),sagemaker_session=sess) xgb.set_hyperparameters(max_depth=5,eta=0.2,gamma=4,min_child_weight=6,subsample=0.8,silent=0,objective='binary:logistic',num_round=100)
実行が終わると、モデルが作成されます。
モデルダッシュボードを使ってみる
まずはモデルができたので、モデルダッシュボードを見てみます。モデルができた状態でモデルダッシュボードを開くと、以下のようになりました。
※ 2行あるのは、モデルの準備では、エンドポイントの作成はしていませんでしたが、表示項目を埋めてみようと思い、作成してみたためです。
モデル名のリンクをクリックすると、個別のモデルに関する情報を確認することができます。一番最初にできている方のモデルをクリックしてみます。
モデルカード
は、後から説明する内容を作った状態で画像を撮ったので表示されています。作成したモデルカードのページに遷移します。
モデルリネージ
はモデルをどのように作成したか分かるので面白いです。クリックするとリネージを表すグラフが表示され、どのデータを使ったかなど確認することができます。
モデルのその他の詳細
は個々のモデルの画面に遷移します。
モデルカードを使ってみる
まずはモデルカードを作成します。モデルカードを作成
をクリックします。
作成画面になります。以下の4ステップで作成することが分かります。
- モデルの詳細と使用目的を入力
- トレーニングの詳細を入力
- 評価結果を編集
- その他の詳細を入力
作成ステップ1
まず、モデルの詳細セクションです。
モデルカード名とモデルカードのステータスを入力します。特にステータスは、以下の3つから選べます。
モデルの詳細セクションでは、モデルの説明など記載できますが、ここでモデル名を入れることで、モデルとの紐付けを行えます。モデル名を入力し、モデルの詳細を検索
をクリックします。
以下の赤枠の情報が自動的に埋まります。
モデルの説明やモデルバージョンは自分で記載しました。
使用目的は自分で必要そうな情報を入力しておきます。入力できたら次へ
を押します。
作成ステップ2
トレーニングの詳細を入力します。モデルの作成のセクションで記載した通り、XGBoostで、binary:logistic
を最小化するよう訓練するので、以下のように記載してみました。
トレーニングジョブの詳細は、モデルの作成から自動的に紐付けられた値が入っています。メトリクスを追加することも可能です。
作成ステップ3
SageMaker ClarifyやSageMaker Model Monitorで生成されたJSON形式の評価レポートがある場合は、ここから追加できます。
作成ステップ4
倫理的な考慮事項や注意事項なども記載しておくことができます。
これで最後のステップになるので、送信
を押すと、モデルカードが作成されます。
モデルカードの概要
モデルカードは以下のようになりました。記載した内容が確認できますね。
アクション
からはPDFをエクスポート
などの機能を使えることが分かります。特に、バージョンを選択
から修正前後のバージョンを確認できるので良いですね。
モデルカードのPDFエクスポート
アクション
のPDFをエクスポート
から、モデルカードをPDFエクスポートすることが可能です。
エクスポートする際は、S3のパスを指定する必要があります。あらかじめ適当なフォルダを作っておくとよいかもしれません。
エクスポート結果は、コンソールから直接ダウンロードできます。
エクスポートしてみた例です。記事執筆時点だと日本語で入力したところは上手く出力されなかったので、PDF出力する予定がある方は、英語で入れるか、入れてみた後で試しに出力してみると良いかもしれません。
終わりに
今回はAmazon SageMaker ML Governanceの機能のうち、モデルダッシュボードとモデルカードを試してみました。開発・運用を進めているとモデルはどんどんできてくると思うので、モデルカードで情報を管理し、モデルダッシュボードから俯瞰できるのはとても使いやすそうですね。