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

CTO Night & Day - MLOps

CTO Night & Day - MLOps

Yoshitaka Haribara

October 09, 2019
Tweet

More Decks by Yoshitaka Haribara

Other Decks in Technology

Transcript

  1. © 2019, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Morning session (AI/ML) ML services: MLOps
  2. © 2019, Amazon Web Services, Inc. or its Affiliates. アマゾン

    ウェブ サービス ジャパン株式会社 Startup Solutions Architect 針原 佳貴 2019-10-09 Amazon SageMaker Build, train, and deploy machine learning models #ctonight
  3. © 2019, Amazon Web Services, Inc. or its Affiliates. 自己紹介

    • 針原 佳貴 (はりばら よしたか) • 博士 (情報理工学) • Startup Solutions Architect • スタートアップの技術支援・機械学習導入支援 • 好きなサービスは Amazon SageMaker
  4. © 2019, Amazon Web Services, Inc. or its Affiliates. ©

    2019, Amazon Web Services, Inc. or its Affiliates. 全てのデベロッパーの手に 機械学習を Our mission at AWS
  5. © 2019, Amazon Web Services, Inc. or its Affiliates. Customer-focused

    90%以上の ML ロードマップは お客様の声によるもの Multi-framework 主要なフレームワークの サポート Pace of innovation 去年200以上の ML 関連の 発表・主要な機能追加 Breadth and depth 幅広い AI/ML サービスを プロダクション導入 Security and analytics 豊富なセキュリティ・暗号化 に関する機能と頑強な分析基盤 Embedded R&D 顧客中心のアプローチで state-of-the-art を実現 AWS の機械学習に対するアプローチ
  6. © 2019, Amazon Web Services, Inc. or its Affiliates. 深層学習フレームワーク

    & インフラストラクチャ AI サービス ML サービス Amazon SageMaker A M A Z O N E C 2 C 5 I n s t a n c e s A M A Z O N E C 2 P 3 / G 4 I n s t a n c e s F P G A s Frameworks AWS の機械学習スタック A m a z o n R e k o g n i t i o n I m a g e / V i d e o A m a z o n P o l l y A m a z o n T r a n s c r i b e A m a z o n T r a n s l a t e A m a z o n C o m p r e h e n d A m a z o n L e x Chatbots A m a z o n F o r e c a s t Forecasting A m a z o n T e x t r a c t A m a z o n P e r s o n a l i z e Recommendations Vision Speech Language E l a s t i c I n f e r e n c e Infrastructure Interfaces AutoML
  7. © 2019, Amazon Web Services, Inc. or its Affiliates. 深層学習フレームワーク

    & インフラストラクチャ AI サービス ML サービス Amazon SageMaker A M A Z O N E C 2 C 5 I n s t a n c e s A M A Z O N E C 2 P 3 I n s t a n c e s F P G A s Frameworks AWS の機械学習スタック A m a z o n R e k o g n i t i o n I m a g e / V i d e o A m a z o n P o l l y A m a z o n T r a n s c r i b e A m a z o n T r a n s l a t e A m a z o n C o m p r e h e n d A m a z o n L e x Chatbots A m a z o n F o r e c a s t Forecasting A m a z o n T e x t r a c t A m a z o n P e r s o n a l i z e Recommendations Vision Speech Language E l a s t i c I n f e r e n c e Infrastructure Interfaces • コンピュータビジョン (画像及び動画内の物体検出・顔認識・不適切コンテンツ の検出)、音声 (読み上げ・書き起こし)、自然言語処理 (翻訳・文書意味理解)・ チャットボットのトレーニング済みモデルを API で簡単に呼び出せる • AutoML: お客様のデータをアップロードして、モデル選択・トレーニング・パラ メータチューニングを行いエンドポイントにデプロイ AutoML
  8. © 2019, Amazon Web Services, Inc. or its Affiliates. ©

    2019, Amazon Web Services, Inc. or its Affiliates. Amazon SageMaker
  9. © 2019, Amazon Web Services, Inc. or its Affiliates. あらゆる規模で機械学習・深層学習モデルを構築・トレーニング・デプロイ

    Amazon SageMaker トレーニングと パラメーター チューニング トレーニング 環境の 整備と運用 本番環境への デプロイ 学習データの 収集と準備 ML アルゴリズム の 選択と最適化 1 2 3 本番環境での 運用とスケーリン グ
  10. © 2019, Amazon Web Services, Inc. or its Affiliates. あらゆる規模で機械学習・深層学習モデルを構築・トレーニング・デプロイ

    トレーニング 環境の 整備と運用 本番環境への デプロイ 学習データの 収集と準備 ML アルゴリズム の 選択と最適化 1 2 3 本番環境での 運用とスケーリン グ Amazon SageMaker Ground Truth トレーニングと パラメーター チューニング Amazon SageMaker
  11. © 2019, Amazon Web Services, Inc. or its Affiliates. あらゆる規模で機械学習・深層学習モデルを構築・トレーニング・デプロイ

    トレーニング 環境の 整備と運用 本番環境への デプロイ 学習データの 収集と準備 ML アルゴリズム の 選択と最適化 1 2 3 本番環境での 運用とスケーリン グ Amazon SageMaker Ground Truth AWS Marketplace for Machine Learning トレーニングと パラメーター チューニング • k-means クラスタリング • Factorization Machines (レコメンド) • DeepAR (時系列予測) • BlazingText (Word2Vec) • XGBoost • 画像分類・物体検出 • Seq2Seq • LDA / Neural Topic Modelling (トピックモデル) • 主成分分析 • 線型学習器 (回帰 / 分類) Amazon SageMaker
  12. © 2019, Amazon Web Services, Inc. or its Affiliates. あらゆる規模で機械学習・深層学習モデルを構築・トレーニング・デプロイ

    トレーニング 環境の 整備と運用 本番環境への デプロイ 学習データの 収集と準備 ML アルゴリズム の 選択と最適化 1 2 3 本番環境での 運用とスケーリン グ Amazon EC2 P3 Instances Managed Spot Training Amazon SageMaker Ground Truth AWS Marketplace for Machine Learning トレーニングと パラメーター チューニング Amazon SageMaker
  13. © 2019, Amazon Web Services, Inc. or its Affiliates. トレーニングと

    パラメーター チューニング あらゆる規模で機械学習・深層学習モデルを構築・トレーニング・デプロイ トレーニング 環境の 整備と運用 本番環境への デプロイ 学習データの 収集と準備 ML アルゴリズム の 選択と最適化 1 2 3 本番環境での 運用とスケーリン グ Amazon EC2 P3 Instances Managed Spot Training Amazon SageMaker Ground Truth AWS Marketplace for Machine Learning Amazon SageMaker
  14. © 2019, Amazon Web Services, Inc. or its Affiliates. トレーニングと

    パラメーター チューニング あらゆる規模で機械学習・深層学習モデルを構築・トレーニング・デプロイ トレーニング 環境の 整備と運用 本番環境への デプロイ 学習データの 収集と準備 ML アルゴリズム の 選択と最適化 1 2 3 本番環境での 運用とスケーリン グ Amazon EC2 P3 Instances Managed Spot Training Amazon SageMaker Ground Truth AWS Marketplace for Machine Learning Amazon SageMaker Neo Amazon SageMaker
  15. © 2019, Amazon Web Services, Inc. or its Affiliates. トレーニングと

    パラメーター チューニング あらゆる規模で機械学習・深層学習モデルを構築・トレーニング・デプロイ トレーニング 環境の 整備と運用 本番環境への デプロイ 学習データの 収集と準備 ML アルゴリズム の 選択と最適化 1 2 3 本番環境での 運用とスケーリン グ Amazon EC2 P3 Instances Managed Spot Training Amazon SageMaker Ground Truth Amazon Elastic Inference AWS Marketplace for Machine Learning Amazon SageMaker Neo Amazon SageMaker
  16. © 2019, Amazon Web Services, Inc. or its Affiliates. ©

    2019, Amazon Web Services, Inc. or its Affiliates. Amazon SageMaker の使い方
  17. © 2019, Amazon Web Services, Inc. or its Affiliates. 開発環境として

    Jupyter Notebook/Lab を簡単に使える • インスタンスタイプを選んで立ち上げるだけ • フレームワークがプリインストール
  18. © 2019, Amazon Web Services, Inc. or its Affiliates. Amazon

    SageMaker Jupyter Notebook/Lab Amazon S3 The Jupyter Trademark is registered with the U.S. Patent & Trademark Office. 開発 データは予め Amazon S3 にアップロード: • SageMaker Python SDK で簡単に • sagemaker_session.upload_data( path='data', key_prefix='data/DEMO') • AWS CLI や AWS SDK (Python だと boto3) などでも • aws s3 sync <source> <dest> • GUI (マネージメントコンソール) からでも
  19. © 2019, Amazon Web Services, Inc. or its Affiliates. Amazon

    SageMaker 開発 Jupyter Notebook/Lab Amazon S3 The Jupyter Trademark is registered with the U.S. Patent & Trademark Office.
  20. © 2019, Amazon Web Services, Inc. or its Affiliates. Amazon

    SageMaker 開発 Jupyter Notebook/Lab Amazon S3 学習 Amazon EC2 P3 Instances Amazon ECR The Jupyter Trademark is registered with the U.S. Patent & Trademark Office. ビルド済みのコンテナイメージが 予め用意されている
  21. © 2019, Amazon Web Services, Inc. or its Affiliates. Amazon

    SageMaker 開発 学習 Amazon EC2 P3 Instances Jupyter Notebook/Lab Amazon S3 The Jupyter Trademark is registered with the U.S. Patent & Trademark Office. トレーニングでのメリット: • APIを経由で学習用のインス タンスを起動可能、学習が 完了すると自動停止 • 高性能なインスタンスを秒 課金で使え、簡単にコスト を抑えることができる • 指定した数のインスタンス を同時起動でき、分散学習 も容易
  22. © 2019, Amazon Web Services, Inc. or its Affiliates. Amazon

    SageMaker 開発 学習 Amazon EC2 P3 Instances Jupyter Notebook/Lab Amazon S3 The Jupyter Trademark is registered with the U.S. Patent & Trademark Office.
  23. © 2019, Amazon Web Services, Inc. or its Affiliates. Amazon

    SageMaker 開発 学習 推論 Amazon EC2 P3 Instances Jupyter Notebook/Lab Endpoint/ Batch transform Amazon S3 Amazon ECR The Jupyter Trademark is registered with the U.S. Patent & Trademark Office.
  24. © 2019, Amazon Web Services, Inc. or its Affiliates. ワークフロー構築を助けるツール

    • SageMaker Python SDK • https://github.com/aws/sagemaker-python-sdk/ • Docker コンテナによる環境統一 • ビルド済みコンテナ (対応フレームワークのバージョン) は上記 URL の README • Git レポジトリとの統合
  25. © 2019, Amazon Web Services, Inc. or its Affiliates. SageMaker

    Python SDK import sagemaker from sagemaker.mxnet import MXNet # 各フレームワークに対応した Estimator クラス estimator = MXNet("train.py", # トレーニングスクリプトなどを指定して初期化 role=sagemaker.get_execution_role(), train_instance_count=1, train_instance_type="ml.p3.2xlarge", framework_version="1.4.0")
  26. © 2019, Amazon Web Services, Inc. or its Affiliates. SageMaker

    Python SDK import sagemaker from sagemaker.mxnet import MXNet # 各フレームワークに対応した Estimator クラス estimator = MXNet("train.py", # トレーニングスクリプトなどを指定して初期化 role=sagemaker.get_execution_role(), train_instance_count=1, train_instance_type="ml.p3.2xlarge", framework_version="1.4.0") estimator.fit("s3://mybucket/data/train") # fit でトレーニング
  27. © 2019, Amazon Web Services, Inc. or its Affiliates. SageMaker

    Python SDK import sagemaker from sagemaker.mxnet import MXNet # 各フレームワークに対応した Estimator クラス estimator = MXNet("train.py", # トレーニングスクリプトなどを指定して初期化 role=sagemaker.get_execution_role(), train_instance_count=1, train_instance_type="ml.p3.2xlarge", framework_version="1.4.0") estimator.fit("s3://mybucket/data/train") # fit でトレーニング predictor = estimator.deploy(initial_instance_count=1, instance_type="ml.m4.xlarge") # deploy でエンドポイント作成
  28. © 2019, Amazon Web Services, Inc. or its Affiliates. 「コンテナ」による環境の統⼀化

    CUDA, cuDNN トレーニングスクリプト train.py Deep Learning Framework スクリプトの実行に必要なものを コードで記述し一箇所にまとめる Docker image
  29. © 2019, Amazon Web Services, Inc. or its Affiliates. コードの書き換え

    (Script Mode, File Mode) import argparse if __name__ == '__main__’: parser = argparse.ArgumentParser() # hyperparameters parser.add_argument('--epochs', type=int, default=10) # input data and model directories parser.add_argument('--train', type=str, default=os.environ['SM_CHANNEL_TRAIN']) parser.add_argument('--test', type=str, default=os.environ['SM_CHANNEL_TEST']) parser.add_argument('--model-dir', type=str, default=os.environ['SM_MODEL_DIR']) args, _ = parser.parse_known_args() train.py コンテナ内のパス (環境変数の中身): /opt/ml/input/data/train /opt/ml/input/data/test /opt/ml/model 環境変数 から取得
  30. © 2019, Amazon Web Services, Inc. or its Affiliates. S3からのファイル転送

    • FILE モード (Default): データをダウンロードしてから学習開始 • S3 からデータダウンロード • トレーニング開始 • PIPE モード: ストリーミングでダウンロードしながら非同期に学習を実施 • Epoch ごとに channel を作ってストリーミングでデータを読むことに よってファイル転送のオーバーヘッドを軽減 • TensorFlow, MXNet のみ対応 • ブログ「Amazon SageMaker でより速いパイプモードを使用してモデ ルのトレーニングを高速化する」
  31. © 2019, Amazon Web Services, Inc. or its Affiliates. Git

    レポジトリとの統合 • Notebook インスタンス立ち上げ時に紐付けが可能 • Public レポジトリの clone • Private レポジトリの認証情報を AWS Secrets Manager に保管して レポジトリを登録 • Git レポジトリのコードから直接トレーニングを実行する事も可能 • ブログ「Amazon SageMaker Python SDK で Git 統合を利用可能」 git_config = {'repo': 'https://github.com/awslabs/amazon-sagemaker-examples.git’, 'branch': 'training-scripts'} estimator = TensorFlow(entry_point='train.py', source_dir='char-rnn-tensorflow', git_config=git_config, train_instance_type=train_instance_type, train_instance_count=1, role=sagemaker.get_execution_role(), framework_version='1.13', py_version='py3', script_mode=True) • Jupyter Lab で Notebook の diff を取れるようになった • SageMaker Notebooks now support diffing
  32. © 2019, Amazon Web Services, Inc. or its Affiliates. ©

    2019, Amazon Web Services, Inc. or its Affiliates. 継続的な機械学習のワークフロー
  33. © 2019, Amazon Web Services, Inc. or its Affiliates. トレーニングジョブとモデルの管理

    • トレーニングジョブには 以下のような情報が記録される • ジョブ名 • 作成時間 • トレーニング時間 • インスタンスタイプ・数 • コンテナイメージ (レポジトリ URI) • 入力データ • チャネル名・型・S3 URI など • 出力 • 学習済みモデルとそのS3 パス • ハイパーパラメータ • メトリクス • ジョブを検索可能 • アルゴリズム名 • イメージ • データ URI • 開始・終了時間 メトリクスでソート、 ベストなモデルを取得し、 その時の実験環境を再現 することが可能
  34. © 2019, Amazon Web Services, Inc. or its Affiliates. 機械学習の一般的なワークフロー

    データ収集 クリーン アップ データ変換・ ラベル付け トレーニング モデル評価 本番環境に デプロイ 推論・監視
  35. © 2019, Amazon Web Services, Inc. or its Affiliates. 継続的な機械学習のワークフロー

    • トレーニングからデプロイまでのワークフローを自動化 • AWS Step Functions, Apache Airflow • 継続的なモデルのアップデートを実現 • スケジュール / イベントトリガーによる増分学習 • とにかく自動化、自動化、自動化しきれないところは半自動化 • Human-in-the-Loop
  36. © 2019, Amazon Web Services, Inc. or its Affiliates. AWS

    Step Functions • JSON ベースの言語でステートマシンを記述できるマネージドサービス • AWS Lambda をはじめとした各サービスに対応 • CloudWatch Event でスケジュール実行やイベントトリガーが可能 Start End Train Deploy Fetch data AWS Lambda Amazon SageMaker AWS Lambda (Amazon SageMaker) Amazon CloudWatch Events (Schedule / event trigger)
  37. © 2019, Amazon Web Services, Inc. or its Affiliates. AWS

    Step Functions workflow 機械学習パイプラインの構築例 Test data Train data Data Scientists/ Developers Git webhook docker push AWS Glue Amazon S3 (data) Amazon SageMaker Training Job / HPO AWS CodeCommit or 3rd party Git repository Amazon S3 (raw data) Amazon Elastic Container Registry (ECR) AWS CodeBuild Endpoint https://aws.amazon.com/blogs/machine-learning/automated-and-continuous-deployment-of-amazon-sagemaker-models-with-aws-step-functions/ Amazon SageMaker Batch Transform / Endpoint deploy Amazon S3 (trained model) git push
  38. © 2019, Amazon Web Services, Inc. or its Affiliates. Apache

    Airflow にも SageMaker Operator が用意されている • Python で記述した DAG (有向非巡回グラフ) でワークフロー管理 • Amazon SageMaker とのインテグレーションも • EC2 + RDS は別途必要 (マネージドサービスではない) Raw data Cleaned data Train data Test data Amazon SageMaker Training / HPO Model artifact Amazon SageMaker Batch transform Airflow DAG Filter long-tailed data sparse data format → RecordIO protobuf Analyze model performance based on test data Operator PythonOperator PythonOperator SageMakerTrainOperator/ SageMakerTransformOperator PythonOperator SageMakerTuningOperator Blog: https://aws.amazon.com/jp/blogs/news/build-end-to-end-machine-learning-workflows-with-amazon-sagemaker-and-apache-airflow/ Prediction results
  39. © 2019, Amazon Web Services, Inc. or its Affiliates. データ収集・アノテーションの課題と求められること

    • 集まったデータで再学習がしたい • 教師データの質は、その後のモデルの質を決定する • 自動化されたワークフローの中でも精度を担保できるよう 時には人手のラベル付けが必要
  40. © 2019, Amazon Web Services, Inc. or its Affiliates. ©

    2019, Amazon Web Services, Inc. or its Affiliates. Amazon SageMaker Ground Truth
  41. © 2019, Amazon Web Services, Inc. or its Affiliates. Amazon

    SageMaker Ground Truth • アノテーションの一般的なワークフローをサポート • 4種類の組み込みラベリングツールとワーカー連携 • アクティブラーニング・自動ラベリング機能で最大70%のコスト削減 • ラベル統合 (label consolidation) による高精度なラベル付け • AWS StepFunctions からの呼び出しにも対応 迅速・効率的 簡単 高精度
  42. © 2019, Amazon Web Services, Inc. or its Affiliates. 精度の高い

    学習用データセット 入力 データセット 人がラベル付けしたデータから アクティブラーニングのモデルを学習 自動 アノテーション 信頼度の低いデータは 人間がアノテーション アクティブラーニングと自動データラベリング アクティブ ラーニング
  43. © 2019, Amazon Web Services, Inc. or its Affiliates. ワークフローを構築し、詰まる部分を改善

    データ収集 クリーン アップ データ変換・ ラベル付け トレーニング モデル評価 本番環境に デプロイ 推論・監視
  44. © 2019, Amazon Web Services, Inc. or its Affiliates. ©

    2019, Amazon Web Services, Inc. or its Affiliates. コストを抑えるための選択肢
  45. © 2019, Amazon Web Services, Inc. or its Affiliates. ©

    2019, Amazon Web Services, Inc. or its Affiliates. Managed Spot Training
  46. © 2019, Amazon Web Services, Inc. or its Affiliates. スポットインスタンスでトレーニングの料金を削減

    • オンデマンドに比べて最大90%のコスト削減 • 中断が発生する可能性があるので checkpoints に途中経過を書き出し • 最大で待てる時間を指定 呼び出し方 (SageMaker Python SDK >= v1.37.2 で対応): estimator = Estimator("train.py", role=sagemaker.get_execution_role(), train_instance_count=1, train_instance_type="ml.p3.2xlarge", framework_version="1.4.0”, train_use_spot_instances=True, train_max_wait=2*24*60*60, # train_max_run (デフォルト1日) より長い時間を指定 checkpoint_s3_uri="s3://mybucket/checkpoints", checkpoint_local_path= ="/opt/ml/checkpoints/" ) estimator.fit("s3://mybucket/data/train") # fit でトレーニングは同様
  47. © 2019, Amazon Web Services, Inc. or its Affiliates. 推論コストを抑えるための選択肢

    1. Batch Transform Job • 必要な時だけエンドポイントを立て大規模データをバッチで推論 2. Amazon Elastic Inference • 推論に必要な分だけ適切な量の計算リソースをアタッチ 3. Amazon SageMaker Neo • エッジ推論のためモデルのコンパイルによる軽量化と高速化
  48. © 2019, Amazon Web Services, Inc. or its Affiliates. 0

    50 100 150 200 1 2 4 6 8 10 セッション数を増やしてもスループットが飽和
  49. © 2019, Amazon Web Services, Inc. or its Affiliates. Amazon

    Elastic Inference コストを 抑えながら 推論 レイテンシを短縮
  50. © 2019, Amazon Web Services, Inc. or its Affiliates. ©

    2019, Amazon Web Services, Inc. or its Affiliates. Amazon SageMaker Neo
  51. © 2019, Amazon Web Services, Inc. or its Affiliates. Amazon

    SageMaker Neo トレーニング済のモデルをコンパイルし、様々な環境で動作 K E Y F E A T U R E S Neo-AI デバイスランタイム・コンパイラはオープンソース (Apache license 2.0) ランタイムは DL フレームワークの 1/10 のサイズ https://github.com/neo-ai/
  52. © 2019, Amazon Web Services, Inc. or its Affiliates. Parse

    Model Optimize Tensors Generate Code Optimize Graph TensorFlow, MXNet, PyTorch, XGBoost のモデルを共通 フォーマットに変換 ML モデル (NN) 中のパターンを 認識し、実行コストを削減する ようグラフ構造の最適化 入力データの shape から パターンを抽出し、 効率的にメモリを割り当てる ターゲットデバイス用に 低レベルコンパイラを 用いて機械語を生成 Neo コンパイラ (TVM / treelite) Pruning Operator fusion Nested loop tiling Vectorization / Tensorization Data layout transform
  53. © 2019, Amazon Web Services, Inc. or its Affiliates. まとめ

    • Amazon SageMaker で機械学習のワークフローを構築 • 開発・トレーニング・デプロイの自然な流れを整備 • SageMaker Python SDK と Docker コンテナ • ワークフロー自動化で継続的なモデル更新と運用負荷の削減 • AWS Step Functions や Apache Airflow などのワークフロー管理ツールで • Amazon SageMaker Ground Truth によるアノテーションも • 効率の良い推論のためシナリオに沿った適切な選択肢を選ぶ • リアルタイムかバッチか、遅延はどれくらい許容できるかによって Batch Transform Job, Amazon Elastic Inference, Amazon SageMaker Neo
  54. © 2019, Amazon Web Services, Inc. or its Affiliates. References

    • Event info [Web] • Amazon SageMaker 事例祭り [Web#1, Blog#2, #3, #4, #5, #6, #7, #8] • ML@Loft [Blog#1, #2, #3, #4, #5] • AWS Black Belt Online Seminar • Basic [Movie, Slides] • Advanced [Movie, Slides] • AWS ブログ: Keras [Blog#1, #2], Apache Airflow [Blog], Kubeflow [Blog], • HPO: SageMaker default [Blog], Optuna [Blog] • オンプレ資産の GPU がある人 [Blog] • SageMaker Containers [GitHub] • Jupyter 以外のエディター/IDE 使いたい場合は、その環境に [SageMaker Python SDK] を⼊れて API 叩く
  55. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. T O K Y O 2 0 1 9 . 1 0 . 0 3 - 0 4 機械学習エンジニアが直面する課題と その解決策 — ML@Loftで語られた 20を超える事例を通して見えてきたもの — Yoshitaka Haribara, Ph.D. Startup Solutions Architect Amazon Web Services Japan K.K. F - 1