サクッとわかるGraviton3。AWSの第3世代カスタムARMプロセッサ
[更新] 2022/05/23にGraviton 3を利用したC7GがGAになりました。
- New – Amazon EC2 C7g Instances, Powered by AWS Graviton3 Processors | AWS News Blog
- Graviton3 & EC2 C7g General Availability – Perspectives
AWS最大の年次イベントre:invent 2021で第3世代カスタムARMプロセッサ Graviton3 が発表されました。
AWS Graviton3 プロセッサを搭載した新しい Amazon EC2 C7g インスタンスを発表
Gravitonプロセッサはクラウドで実行される実際のワークロードに最適化されており、パフォーマンスに対するコスト(price performance)が優れています。
今回発表された Graviton 3 は以下の特徴を備えています。
前世代の Graviton2 と比較して
- コンピューティングパフォーマンスが25%向上
- 浮動小数点のパフォーマンスが2倍向上
- 暗号化のパフォーマンスが2倍向上
- bfloat16/fp16命令に対応し、CPU系機械学習のパフォーマンスが最大3倍向上
- クラウドサーバーで初めてDDR5/PCIe 5.0を搭載。メモリ帯域幅が50%向上
- ROP(Return Oriented Program)を防ぐポインタ認証機構の搭載
- 256 bit SVE
- Arm Neoverse-V1 coreベース
- 7 チップレット設計(1 x コア、4 x DRAMコントローラー、2 x PCI)
これだけ優れているプロセッサーならすぐにでも使いたいところですが、あいにくGraviton3は正式リリース前です。
Graviton3を搭載した C7g インスタンスがプレビュー提供されているため、次の URL からプレビュー申請し、評価しましょう。
どのくらい速くなった?
Graviton 3が前世代のGraviton 2やIntel/AMD系インスタンスに比べてどれだけ優れているのか、公開されているベンチマークをみてみましょう。
Graviton3はGraviton2に比べてほとんどのワークロードで少なくとも25%パフォーマンスが向上しています。
人気アプリケーションのGraviton2との比較
※ キーノートから
人気サーバーサイドアプリケーションをGraviton2とGraviton3で比較します。
- Nginx : 60%
- Groovy : 58%
- Node.js : 37%
- Redis : 25%
ウェブサーバー・ロードバランサーのNginxで極めて良い成績が出ています。
Graviton 3 の先行導入事例
※ キーノートから
Graviton3を先行導入した企業の Graviton 2(C6g)とGraviton 3(C7g)の比較です。
- Twitter : C6gからC7gの移行でパフォーマンスが20%〜80%良くなった
- F1(CFD) : C6gnからC7gの移行で40%速くなった
- honeycomb.io : C6gからC7gの移行でインスタンス数が30%減った
Graviton 2 の導入事例
※ キーノートから
Graviton 3 ではなく Graviton 2 の導入事例です
- Mercado Libre : C5 からC6Gに移行後、トラフィックのスパイクに強くなった
- DIRECTV : Graviton 2に移行後、ランニングコストが25%安くなった
- Discovery : Graviton 2に移行後、パフォーマンスに対するコストが40%よくなった
機械学習BERTワークロード
Graviton3 ではSIMD幅が倍になり、Bfloat16に対応しています。
BERTモデルを使った自然言語処理ワークロードでは、Graviton 3(C7g)はGraviton 2(C6g)に比べて約2.5倍のパフォーマンスです。
※ CMP332から
機械学習推論ワークロード
MLPerf ResNet50 を使った推論ベンチマークでは、FP32を使ったGraviton2に比べてBfloat16を使ったGraviton3は約3.5倍のパフォーマンスです。
※ キーノートから
※中央の「Graviton 2 FP32」のグラフは「Graviton 3 のFP32」の誤植と思われます
SPEC CPU® 2017ベンチマーク
※ CMP332から
Graviton 2(青)をベースラインとした各種インスタンスタイプでのベンチマークです。
Graviton 3(緑)が他を圧倒しています。
インスタンスタイプとプロセッサの対応は以下の通りです。
- C5 : 第2世代Xeon Scalable Processors;Cascade Lake
- C5a : 第2世代EPYC
- C6i : 第3世代Xeon Scalable Processors;Cooper Lake
- C6g : Graviton 2
- C7g : Graviton 3
ベンチマークには SPEC CPU® 2017 を利用しています。
以降では、AWS re:invent 2021の次の2セッション
-
AWS re:Invent 2021 - Keynote with Peter DeSantis
- Peter DeSantis, Senior Vice President, AWS Utility Computing
-
AWS re:Invent 2021 - CMP332 - {New Launch} Deep dive into AWS Graviton3 and Amazon EC2 C7g instances
- Ali Saidli, AWS Senior Principal Engineer
- スライド
及び、それらをベースにした記事
- AWS Goes Wide And Deep With Graviton3 Server Chip
- Inside Amazon’s Graviton3 Arm Server Processor
- Graviton2 and Graviton3
を参考に、Graviton 3の特徴を紹介します。
Graviton の開発背景
Amazonがカスタムチップを作るのは、各種プロセッサーが現実のワークロードに最適化されていないと考えるからです。
データシートの数字にこだわらず、クラウドで実行されるの現実のワークロードにフォーカスして開発したのがGravitonです。
Peter DeSantisはキーノートで laser focused on the performance of real workloads と述べています。
Graviton系AWS マネージドサービス
AWSの主要マネージドサービスでは、Graviton系インスタンスを選択出来ます。
2021年には、LambdaとFargateも仲間に加わりました。
- (2021年9月))Lambda
- (2021年11月)Fargate
- EMR
- Opensearch
- Elasticache
- RDS
- Aurora
- MemoryDB
- DocumentDB
- Neptune
Graviton Lambdaは、Gravitionはパフォーマンスに対するコストが最大34%優れています。
※ キーノートから
Graviton系EC2インスタンスタイプ
EC2でも、Graviton系インスタンスが増えています。
re:invent 2021中もGraviton2を採用した以下の新しいインスタンスタイプが発表されました。
- G5g(NVIDIA GPU搭載)
- X2gd(メモリ最適化)
- Is4gen(ストレージ最適化)
- Im4gn(ストレージ最適化)
第3世代ARMプロセッサ
AWS独自の初代ARMプロセッサ A1 は2018年に発表され、翌2019年には第2世代の Graviton2 が発表されました。
それから2年、第3世代の Graviton3 とこのプロセッサを搭載した C7g インスタンスが発表されました。
※ キーノートから
Graviton系プロセッサの主要スペックを比較してみましょう。
プロセッサ | A1 | Graviton 2 | Graviton 3 |
---|---|---|---|
発表 | 2018 | 2019 | 2021 |
コア | . | Neoverse-N1 | Neoverse-V1 |
インターコネクト | . | CMN-600 | CMN-700 |
バージョン | . | ARMv8.2-a | ARMv8.4-a |
クロックスピード | 2.3 GHz | 2.5 GHz | 2.6 GHz |
コア数 | 16 | 64 | 64 |
メモリスピード | DDR4-2667 | DDR4-3200 | DDR5-4800 |
最大メモリ帯域幅 | - | 204.8GB/秒 | 300GB/sec |
トランジスタ | 50億 | 300億 | 550億 |
※Graviton3のトランジスタ数はキーノートでは500億個, EC2セッションでは 550億個
Graviton2に比べ、Graviton3は多くのワークロードでパフォーマンスが25%向上します。
Graviton はデータシート至上主義ではなく、実際のワークロードに最適化されています。
よりよいパフォーマンスをより安く提供することにフォーカスしています。
the most important thing we're doing with graviton is staying laser focused on the performance of real workloads, your workloads!
-- Peter DeSantis
ムーアの法則とデナードスケーリングとクロック周波数の関係
プロセッサを手っ取り早く速くするには、周波数を増やせば良いです。
ただし、周波数を増やすと、消費電力も増えるという負の側面もあります。
ロバート・デナードは1974年の論文で、トランジスタを小さくすると、消費電力もその分小さくなると発表しました(デナードスケーリング; denard scaling)。
15年ほど前までは、このデナーリングスケーリングが成り立ち、トランジスタの微細化(ムーアの法則)と相まって周波数を簡単にあげられました。
その後、トランジスタを縮小しても電力が下がらなくなり(デナードスケーリングが成り立たなくなり)、消費電力を増やさずには周波数をあげられなくなりました。
消費電力が増えると、電気代が増え発熱対策も必要し、非効率です。
※ キーノートから
コアを幅広にしてIPCを増やす
Gravitonコアのパフォーマンスを効率的に上げるにはどうすれば良いか?
AWSのとった戦略は、コアを幅広にすることです。
※ キーノートから
Graviton3は、秒あたりのサイクル数(動作周波数)を増やすかわりに、コアを幅広にしてサイクルあたりの処理数(instruction per cycle;IPC)を増やしました。
Graviton 2からGraviton 3のパフォーマンス向上は、周波数が0.1GHz増えたことではなく、このIPCの増加によるところが大きいです。
※ CMP332から
Graviton 3 は
- フロントエンド
- 分岐予測
- ディスパッチ
- 命令ウィンドウ
- SIMD幅
- メモリ操作(プリフェッチ含む)
- ALU/MULT
などがGraviton2に比べて倍近くに強化されています。
SIMDはスライドから256ビットのScalable Vector Length(SVE)であることがわかります。
また、ARMv8.3で導入されたポインタ認証(PtrAuth)に対応し、return oriented programming(ROP)を使った脆弱性への攻撃を防ぎます。
GravitonはvCPU=物理コア
GravitonではvCPUと物理コアは1:1で、SMT(ハイパースレッド)は有りません。
L1/L2キャッシュやパイプライン内のリソースが共有されることは有りません。
※ CMP332から
潤沢なメモリ帯域幅
実際のワークロードを観察すると、コア数を増やすよりも、メモリ帯域幅を増やし、メモリアクセスのレイテンシを低減したほうがパフォーマンスが向上するケースが多くあります。
チップに積めるトランジスタには限りがあります。
Graviton 2からGraviton 3で増えた250億個のトランジスタの多くは、コア数を増やすためではなく、メモリパフォーマンスを向上させるために割かれました。
vCPUあたりのメモリ帯域幅はGraviton2の1.5倍になり(3.908MB/sec)、クラウドインスタンスとして初めてDDR5/PCIe 5.0を採用しています。
Gravitonインスタンスは1ソケットが割り当てられているため、インスタンスあたりのメモリ帯域幅で300GB/secです。
※ キーノートから
メッシュインターコネクト
Gravitonには NUMA ドメイン(メモリコントローラー/CPUソケット)はなく、メモリアクセスにローカルもリモートもありません。
64個のコアは2TB/sの二分バンド幅でメッシュ接続されて、一つのダイに収まっています。
※ What makes the AWS Graviton 3 so interesting to HPC and AI/ML customers? - YouTube から
この各タイルがL3キャッシュです。キャッシュからDDR、キャッシュからコードの通信は非常に高速です。
メッシュにある32MBのキャッシュとコアのキャッシュを合わせると、ユーザーは100MBのキャッシュを使えます。
bfloat16対応
機械学習はモデルを作成する学習とモデルを元に予測する推論の2コンポーネントがあります。
機械学習は身近になり、推論をする機会も増えました。
エッジに閉じてCPUで推論できると、GPUの追加や外部システムとの連携も不要になります。
実際、AWSのデータベースのマネージドサービスRDSでは、クエリの最適化のために、DBインスタンスに閉じて推論しています。
汎用CPUで推論のパフォーマンスを向上させる取り組みの一つとして、Graviton3 はAWSカスタムプロセッサで初めてbfloat16をサポートしました。
bfloat16(Brain Floating Point)はGoogle Brainチームが考案した16ビットの数値表現です。
FP32と同じ整数をカバーする一方で、精度を犠牲にしています。
※ https://cloud.google.com/tpu/docs/bfloat16 から引用
推論ワークロードによっては、精度が落ちても影響が少なくなく、何よりも、ビットサイズが半減したために、計算処理が速くなります。
MLPerf ResNet50 を使った推論ベンチマークでは、FP32を使ったGraviton2に比べてBfloat16を使ったGraviton3は約3.5倍のパフォーマンスです。
※ キーノートから
※真ん中の「Graviton 2 FP32」のグラフは「Graviton 3 のFP32」の誤植と思われます
Graviton3は3ソケット・サーバ
データセンターでは19インチの42Uラックに2ソケット・サーバーを収納することが一般的です。
ラックいっぱいに高性能なサーバーを収納しようとすると、電力が足りなくなります。
最大60%も消費電力が少ないGraviton3は違います。
ラックをデュアルソケットサーバーで埋めつくしても電力に余裕があるため、サーバーを3ソケット化し、ラックに収容されるソケット数を50%増やしました。
※ CMP332から
Peter DeSantisのキーノートのC7gの写真を改めて確認すると、ソケットが3個ありますね。
※ キーノートから
ベンチマーク
最後に
AWSから第3世代のARMカスタムプロセッサ「Graviton3」がプレビュー発表されました。
コアが幅広になってIPCが増え、HPC/機械学習含め、高負荷なワークロードのパフォーマンスが大幅に向上しています。
省電力をいかした3ソケットサーバーなど、end-to-end ownershipならではの柔軟なアイデアも詰め込まれています。
EC2だけでなく、Lambda/FargateもGraviton対応し、Appleシリコンの利用者も増え、ARMアーキテクチャーでのアプリケーション開発も身近になりつつあります。
ご興味がある場合は、ぜひプレビューにサインアップして、Graviton 3を評価してください。
そろそろ、プレビュー申請通ってほしいなぁ。 2月下旬に会社アカウントで申請が通った😄
参考
- AWS Graviton - Amazon Web Services
- Amazon EC2 C7g instances – Compute –Amazon Web Services
- AWS re:Invent 2021 - Keynote with Peter DeSantis
- AWS re:Invent 2021 - CMP332 - {New Launch} Deep dive into AWS Graviton3 and Amazon EC2 C7g instances
- The Next Platform - AWS Goes Wide And Deep With Graviton3 Server Chip
- The Next Platform - Inside Amazon’s Graviton3 Arm Server Processor
- Graviton2 and Graviton3
- GitHub - aws/aws-graviton-getting-started
Discussion