AMDベースEC2インスタンスへの移行ガイド
こんにちは。ゲームソリューション部の出村です。
皆さんはEC2を利用していますか?この記事では、AMDが搭載されたEC2インスタンスを利用することの利点やメリット、変更方法について解説します。
クラウド環境の最適化を検討している方にとって、EC2インスタンスのCPUの選択は重要な要素です。ここでは、AMDが搭載されたEC2インスタンスへの移行について、メリットやリスク、具体的な手順を解説します。なお、IntelとAMDというx86_64アーキテクチャ間での移行を念頭に話しをすすめていきます。
AMDへ移行する主なポイント
IntelとAMDは、CPUレベルでのソフトウェア的な互換性があります。そのため、IntelからAMDへの移行、もしくはその逆は、インスタンスタイプを変更するだけで移行可能です。移行先のインスタンスタイプにもよりますが、AMDへ移行することで性能向上やコスト削減が期待できます。
なお、GravitonからAMD(もしくはIntel)への移行の場合は、CPUレベルでのソフトウェア的な互換性がないため、EC2インスタンスの再構築が必須となります。
Intelに特化したソフトウェアを実行する場合
AI、機械学習、科学技術計算などのワークロード、実行しているソフトウェアによっては、Intelが搭載されたEC2インスタンスでの実行を要求されることがあります。この場合でもAMDが搭載されたEC2インスタンスが使用できる場合があります。
というのも、この場合にAVX-512命令(高速計算に使用される特殊な命令セット)と呼ばれる処理が含まれており、これがIntelでの実行が必須だと言われる由来のことがあります。もしその通りであれば、AMD第7世代のEC2インスタンスを選択することで実行可能となります。
【補足】AVX-512命令とは
AVX-512命令は、IntelやAMDの最新CPUに搭載された高速計算命令で、従来よりも大容量のデータを一度に処理するための命令です。これらの命令は、AI・機械学習、暗号処理などの速度が求められるソフトウェアで利用されることがあります。なお、AVX-512命令はAMD第7世代のEC2インスタンスで実装されています。
AMDが搭載されたEC2インスタンスへ移行が有効なケース
以下のような条件に当てはまる場合、AMDが搭載されたEC2インスタンスへの移行が有効だと考えています。1度検証してみる価値はあるでしょう。
- コスト削減を目的としている(特にAMD第6世代インスタンスへの移行で約10%削減可能)
- マルチスレッド処理が多いワークロードを実行している(AMD第7世代インスタンスで最大50%の性能向上)
- AVX-512命令を使用しないワークロード(使用する場合はAMD第7世代インスタンスを選択)
移行時のリスクと対策
移行する際に考えられるリスクは次の表の通りです。
なお、Webサービス運用といったよくある用途では、IntelからAMDへ移行することで問題が発生することは、ほぼありません(とはいえ、事前に動作検証することをお勧めします)。
リスク項目 | 発生確率(高・中・低) | 影響度(高・中・低) | 対策 |
---|---|---|---|
AVX-512 非対応 | 低 | 高 | AMD第7世代のEC2インスタンス利用で対応可能 |
Intel CPU 依存ライブラリを利用 | 低 | 中 | 代替ライブラリを使用 |
CPU 互換性によるエラー | 低 | 高 | 事前にテスト環境で検証 |
パフォーマンス検証結果
パフォーマンスをみていきましょう。ここではUnixBenchにて計測しています。
インスタンスタイプの世代別にみていきます。
第6世代での比較(m6i vs m6a)
AMD第6世代(m6a.large)はIntel第6世代(m6i.large)と比較して全体的に性能が向上しています:
計算種別 | m6i.large (Intel) | m6a.large (AMD) | 向上率 (%) |
---|---|---|---|
シングルスレッド整数演算 | 51,402,286.9 | 54,104,351.6 | +5.25% |
シングルスレッド浮動小数点演算 | 7,636.4 | 8,734.4 | +14.38% |
マルチスレッド整数演算 | 56,014,044.2 | 75,836,095.2 | +35.41% |
マルチスレッド浮動小数点演算 | 13,643.7 | 14,966.7 | +9.71% |
m6a.large(AMD)はm6i.large(Intel)よりも全体的に性能が向上しており、特にマルチスレッド整数演算で約35%の向上が見られます。
第7世代の比較(m7i vs m7a)
計算種別 | m7i.large (Intel) | m7a.large (AMD) | 向上率 (%) |
---|---|---|---|
シングルスレッド整数演算 | 58,576,748.8 | 57,476,400.5 | -1.88% |
シングルスレッド浮動小数点演算 | 8,562.7 | 9,163.4 | +7.02% |
マルチスレッド整数演算 | 77,970,988.2 | 114,193,452.6 | +46.49% |
マルチスレッド浮動小数点演算 | 15,491.4 | 18,324.6 | +18.27% |
m7a.large(AMD)はm7i.large(Intel)と比較して、マルチスレッド整数演算で約46%の向上が見られ、浮動小数点演算も約18%向上しています。ただし、シングルスレッド整数演算はIntelの方が約2%高速です。
コスト比較
次にコストの比較をしてみます。補足情報としてAVX-512命令のサポート状況も掲載します。
インスタンス | 単価(USD/時間) | AVX-512命令 サポート | 特徴 |
---|---|---|---|
Intel 第6世代 | $0.768(m6i.4xlarge) | ○ | 標準的な Intel インスタンス |
AMD 第6世代 | $0.6912(m6a.4xlarge) | × | 同Intelインスタンスと比較し約 10% コスト削減 |
Intel 第7世代 | $0.8064(m7i.4xlarge) | ○ | 高性能なIntel インスタンス |
AMD 第7世代 | $0.92736(m7a.4xlarge) | ○ | 同Intelインスタンスと比較し最大 50% の性能向上 |
AMD第7世代(m7a.4xlarge)の$0.92736/hで、Intel第7世代(m7i.4xlarge)の$0.8064/hより約15%高価です。ただ、AMD第7世代は最大50%の性能向上が期待できるため、EC2インスタンス自体の台数を減らすことでコスト削減が可能です。
移行手順
では次に移行手段をみていきましょう。ここでは代表的な移行手段の流れ、そのメリット、デメリットなどについて解説していきます。
1. インスタンスタイプの変更
既存のEC2インスタンスのインスタンスタイプを変更する方法です。ここではマネージドコンソールを利用した方法で紹介しています。IaCを利用しても問題ありません。
-
インスタンスを停止する:
AWSマネジメントコンソールにて、インスタンスを選択し、「インスタンスの状態」→「停止」をクリック -
インスタンスタイプの変更
AWSマネジメントコンソールにて、停止したインスタンスを右クリックし、「インスタンス設定」→「インスタンスタイプの変更」を選択 -
インスタンスを起動する
AWSマネジメントコンソールにて、インスタンスを選択し、「インスタンスの状態」→「開始」をクリック
メリット:インスタンスIDや設定が変わらないため、他のAWSサービスとの連携に影響がなく、ダウンタイムも数分程度と短いです。
デメリット:CPU依存のソフトウェアが動作しない可能性があるため、事前検証が必要です。
2. 新規AMDインスタンスを作成し、データを移行
-
新しいAMDインスタンスを作成する
AWSマネジメントコンソールでは、「インスタンスを起動」から新規インスタンスを作成し、インスタンスタイプでAMDを選択 -
既存のIntelインスタンスからデータをコピーする。または、EBSスナップショットを作成して新インスタンスにアタッチする方法も可能
-
アプリケーションの設定を調整する
-
動作確認後、DNSやロードバランサの設定を変更し、新インスタンスに切り替える
メリット:新しい環境で事前にテストができ、移行後も元のIntelインスタンスを残せるためロールバックが容易です。
デメリット:データ移行に時間がかかり(データ量によるが数十分~数時間)、IPアドレスやホスト名が変更される可能性があるため設定修正が必要です。
3. Blue-Green Deployment(並行稼働)
- 新しいAMDインスタンスを作成する
- IntelインスタンスとAMDインスタンスを並行稼働させる
- AMDインスタンスで動作確認を行う
- 問題がなければIntelインスタンスを停止する
メリット:移行時のリスクが最も少なく、問題が発生した場合すぐにIntelに戻せます。
デメリット:一時的にコストが増加します(IntelとAMDの両方を稼働させるため)。
まとめ
AMDへの移行は、ワークロードの特性に応じて大きなパフォーマンス向上とコスト削減をもたらす可能性があります。特にマルチスレッド処理が中心のワークロードでは、AMDインスタンスの優位性が顕著です。移行前にはテスト環境での検証を行い、AVX-512命令の使用有無やIntel固有ライブラリの依存関係を確認することで、スムーズな移行が可能になります。