Post on 22-Jul-2020
© 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
• 6/2 16:20 Amazon EC2 Performance Deep Dive
Agenda
• アクセラレーテッドコンピューティングとは
• GPUインスタンス
• FPGAインスタンス
• クラウドならではの活用方法
アプリケーションを高速化すること
• 処理サイクルを高速化• H/Wのクロック周波数を引き上げる
• アルゴリズムを改善する• 例:O(n2) → 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を使った並列化により高スループットと高効率化を行う
ハードウェアアクセラレータによる高速化
for (i=0;i<N;i++) {
}
…
for (j=0;j<M;j++) {
}
コンピュートインテンシブで並列化可能な計算をハードウェアアクセラレーター上で処理
それ以外はCPUで処理
application
GPU は同じ処理を並列に実行するSIMD (Single Instruction Multiple Data) に向いています。
優れた命令セットに対して固定長ワード(単精度、倍精度、半精度、整数)を扱えます
FPGA はSIMDに加えてMIMD( Multiple Instructions, Multiple Data)も実行可能。
FPGAには規定の命令セットや固定長ワードはありません。
ControlALU
ALU
Cache
DRAM
ALU
ALU
CPU(one core)
FPGA
DRAM DRAM
GPU
F1の各FPGA
は200万以上のセルを持ちます
P2の各GPUは2880コア
DRAM
GPUとFPGAの並列処理
Blo
ck R
AM
Blo
ck R
AM
DRAM DRAM
高速計算のユースケース
Data LightMinimal
requirements for
high performance
storage
Data HeavyBenefits 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 learning
Clustered (Tightly Coupled)
Distributed/Grid (Loosely Coupled)
アクセラレータが有効な高速計算のユースケース
Data LightMinimal
requirements for
high performance
storage
Data HeavyBenefits 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 learning
Clustered (Tightly Coupled)
Distributed/Grid (Loosely Coupled)
EC2 コンピュートインスタンスタイプ
M4
汎用コンピュート最適
ストレージ・I/O最適
GPU /FPGA
アクセラレーテッドメモリ最適
X1
2010
2013
2016
2017F1
P2
G2
CG1
M3
T2
I3 D2
R4
R3
C5
C4
C3
Announced
GPUインスタンス と 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 K80
NVIDIA Kepler Elastic GPU
NVIDIA Volta V100
20162010
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
P2
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-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
安全にコラボレーションを可能に
リモートビジュアライゼーション、リモートデスクトップを、クラウドGPUで実現
医療画像レンダリングもクラウド側で
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
G2
EC2 + Elastic GPU =グラフィック性能を柔軟に
t2
c4
m4
r4
:
:
Small GPU
:
:
Large GPU
Elastic GPU を通常のインスタンスにアタッチすることでGPUを利用可能に
Elastic GPUアーキテクチャ
コンピュート + グラッフィク命令
グラフィック命令
グフラフィック命令
画像
画像
インスタンス Elastic GPU
Elastic GPU の重要な機能
お客様の使いたいインスタンスタイプ・サイズに柔軟にグラフィック性能を付加
お客様の必要とするグラフィック性能を選択可能
FPGA アクセラレーション
アクセラレーテッドコンピューティング用FPGA並列の処理を処理するためのデバイス
Task
Task
Task
Task
Task
Task
Task
Task
Task
DataData
DataData
Task
Task
Data
コンピューティングを大幅に加速するXilinx FPGA
▪ 強力なパラレルコンピューティング - 250万のプログラマブル・ロジックセルと6,840個のプログラマブルDSPにより大量の計算を並列、高速に実行
▪ レイテンシーを最小に - 大容量オンチップメモリ(SRAM 約340Mビット) 搭載により、レイテンシー増大の要因となる外部メモリアクセスを削減
▪ フレキシブル -目的に最適な演算ユニットおよびデータパスをプログラマブルハードウェアで構成
▪ スケーラブル - 効率・信頼性の高い高速インターフェースでデバイス間を接続し、スケーラブルな処理能力の提供を実現
Global Memory
UltraRAM UltraRAM
BRAM BRAM BRAM BRAM BRAM
LUTRAM LUTRAM LUTRAM LUTRAM LUTRAM LUTRAM LUTRAM
Any-
to-anyKernel A1
Kernel B1
Kernel X1
Kernel A2
Kernel B2
Kernel X2
Kernel An
Kernel Bn
Kernel Xn
Any-
to-any
...
...
...
...
...
...
Any-
to-a
ny
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
F1
AWS FPGA Shell
事前に定義されテストされたセキュアなI/Oコンポーネントを提供。開発者はロジックの開発に専念可能
Blo
ck R
AM
Blo
ck R
AM
DDR-4 DDR-4
DDR-4 DDR-4
FP
GA
Lin
k
PC
Ie抽象化した 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
PCIeDDR
Controllers
インスタンス起動と AFIのロード
1台のF1インスタンスには複数のAFIを保持可能
数秒でAFIをFPGA
にロード
F1を使ったFPGAアクセラレーション
F1
FPGA Direct
F1用アプリケーション開発から利用まで
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倍の性能向上
https://www.ryft.com/products/ryft-cloud/
NGCODEC: F1によるライブエンコーディング処理H.265/HEVCビデオエンコーディングをF1のFPGAで
F1インスタンスへの移植は3週間
AWS Marketplaceによるパートナー提供
F1インスタンスを起動
Amazon
Machine
Image (AMI)
Amazon FPGA
Image (AFI)
お客様へサービス提供
AWS
Marketplace
AWSの各種機能を組み合わせてさらなる並列化と高速化
AWS CloudFormation
Deep Learning
Framework AMIをもとにしたクラスタをすぐに起動
https://github.com/awslabs/deeplearning-cfn
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
ECRAmazon ECS
Elastic Load
Balancing
AWS Batchによるバッチ処理管理
特徴 (https://aws.amazon.com/jp/batch/)
多量のバッチジョブ実行をクラスタの管理を行う事なしに容易に実現できる
ジョブとして登録したアプリケーションやコンテナイメージをスケジューラが実行
利用するインスタンスタイプや数、スポット利用有無などCompute Environmentとして任意に指定可能
価格体系 (https://aws.amazon.com/jp/batch/pricing/)
AWS Batch自体の利用料金は無料
EC2インスタンスやストレージなど使用したリソースに対して課金される
フルマネージド型のバッチ処理実行サービス
AWS Batchで管理
処理を依頼
スケジュール実行
まとめ
• GPUやFPGAを搭載したアクセラレーテッドインスタンスを利用して、並列化可能な処理を高速化
• 他サービスと組み合わせ、よりスケーラブルな環境を容易に構築可能
Thank You!