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

実例から学ぶAWS Batch x スポットインスタンスによる大規模バッチ処理

実例から学ぶAWS Batch x スポットインスタンスによる大規模バッチ処理

https://awsj-compute.connpass.com/event/192302/

クラウドでは必要な時に必要な量の計算リソースを起動して処理を行うことができるため、HPC (High Performance Computing) やゲノム解析、大量の動画像の処理といった用途に適しています。そしてこのような大規模バッチ処理をコスト効率よく行うためにはスポットインスタンスの活用が重要なポイントとなります。本セッションでは、大規模バッチ処理に対してスポットインスタンスを適用する際に考慮しなければいけないことや、注意すべきポイントについて、AWS Batchを活用した実例を交えてご紹介いたします。

Daisuke Miyamoto

November 11, 2020
Tweet

More Decks by Daisuke Miyamoto

Other Decks in Technology

Transcript

  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/11/11 実例から学ぶ AWS Batch × スポットインスタンスによる 大規模バッチ処理 秋のスポットインスタンス祭り
  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 での スポットインスタンスの活用方法 • 実例から学ぶ AWS Batch × Spot • AWS Batch Updates 大規模バッチ処理 での スポットインスタンスの活用例
  4. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 似て非なる『バッチ処理』 JobA JobB JobF JobC JobD JobE 毎日23:00起動 土曜00:00起動 5:00までに完了 俗に言う『バッチ処理』は 2 種類ある A) 定型業務における『バッチ処理』 夜間バッチのように、予めジョブの起動や順序を定義しておいて ジョブの実行・管理をするシステム(ジョブネット等) ミドルウェア例:Hinemos、SOS JobScheduler etc. B) 大規模計算における『バッチ処理』 スーパーコンピュータ等で行う大規模科学計算、メディア処理、 CGレンダリング、機械学習における学習プロセス等アドホックな計算 ミドルウェア例:SGE、Torque、OpenLAVA etc. 本日お話するのはこちら JobB JobA JobA JobB キューイング セントラルマネージャ submit submit 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. 11 Amazon EC2 + EC2 Auto Scaling Webワークロード • ステートレス 自動スケールの効く典型的なユースケース 大規模計算処理ワークロード • Amazon EC2 + EC2 Auto Scaling AWS Batch Amazon EMR ビッグデータ分析 ハイパフォーマンス コンピューティング 機械 学習
  12. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. AWS Batch ジョブの管理(キューイング、キャンセル、リトライ、モニタリング等)と そのための API 設計を AWS Batch にお任せしましょう
  13. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. AWS Batch とは • AWS Batch がインスタンスの起動や停止 を行うため、スケジューラや計算ノードな どの 管理が不要 • ジョブは Docker コンテナイメージ を元 に作成し、自動でスケールするコンピュー ティング環境で実行する • コンピューティング環境ではインスタンス タイプや vCPU 数、スポットインスタンス 利用有無などを任意に指定可能 大規模バッチ処理のため環境をフルマネージドで提供 コンテナイメージを用意するだけでスケーラブルな大規模バッチ処理環境が得られる
  14. © 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
  15. © 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
  16. © 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”
  17. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 6 分で 1,000 コンテナを立ち上げて処理するデモ コンテナイメージだけ用意すれば すぐに 数千~数万 vCPU 規模での実行が可能 1. コンピューティング環境の作成 2. キューの作成 3. ジョブ定義の作成 4. ジョブの投入 5. ジョブ処理待ち 6. CloudWatch Logs で結果確認
  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. 実例から学ぶ AWS Batch × Spot
  29. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 【APN Ambassadors ブログシリーズ第二弾】 AWS Batch にてスポットインスタンスを適用してコストを最適化する プロジェクトごとにリソースの取得や更新を行う https://aws.amazon.com/jp/blogs/psa/apn-ambassadors-blog-002/ アイレット株式会社 廣山 豊様よりご寄稿 スポット活用するための前提: • 自動実行全体は 1 時間弱で完了する。翌朝ま でにすべての更新が完了していれば十分なの で、時間制限に余裕がある • 1 ジョブ(= 1 プロジェクト)あたりの処理 時間は 5 分以下がほとんどで、長くても 30 分未満 • ジョブに冪等性がある(何度実行しても問題 ない、中断してもリトライするだけでよい)
  30. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 【APN Ambassadors ブログシリーズ第二弾】 AWS Batch にてスポットインスタンスを適用してコストを最適化する プロジェクトごとにリソースの取得や更新を行う https://aws.amazon.com/jp/blogs/psa/apn-ambassadors-blog-002/ アイレット株式会社 廣山 豊様よりご寄稿 インスタンスが中断した場合 冪等性があるため、AWS Batch の再 試行設定をするのみ (Slack への通知は行う) インスタンスを起動できない場合 一定期間ごとにLambdaを起動し、 RUNNABLEステータスで滞留してい るジョブを検知・オンデマンド用ジョ ブキューに再投入、滞留しているジョ ブは削除
  31. © 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
  32. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. AWS Batch: Updates1 マネージメントコンソールが一新 ジョブ・ジョブ定義等各種リソースの検索が可能に
  33. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. AWS Batch: Updates2 標準出力などのログ出力機能の拡張 • これまでのCloudWatch Logsに加え、fluentd / splunk / syslog などへの出力に対応 https://aws.amazon.com/jp/blogs/compute/custom-logging-with-aws-batch/ https://docs.aws.amazon.com/batch/latest/userguide/job_definition_parameters.html#parameters • CloudWatch Logsについても、prefixの指定など柔軟な設定が可能に https://docs.aws.amazon.com/batch/latest/userguide/using_awslogs.html Swap Space / Shared Memoryの指定が可能に • コンテナ基盤上のSwapメモリサイズや共有メモリサイズの指定が可能に Tagベースのアクセスコントロールに対応 • コンピューティング環境・ジョブ・ジョブ定義・ジョブキューがタグ付けに対応 し、IAMでのタグベースのアクセスコントロールが可能に https://aws.amazon.com/about-aws/whats-new/2020/10/aws-batch-now-supports-custom-logging-configurations- swap-space-and-shared-memory/ https://aws.amazon.com/about-aws/whats-new/2020/10/aws-batch-introduces-tag-based-access-control/
  34. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. AWS Batch: Updates3 再試行戦略の機能拡張 繰り返しの回数だけではなく、終了コード によって再試行を行うかどうかの条件分岐 が設定可能に 「一般的なエラーについては再試行を行う が、明示的に入力データの不整合が検出さ れた場合は再試行を行わない」といった設 定が可能に https://aws.amazon.com/about-aws/whats-new/2020/10/aws-batch-supports-configurable-job-retries/
  35. © 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 タイプインスタンスも利用可能 • 既存のC5と比較して同サイズで最大40%のコスト効率向上 • Arm 用コンテナイメージを作成する必要があるので注意 • 高速化のために、CPUによって実行バイナリを呼び分けるカスタマーも インスタンスタイプを選びつつ、管理は AWS Batch におまかせ
  36. © 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
  37. © 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/
  38. © 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/
  39. © 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