Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
西岡 賢一郎
PPTX, PDF
1,308 views
Amazon SageMakerでカスタムコンテナを使った学習
機械学習の社会実装勉強会第14回(https://machine-learning-workshop.connpass.com/event/257236/)で発表した資料です。
Technology
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 21
2
/ 21
3
/ 21
4
/ 21
5
/ 21
6
/ 21
7
/ 21
8
/ 21
9
/ 21
Most read
10
/ 21
11
/ 21
12
/ 21
Most read
13
/ 21
14
/ 21
15
/ 21
16
/ 21
17
/ 21
Most read
18
/ 21
19
/ 21
20
/ 21
21
/ 21
More Related Content
PPTX
Amazon SageMakerでscikit-learnで作ったモデルのEndpoint作成
by
西岡 賢一郎
PPTX
機械学習プラットフォーム5つの課題とAmazon SageMakerの4つの利点
by
西岡 賢一郎
PDF
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
by
NTT DATA Technology & Innovation
PDF
Ml system in_python
by
yusuke shibui
PDF
AWSではじめるMLOps
by
MariOhbuchi
PDF
ブレインパッドにおける機械学習プロジェクトの進め方
by
BrainPad Inc.
PDF
Amazon SageMaker で始める機械学習
by
Amazon Web Services Japan
PPTX
backbone としての timm 入門
by
Takuji Tahara
Amazon SageMakerでscikit-learnで作ったモデルのEndpoint作成
by
西岡 賢一郎
機械学習プラットフォーム5つの課題とAmazon SageMakerの4つの利点
by
西岡 賢一郎
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
by
NTT DATA Technology & Innovation
Ml system in_python
by
yusuke shibui
AWSではじめるMLOps
by
MariOhbuchi
ブレインパッドにおける機械学習プロジェクトの進め方
by
BrainPad Inc.
Amazon SageMaker で始める機械学習
by
Amazon Web Services Japan
backbone としての timm 入門
by
Takuji Tahara
What's hot
PPTX
機械学習用のデータを準備する Amazon SageMaker Data Wrangler - ノーコードで前処理から学習まで
by
西岡 賢一郎
PPTX
DRIVE CHARTを支えるAI技術
by
Yusuke Uchida
PDF
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
by
NTT DATA Technology & Innovation
PDF
ビジネスパーソンのためのDX入門講座エッセンス版
by
Tokoroten Nakayama
PDF
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
by
Preferred Networks
PPTX
MLOps入門
by
Hiro Mura
PDF
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
by
Yahoo!デベロッパーネットワーク
PDF
Python 3.9からの新定番zoneinfoを使いこなそう
by
Ryuji Tsutsui
PDF
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
by
NTT DATA Technology & Innovation
PDF
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
by
Preferred Networks
PDF
不均衡データのクラス分類
by
Shintaro Fukushima
PDF
Amazon Athena 初心者向けハンズオン
by
Amazon Web Services Japan
PDF
分散学習のあれこれ~データパラレルからモデルパラレルまで~
by
Hideki Tsunashima
PPTX
SageMakerを使った異常検知
by
Ryohei Yamaguchi
PDF
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
by
Preferred Networks
PDF
BlackBox モデルの説明性・解釈性技術の実装
by
Deep Learning Lab(ディープラーニング・ラボ)
PDF
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
by
Preferred Networks
PPTX
DockerコンテナでGitを使う
by
Kazuhiro Suga
PDF
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
by
Takeshi Mikami
PDF
日曜プログラマーが 1週間くらいで通信対戦ゲームを作ってみた
by
Yuusuke Takeuchi
機械学習用のデータを準備する Amazon SageMaker Data Wrangler - ノーコードで前処理から学習まで
by
西岡 賢一郎
DRIVE CHARTを支えるAI技術
by
Yusuke Uchida
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
by
NTT DATA Technology & Innovation
ビジネスパーソンのためのDX入門講座エッセンス版
by
Tokoroten Nakayama
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
by
Preferred Networks
MLOps入門
by
Hiro Mura
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
by
Yahoo!デベロッパーネットワーク
Python 3.9からの新定番zoneinfoを使いこなそう
by
Ryuji Tsutsui
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
by
NTT DATA Technology & Innovation
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
by
Preferred Networks
不均衡データのクラス分類
by
Shintaro Fukushima
Amazon Athena 初心者向けハンズオン
by
Amazon Web Services Japan
分散学習のあれこれ~データパラレルからモデルパラレルまで~
by
Hideki Tsunashima
SageMakerを使った異常検知
by
Ryohei Yamaguchi
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
by
Preferred Networks
BlackBox モデルの説明性・解釈性技術の実装
by
Deep Learning Lab(ディープラーニング・ラボ)
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
by
Preferred Networks
DockerコンテナでGitを使う
by
Kazuhiro Suga
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
by
Takeshi Mikami
日曜プログラマーが 1週間くらいで通信対戦ゲームを作ってみた
by
Yuusuke Takeuchi
Similar to Amazon SageMakerでカスタムコンテナを使った学習
PPTX
Amazon AthenaでSageMakerを使った推論
by
西岡 賢一郎
PPTX
機械学習の特徴量を管理するAmazon SageMaker Feature Store
by
西岡 賢一郎
PPTX
Amazon SageMaker Studio Lab紹介
by
西岡 賢一郎
PPTX
Amazon SageMaker Canvasを使ったノーコード機械学習
by
西岡 賢一郎
PDF
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
by
Amazon Web Services Japan
PDF
大規模並列実験を支えるクラウドサービスと基盤技術
by
RyuichiKanoh
PDF
Amazon SageMaker Unified Studioを触ってみた (20250129)
by
NTTDOCOMO-ServiceInnovation
PPTX
AWSで実践する機械学習
by
Core Concept Technologies
PPTX
Amazon SageMakerでゼロからはじめる機械学習入門
by
__john_smith__
PDF
[CTO Night & Day 2019] ML services: MLOps #ctonight
by
Amazon Web Services Japan
PPTX
ML Sagemaker Dev.IO
by
__john_smith__
PDF
Transfer Learning & API Azure
by
Yuki Hattori
PDF
JAWSUG20171220
by
陽平 山口
PDF
Amazon SageMaker: 機械学習の民主化から工業化へ(in Japanese)
by
Toshihiko Yamakami
Amazon AthenaでSageMakerを使った推論
by
西岡 賢一郎
機械学習の特徴量を管理するAmazon SageMaker Feature Store
by
西岡 賢一郎
Amazon SageMaker Studio Lab紹介
by
西岡 賢一郎
Amazon SageMaker Canvasを使ったノーコード機械学習
by
西岡 賢一郎
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
by
Amazon Web Services Japan
大規模並列実験を支えるクラウドサービスと基盤技術
by
RyuichiKanoh
Amazon SageMaker Unified Studioを触ってみた (20250129)
by
NTTDOCOMO-ServiceInnovation
AWSで実践する機械学習
by
Core Concept Technologies
Amazon SageMakerでゼロからはじめる機械学習入門
by
__john_smith__
[CTO Night & Day 2019] ML services: MLOps #ctonight
by
Amazon Web Services Japan
ML Sagemaker Dev.IO
by
__john_smith__
Transfer Learning & API Azure
by
Yuki Hattori
JAWSUG20171220
by
陽平 山口
Amazon SageMaker: 機械学習の民主化から工業化へ(in Japanese)
by
Toshihiko Yamakami
More from 西岡 賢一郎
PPTX
Amazon SageMaker ML Governance 3つの機能紹介
by
西岡 賢一郎
PPTX
XAI (説明可能なAI) の必要性
by
西岡 賢一郎
PPTX
Amazon SageMakerのNotebookからJobを作成する
by
西岡 賢一郎
PPTX
H2Oを使ったノーコードのAutoML
by
西岡 賢一郎
PPTX
AutoGluonではじめるAutoML
by
西岡 賢一郎
PPTX
TorchDataチュートリアル解説
by
西岡 賢一郎
PPTX
協力ゲーム理論でXAI (説明可能なAI) を目指すSHAP (Shapley Additive exPlanation)
by
西岡 賢一郎
PPTX
Amazon SageMaker Foundation Modelsで事前学習済みモデルを利用する
by
西岡 賢一郎
PPTX
H2O Waveを使ったAIアプリケーション作成入門
by
西岡 賢一郎
PPTX
大域的探索から局所的探索へデータ拡張 (Data Augmentation)を用いた学習の探索テクニック
by
西岡 賢一郎
PPTX
Amazon SageMaker Ground Truthを使って手動のラベル付けを簡略化する
by
西岡 賢一郎
PPTX
Feature StoreのOnline StoreとOffline Storeの違いについて理解する
by
西岡 賢一郎
PPTX
Amazon Athenaで独自の関数を使う Amazon Athena UDF - AthenaでTweetの感情分析
by
西岡 賢一郎
PPTX
人間の意思決定を機械学習でモデル化できるか
by
西岡 賢一郎
PPTX
PMFを目指すプロダクト開発組織が組織拡大するときににやるべきこと
by
西岡 賢一郎
PPTX
リモートワークで意識すべき7つのこと
by
西岡 賢一郎
PPTX
Amazon SageMaker JumpStart
by
西岡 賢一郎
PPTX
未来のカタチ x AI
by
西岡 賢一郎
PPTX
ストリートビューから地域の豊かさを推定
by
西岡 賢一郎
PPTX
リモートワークで知っておきたい コミュニケーション時の過大な期待
by
西岡 賢一郎
Amazon SageMaker ML Governance 3つの機能紹介
by
西岡 賢一郎
XAI (説明可能なAI) の必要性
by
西岡 賢一郎
Amazon SageMakerのNotebookからJobを作成する
by
西岡 賢一郎
H2Oを使ったノーコードのAutoML
by
西岡 賢一郎
AutoGluonではじめるAutoML
by
西岡 賢一郎
TorchDataチュートリアル解説
by
西岡 賢一郎
協力ゲーム理論でXAI (説明可能なAI) を目指すSHAP (Shapley Additive exPlanation)
by
西岡 賢一郎
Amazon SageMaker Foundation Modelsで事前学習済みモデルを利用する
by
西岡 賢一郎
H2O Waveを使ったAIアプリケーション作成入門
by
西岡 賢一郎
大域的探索から局所的探索へデータ拡張 (Data Augmentation)を用いた学習の探索テクニック
by
西岡 賢一郎
Amazon SageMaker Ground Truthを使って手動のラベル付けを簡略化する
by
西岡 賢一郎
Feature StoreのOnline StoreとOffline Storeの違いについて理解する
by
西岡 賢一郎
Amazon Athenaで独自の関数を使う Amazon Athena UDF - AthenaでTweetの感情分析
by
西岡 賢一郎
人間の意思決定を機械学習でモデル化できるか
by
西岡 賢一郎
PMFを目指すプロダクト開発組織が組織拡大するときににやるべきこと
by
西岡 賢一郎
リモートワークで意識すべき7つのこと
by
西岡 賢一郎
Amazon SageMaker JumpStart
by
西岡 賢一郎
未来のカタチ x AI
by
西岡 賢一郎
ストリートビューから地域の豊かさを推定
by
西岡 賢一郎
リモートワークで知っておきたい コミュニケーション時の過大な期待
by
西岡 賢一郎
Amazon SageMakerでカスタムコンテナを使った学習
1.
Amazon SageMakerで カスタムコンテナを使った学習 Training Toolkitを使った実装 2022/08/27
第14回勉強会
2.
自己紹介 ● 名前: 西岡
賢一郎 ○ Twitter: @ken_nishi ○ note: 西岡賢一郎@研究者から経営者へ (https://note.com/kenichiro) ○ YouTube: 【経営xデータサイエンスx開発】西岡 賢一郎のチャンネル (https://www.youtube.com/channel/UCpiskjqLv1AJg64jFCQIyBg) ● 経歴 ○ 東京大学で位置予測アルゴリズムを研究し博士 (学術) を取得 ○ 東京大学の博士課程在学中にデータサイエンスをもとにしたサービスを提供する株式会社ト ライディアを設立 ○ トライディアを別のIT会社に売却し、CTOとして3年半務め、2021年10月末にCTOを退職 ○ CDPのスタートアップと株式会社データインフォームドの2つに所属 ○ 自社および他社のプロダクト開発チーム・データサイエンスチームの立ち上げ経験
3.
今回のお話 ● カスタムコンテナ ● sagemaker-training-toolkit ●
SageMaker上でイメージのbuild ● デモ
4.
カスタムコンテナ (前回のおさらい)
5.
SageMakerのEndpoint作成フロー SageMakerで学習を実施しEndpoint作成する Step 1.学習 (fit) 2.モデル作成 3.Endpoint Config作成 4.Endpoint作成
6.
トレーニングと推論のDockerイメージ トレーニングと推論では別々のイメージを使うこともできる。 小さいコンテナのほうが実行は早くなるが、管理コストとのバランスで決める。 トレーニング用イメージ 推論用イメージ
7.
カスタムコンテナ 出典: https://aws.amazon.com/jp/blogs/news/sagemaker-custom-containers-pattern-training/ カスタムコンテナは以下の3種類のパターンで 作成できる 1. AWS
提供のコンテナイメージを拡張 a. 最も簡単 b. 独自ライブラリを使いたいときなど 2. 独自のコンテナイメージ + SageMaker Training Toolkit a. SageMaker Training Toolkit 3. スクラッチのコンテナイメージ a. 非推奨 b. 最も難しい c. SageMaker Training Jobの外部とデータとの やり取りの使用の理解が必要 今回は、2の独自のコンテナイメージ + SageMaker Training Toolkitでカスタムコンテナ を作る方法を紹介 今回はこちらを紹介
8.
sagemaker-training-toolkit
9.
sagemaker-training-toolkitのイメージ作成に必要な3つのこと 必ずやることは以下の3つ 1. 使いたいイメージの中で pip install
sagemaker-training を実行 2. 学習用スクリプトを /opt/ml/code下に配置 3.SAGEMAKER_PROGRAM でスクリプトを指定 (カスタムコンテナ構築に必要な唯一の環境変 数) 出典: https://github.com/aws/sagemaker-training-toolkit 指定する項目が少なくて 実装も簡単!
10.
https://github.com/knishioka/machine-learning-workshop/blob/main/sagemaker/sklearn_custom_ml.py 学習用スクリプト train.py 大きく分けて2つのパートを用意しておく 1.モデルを学習しシリアライズし /opt/ml/modelに保存 ○ SKlearnのコンテナはカスタムスクリプトをイン ポートするため、間違えて実行されないように if
__name__ == "__main__" に入れておく 2.学習済みモデルを/opt/ml/modelから読 み込む ○ model_fnは、学習、評価、予測をサポートする すべてのロジックを含む関数 学習 → シリアライズ → /opt/ml/modelに保存 /opt/ml/modelからモデル読み込み 学習パートと推論用のモデル読み込 みを実装。 推論を別のイメージにする場合は推 論用の実装は不要。 学習 推論
11.
コンテナ内の構造 ● /opt/ml すべてSageMaker用となるため、アルゴリズムが必要 とするようなデータを置いてはいけない ● /opt/ml/input トレーニングジョブ実行時に利用 ●
/opt/ml/code コンテナが実行するスクリプトを配置 ● /opt/ml/model アルゴリズムによって生成されたモデルを書き込む ● /opt/ml/output モデル以外に保存するアーティファクトを書き込む ● /opt/ml/failure トレーニングに失敗した場合、すべてのアルゴリズム の出力を書き込む 出典: https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/amazon-sagemaker-toolkits.html
12.
CHANNELを理解する SM_CHANNEL_XXXのXXXがそのまま展開(Fileモード)。 例えば、以下のように実行すると fit({ "training": "s3://path/to/training" "validation": "s3://path/to/validation", "testing":
"s3://path/to/testing" }) コンテナ内の以下の場所にデータが展開される ● /opt/ml/input/data/training ● /opt/ml/input/data/validation ● /opt/ml/input/data/testing チャネル名は大文字として環境変数に設定される ● SM_CHANNEL_TRAINING=/opt/ml/input/data/training ● SM_CHANNEL_VALIDATION=/opt/ml/input/data/validation ● SM_CHANNEL_TESTING=/opt/ml/input/data/testing
13.
SageMakerがトレーニング時に行うこと ● docker run
image train を実行 ○ train引数によりコンテナ内のデフォルトのCMDが上書きされる ● ENTRYPOINTで実行形式を指定 ○ 例: ENTRYPOINT ["python", "k-means-algorithm.py"] ○ ENTRYPOINTで直接実行ファイルを指定することで、SageMaker APIからSIGTERMや SIGKILLのシグナルを送ることができるようになる ● ハイパーパラメータで渡された値はオプションとして渡される hyperparameters={"max_leaf_nodes": 30} python … --max_leaf_nodes 30 argparseなどで読み込む
14.
SageMaker上でイメージのbuild
15.
通常のbuild ● SageMakerでカスタムコンテナを使うためにはECRに作成したイメージをプ ッシュする必要がある ● ECRにプッシュするためには、dockerコマンドだけでなくawsコマンドも使 う必要があり、ステップが少し多い docker
build aws ecr get- login aws ecr create- repository docker push 実行コマンドが多い!!
16.
sm-dockerをつかったbuild sm-docker コマンドで以下の作業を一つのコマンドで実行 1.Dockerfile・コード・buildspec.ymlをS3へアップロード 2.CodeBuildでのイメージのbuild 3.ECRへのイメージのアップロード 出典: https://aws.amazon.com/blogs/machine-learning/using-the-amazon-sagemaker-studio-image-build-cli-to-build-container-images-from-your-studio-notebooks/ たった一つのコマンドで 多くのタスクを実行
17.
sm-dockerの使い方 ● SageMaker実行ロールの設定 ○ SageMakerで使用している実行ロールに対して、CodeBuildの信頼ポリシーを追加 ○
SageMakerで使用している実行ロールに対して、ECRにレポジトリを作成しイメージをプッ シュできる権限を追加 ○ 詳しくは、Using the Amazon SageMaker Studio Image Build CLI to build container images from your Studio notebooks を参照 ● インストール: !pip install sagemaker-studio-image-build ● イメージ作成: !sm-docker build . 最初の準備は大変だが 実行は圧倒的に楽!!
18.
Trust Policy追記 { "Version": "2012-10-17", "Statement":
[ { "Effect": "Allow", "Principal": { "Service": [ "codebuild.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] } codebuildを追加する
19.
Permission Policy追加 { "Version": "2012-10-17", "Statement":
[ { "Effect": "Allow", "Action": [ "codebuild:DeleteProject", "codebuild:CreateProject", "codebuild:BatchGetBuilds", "codebuild:StartBuild" ], "Resource": "arn:aws:codebuild:*:*:project/sagemaker-studio*" }, { "Effect": "Allow", "Action": "logs:CreateLogStream", "Resource": "arn:aws:logs:*:*:log- group:/aws/codebuild/sagemaker-studio*" }, { "Effect": "Allow", "Action": [ "logs:GetLogEvents", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:log- group:/aws/codebuild/sagemaker-studio*:log-stream:*" }, { "Effect": "Allow", "Action": "logs:CreateLogGroup", "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:CreateRepository", "ecr:BatchGetImage", "ecr:CompleteLayerUpload", "ecr:DescribeImages", "ecr:DescribeRepositories", "ecr:UploadLayerPart", "ecr:ListImages", "ecr:InitiateLayerUpload", "ecr:BatchCheckLayerAvailability", "ecr:PutImage" ], "Resource": "arn:aws:ecr:*:*:repository/sagemaker- studio*" }, { "Effect": "Allow", "Action": "ecr:GetAuthorizationToken", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:DeleteObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::sagemaker-*/*" }, { "Effect": "Allow", "Action": [ "s3:CreateBucket" ], "Resource": "arn:aws:s3:::sagemaker*" }, { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:ListRoles" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/*", "Condition": { "StringLikeIfExists": { "iam:PassedToService": "codebuild.amazonaws.com" } } } ] } codebuildやecrやS3などの 権限を追加する
20.
カスタムコンテナの使用 ● image_uriにECRのURIを指定 ● その他はSageMakerが用意してい るイメージを使った場合の実装と 同じ image_uri以外は いつも通りの実装
21.
デモ ● SageMaker上でのイメージのビルドとカスタムコンテナを使った学習の実行 ● コード ○
全体: https://github.com/knishioka/machine-learning- workshop/tree/main/sagemaker/custom_container_with_sagemaker-training-toolkit ○ 実行用notebook: https://github.com/knishioka/machine-learning- workshop/blob/main/sagemaker/custom_container_with_sagemaker-training- toolkit/training_with_custom_container.ipynb
Editor's Notes
#3
こちらが私のプロフィールとなります。 機械学習には、大学時代の研究から携わっており、自分で立ち上げたスタートアップでも機械学習を使ったサービスを提供していました。 プロダクト開発チームやデータサイエンスチームの立ち上げなどもやっています。
#6
ここでは、SageMakerでどのように学習をしていくかを説明。 SageMakerではECRやS3を使って学習を進めていく。ECRは学習や推論に使うイメージの取得に使われ、S3は学習データなどの入力データや学習済みモデルなどの出力に使う。 fitでは学習済みモデルがS3に保存されるが、これだけだとSageMakerで学習済みモデルを使えないので、create_modelをすることにより、学習済みモデルを作る。 あとは細かい話として、エンドポイントを作ることで外部から推論を実行できるようになる。
#7
こちらは、先程のフローをもう少し簡略化したもの。青い丸が解析者がやるアクション。 重要な点はfitとcreate_modelがそれぞれ学習と推論のためのアクションであり、それらに対してコンテナが必要となること。 つまり、学習で独自のコンテナを使うということは、fitで使うコンテナを自分で作るということになる。
#8
カスタムコンテナの作り方は3種類。 1, 2, 3の順番で難易度が高くなる。 まず一つ目がAWSがすでに提供しているコンテナイメージを拡張する方法。独自ライブラリを使いたい場合などはこちらで対応。 2つめがSageMaker Training Toolkitを使ったもの。こちらは自分で好きなベースイメージを選ぶことができる。 3つめがスクラッチで作っていくもの。こちらはTraining Jobが外部とどのようにデータをやり取りしているか知る必要があり難しい。
#10
sagemaker-training-toolkitの使い方は非常にシンプル。 自分の好きなベースイメージを使ったDockerfileの中で3つの操作を指定するだけ。 まず一つ目が、sagemaker-trainingのライブラリをインストールします。こちらはpipを使えばすぐにインストールできます。 次に学習用の独自スクリプトを/opt/ml/code/train.pyに配置します。 そして、環境変数SAGEMAKER_PROGRAMにtrain.pyを指定します。 train.pyの実装は必要ですが、コンテナイメージ自体はこんなにシンプルに作ることができるようになっています。
#11
では、学習用スクリプトはどんなものかを紹介。 こちらは、学習と推論両方に対応するために作ったスクリプトで、大きく分けて2つのパートに別れている。 一つがname==mainとなっている部分。ここが学習データを読み込み、学習をし、学習済みモデルを保存する部分。 学習モデルの保存場所は決まっていて、/opt/ml/modelに保存する。 もう一つが推論のためのモデルの読み込みで、model_fn関数で定義されている。 こちらは先程の/opt/ml/modelからモデルを読み込む。 /opt/ml/modelは環境変数でSM_MODEL_DIRで呼び出すこともできる。
#12
コンテナ内の構造をもう少し説明。
#13
CHANNELがどのように作成されるか理解しておくことも重要。 fitのときにどのように与えるかでCHANNELは変わる。 training, validation, testingで与えた場合は、/opt/ml/input/data以下にそれぞれのデータが配置される。 そして、環境変数SM_CHANNEL_でそれぞれのパスを取得できるようになる。
#14
最後にSageMakerがトレーニングのときに行うことを紹介。
#15
sagemaker-training-toolkitの使い方は紹介済み。 sagemaker上でのイメージのbuildについて説明。
#16
イメージはbuild下だけでは使えないので、ecrにプッシュする必要がある。 イメージを作ってecrにログインして、ecrにレポジトリを作って、そこにpushするという作業が必要。 何回も修正するたびに作り直すのもめんどくさい。
#17
sagemaker上ではsm-dockerを使えば、面倒くさい作業を一気にやることができます。 sm-dockerでbuildをすると、dockerfile, コード、buildspec.ymlなどをs3へアップロードし、codebuildでイメージをbuildし、ecrへのイメージのアップロードまでしてくれます。
#18
sm-docker自体のインストールはpip installをするだけなので簡単なのですが、実際に実行するためにはSageMakerに紐付いている実行ロールに信頼ポリシーと権限を追加する必要があります。 ここが少しハードルが高い部分。 IAMをいじらないといけない。 ただ、この設定をしてしまえば、sm-docker buildとするだけで、簡単にイメージの作成とプッシュまで行ってくれる。
#19
詳細はあとから見てほしいが、trust policyとpermission policyを少し紹介。 trust policyに関しては、codebuildのものを追加するだけ。
#20
permisson policyはもはや文字が小さくて見えないと思うが、codebuildやecr, s3などの権限を追加。 policyさえ作ってしまえばいいし、サンプルとなるポリシーも公開されているので、IAMに慣れている人であれば、設定はそこまで大変ではない。
#21
最後にカスタムコンテナを使った実行のためのコードを紹介。 こちらは非常に簡単で、image_uriに先程作ったECRのURIを指定するだけ。
#22
最後に簡単にデモ。
Download