[レポート]CON306-R1 – 機械学習インフラストラクチャ on Amazon EKS with Kubeflow の構築 #reinvent
どうも、DA事業本部の大澤です。
本エントリはAWS re:Invent 2019のセッション「CON306-R1 - [REPEAT 1] Building machine-learning infrastructure on Amazon EKS with Kubeflow」のレポートです。
セッション概要
Data science, machine learning (ML), and artificial intelligence have exploded in popularity in the last few years, with companies building out dedicated ML teams. Kubeflow is the ML toolkit for Kubernetes and provides useful components resolving problems in multiple areas. For enterprise users, it still cannot fulfill all the requirements for out-of-the-box deployment. Some customizations need to be made, like authentication, training job monitoring, user profile, and resource quota management. In this session, we show you a real use case of how to build ML using Kubeflow, along with challenges and solutions to address them.
意訳
データサイエンスや機械学習、人工知能はここ数年で爆発的に人気になっており、また機械学習チームを立ち上げる企業も同様に増えています。KubeflowはKubernetesでの機械学習ツールキットで複数の領域の問題を解決する便利なコンポーネントを提供しています。エンタープライズのユーザにおいて、新しい開発の要件を全て満たすことはいまだにできず、認証や学習ジョブモニタリング、ユーザプロファイル、リソース割り当て管理といったいくつかのカスタマイズが必要となります。このセッションでは、Kubeflowを用いた機械学習の構築におけるユースケースを紹介します。
スピーカー
- Yaniv Donenfeld - Sr. Business Development Manager, Amazon Web Services
- Jean-Marie Ferdegue - Director of Platform Engineering, Babylon Health
- Jeremie Vallee - AI Infrastructure Lead, Babylon Health
レポート
The AWS ML stack
- 3つのスタックがある
- AIサービス
- MLサービス
- Amazon SageMaker
- MLフレームワーク+インフラ
- 色々できることがあるけどユーザはモデルの開発方法を知る必要がある
- なぜ機械学習 on Kubernetesなのか
- Composability
- 様々なコンポーネントを組み合わせられる
- Portability
- オンプレでもクラウドでもOK
- Scalability
- 様々な規模に柔軟に対応できる
- Composability
- Amazon EKS: run Kubernetes in cloud
- マネージドなKubernetes コントロールプレーンとデータプレーンはアタッチ
- Native upstream Kubernetes experience
- Platform for enterprises to run production graded
- AWSサービスとの統合
- 参加者のロールはどちらか?
- ML practioner
- ML ops team member
- ML practioner
- インフラの抽象化
- 共有と共同利用
- end to endのワークフロー
- 実験管理
- ハイパーパラメータチューニング
- ML opsチーム
- 開発環境から実験管理
- モデルのホスティング環境
- 効率化
Kubeflow
- 色々なコンポーネントがある
- パイプライン、実験、モデルサービング、miscellaneous,ノートブック、モデルの学習、フェアリング、ハイパーパラメータチューニング
- プロトタイピング
- Jupyter/JupyterHub
- モデルの構築、学習、デプロイ
- ライブコード、数式、可視化
- 40+プログラミング言語
- 共有と共同利用
- 学習
- 分散学習の問題
- 複数のGPU -> Horobod + MPIJob
- データコピー時間とデータ共有と再利用 -> EFS/FSx For Lustre
- 参考: Distributed TensorFlow training using Kubeflow on Amazon EKS | AWS Open Source Blog
- 分散学習の問題
- 推論
- Kubeflow KFServing
- Pluggable Interface
- yaml形式で情報を記述できる
- パイプライン
- Kubeflow Pipelines
- 実験やジョブや実行を追跡できる
- パイプラインの作成
- Pythonで処理を記述
- デコレータを使う
- SageMaker パイプライン
- Kubeflow Pipelines
- Kubeflow 1.0
- Kubeflow 1.0のリリースが予定されており、様々なアップデートがある
- 参考: Kubeflow 1.0
- Call to Action
- セッション OPN401-R1
- オンラインワークショップ
- コミュニティ
- kubeflow#aws Slackチャンネル
- Community | Kubeflow
babylon
- ミッション
- accesibleでaffordableなヘルスサービスを全ての人の手に
- チャレンジ
- グローバルプロダクト
- グローバルカンパニー
- グローバルプラットフォーム
- 安全でセキュアな環境
- データローカリティ
- グローバルスケールでのAIモデルの学習と管理
- エンジニアの効率改善
- solution
- AIプラットフォーム
- セキュア、スケーラブル、フレキシブル、グローバル
- スタック
- AI toolkit(Kubeflow等)
- サービスメッシュ
- オーケストレーション(Kubernetes)
- インフラ(AWS)
- EKSを使ったインフラ
- 全てをプライベートに
- 様々なワークロードへの準備
- デフォルトでの暗号化
- GPUs on EKS
- NvidiaデバイスプラグインDaemonSet
- ネットワーキング
- VPC
- +3AZ
- Auto Scaling Group
- NATゲートウェイ
- Kubernetes
- ゼロトラストポリシー
- MutualTLS
- サービスメッシュ
- VPC
- KubernetesとKubeflow
- Kubeflowのデプロイ
- Kustomize manifests -> yaml -> github -> Weave Flux -> Kubeflow
- プロジェクトの分離とコラボレーション
- Project CRD(Custom Resource Definitions)
- より速いストレージが必要であれば
- EBS
- FSx for Lustre
- ワークロードモニタリング
- プロジェクト監視
- クラスター状態監視
- ジョブからのメトリクス収集
- ConfigMapsでダッシュボードの自動作成
- Prometheus, Grafana
- サービスの拡張性
- Modularity
- 新しいツールを追加できる
- 例: Argo
- ユースケース
- Migrating our model Clinical Validation pipeline to Argo on EKS
- コード最適化+ 計算の並列化 10時間 -> 20分
- グローバルフットプリント
- API経由で各地域のスタックにアクセス
- DynamoDBでステート管理
- グローバルデプロイ
- 複数のリージョンでのモデルとサービスのデプロイ
- セキュアなSDLC-aware デプロイツール: Shipcat
- マイクロサービスごとに情報をトラック
- Modularity
- AIプラットフォーム
- Next steps
- モデルサービングの共通フレームワーク
- より良いモデルのメタデータトラッキング
さいごに
AWS re:Invent 2019のセッション「CON306-R1 - [REPEAT 1] Building machine-learning infrastructure on Amazon EKS with Kubeflow」のレポートをお伝えしました。Kubernetesはこれまで触ったことがなかったんですが、機械学習エンジニアとMLOpsエンジニアそれぞれの視点からどういったことができるのかが分かり、とても面白いセッションでした。Kubeflow 1.0のリリースも1月に予定されていますし、Amazon SageMakerのオペレータも出てきました。今後Kubernetesにもより注目していきたいと思います。