More Related Content Similar to Containers + EC2 Spot: AWS Batch による大規模バッチ処理でのスポットインスタンス活用
Similar to Containers + EC2 Spot: AWS Batch による大規模バッチ処理でのスポットインスタンス活用 (20) Containers + EC2 Spot: AWS Batch による大規模バッチ処理でのスポットインスタンス活用1. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Specialist SA, HPC
Daisuke Miyamoto
2020/06/10
AWS Batch による大規模バッチ処理での
スポットインスタンス活用
#spotlovescontainers
2. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
自己紹介
❏ 名前
宮本 大輔 (みやもと だいすけ)
❏ 所属
アマゾン ウェブ サービス ジャパン 株式会社
技術統括本部
Specialist Solutions Architect, HPC
❏ 好きな AWS サービス
❖ AWS ParallelCluster
❖ Amazon FSx for Lustre
❖ AWS Snowball シリーズ
3. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
今日お伝えしたいこと
• 大規模バッチ処理とはどのようなワークロードか
• AWS Batch はどのようなサービスか
• AWS Batch での スポットインスタンスの活用方法
大規模バッチ処理 での スポットインスタンスの活用方法
(+ スポット活用の具体例)
4. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
似て非なる『バッチ処理』
JobA
JobB
JobF
JobCJobD
JobE
毎日23:00起動
土曜00:00起動
5:00までに完了
俗に言う『バッチ処理』は 2 種類ある
A) 定型業務における『バッチ処理』
夜間バッチのように、予めジョブの起動や順序を定義しておいて
ジョブの実行・管理をするシステム(ジョブネット等)
ミドルウェア例:Hinemos、SOS JobScheduler etc.
B) 大規模計算における『バッチ処理』
スーパーコンピュータ等で行う大規模科学計算、メディア処理、
CGレンダリング、機械学習における学習プロセス等アドホックな計算
ミドルウェア例:SGE、Torque、OpenLAVA etc.
本日お話するのはこちら
JobB JobA
JobA JobB
キューイングセントラルマネージャ
submitsubmit
dispatch dispatch
コンピューティングノード群
A)
B)
5. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
大規模バッチ処理の例:塗り絵
たくさんのマス目を別の色に塗り替えたいが
1 人だと1度に1マスしか塗れないので非常に時間がかかる
6. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
大規模バッチ処理の例:塗り絵
10人で塗れば、仕事の遅いヒトが居たとしても
全体としては早くすべてのマスを塗れる!
大量の計算リソースを使用することで短時間で処理を終わらせたい!
7. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
大規模バッチ処理の例:塗り絵
誰がどのマスを塗るのかを割り振る役割が必要
暇にならないように、塗り終わったら別のマスを割り振る
スケジューラが計算リソースにジョブを割り振る
(3, 6) の
マスを
塗って
8. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
大規模バッチ処理の例:塗り絵
クラウドのスケーラビリティを活用すると
必要な時に多くのヒトを連れて来ることが可能!
いっぱい
連れてきた
処理の量に応じて計算リソースをスケールアウト!
9. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Western Digital: HDD 磁気ヘッド設計
• 磁気の強度や熱条件など250万強におよ
ぶパラメータスタディを
最大100万vCPU 以上利用して処理
• 従来であれば20日掛かる処理を約8時間
で全てのタスクを終えることに成功
• スポットインスタンスを活用すること
でコストを最適化、100万vCPUを1時
間あたり$17,164 (1vCPUあたり
$0.017)で利用
次世代ハードディスクのドライブヘッドシミュレーションをクラウド上で実行
https://www.slideshare.net/AmazonWebServices/set-up-a-millioncore-cluster-to-accelerate-hpc-workloads-cmp404-
aws-reinvent-2018
https://aws.amazon.com/jp/blogs/news/western-digital-hdd-simulation-at-cloud-scale-2-5-million-hpc-tasks-40k-ec2-
spot-instances/
10. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
大規模バッチ処理環境を
どのように実現するか?
11. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Batch
(多分自作もできるけど)
ジョブの管理(キューイング、キャンセル、リトライ、モニタリング等)と
そのための API 設計を
AWS Batch にお任せしましょう
12. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Batch とは
• AWS Batch がインスタンスの起動や停止
を行うため、スケジューラや計算ノードな
どの 管理が不要
• ジョブは Docker コンテナイメージ を元
に作成し、自動でスケールするコンピュー
ティング環境で実行する
• コンピューティング環境ではインスタンス
タイプや vCPU 数、スポットインスタンス
利用有無などを任意に指定可能
大規模バッチ処理のため環境をフルマネージドで提供
コンテナイメージを用意するだけでスケーラブルな大規模バッチ処理環境が得られる
13. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Batch のアーキテクチャ
ユーザ
Elastic Container
Registry
Elastic Container Service Cluster
EC2 インスタンス
ジョブ
ジョブ定義
ジョブキュー
コンテナイメージ
Docker
Hub
コンテナレジストリ
コンピューティング環境
S3
Elastic
File
System
コンテナ
Scale-Out
Scale-In
14. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
配列ジョブとジョブ依存関係
配列ジョブ
• 一回のジョブ投入で複数の子ジョブを作成
• 子ジョブでは、環境変数
$AWS_BATCH_JOB_ARRAY_INDEX により
自分の 配列ID を取得可能
• 配列ID の値により処理を分ける
ジョブ依存関係
• 依存関係に指定したジョブが完了したら実行可
能となる
“Job-A”
“Job-B”
https://docs.aws.amazon.com/ja_jp/batch/latest/userguide/array_jobs.html
https://docs.aws.amazon.com/ja_jp/batch/latest/userguide/job_dependencies.html
“Job-A”
Job-A:0
…
Job-A:1 Job-A:2
Job-A:3 Job-A:4 Job-A:5
Job-A:97 Job-A:98 Job-A:99
15. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
参考:ジョブパターン
配列ジョブとジョブ依存関係を利用することで様々なジョ
ブパターンを作成可能
“Job-A”
Job-A:0
…
Job-A:1
Job-A:99
Job-A:2
集約パターン 前処理パターン シーケンシャルパターン
“Job-A”
Job-A:0
…
Job-A:1 Job-A:2
Job-A:3 Job-A:4 Job-A:5
Job-A:97 Job-A:98 Job-A:99
“Job-B”
“Job-B”
Job-B:0
…
Job-B:1 Job-B:2
Job-B:3 Job-B:4 Job-B:5
Job-B:97 Job-B:98 Job-B:99
“Job-A”
16. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
6 分で 1,000 コンテナを立ち上げて処理するデモ
コンテナイメージだけ用意すれば
すぐに 数千~数万 vCPU 規模での実行が可能
1. コンピューティング環境の作成
2. キューの作成
3. ジョブ定義の作成
4. ジョブの投入
5. ジョブ処理待ち
6. CloudWatch Logs で結果確認
17. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
デモ紹介
18. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
大規模バッチ処理で
スポットインスタンスを活用するには?
19. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
ころんでも泣かないアーキテクチャ
20. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
ころんでも泣かないアーキテクチャとは?
キャパシティの確保と中断に強い構成
• 個別のジョブの処理速度はそこまで気にしない
→ 多様なインスタンスタイプの選択
→ キャパシティの確保が容易に
• べき等なジョブ設計
→ 同じジョブが複数回実行されても問題ない
→ 中断が発生したらリトライするだけでよい
21. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
「ころんでも泣かない」を阻む要因と対策
• 1 つのジョブ処理時間が長い
• 短時間で終わるように処理を分割する
• 再実行された際に途中から処理を再開できるよう、定期的に
結果をS3/EFSに出力する、チェックポイント方式とする
• 一定時間内に処理を終わらせる必要がある
• スケールアウトにより短時間で処理を行い、リトライのため
の余裕を持つ
22. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
ころんでも泣かないアーキテクチャとAWS Batch
↓
スポットインスタンス活用
23. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
キャパシティの確保
• 幅広いインスタンスタイプを選択する
• デフォルトのOptimal は、C4/M4/R4 のすべてのインスタンスサイ
ズを含む
• より多くのキャパシティを必要とする場合は、C5などの最新タイプ
に加え C5d / C5n / C5a なども検討
(必要メモリ量に応じてC/M/Rを選択)
• Allocation Strategy に、Spot Capacity Optimized を選択
• 次のスライドでご紹介
• 多くの Availability Zone を指定する
• 東京リージョンにこだわらず、スポット価格の安いリージョンを使用する
24. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Allocation Strategy
AWS Batch で、複数のインスタンスタイプを選択した際
に実際にどのインスタンスが起動されるかを決定する戦略
• Best Fit: 要求 vCPU/Memory に応じて最も価格の安いインスタン
スタイプを選択(デフォルト設定だが、今後は推奨されない)
• Best Fit Progressive: Best Fitと同様に最も価格の安いインスタン
スタイプを選択するが、何らかの理由で起動できない場合は別のイ
ンスタンスタイプを選択する
• Spot Capacity Optimized: 中断される可能性の低いインスタンス
タイプを選択する
https://docs.aws.amazon.com/ja_jp/batch/latest/userguide/allocation-strategies.html
25. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
スポット中断対策
• AWS Batch ではジョブに 再試行回数 を設定することが可能
これにより、インスタンスが中断しジョブが失敗した場合には自動で再実
行される
• Launch Template の UserDataで、ECS のドレイン機能を有効化する
https://aws.amazon.com/jp/about-aws/whats-new/2019/09/amazon-ecs-supports-automated-draining-for-spot-instances-running-
ecs-services/
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-instance-spot.html
https://docs.aws.amazon.com/ja_jp/batch/latest/userguide/job_retries.html
26. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
スポットとオンデマンドの連携
ジョブのフローを工夫することで、オンデマンドインスタンスとスポットインス
タンスを組み合わせて利用することも可能
Spot 用
ジョブキュー Spot
コンピューティング環境
On-Demand 用
ジョブキュー On-Demand
コンピューティング環境
ユーザ
通常のジョブを
投入
優先度の高い
ジョブを投入
Spot 用キュー、On-Demand用キューを使い分ける
Simple Notification Service
Spot 用
ジョブキュー Spot 用
コンピューティング環境
On-Demand 用
ジョブキュー On-Demand 用
コンピューティング環境
ユーザ
ジョブを投入
Lambda
ジョブの失敗を通知
ジョブを投入
Spot インスタンスでの実行に失敗した際に
On-Demand用キューに再投入
27. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
スケーラビリティの注意点
• 実際に同時実行数を増やしていくと、データソースがボ
トルネックになることが多い
• S3 からのコピーが 1st choice
• FSx for Lustre は高いスループットを得ることができるが、1 AZ のた
め、別AZからのアクセスにはAZ間転送料金がかかる
• データベースの場合は同時接続数に注意
• 各種 Quota にも注意
• EC2 vCPU数、EBS volume数、ECS クラスタインスタンス数等
28. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
re:Invent 2019 AUT307 Navigating the winding road
toward driverless mobility
Mobileye での自動運転シミュレーションのためのAWS Batch 活用事例
(最大同時 500,000 cores、 Spot インスタンス 99% )
https://d1.awsstatic.com/events/reinvent/2019/Navigating_the_winding_road_toward_driverless_mobility_AUT307.pdf
29. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
DJ’s team has reduced the time to
on-board the model pipeline and
generate a full report from one
week for one scenario to under 12
hours for multiple scenarios.
Now, the new model created by
JHSPH is being rolled out on
AWS to all 50 states and
internationally to help with making
decisions that directly impact the
global spread of COVID-19.
When scaling your workload is a matter of saving lives
https://www.allthingsdistributed.com/2020/04/scaling-covid19-model.html
https://github.com/HopkinsIDD/COVIDScenarioPipeline
ジョンズ・ホプキンス大学での COVID-19 拡散シナリオシミュレーショ
ン
30. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
参考:ServerMore! on AWS Batch
AWS Batch では 多種多様な EC2 インスタイプを活用可能
• コンテナに必要な vCPU 数だけでなく、GPU 数も指定可能
• P3/G4/G3 などを混ぜることでより確保しやすく
• 動画処理や GPGPU 等も可能
https://aws.amazon.com/jp/blogs/compute/deploy-an-8k-hevc-pipeline-using-amazon-ec2-p3-instances-with-aws-batch/
• F1(FPGA)の利用事例も
• Illumina DRAGEN on AWS
https://aws.amazon.com/quickstart/architecture/illumina-dragen/
• AMD タイプインスタンスも選択してコスト低減・バラエティ増加
• Arm タイプインスタンスも利用可能
• 現在は A1 のみ対応、M6g等 Graviton2 搭載インスタンスも対応予定
• 既存のC5と比較して同サイズで最大40%のコスト効率向上
• Arm 用コンテナイメージを作成する必要があるので注意
• 高速化のために、CPUによって実行バイナリを呼び分けるカスタマーも
インスタンスタイプを選びつつ、管理は AWS Batch におまかせ
31. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
まとめ
• 大規模バッチ処理は、動画処理やパラメータ探索など多くの分野に
存在し、大量のジョブ全体の処理時間を短縮することが課題
• AWS Batch により、コンテナイメージを用意するだけで、必要な
数のコンテナを立ち上げて処理を行うことが可能
• ころんでも泣かないアーキテクチャ + AWS Batch により
スポットインスタンス活用が容易に
AWS Batch × スポットインスタンスで
コスト効率よく大規模バッチ処理を実現!
AWS Batch の詳細については Black Belt もご参照ください
https://www.slideshare.net/AmazonWebServicesJapan/20190911-aws-black-belt-online-seminar-aws-batch
32. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
参考資料
33. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
利用例
• AWS re:Invent 2018 “Set Up a Million-Core Cluster to Accelerate HPC Workloads (CMP404) ”
• https://www.slideshare.net/AmazonWebServices/set-up-a-millioncore-cluster-to-accelerate-hpc-
workloads-cmp404-aws-reinvent-2018
• AWS re:Invent 2018 “Intro to AWS Batch & How AQR Capital leverages AWS to Identify New Investment Signals
(CMP372)”
• https://www.slideshare.net/AmazonWebServices/intro-to-aws-batch-how-aqr-capital-leverages-aws-to-
identify-new-investment-signals-cmp372-aws-reinvent-2018
• AWS Blog “Building a tightly coupled molecular dynamics workflow with multi-node parallel jobs in AWS Batch”
• https://aws.amazon.com/jp/blogs/compute/building-a-tightly-coupled-molecular-dynamics-workflow-
with-multi-node-parallel-jobs-in-aws-batch/
• AWS Blog “Building Simpler Genomics Workflows on AWS Step Functions”
• https://aws.amazon.com/jp/blogs/compute/building-simpler-genomics-workflows-on-aws-step-functions/
• https://github.com/aws-samples/aws-batch-genomics
• Quick Start: Illumina DRAGEN on AWS
• https://aws.amazon.com/jp/quickstart/architecture/illumina-dragen/
• AWS Blog “Accelerating Precision Medicine at Scale”
• https://aws.amazon.com/jp/blogs/compute/accelerating-precision-medicine-at-scale/
34. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
利用例
• AWS Blog “Deep Learning on AWS Batch”
• https://aws.amazon.com/pt/blogs/compute/deep-learning-on-aws-batch/
• AWS Blog “Scalable deep learning training using multi-node parallel jobs with AWS Batch and Amazon FSx for
Lustre”
• https://aws.amazon.com/jp/blogs/compute/scalable-deep-learning-training-using-multi-node-parallel-
jobs-with-aws-batch-and-amazon-fsx-for-lustre/
• AWS Blog “Deploy an 8K HEVC pipeline using Amazon EC2 P3 instances with AWS Batch”
• https://aws.amazon.com/jp/blogs/compute/deploy-an-8k-hevc-pipeline-using-amazon-ec2-p3-
instances-with-aws-batch/
35. © 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
関連 Black Belt Online Seminar
• AWS Black Belt Online Seminar “Amazon EC2スポットインスタンス”
• https://www.slideshare.net/AmazonWebServicesJapan/20190306-aws-black-belt-online-seminar-amazon-
ec2
• AWS Black Belt Online Seminar “Amazon Container Services”
• https://www.slideshare.net/AmazonWebServicesJapan/20180214-aws-black-belt-online-seminar-amazon-
container-services
• AWS Black Belt Online Seminar “Amazon ECS Deep Dive”
• https://www.slideshare.net/AmazonWebServicesJapan/20190731-black-belt-online-seminar-amazon-ecs-
deep-dive-162160987
• AWS Black Belt Online Seminar “AWS Step Functions”
• https://www.slideshare.net/AmazonWebServicesJapan/20190522-aws-black-belt-online-seminar-aws-
step-functions
• AWS Black Belt Online Seminar “ヘルスケア・ライフサイエンス業界における AWS 活用”
• https://www.slideshare.net/AmazonWebServicesJapan/20190423-aws-black-belt-online-seminar-aws
• AWS Black Belt Online Seminar “Amazon FSx for Lustre”
• https://www.slideshare.net/AmazonWebServicesJapan/20190319-aws-black-belt-online-seminar-amazon-
fsx-for-lustre