Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Amazon SageMakerが存在しない世界線のAWS上で実現する機械学習基盤

Amazon SageMakerが存在しない世界線のAWS上で実現する機械学習基盤

AWSで機械学習と言えばAmazon SageMakerを思い浮かべることも多いかと思います。実際には現場ごとに状況は様々で、解決すべき課題や要件が異なります。そういった状況に柔軟に対応する為に、敢えてAmazon SageMakerを使わずに実現する機械学習基盤について解説します。

貞松政史

August 15, 2022
Tweet

More Decks by 貞松政史

Other Decks in Technology

Transcript

  1. Amazon SageMakerが存在しない世界線の AWS上で実現する機械学習基盤 2022.08.04 AKIBA.AWS ONLINE #09 1

  2. 2 ⾃⼰紹介 Name Like Icon Okayama 貞松 政史 (@sady_nitro) 機械学習チーム

    マネージャー Job AWS Lambda Amazon ECS Amazon EventBridge
  3. 3 AWSで… AWSで機械学習と⾔えば Amazon SageMaker︕

  4. 4 本当に…︖ 本当にそれだけ︖

  5. 5 状況は様々 • 現在の環境をそのまま流⽤したい • 部分的に⼩さく始めたい • サービスのお作法を気にしたくない • コストが気になる

    • 他の環境への移植も考慮したい
  6. 6 ご紹介します Amazon SageMakerを使⽤しない アーキテクチャをご紹介

  7. 7 おしながき • 機械学習基盤に必要な要素 • 仮想マシンを使うアーキテクチャ • コンテナを活⽤したアーキテクチャ • サーバーレスアーキテクチャ

    • パイプライン処理やCI/CDを考える • 実験管理やモニタリングはどうする︖
  8. 8 機械学習基盤に必要な要素 • 機械学習基盤に必要な要素 • 仮想マシンを使うアーキテクチャ • コンテナを活⽤したアーキテクチャ • サーバーレスアーキテクチャ

    • パイプライン処理やCI/CDを考える • 実験管理やモニタリングはどうする︖
  9. 9 MLOpsを考慮した機械学習基盤 MLOps: 機械学習における継続的デリバリーと⾃動化のパイプライン https://cloud.google.com/architecture/mlops-continuous-delivery-and-automation-pipelines-in-machine-learning Google Cloudが定義するMLOps (レベル別) • MLOpsレベル

    0 : ⼿動プロセス • MLOpsレベル 1 : MLパイプラインの⾃動化 • MLOpsレベル 2 : CI/CDパイプラインの⾃動化
  10. 10 機械学習基盤に必要な要素 データ蓄積 デプロイ 推論実⾏ 学習パイプライン 評価 検証 推論 学習

    前処理 データ 抽出 再学習 トリガー ロギング モニタリング 実験管理 特徴量ストア
  11. 11 仮想マシンを使うアーキテクチャ • 機械学習基盤に必要な要素 • 仮想マシンを使うアーキテクチャ • コンテナを活⽤したアーキテクチャ • サーバーレスアーキテクチャ

    • パイプライン処理やCI/CDを考える • 実験管理やモニタリングはどうする︖
  12. 12 Amazon EC2を利⽤ (⾮推奨) • 如何ようにでもできる • データ抽出、前処理、学習、 推論、デプロイまで1台でも 完結できる

    (⾮推奨) • とはいえ実装コスト、管理 コストが爆増 • 少なくとも各処理フェーズ ごとにコンテナで管理する べき Amazon EC2 Database Amazon S3
  13. 13 コンテナを活⽤したアーキテクチャ • 機械学習基盤に必要な要素 • 仮想マシンを使うアーキテクチャ • コンテナを活⽤したアーキテクチャ • サーバーレスアーキテクチャ

    • パイプライン処理やCI/CDを考える • 実験管理やモニタリングはどうする︖
  14. 14 コンテナを利⽤したコンピューティング • Amazon ECS • フルマネージドなコンテナオーケストレーション • AWS Fargateをコンピューティング環境とするサーバー

    レスなコンテナ実⾏ • AWS Batch • ジョブキューやコンピューティング環境、実⾏パラメー タ等を定義したバッチジョブのパッケージ • 実際に実⾏されるのはECSタスク • 実⾏環境はAWS Batchによって制御される
  15. 15 Amazon ECSを利⽤した学習・推論環境 • Amazon ECRからコンテナ イメージを取得して実⾏ • 定義されたタスクを呼び出し •

    コンピューティング環境と してEC2とFargateが選択 できる Amazon S3 Amazon ECS AWS Fargate Amazon EC2 Database OR Amazon ECR Amazon API Gateway AWS Lambda
  16. 16 Amazon ECSを利⽤するメリット・デメリット • メリット • 実⾏環境や処理をコンテナに押し込めているのでポータ ビリティが⾼い • コンピューティング環境のスケーラビリティが⾼い

    • Fargateを利⽤したサーバーレスなコンテナ実⾏ • デメリット • EC2利⽤(主にGPU利⽤想定)の場合はコスト⾼め • コールドスタート含めオーバーヘッドがある
  17. 17 AWS Batchを利⽤した学習・推論環境 • ジョブキュー、コン ピューティング環境、 ジョブ定義等を設定 • 定義されたジョブを呼 び出し

    • 裏側でECSタスクが実 ⾏される Amazon S3 Amazon ECS AWS Fargate Amazon EC2 Database OR Amazon ECR Amazon API Gateway AWS Lambda AWS Batch Amazon EventBridge
  18. 18 AWS Batchを利⽤するメリット・デメリット • メリット • ECSのメリットをそのまま享受できる • EC2利⽤でもプロビジョニングから停⽌まで実⾏制御してくれる 為コスト低め

    • スポットインスタンス利⽤でコストを下げる選択肢もある • ジョブキューを搭載しているので、⼤量の同時実⾏制御に向いて いる • デメリット • オーバーヘッドがかなりかかる為、⼩さな処理をたくさん実⾏す るようなワークロードには向かない
  19. 19 サーバーレスアーキテクチャ • 機械学習基盤に必要な要素 • 仮想マシンを使うアーキテクチャ • コンテナを活⽤したアーキテクチャ • サーバーレスアーキテクチャ

    • パイプライン処理やCI/CDを考える • 実験管理やモニタリングはどうする︖
  20. 20 AWS Lambda (コンテナデプロイ)を利⽤ ;JQ ίϯςφ ετϨʔδ৔ॴ S3 ECR ετϨʔδαΠζ্ݶ

    Ϧʔδϣϯ୯Ґ 75GB (上限緩和可能) ECRのクォータに準拠 ΞʔςΟϑΝΫταΠζ্ݶ 250 MB (展開後) 10 GB -BZFSରԠ あり なし ίʔυॺ໊ あり なし Lambda Functionのデプロイ形式の違いによる制限の違い https://aws.amazon.com/jp/builders-flash/202103/new-lambda-container-development/
  21. 21 AWS Lambdaを利⽤する場合の注意事項 • アーティファクトサイズ上限10GB • 同時実⾏数上限1000(同⼀アカウント同⼀リージョン内) • タイムアウト時間上限15分 •

    メモリ割り当て上限10GB • Lambda Functionから「ファイル書き込み」ができる領域 は「/tmp」のみ (かつストレージ上限10GB) • Lambda⽤のコンテナイメージ作成時に幾つかお作法が存 在する(Dockerfileの書き⽅など)
  22. 22 AWS Lambdaを利⽤した推論エンドポイント • Lambda Functionで学習済みモデルを読み 込んで推論処理を実⾏する • コンテナ⾃体に学習済みモデルファイルを 詰め込むとファイルサイズが膨らむので、

    S3に配置して実⾏時に読み込む⽅式 を推奨 • API Gatewayのタイムアウトが最 ⼤29秒なので、実際にはLambda Functionの処理を呼び出した段階でレスポ ンスを返して⾮同期に処理することを想定 Amazon S3 Amazon ECR Amazon API Gateway AWS Lambda
  23. 23 パイプライン処理やCI/CDを考える • 機械学習基盤に必要な要素 • 仮想マシンを使うアーキテクチャ • コンテナを活⽤したアーキテクチャ • サーバーレスアーキテクチャ

    • パイプライン処理やCI/CDを考える • 実験管理やモニタリングはどうする︖
  24. 24 AWS CodePipeline・AWS CodeBuildを利⽤ • コードリポジトリに対するプッシュをトリガー • 最新のコードで再学習を実⾏ • 学習済みモデルをデプロイ

    開発者 AWS CodeBuild AWS CodePipeline Amazon EventBridge AWS CodeCommit GitHub OR Event AWS CodeDeploy AWS Cloud 推論実⾏ 環境 学習実⾏ 環境
  25. 25 実験管理やモニタリングはどうする︖ • 機械学習基盤に必要な要素 • 仮想マシンを使うアーキテクチャ • コンテナを活⽤したアーキテクチャ • サーバーレスアーキテクチャ

    • パイプライン処理やCI/CDを考える • 実験管理やモニタリングはどうする︖
  26. 26 Amazon AthenaやAmazon DynamoDBを利⽤ • 管理したいデータ • 学習データセット本体 (保存先) •

    特徴量 • ハイパーパラメータ • コスト重視 (サーバーレスでストレージコストが安価) • SageMaker Feature Storeも裏側はAthena Amazon Athena Amazon DynamoDB
  27. 27 Amazon CloudWatchやAmazon EventBridgeを利⽤ • CloudWatchのカスタムメトリクスを使⽤して必要なデータを送信 • メトリクス値を利⽤してCloudWatch Alarmを設定 •

    EventBridge経由で再学習をトリガー • SNS経由で通知を送信 開発者 AWS CodeBuild AWS CodePipeline Amazon EventBridge Event AWS CodeDeploy AWS Cloud 推論実⾏ 環境 学習実⾏ 環境 Amazon CloudWatch カスタムメトリクス送信 Amazon SNS
  28. 28 まとめ

  29. 29 まとめ • 機械学習基盤の要件は様々 • 幾つかの選択肢として、Amazon SageMakerを 利⽤しないアーキテクチャについてご紹介 • AWSのサービスを組み合わせることで要件を満たす

    環境を柔軟に構築 • ポータビリティを重視して、主要な処理をコンテナ に押し込める⽅針が筋としては良さそう
  30. 30