Amazon の研究内容発信ページ
ユースケースごとに記事にいけるようにするための目次ページ
<目的>
SageMakerの公式ドキュメントがアレなので、機械学習エンジニア(というかSageMakerエンジニア)のための実際のMLシステム構築、運用に役立つ情報を記載していくために開設
<SageMakerでMLパイプラインを作成する時の鬼門>
1.カスタムコンテナ(コンテナの知識が必要、ECR、Docker)
2.学習、推論などのスクリプトの分割(SageMakerの仕様理解が必要)
この二つが、PoCでデータサイエンティストが書いた一つのノートブックから
MLシステムを構築するのに鬼門となる。。
特に1.dockerを理解し、SageMaker用の環境を作らねばならない。。
<参考>
https://qiita.com/odrum428/items/1788c4245fc2de4d58a8
https://qiita.com/triwave33/items/0a39e90068c57f1d2753
SageMakerの利点
・モデル開発が手軽にできて、データサイエンティストも嬉しい
・モデル開発が適切に管理されて、本番運用に繋げられて嬉しい
・データパイプラインや既存のAWSシステムとの連携が簡単で、データエンジニア(機械学習エンジニア)も嬉しい
・MLopsが効率的に実現できて、MLシステム運用者も嬉しい
<開発時>
データサイエンティストは、モデル開発をnotebookだけで完結させたい。
SageMaker用のAPIとか覚えたくない。
なので、開発はEC2上でnotobookで作ってもいいと思う。DataRobot使ってても別にいい。
業務ユーザーはExcel + QuickSightでもいい。
SageMaker notebookインスタンスだとちょっと高いし。
ローカルのmacでもよいでしょう。
そして、よいモデルを作るための設計図ができたら、
仕組み化するためにSageMakerの型に落とし込む。これはデータサイエンティストと、データエンジニアが連携して実施する。
学習も定期的に実施するなら、spot学習にした方がいいだろう。
推論はバッチ推論がよい。
SageMakerのよさの本質は、MLopsにある。
・開発したnotebookをどのようにSageMakerの型に移植すればよいか。がキモになる。
データ取得
前処理
モデル学習
- コンテナの中身を確認したい。ビルトインアルゴリズムのtrain.pyの内容をみたいなど。が発生する。
A.SageMaker にて提供している組み込みアルゴリズムのコンテナイメージは直接取得できません。
推論
後処理
評価
が含まれているので、これをどのように分解してSageMakerで運用できるようにするか。
■自身で作成したコンテナイメージをECRにpushする
以下に従い、notebookインスタンス上で実行してみた。
https://qiita.com/aokad/items/17a06c2384041bd60d16
エラーになった。IAMの権限が足らないらしい。
<メッセージ一部>
is not authorized to perform: ecr:InitiateLayerUpload on resource: arn:aws:ecr:us-east-2:
ここを参考にAmazonEC2ContainerRegistryFullAccessロールを付与したら解消した。
https://forums.aws.amazon.com/thread.jspa?threadID=223156
→ユースケースごとの最適なアーキテクチャがほしい。
リアルタイム推論が求められるケース
データがとてつもなく大きい場合
AIサービスを利用する場合
など
<モデル決定後>
開発されたモデルは、SageMaker用の学習スクリプトにして、
Spot学習などをすれば、コスト削減が可能。
■SageMakerで実現するMLシステム運用
データ収集
前処理
モデル学習
後処理
EDA
評価
モデルデプロイ
推論
モニタリング
Cloud Watch
■Studioの話
Auto Pilot
■AIサービス
■MLプロジェクトワークフローの話
企画
AWS S3にアップロードされたExcelファイルをLambdaで処理
https://qiita.com/akimai/items/d7f4c18e08347e46a18b
PoC
本番運用
MLops
■Kaggleの話
ベスト環境
■人材の話
■開発の話
SageMakerノートブックインスタンス上ではなく、
自身のMacBookProラップトップにてMLシステム開発を実施したい。どうすればよいか。
前処理、学習、後処理、推論をラップトップからSageMakerに命令したい。