[レポート]AIM338 – コンテナとAmazon SageMakerにおける機械学習 #reinvent

AWS re:Invent 2019のチョークトークセッション「AIM338 - Machine learning with containers and Amazon SageMaker」のレポートです。

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

どうも、DA事業本部の大澤です。

本エントリはAWS re:Invent 2019のチョークトークセッション「AIM338 - Machine learning with containers and Amazon SageMaker」のレポートです。

セッション概要

Data scientists and machine learning engineers use containers to create custom, lightweight environments to train and serve models at scale with deep learning frameworks, such as TensorFlow, Apache MXNet, and PyTorch, achieving consistency across development and deployment. In this chalk talk, we discuss how to use AWS Deep Learning Containers to train and serve models with Amazon SageMaker.

意訳

データサイエンティストと機械学習エンジニアはコンテナを使い、開発からデプロイに渡り一貫性を維持しながら、TensorFlowやApache MXNet、PyTorchのような深層学習フレームワークを使ったモデルの学習とサービングに使用する軽量なカスタム環境を作成します。このチョークトークでは、Amazon SageMakerでのモデルの学習やサービングをするためにどのようにしてAWS Deep Learning Containersを使うのかを議論します。

スピーカー

  • Indu Thangakrishnan - Software Development Engineer, Amazon Web Services
  • Shashank Prasanna - Sr. Technical Evangelist, AI/ML, Amazon Web Services

レポート

概要

  • Machine learning workflow
    • データ収集
    • データの前処理
    • 実験
    • モデル開発
    • モデル最適化
    • デプロイ
  • AWSでの機械学習ステップ
    • Code&frameworks、Compute、Storage
  • 機械学習スタックは複雑
    • いろいろトラブル発生する
  • コンテナを使うことでスケール性やポータビリティなど問題は解決する
  • コンテナの中もフレームワーク、CPU、GPUドライバなどいろいろ必要
  • AWS Deep Learning Containers
    • 必要なイメージをパッケージし、完全に設定済み
    • パフォーマンスも最適化してる
  • どうやって学習はスケールする?
    • コンテナを増やす
  • なぜ学習をスケールさせたい?
    • 実験を並列させたい
    • 分散学習のため
  • MLインフラとクラスターマネジメント
    • 計算レイヤ
    • EC2
    • マネジメント計算レイヤ
    • ECS、EKS
    • MLサービス
    • SageMaker
  • SageMakerで学習させる方法
    • 組み込みアルゴリズム
    • 深層学習フレームワーク
    • カスタムコンテナ
  • 組み込みアルゴリズムを使う
    • Amazon Sagemaker SDKを使ってアルゴリズムを指定すればいいだけ
  • 深層学習フレームワークを使う
    • Amazon Sagemaker SDKでフレームワークを指定して、スクリプトを渡す
  • カスタムコンテナを使う
    • コンテナイメージをビルド
    • Aamazon SageMaker SDKでコンテナイメージを指定して、スクリプトを渡す

デモ

Jupyter Lab上でAmazon SageMakerを使った各学習方法やハイパーパラメータチューニング、分散学習についての解説がありました。上で紹介した三種類以外の内容について軽く紹介します。

  • ハイパーパラメータチューニング
    • HyperParameterTunerを使う
    • パラメータと値の範囲を指定する
  • 分散学習
  • ローカルモード
    • Estimatorのインスタンスタイプでlocalを指定することでローカルで動かすことが可能
    • Dockerが必要

デモの中でいくつか参加者から質問がありました。その中から聞き取れた一部の内容だけ紹介します。

  • データベースやデータウェアハウスのデータで学習するにはどうすればいいか?
    • S3にデータをダンプして使う
  • 計算リソースを最大限活用するには?
    • GPUに対応したスクリプトならGPU用のコンテナイメージ、そうでないならCPU用のイメージを使う
    • あとは使用したインスタンスの限界まで使うようになっている。設定のチューニングは不要
  • どういう関数を用意するべきみたいな指定はある?
    • 関数に指定はない
    • ハイパーパラメータやSageMakerから渡される引数や環境変数をパースする必要がある
  • 各インスタンスタイプにおけるプロセス数どうすればいいかのドキュメントがあるか?
    • ドキュメントはないけど、1CPU/GPUにつき1つ

資料

デモの際に使っていたノートブックがGitHubに公開されています。

さいごに

AWS re:Invent 2019のチョークトークセッション「AIM338 - Machine learning with containers and Amazon SageMaker」のレポートをお伝えしました。AWS Deep Learning Containersを使うことでコンテナイメージの構築なく、Amazon SageMakerでの組み込みアルゴリズム以外のアルゴリズムを使った学習が可能となります。コンテナイメージの管理の必要も無くなりますし、積極的に使っていきたいですね。

参考