SageMakerのA/Bテストについて調査

機械学習のA/Bテストについて
新しいモデルと本番稼働している古いモデル間でA/Bテストをすることで、新しいモデルが実際のユーザーに対して有効な効果を発揮するか評価することが可能です。
機械学習モデルでA/Bテストを行う場合、新旧のモデルに対して別々にトラフィックをルーティングできるよう仕組みを作る必要がありますが、Amazon SageMakerの場合は組み込みの機能による支援を受けることができます。

SageMakerでのA/Bテストの枠組み
推論エンドポイントに新旧のProduction Variantを作成し、トラフィックをルーティングすることで実現できます。
※上記ガイドより引用
Production Variantはエンドポイントがモデルをホストする際にインスタンスサイズやモデルなどを定義するものです。endpoint設定でVariantを指定し、エンドポイントをデプロイすることができます。また、endpoint_from_production_variants
でVariantから直接エンドポイントを作成することもできます。

シングルモデルエンドポイントでのA/Bテストの例
以下のガイドなどで紹介されています。
あらかじめ訓練しておいたモデルから異なるバリアントを作成し、endpoint_from_production_variants
で同じエンドポイントに異なるモデルをデプロイします。
initial_weight
を設定することで、バリアント間にルーティングされるトラフィックの比率をコントロールできることが記載されています。
また、invoke_endpoint
のTargetVariant
で対象となるバリアント名を指定し、特定のバリアントを呼び出すこともできます。

マルチモデルエンドポイントでのA/Bテスト
これについては情報がみつかりませんでした。シングルモデルエンドポイントと同じようにバリアントを複数作成し、A/Bテストを実施したいモデルのみ異なるモデルを紐づけてデプロイするものと思われます。

エンドポイントへのバリアントの追加・削除
例えば、『Amazon SageMaker 推論 Part 3』にあるように、update_endpoint
を使うことで実行できます。

ちなみにML-DarkのシリーズはYoutube動画がとても工夫されており、かっこいいなーと思いました。(おしゃれな感じに仕上がっています)
PDFはたびたび拝見していますが、動画を未試聴の方はぜひみてみてください。

なお、エンドユーザーに影響を与えないモデルのテストの枠組みとして、シャドウテストもサポートされています。
シャドウテスト向けにバリアントを登録すると、リクエストがコピーされてシャドウバリアントで処理できるようです。