© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 2017/06/01 アマゾン ウェブ サービス ジャパン株式会社 ソリューションアーキテクト 松尾康博
クラウドでアクセラレーテッドコンピューティング!
GPUとFPGAを駆使してアプリケーションを高速化
本セッションの内容
お話すること
• EC2を十分に知っていて基本的なチューニングも実施済だ
がアプリケーションをさらに高速化するために、H/Wアクセラ
レータを活用する方法
お話しないこと
• EC2の基本、EC2チューニングの話は省きます
• 以下のセッションも合わせて聴講ください
• 5/31 18:20 Amazon EC2入門(再演)• 6/2 14:20 Amazon EC2 Innovation at Scale
Agenda
• アクセラレーテッドコンピューティングとは
• GPUインスタンス
• FPGAインスタンス
アプリケーションを高速化すること
• 処理サイクルを高速化
• H/Wのクロック周波数を引き上げる• アルゴリズムを改善する
• 例:O(n2) → O(log n)• I/Oを改善する
• ディスクI/O, メモリI/O, キャッシュ• 並列化可能な処理を
並列化する
並列化(Parallelism)とは
並列化
はコンピュータにおいて、
同時
に
複数
の演算
処理を実行することによって処理の
スループット
を
上げるプログラミング手法である
並列化とは
並列化可能な処理 並列化不可能 な処理 並列化不可能 な処理 並列化不可能 な処理 並列化不可能 な処理 様々な並列化プログラミング手法が存在 並列化による高速化の限界についてはア ムダールの法則で説明されている並列化可能な処理の例
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を使った並列化により
ハードウェアアクセラレータによる高速化
for (i=0;i<N;i++) { } … for (j=0;j<M;j++) { } コンピュートインテンシ ブで並列化可能な計算を ハードウェアアクセラ レーター上で処理 それ以外はCPUで処理 applicationGPU は同じ処理を並列に実行するSIMD (Single Instruction Multiple Data) に向いています。 優れた命令セットに対して固定長ワード(単精度、倍精度、半精度、整数)を扱えます
FPGA はSIMDに加えてMIMD( Multiple Instructions, Multiple Data)も実行可能。 FPGAには規定の命令セットや固定長ワードはありません。 Control ALU ALU Cache DRAM ALU ALU CPU
(one core) FPGA
DRAM DRAM GPU F1の各FPGA は200万以上 のセルを持ち ます P2の各 GPUは 2880コア DRAM
GPUとFPGAの並列処理
B lo ck RA M B lo ck RA M DRAM DRAM高速計算のユースケース
Data Light Minimal requirements for high performance storage Data Heavy Benefits from access to high performance storage Fluid dynamics Weather forecasting Materials simulations Crash simulations Risk simulations Molecular modeling Contextual search Logistics simulations Animation and VFX Semiconductor verification Image processing/GIS Genomics Seismic processing Metagenomics Astrophysics Deep learningClustered (Tightly Coupled)
アクセラレータが有効な高速計算のユースケース
Data Light Minimal requirements for high performance storage Data Heavy Benefits from access to high performance storage Fluid dynamics Weather forecasting Materials simulations Crash simulations Risk simulations Molecular modeling Contextual search Logistics simulations Animation and VFX Semiconductor verification Image processing/GIS Genomics Seismic processing Metagenomics Astrophysics Deep learningClustered (Tightly Coupled)
EC2 コンピュートインスタンスタイプ
M4 汎用 コンピュート 最適 ストレージ・I/O 最適 GPU /FPGA アクセラレーテッド メモリ最適 X1 2010 2013 2016 2017 F1 P2 G2 CG1 M3 T2 I3 D2 R4 R3 C5 C4 C3 AnnouncedGPUインスタンス と FPGAインスタンス
NVIDIA Tesla GPU Card
P2/G2: GPU-accelerated computing
▪ 各GPUの数千CUDAコアによる高並列計算
▪ 豊富なAPI群 (CUDA, OpenACC, OpenCL)
▪ 多くのISV製品やOSSが対応 Xilinx UltraScale+ FPGA F1: FPGA-accelerated computing ▪ 各FPGAには数百万のロジックセルを搭載 ▪ 規定の命令セットがなく自由に実装可能 ▪ クラウドベースのFPGA開発ツールを用意
GPU Acceleration
GPUインスタンスの変遷
P2 G2 Compute Graphics EG 2017 NVIDIA Tesla K80NVIDIA Kepler Elastic GPU NVIDIA Volta V100 2016 2010 CG1 NVIDIA Tesla M2050 2013
P2 GPU Instances
• 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
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-nvidia-expand-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/accelerated-computing-instances.html#optimize_gpu
安全にコラボレーションを可能に
G2インスタンス
• 最大8個の K520 GPUを1台のインスタンスに搭載 • リモートビジュアライゼーション向け • Deep Learning, HPCシミュレーション、バッチレンダリング などのGPGPUも可能 Instance SizeGPUs 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 GPUElastic GPUアーキテクチャ
コンピュート + グラッフィク命令 グラフィック 命令 グフラフィック命令 画像 画像 インスタンス Elastic GPUElastic GPU の重要な機能
お客様の使いたいインスタンスタイプ・サイズに柔軟にグラ
フィック性能を付加
アクセラレーテッドコンピューティング用FPGA
並列の処理を処理するためのデバイス Task Task Task Task Task Task Task Task Task Data Data Data Data Task Task Dataコンピューティングを大幅に加速するXilinx FPGA
▪ 強力なパラレルコンピューティング - 250万のプロ グラマブル・ロジックセルと6,840個のプログラマ ブルDSPにより大量の計算を並列、高速に実行 ▪ レイテンシーを最小に - 大容量オンチップメモリ (SRAM 約340Mビット) 搭載により、レイテンシー増大 の要因となる外部メモリアクセスを削減 ▪ フレキシブル -目的に最適な演算ユニットおよび データパスをプログラマブルハードウェアで構成 ▪ スケーラブル - 効率・信頼性の高い高速インター フェースでデバイス間を接続し、スケーラブルな処 理能力の提供を実現 Global Memory UltraRAM UltraRAMBRAM BRAM BRAM BRAM BRAM
LUTRAM LUTRAM LUTRAM LUTRAM LUTRAM LUTRAM LUTRAM
Any-to-any Kernel A1 Kernel B1 Kernel X1 Kernel A2 Kernel B2 Kernel X2 Kernel An Kernel Bn Kernel Xn Any-to-any ... ... ... ... ... ... A n y -to -any
F1 FPGA インスタンス
• 最大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
AWS FPGA Shell 事前に定義されテストされたセキュアなI/Oコンポーネントを 提供。開発者はロジックの開発に専念可能 B lock RAM B lock RAM DDR-4 DDR-4 DDR-4 DDR-4 FPG A L ink P CIe
抽象化した FPGA I/O
Amazon Machine Image (AMI) Amazon FPGA Image (AFI) EC2 F1 Instance CPU Application on F1 DDR-4 Attached Memory DDR-4 Attached Memory DDR-4 Attached Memory DDR-4 Attached Memory DDR-4 Attached Memory DDR-4 Attached Memory DDR-4 Attached Memory DDR-4 Attached Memory FPGA Link PCIe DDR Controllers インスタンス起動 と AFIのロード 1台のF1インスタ ンスには複数の AFIを保持可能 数秒でAFIをFPGA にロード
F1を使ったFPGAアクセラレーション
F1 FPGA DirectF1用アプリケーション開発から利用まで
Amazon FPGA Image (AFI)を作成 C4やM4上でXilinx Vivadoを使っ てFPGAの配置・配線を行う C4やM4上でXilinx Vivadoを 使ってFPGAロジック設計を行う F1インスタンスにAFIを デプロイしアプリケー ションから利用 C4/M4インスタンスAmazon FPGA Developer AMI AWS FPGA Hardware
Development Kit (HDK)
F1インスタンス Custom AMI AFI SDK App
高効率化 • アルゴリズムをハードウェアに実装 • ゲートレベルの回路設計 • 命令セットのオーバーヘッド無し 大規模並列 • 超並列回路 • 複数のインスタンス • 迅速にFPGAを再定義可能
FPGA
ヒトゲノムの解析を数時間から数分に短縮 インスタンスとストレージのコストを劇的に削減事例:ゲノム処理
CVA計算などを高速化
F1対応ソフトウェア: RYFT
・F1に対応したElasticsearchエンジン
・CPU(C4.8xlarge)に比べて91倍の性能向上
NGCODEC: F1によるライブエンコーディング処理
H.265/HEVCビデオエンコーディングをF1のFPGAで
F1インスタンスへの移 植は3週間
AWS Marketplaceによるパートナー提供
F1インスタンスを起動 Amazon Machine Image (AMI) Amazon FPGA Image (AFI)お客様へ
サービス提供
AWS MarketplaceAWSの各種機能を組み合わせて
さらなる並列化と高速化
AWS CloudFormation
Deep Learning
Framework AMIをもとに
したクラスタをすぐに起動
CfnCluster
一般的なHPCクラスタ構成を用
意に構成できるツールセット
著名なHPCジョブスケジューラ
も選択可能
Shared File Storage
Cloud-based, scaling HPC cluster on EC2
Cluster head node with job scheduler
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)
特徴(https://aws.amazon.com/ecs/) • 管理ノード不要の、安定かつ高パフォーマンスな クラスタ管理サービス • Serviceスケジューラで多様なロングランニング プロセスを実行する基盤に • コンテナを必要な台数稼働させる • ELB連携で、デプロイも簡単に • Run Taskでバッチジョブを実行する基盤に • どこかのEC2でコンテナを起動して処理させる 価格体系 (https://aws.amazon.com/ecs/pricing/) • 無料• 利用するEC2, EBS, ELBなどの料金のみ発生
管理されたEC2クラスタ上に、コンテナを自在に配置できる
Amazon
ECR Amazon ECS
Elastic Load Balancing