クラウドでアクセラレーテッドコンピューティング! GPU と FPGA を駆使してアプリケーションを高速化 2017/06/01 アマゾンウェブサービスジャパン株式会社ソリューションアーキテクト松尾康博 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
本セッションの内容 お話すること EC2 を十分に知っていて基本的なチューニングも実施済だがアプリケーションをさらに高速化するために H/W アクセラレータを活用する方法 お話しないこと EC2 の基本 EC2 チューニングの話は省きます 以下のセッションも合わせて聴講ください 5/31 18:20 Amazon EC2 入門 ( 再演 ) 6/2 14:20 Amazon EC2 Innovation at Scale 6/2 16:20 Amazon EC2 Performance Deep Dive
Agenda アクセラレーテッドコンピューティングとは GPUインスタンス FPGAインスタンス クラウドならではの活用方法
アプリケーションを高速化すること 処理サイクルを高速化 H/W のクロック周波数を引き上げる アルゴリズムを改善する 例 :O(n 2 ) O(log n) I/O を改善する ディスク I/O, メモリ I/O, キャッシュ 並列化可能な処理を並列化する
並列化 (Parallelism) とは 並列化はコンピュータにおいて 同時に複数の演算処理を実行することによって処理のスループットを上げるプログラミング手法である並列化 - Wikipedia
並列化とは 並列化不可能な処理 並列化可能な処理 並列化不可能な処理 並列化不可能な処理 並列化不可能な処理 様々な並列化プログラミング手法が存在並列化による高速化の限界についてはアムダールの法則で説明されている
並列化可能な処理の例 for (i = 0; i++; i < n) { for (j = 0; j++; j < n) { } } W[i][j] = xxxxxxxx
並列化の実行方法 並列クラスタによる並列分散処理 MPI(Message Passing Interface) CPU マルチコア並列 OpenMP マルチスレッドプログラミング ハードウェアアクセラレーター GPU FPGA SSE, AVX
アクセラレーテッドコンピューティングとは? Parallelism increases throughput CPU: 高速 汎用 低スループット GPU/FPGA: 高スループット 高効率 専用 特定のカテゴリの計算処理で GPU や FPGA を使った並列化により高スループットと高効率化を行う
ハードウェアアクセラレータによる高速化 application コンピュートインテンシブで並列化可能な計算をハードウェアアクセラレーター上で処理 それ以外は CPU で処理 for (i=0;i<n;i++) { for (j=0;j<m;j++) { } }
Block RAM Block RAM GPU と FPGA の並列処理 GPU は同じ処理を並列に実行するSIMD (Single Instruction Multiple Data) に向いています 優れた命令セットに対して固定長ワード ( 単精度 倍精度 半精度 整数 ) を扱えます DRAM DRAM Control ALU ALU Cache ALU ALU P2 の各 GPU は 2880 コア F1 の各 FPGA は 200 万以上のセルを持ちます DRAM CPU (one core) DRAM GPU DRAM FPGA DRAM FPGA は SIMD に加えて MIMD( Multiple Instructions, Multiple Data) も実行可能 FPGA には規定の命令セットや固定長ワードはありません
高速計算のユースケース Clustered (Tightly Coupled) Data Light Minimal requirements for high performance storage Fluid dynamics Weather forecasting Materials simulations Crash simulations Risk simulations Molecular modeling Contextual search Logistics simulations Seismic processing Metagenomics Astrophysics Deep learning Animation and VFX Semiconductor verification Image processing/gis Genomics Data Heavy Benefits from access to high performance storage Distributed/Grid (Loosely Coupled)
アクセラレータが有効な高速計算のユースケース Clustered (Tightly Coupled) Data Light Minimal requirements for high performance storage Fluid dynamics Weather forecasting Materials simulations Crash simulations Risk simulations Molecular modeling Contextual search Logistics simulations Seismic processing Metagenomics Astrophysics Deep learning Animation and VFX Semiconductor verification Image processing/gis Genomics Data Heavy Benefits from access to high performance storage Distributed/Grid (Loosely Coupled)
EC2 コンピュートインスタンスタイプ 汎用 コンピュート最適 ストレージ I/O 最適 メモリ最適 GPU /FPGA アクセラレーテッド T2 M4 C5 Announced I3 D2 X1 F1 2017 M3 C4 R4 P2 2016 C3 G2 2013 R3 CG1 2010
GPU インスタンスと FPGA インスタンス NVIDIA Tesla GPU Card Xilinx UltraScale+ FPGA P2/G2: GPU-accelerated computing 各 GPU の数千 CUDA コアによる高並列計算 豊富な API 群 (CUDA, OpenACC, OpenCL) 多くの ISV 製品や OSS が対応 F1: FPGA-accelerated computing 各 FPGA には数百万のロジックセルを搭載 規定の命令セットがなく自由に実装可能 クラウドベースの FPGA 開発ツールを用意
GPU Acceleration コンピュートとグラフィックス
GPU インスタンスの変遷 Compute CG1 P2 NVIDIA Tesla M2050 NVIDIA Tesla K80 NVIDIA Volta V100 Graphics G2 EG NVIDIA Kepler Elastic GPU 2010 2013 2016 2017
P2 GPU Instances P2 1 インスタンスに最大 16 個の Tesla K80 を GPU 搭載 peer-to-peer PCIe GPU インターコネクトを搭載 Deep Learning, HPC シミュレーション バッチレンダリングなどの様々な用途に利用可能 5/26 に東京リージョンで利用可能に! Instance Size GPUs GPU Peer to Peer vcpus Memory (GiB) Network Bandwidth* p2.xlarge 1-4 61 High p2.8xlarge 8 Y 32 488 10Gbps p2.16xlarge 16 Y 64 732 20Gbps *In a placement group
AWS Deep Learning AMI
Deep Learning on GPU P2 GPU インスタンスで DL 学習と推論において高速な性能を実現 P2 インスタンスでの MXNet 学習処理 : 画像解析アルゴリズム Inception v3 を MXNet で実装し P2 で実行した結果 P2.16xlarge 一台で 16GPU まで並列に実行した場合 91% の実行効率で性能向上
Deep Learning on GPU P2 GPU インスタンスで DL 学習と推論において高速な性能を実現 P2 インスタンスでの MXNet 学習処理 : 画像解析アルゴリズム Inception v3 を MXNet で実装し P2 で実行した結果 P2.16xlarge を 16 台で構成したクラスター計 256GPU まで並列に実行した場合 85% の実行効率で性能向上
VOLTA 世代 GPU 搭載インスタンス GTC2017 で発表された Volta 世代の Tesla V100 を備えたインスタンスを提供することを発表 https://aws.amazon.com/jp/blogs/news/aws-and-nvidiaexpand-deep-learning-partnership-at-gtc-2017/
P2 Tips 基本的な OS チューニングは必ず実施する Placement Group, 拡張ネットワーキングを利用する NVIDIA Driver 最新版を使う (352.99 以降 ) GPU の周波数を最大化固定する # GPU 設定を永続化する $ sudo nvidia-smi -pm 1 # Auto Boost を無効化 $ sudo nvidia-smi --auto-boost-default=0 # GPU クロック最大化 $ sudo nvidia-smi -ac 2505,875 http://docs.aws.amazon.com/ja_jp/awsec2/latest/userguide/acceleratedcomputing-instances.html#optimize_gpu
Accelerated Graphics on AWS
安全にコラボレーションを可能に リモートビジュアライゼーション リモートデスクトップを クラウド GPU で実現
医療画像レンダリングもクラウド側で
G2 インスタンス G2 最大 8 個の K520 GPU を 1 台のインスタンスに搭載 リモートビジュアライゼーション向け Deep Learning, HPC シミュレーション バッチレンダリングなどの GPGPU も可能 Instance Size GPUs vcpus Memory (GiB) Network Bandwidth* g2.2xlarge 1 8 15 High g2.8xlarge 8 32 60 10Gbps *In a placement group
EC2 + Elastic GPU = グラフィック性能を柔軟に t2 c4 m4 r4 : : Small GPU : : Large GPU Elastic GPU を通常のインスタンスにアタッチすることで GPU を利用可能に
Elastic GPU アーキテクチャ コンピュート + グラッフィク命令 グラフィック命令 画像 グフラフィック命令 画像 インスタンス Elastic GPU
Elastic GPU の重要な機能 お客様の使いたいインスタンスタイプ サイズに柔軟にグラフィック性能を付加 お客様の必要とするグラフィック性能を選択可能
FPGA アクセラレーション
アクセラレーテッドコンピューティング用 FPGA 並列の処理を処理するためのデバイス Data Data Data Task Task Task Task Task Task Data Task Task Task Task Task Data
......... Anyto-any コンピューティングを大幅に加速する Xilinx FPGA 強力なパラレルコンピューティング - 250 万のプログラマブル ロジックセルと 6,840 個のプログラマブル DSP により大量の計算を並列 高速に実行 Kernel X1 Kernel X2... Kernel Xn レイテンシーを最小に - 大容量オンチップメモリ (SRAM 約 340M ビット ) 搭載により レイテンシー増大の要因となる外部メモリアクセスを削減 Kernel B1 Kernel A1 Kernel B2 Kernel A2...... Kernel Bn Kernel An LUTRAM LUTRAM LUTRAM LUTRAM LUTRAM LUTRAM LUTRAM Anyto-any Anyto-any フレキシブル - 目的に最適な演算ユニットおよびデータパスをプログラマブルハードウェアで構成 BRAM BRAM BRAM BRAM BRAM UltraRAM UltraRAM スケーラブル - 効率 信頼性の高い高速インターフェースでデバイス間を接続し スケーラブルな処理能力の提供を実現 Global Memory
F1 FPGA インスタンス F1 最大 8 個の Xilinx Virtex UltraScale Plus VU9p FPGA とを 1 台のインスタンスに搭載 in a single instance with four high-speed DDR-4 per FPGA 最大サイズのインスタンスでは FPGA Direct と FPGA Link で各 FPGA 間をインターコネクト 金融計算 ゲノム 検索 画像処理をハードウェアアクセラレーション可能 Instance Size FPGAs FPGA Link FPGA Direct vcpus Memory (GiB) NVMe Instance Storage Network Bandwidth* f1.2xlarge 1-8 122 1 x 480 5 Gbps f1.16xlarge 8 Y Y 64 976 4 x 960 20 Gbps *In a placement group
PCIe Block RAM Block RAM FPGA Link 抽象化した FPGA I/O DDR-4 DDR-4 AWS FPGA Shell 事前に定義されテストされたセキュアな I/O コンポーネントを提供 開発者はロジックの開発に専念可能 DDR-4 DDR-4
F1 を使った FPGA アクセラレーション EC2 F1 Instance 1 台の F1 インスタンスには複数の AFI を保持可能 Amazon Machine Image (AMI) F1 インスタンス起動と AFI のロード Amazon FPGA Image (AFI) 数秒で AFI を FPGA にロード CPU Application on F1 PCIe FPGA Direct DDR Controllers FPGA Link DDR-4 Attached DDR-4 Memory Attached DDR-4 Memory Attached DDR-4 Memory Attached Memory
F1 用アプリケーション開発から利用まで C4 や M4 上で Xilinx Vivado を使って FPGA ロジック設計を行う AWS FPGA Hardware Development Kit (HDK) C4 や M4 上で Xilinx Vivado を使って FPGA の配置 配線を行う Amazon FPGA Developer AMI C4/M4インスタンス Amazon FPGA Image (AFI) を作成 F1 インスタンスに AFI をデプロイしアプリケーションから利用 AFI SDK App Custom AMI F1インスタンス
事例 : ゲノム処理 高効率化 FPGA 大規模並列 アルゴリズムをハードウェアに実装 ゲートレベルの回路設計 命令セットのオーバーヘッド無し 超並列回路 複数のインスタンス 迅速に FPGA を再定義可能 ヒトゲノムの解析を数時間から数分に短縮インスタンスとストレージのコストを劇的に削減
事例 : 金融数理計算 CVA 計算などを高速化
F1 対応ソフトウェア : RYFT F1 に対応した Elasticsearch エンジン CPU(C4.8xlarge) に比べて 91 倍の性能向上 https://www.ryft.com/products/ryft-cloud/
NGCODEC: F1 によるライブエンコーディング処理 H.265/HEVC ビデオエンコーディングを F1 の FPGA で F1 インスタンスへの移植は 3 週間
AWS Marketplace によるパートナー提供 お客様へサービス提供 AWS Marketplace Amazon Machine Image (AMI) Amazon FPGA Image (AFI) F1 インスタンスを起動
AWS の各種機能を組み合わせて さらなる並列化と高速化
AWS CloudFormation Deep Learning Framework AMI をもとにしたクラスタをすぐに起動 https://github.com/awslabs/deeplearning-cfn
CfnCluster 一般的な HPC クラスタ構成を用意に構成できるツールセット 著名な HPC ジョブスケジューラも選択可能 Cluster head node with job scheduler Cloud-based, scaling HPC cluster on EC2 Shared File Storage
AWS ElasticBeanstalk で推論サービス基盤を インフラ構成の構築 アプリデプロイの自動化サービス 特徴 (http://aws.amazon.com/jp/elasticbeanstalk/) 速く簡単にアプリケーションをデプロイ可能 インフラストラクチャの準備 & 運営からアプリケーションスタックの管理まで自動化 Auto Scaling によりコストを抑えながらスケーラビリティを確保 Java, PHP, Ruby, Python, Node.js,.NET, Docker などに対応 P2, F1 に対応 価格体系 (http://aws.amazon.com/jp/elasticbeanstalk/pricing/) 追加料金なし アプリケーションの保存 実行に必要な AWS リソース (EC2, S3, RDS, DynamoDB など ) に対してのみ課金
Amazon EC2 Container Service (ECS) 管理された EC2 クラスタ上に コンテナを自在に配置できる Amazon ECR Elastic Load Balancing Amazon ECS 特徴 (https://aws.amazon.com/ecs/) 管理ノード不要の 安定かつ高パフォーマンスなクラスタ管理サービス Service スケジューラで多様なロングランニングプロセスを実行する基盤に コンテナを必要な台数稼働させる ELB 連携で デプロイも簡単に Run Task でバッチジョブを実行する基盤に どこかの EC2 でコンテナを起動して処理させる 価格体系 (https://aws.amazon.com/ecs/pricing/) 無料 利用する EC2, EBS, ELB などの料金のみ発生
AWS Batch によるバッチ処理管理 フルマネージド型のバッチ処理実行サービス 処理を依頼 スケジュール実行 AWS Batch で管理 特徴 (https://aws.amazon.com/jp/batch/) 多量のバッチジョブ実行をクラスタの管理を行う事なしに容易に実現できるジョブとして登録したアプリケーションやコンテナイメージをスケジューラが実行利用するインスタンスタイプや数 スポット利用有無など Compute Environment として任意に指定可能価格体系 (https://aws.amazon.com/jp/batch/pricing/) AWS Batch 自体の利用料金は無料 EC2 インスタンスやストレージなど使用したリソースに対して課金される
まとめ GPU や FPGA を搭載したアクセラレーテッドインスタンスを利用して 並列化可能な処理を高速化 他サービスと組み合わせ よりスケーラブルな環境を容易に構築可能
Thank You!