聴きながらとったメモ
Amazon SageMaker Deep Dive
- 高性能な組み込みアルゴリズムを使える。
- モデル・アルゴリズムをMarketplaceで提供
- 分散学習をサポートしており、わずからコード変更で複数クラスタで分散学習できる。
- 一度学習すれば、モデルをコンパイルすることでエッジを含めて様々な環境で利用できる。
- ワークフロー構築を助けるツールとしてSageMaker Python SDKなどがある。
-
import sagemaker.mxnet import MXNet
等として利用する。 -
sagemaker.deploy(instance_count=1 )
のようにデプロイする。 - コンテナによる環境の統一化(SageMakerコンテナには色々すでに入れてある)
- SageMakerコンテナが立ち上がると、特定のディレクトリにS3から読み込んだトレーニングデータやテストデータが置かれる。
- Jupyter Notebookが簡単に立ち上がる。
- トレーニングの終わったモデルはS3に保存される。
- アプリでは、例えばLambdaからモデルを使うことができる。
- データ収集→クリーンアップ→データ変換。ラベルづけ→トレーニング→モデル評価→本番環境にデプロイ→推論・監視→(もどる)
- AWS Step FunctionsやApache Airflowでトレーニングからデプロイまでを自動化できる。
- 継続的なモデルのアップデートを行う。
- とにかく自動化、自動化、自動化しきれないところは半自動化。
- Step WorkdsはJSONベースでステートマシンを記述できる。
- Lambdaなどのサービスに対応。
- Cloud Watch Eventでスケジュール実行やイベント実行できる(1週間に一回、モデルを再トレーニングするとか)。
- 機械学習パイプラインを構築して、自動的にMLモデルを再学習していくことが必要。
- Apache AirFlowで同様にフローをPythonを使って記述できる。
- SageMakerは過去のトレーニングジョブを残しておいてくれるため、過去の環境情報やトレーニングに使ったデータ等も残っており、あとから検証できる。
- 再学習で課題になるのがアノテーション。
- 教師データの質が、そこからできるモデルの質を決定する。
- モデルの精度を担保するには人でのラベルづけも必要。
- 画像分類、物体検出、セマンティックセグメンテーション、文章分類の4つは、SageMakerを使うと簡単に実現できる。
- はじめは人間がラベルづけして、十分高い精度を出せるようになったら自動アノテーションを行う。
- 重要なのは、データ収集からはじまるワークフロEーを素早く構築すること。
- 推論コスト = インスタンス数
- 学習にコストがかかるイメージだが、実運用では推論にお金がかかる。
- SageMakerではプロダクション用のRestAPIが簡単に立ち上がる。
-
Estimator.deploy
を実行すると、裏ではEndpoint Configにもどついて、EndPointにモデルがデプロイされる。 - エンドポイント作成の流れ
- Model
- Endpoint configuration
- Endpoint
- エンドポイントの更新は、ブルーグリーンデプロイメントが行われ、古いモデルを残したまま新しいモデルが保存される。
- デプロイのリスクを軽減する仕組み。
- 1つのエンドポイントの裏に複数のバージョンのモデルがある。
- 最初はトラフィックの10%を新しいモデルに流し、90%を古いモデルに流しながら様子を見て、徐々に新しいモデルに流す割合を増やすことができる。
- オートスケーリングにより、必要ない時間にはインスタンスを寝かすことでコストを削減できる。
- 推論コストを抑えるための選択肢として、
Batch Transform Job
E;astoc Omferemce
Sagemaker Neo
がある。 - Neoを使うと、様々なフレームワークとインフラを組み合わせることができる。