2022年4月26日に実施したワークショップのスライドです。
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.© 2022, Amazon Web Services, Inc. or its affiliates.SageMaker Dive Deep Workshop動かして理解する SageMaker Training Job の仕組み本橋 和貴機械学習パートナー ソリューション アーキテクト呉 和仁機械学習ソリューション アーキテクトアマゾン ウェブ サービス ジャパン合同会社
View Slide
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.本ワークショップの対象者• これまで SageMaker の概要の説明を聞いたりハンズオンイベントに参加したものの、⾃前のモデルをどう SageMaker 上で学習するかイメージがつかなかった⽅々• これから SageMaker を活⽤していきたい⽅々前提条件• 【必須】Python の基礎知識• 【望ましい】TensorFlow/PyTorch での実装経験*SageMaker Training Job 以外の機能にはほぼ触れません2
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.Agenda• SageMaker Training Job 座学• SageMaker の全体像• SageMaker Notebooks と SageMaker Studio• SageMaker Training Job と SageMaker Python SDK• SageMaker Training Job ハンズオン• Toy コードを⽤いた SageMaker Training Job の動作の理解• TensorFlow / PyTorch の学習コードを SageMaker ⽤に書き換える3
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.機械学習を取り巻く状況AI による変⾰2025年までに新しいエンタープライズ アプリケーションの 90% 以上に AIが組み込まれる–IDC2024年までに、⼈⼯知能に対する投資は1100億ドルに到達する–IDC加速する投資機械学習とDevOps の統合機械学習はすでにメインストリームの DevOpsプロセスの⼀部であり、独⽴したプロジェクトではない̶Gartnerあらゆるものが「賢く」 なる時代
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.お客様にとって、AI/ML はすでに最重要課題お客様は急速なペースで ML を導⼊しています。2024年には75%のお客様が MLを運⽤するようになります(出典︓Gartner)より多くのビジネスグループにリーチを広げるML は、マーケティング、法務、サプライチェーン、⼈事、財務、さらには IT など、ビジネスライン全体で使⽤されています。ML のワークロードは、お客様のアカウントでの活動範囲を増やすための⾜がかりとなります。お客様には⽀援が必要お客様は ML を重視していますが、ほとんどの場合、実⾏するための専⾨的なスキルを社内に持ち合わせていません。お客様は、ML プラットフォームの構築からビジネスユースケースの解決、技術⼒の拡張まで、ML のライフサイクル全体にわたって⽀援を必要としています。AI & 機械学習なぜパートナーにとって重要か
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.お客様の ML の障壁を SageMaker で克服ଟذʹΘͨΔσʔλαΠΤϯεπʔϧ୯ҰΠϯλʔϑΣʔεͷ౷߹ .-πʔϧ*%&Λར༻ͯ͠ϞσϧΛߏஙɺֶशɺσϓϩΠ.-ͷͨΊͷେྔͷσʔλͷॲཧͱϥϕϦϯάઐ༻ͷσʔλ४උπʔϧ.- ͷͨΊͷσʔλͷϥϕϦϯάͱ४උ.-։ൃऀͷෆϊʔίʔυ .-πʔϧ.-ͷઐ͕ࣝͳͯ͘༧ଌΛੜୀ۶ͳखಈͷ.-ΦϖϨʔγϣϯΈࠐΈͷ .-0QT ػೳ.-0QT ϓϥΫςΟεΛ࣮ͯ͠ .-ϥΠϑαΠΫϧΛޮԽ
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates. 7https://gitlab.com/juliensimon/awsmlmap/-/blob/master/map-sagemaker.pngデータ準備モデル構築モデル学習最適化⾃動化モニタリングデプロイ
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.クラウド上に機械学習開発プラットフォームを構築SageMaker Training Jobを活⽤して学習コストの最適化⾃動ハイパーパラメータ最適化や分散学習を⽤いて⼤規模に学習を実⾏MLOps パイプラインを構築してモデルの再学習プロセスを⾃動化移⾏最適化⼤規模化⾃動化モデル学習の ModernizationSageMakerExperimentsManagedSpot TrainingSageMakerDebuggerSageMakerAutopilotSageMakerStudioSageMakerPipelinesSageMakerClarifySageMakerData Wrangler
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.Amazon SageMaker の基本構成要素学習スクリプトML 実⾏環境学習データ…Amazon SageMaker Amazon ECRAmazon S3SageMakerPython SDK
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.Jupyter ノートブック環境でモデルを構築The Jupyter Trademark is registered with the U.S. Patent &Trademark Office.
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.Amazon SageMaker NotebooksJupyter Notebook JupyterLab
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.Amazon SageMaker Studio
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.© 2022, Amazon Web Services, Inc. or its affiliates.SageMaker Studio / Notebooks14
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.EBS VolumeSageMaker Notebooks のアーキテクチャー15🧑💻 Browser EC2 instanceNotebook ServerKernelKernelHTTPS/WSS 0MQJupyter /JupyterLab UIUser機械学習開発⽤にセットアップされたシンプルなマネージド Jupyter 環境組み込みのカーネル
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.SageMaker Studio のアーキテクチャー16Amazon Elastic File System (EFS)👩💻User 1🧑💻User 2User ProfileUser ProfileStudioUIStudioUIEC2 instanceNotebookServerJupyterServer AppSystemTerminaldocker containerKernelGatewayKernelKernel Image Terminaldocker containerKernelGateway AppKernelGatewayKernelGatewayKernelGateway......... ... ...
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.SageMaker Studio のアーキテクチャー17Amazon Elastic File System (EFS)👩💻User 1🧑💻User 2User ProfileUser ProfileStudioUIStudioUIEC2 instanceNotebookServerJupyterServer AppSystemTerminaldocker containerKernelGatewayKernelKernel Image Terminaldocker containerKernelGateway AppKernelGatewayKernelGatewayKernelGateway......... ... ...
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.SageMaker Studio のアーキテクチャー18Amazon Elastic File System (EFS)👩💻User 1🧑💻User 2User ProfileUser ProfileStudioUIStudioUIEC2 instanceNotebookServerJupyterServer AppSystemTerminaldocker containerKernelGatewayKernelKernel Image Terminaldocker containerKernelGateway AppKernelGatewayKernelGatewayKernelGateway......... ... ...
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.SageMaker Notebooks と SageMaker Studio の機能⽐較19SageMaker Notebooks SageMaker StudioUI Jupyter / JupyterLabJupyterLab を拡張したSageMaker IDEストレージ EBS EFS環境分離 Anaconda Dockerインスタンスの変更インスタンス⾃体の停⽌ → 切り替え → 起動Studio UI 上で切り替えローカルモード 使⽤可能 不可AWS SSO 連携不可 連携可能
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.Cloud9 に EFS をマウントするという選択肢20Amazon Elastic File System AWS Cloud9Amazon SageMaker
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.© 2022, Amazon Web Services, Inc. or its affiliates.SageMaker Training Job21
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.ノートブック環境と学習環境の分離The Jupyter Trademark is registered with the U.S. Patent &Trademark Office.
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.ノートブック環境と学習環境の分離The Jupyter Trademark is registered with the U.S. Patent &Trademark Office.学習が終わると削除学習時間のみ秒単位で課⾦
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.推論環境をコンテナで素早く構築The Jupyter Trademark is registered with the U.S. Patent &Trademark Office.エンドポイント
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.SageMaker Python SDK• SageMaker でのモデル学習とかデプロイを簡素化する OSS の SDK26👩💻Amazon SageMakerAWS SDK for Python(Boto3)SageMakerPython SDK⼤変なことはSageMaker にやらせようEstimator学習コードハイパーパラメータコンテナ URI…Estimator.fit(学習データ)create_training_job(...)インスタンスタイプわかるEstimator.deploy(...)create_model(...)create_endpoint_config(...)create_endpoint(...)
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.SageMaker でモデルをトレーニングする⽅法• Jupyter Notebook 上で直接実⾏§ 任意のライブラリ• SageMaker Traning Job で実⾏§ 組み込みアルゴリズム– Linear Learner, XGBoost, k-NN, Random Cut Forest, ResNet, BrazingText, ...§ スクリプトモード– TensorFlow, MXNet, PyTorch, HuggingFace, SKLearn, etc§ 独⾃コンテナの持ち込み (Bring Your Own Container)§ AWS Marketplace アルゴリズム27
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.Estimator – SageMaker Python SDK• エンドツーエンドの学習とモデルのデプロイを制御するクラス28EstimatorBaseEstimatorFrameworkMXNetXGBoostSKLearnTensorFlowHuggingFacePyTorchChainer汎⽤的な Estimator クラス• 組み込みアルゴリズム• コンテナ持ち込み (BYOC)各フレームワーク⽤にカスタマイズされた Estimator クラス• スクリプトモードAlgorithmEstimator• AWS Marketplace アルゴリズム
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.TensorFlow Estimator の使⽤例29from sagemaker.tensorflow import TensorFlowtensorflow_estimator = TensorFlow(entry_point='train.py',hyperparameters={'epochs': 20,'batch-size': 64,'learning-rate': 0.1},framework_version='2.6',py_version='py38',instance_type='ml.p3.2xlarge',instance_count=1,)tensorflow_estimator.fit({'train': 's3://my-bucket/path/to/training/data','test': 's3://my-bucket/path/to/test/data'})学習コードの指定学習コードに渡すハイパーパラメータの設定学習コンテナの指定学習インスタンスの指定学習データの指定e.g.) 763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-training:2.6-gpu-py38
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.⼀般的な学習コードの構成SageMaker Training Job§ [ジョブ開始時]: 学習データは S3 から⾃動ダウンロード§ [ジョブ終了時]: 学習済みモデルは S3 に⾃動アップロードコードの書き換えが最低限必要なのは§ データをどのパスからロードするか§ モデルをどのパスに保存するか§ (*ハイパーパラメータは引数として argparse で取得可能)§ (*分散学習する場合はトレーニング部分も)30データのロードモデルの定義トレーニング*モデルの保存▼▼▼
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.コード × コンテナ × SageMaker Python SDK31データのロードモデルの定義トレーニング*モデルの保存▼▼▼/opt/ml├──│ ├── data│ │ ├── │ │ │ └── │ │ ├── │ │ │ └── │ │ └── │ │ └── │ └── config│ ├── hyperparameters.json│ └── resourceConfig.json│├── code│ ├── │ └── .py├── output│ └── └── model└── データモデルコードfit( ={'train': '’,'validation': '’,'test': '’,})hyperparameters={'epochs': 20,'batch-size': 64,'learning-late': 0.1}Estimator学習コンテナのファイルシステム[source_dir]entry_point
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.学習コンテナ(学習コード)で使える便利な環境変数*• SM_CHANNEL_{channel_name}§ Estimator.fit() の引数で指定したチャンネルのデータが配置されるディレクトリ– SM_CHANNEL_TRAIN=/opt/ml/input/data/train– SM_CHANNEL_TEST=/opt/ml/input/data/test• SM_HPS§ Estimator に渡したハイパーパラメータを JSON エンコードした辞書– SM_HPS=‘{“epochs”: “20”, “batch-size”: “64”, “learning-rate”: “0.1”}’• SM_NUM_GPUS / SM_NUM_CPUS§ コンテナで利⽤可能な GPU / CPU の数• SM_MODEL_DIR§ S3 にアップロードされることになるモデルの置き場所– SM_MODEL_DIR=/opt/ml/model32*その他多数ありhttps://zenn.dev/kmotohas/articles/7bfe313eab01ea
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.(おまけ)学習済みモデルのデプロイ• fit を呼び出すと Estimator の self.latest_training_job にジョブの情報が格納され、その情報をもとにモデルをデプロイできる33predictor = estimator.deploy(instance_type="ml.c5.xlarge",initial_instance_count=1,)result = predictor.predict(data)create_model()create_endpoint_config()create_endpoint()invoke_endpoint()
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.(おまけ)Estimator.deploy() がやっていること34Inference Container ImageModel ArtifactAdvanced ConfigurationsSageMaker ModelIAM RoleSageMakerEndpointインスタンスタイプ / 数 /リクエストの割合 / ...invoke_endpoint()create_modelcreate_endpoint_configcreate_endpoint①②③
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.(おまけ)A/B テストの仕組みも簡単に作れる35SageMakerEndpointinvoke_endpoint()95%5%Variant 1Variant 2
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.まとめ• SageMaker は機械学習ライフサイクル全体をエンドツーエンドでサポートすることができる• まずは、SageMaker Training Job を利⽤してモデル学習をmodernize していくところから始めるのがおすすめ• SageMaker Python SDK を⽤いるとモデルの学習からデプロイまでの⼿順を簡素化できる• スクリプトモードを⽤いる場合も学習コードの書き換えは最⼩限36
AWS パートナー様限定 SageMaker Dive Deep Workshop 〜 動かして理解する SageMaker Training Job の仕組み© 2022, Amazon Web Services, Inc. or its affiliates.Thank you!© 2022, Amazon Web Services, Inc. or its affiliates.