🏎️

サクッとわかるGraviton3。AWSの第3世代カスタムARMプロセッサ

2022/01/19に公開約12,900字

[更新] 2022/05/23にGraviton 3を利用したC7GがGAになりました。

https://www.youtube.com/watch?v=QKo7yDAn75k

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 からプレビュー申請し、評価しましょう。

https://pages.awscloud.com/C7g-Preview.html

どのくらい速くなった?

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 の導入事例です

  • 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セッション

及び、それらをベースにした記事

を参考に、Graviton 3の特徴を紹介します。

Graviton の開発背景

Amazonがカスタムチップを作るのは、各種プロセッサーが現実のワークロードに最適化されていないと考えるからです。
データシートの数字にこだわらず、クラウドで実行されるの現実のワークロードにフォーカスして開発したのがGravitonです。

Peter DeSantisはキーノートで laser focused on the performance of real workloads と述べています。

Graviton系AWS マネージドサービス

AWSの主要マネージドサービスでは、Graviton系インスタンスを選択出来ます。

2021年には、LambdaとFargateも仲間に加わりました。

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を評価してください。

https://pages.awscloud.com/C7g-Preview.html

そろそろ、プレビュー申請通ってほしいなぁ。 2月下旬に会社アカウントで申請が通った😄

参考

Discussion

ログインするとコメントできます