はじめに
AWS INNOVATE オンラインカンファレンスの機械学習モデルの開発プロセスを加速する:Amazon SageMakerの実践活用方法を視聴したときのメモです。
SageMakerは、なんとなく触ってブログも書いたことがあるので、知ってることもありましたが勉強になりました。
AWS SageMakerでの機械学習モデル開発フロー(PyTorch)
視聴メモ
- ラベリングサービス(Ground Truth)の一機能として、外部への委託も可能
- 学習・推論コンテナのベースイメージがECRにある。GutHubにも公開されているので、クローンして自分でカスタマイズして再度ECRに上げればそれを利用することができる
- 学習・推論処理実装の流れ
- Estimatorの作成
- Estimatorクラスのオブジェクトを作成
- 学習の実行
- fit()を実行するだけ
- 推論の実行
- deploy()->predict()
- Estimatorの作成
- 学習インスタンスにSpot Instanceが使えるようになった
- Estimatorを作成するときに、train_instance_typeと並ベてtrain_use_spot_instances=Trueと書けば使える
- Checkpointingにより、Spot instanceが落ちても途中から学習の再開が可能
- 学習用のファイルシステムとして、FSx for Lustre, EFSが直接指定可能になった
- -> 同一ファイルを用いた反復の学習ジョブでは、高速キャッシュとしてファイルシステムを利用できる
- ハイパーパラメータ最適化の手法
- デフォルトはベイズ最適化
- ランダム探索も選択可能になった
- リアルタイム推論とバッチ推論がある
- リアルタイムはdeploy()
- バッチ推論はtransform()
- 推論が終わるとエンドポイントが自動で削除される
- Elastic Inference
- predictorのアクセレレーター定義により、TF, MXNet, ONNXですぐ使える
- 学習済みモデルの持ち込みできる
- Modelクラスを定義してdeploy(), transformerが実行可能とか
- モデルはS3にtar.gzで格納してmodel_dataで指定とか
- エンドポイントを固定したままモデルを更新できる
- Update endpoint
- S3とSageMakerの環境変数
- S3パスとコンテナのパスを環境変数で指定している
- model_fnで、推論エンドポイントにおけるモデルのロード処理をする
- フレームワークごとに書き換えの方法は微妙に違う
- 公式のgithubを参考に