はじめに
GMOコネクトの野尻です。
「高性能の環境って結構コストがお高くなるものだが、クラウドサービスって使った時間だけ料金が発生するのでタイムパフォーマンス加味すると必ずしも高性能環境の方がお金がかかるわけでもないよな?」と思い、今回AWS上で提供されている高性能インスタンスとその他のインスタンスタイプを利用してコストパフォーマンスを検証してみました。
検証概要
- 検証にはブラウザ上で動作するTensorFlow.jsのGANモデルの学習サンプルプログラムを利用し、高性能環境(GPU搭載インスタンス)とGPU未搭載のインスタンスで処理時間とコストを比較しました。
使用したサンプルプログラム
- 以下の記事を書いた同じ職場の方から拝借
ブラウザで学習する際のBackEnd技術として以下の3つを利用:
- WASM
- WebGL(GPU搭載インスタンスが必要)
- WebGPU(GPU搭載インスタンスが必要)
検証の流れ
以下の2段階で比較検証を実施しました:
- GPU搭載の高性能環境での処理時間検証
- GPU未搭載のインスタンスタイプごとに処理時間検証
検証1:GPU搭載の高性能環境での処理時間検証
検証環境
-
AMI: NICE DCV for Windows (g4 and g5 with NVIDIA gaming driver)
- AWS Marketplaceにて提供されているAMI
- NVIDIAのドライバーが組み込み済みの環境
- OSはWindows Server 2019
- AWS Marketplaceにて提供されているAMI
-
インスタンスタイプ: g4dn.xlarge
- GPU: 1
- vCPU: 4
- メモリ: 16GB
- GPUメモリ: 16GB
事前準備:WebGL/WebGPU有効化設定
Chrome設定
- Chrome設定画面(chrome://settings/system)で「グラフィック アクセラレーションが使用可能な場合は使用する」を有効化
- WebGPU設定(chrome://flags/#enable-unsafe-webgpu)で以下を設定:
-
#enable-unsafe-webgpuを「有効」 -
#force-high-performance-gpuを「有効」
-
Firefox設定
Firefox config画面(about:config)で以下を設定:
-
webgl.force-enabledをtrue -
webgl.disabledをfalse -
dom.webgpu.enabledをtrue
検証結果(1Epochあたりの処理時間)
| ブラウザ | Backend | 処理時間 |
|---|---|---|
| Chrome | WebGL | 8.6秒 |
| Chrome | WebGPU | 12.6秒 |
| Firefox | WebGL | 11.5秒 |
| Firefox | WebGPU | エラー(out of memory) |
結果整理
-
WebGLの方がWebGPUより高速という予想外の結果
- 設定ミスを疑ってWebGPUの方を再度計測したりもしましたが結果は変わらず
- WebGPUの効果を十全に発揮するにはGPUやメモリの数が影響したりするかもしれないですが、その検証は機会があれば
- FirefoxのWebGPUはまだ不安定
検証2:GPU未搭載インスタンスでの検証
検証環境
検証1の結果を受けて、Firefoxは使わずChromeを利用して以下のインスタンスタイプを比較:
- GPU未搭載のためブラウザで学習する際、BackEndには
WASMを設定 - 検証1で利用した環境のCPUとメモリの値を基準に、クライアント環境のインスタンスタイプは以下の3つで検証
| インスタンスタイプ | 分類 | 選定理由 |
|---|---|---|
| c4.xlarge | コンピューティング最適化 | 検証1環境のvCPU数(4)と値が近い |
| r4.large | メモリ最適化 | 検証1環境のメモリ(16GB)と値が近い |
| m1.xlarge | 汎用 | vCPU/メモリともに検証1環境と値が近い |
検証結果(1Epochあたりの処理時間)
| インスタンスタイプ | 処理時間 |
|---|---|
| c4.xlarge | 89.8秒 |
| r4.large | 119.7秒 |
| m1.xlarge | 137.8秒 |
総合比較結果
処理時間比較(Chrome使用時)
| 環境 | Backend | 処理時間 | 高性能インスタンス比 |
|---|---|---|---|
| g4dn.xlarge | WebGL | 8.6秒 | 1.00倍 |
| g4dn.xlarge | WebGPU | 12.6秒 | 1.47倍 |
| c4.xlarge | WASM | 89.8秒 | 10.44倍 |
| r4.large | WASM | 119.7秒 | 13.92倍 |
| m1.xlarge | WASM | 137.8秒 | 16.02倍 |
コストパフォーマンス分析
各インスタンスの時間単価
| インスタンスタイプ | 時間単価(USD/h) |
|---|---|
| g4dn.xlarge | 0.894 |
| c4.xlarge | 0.436 |
| r4.large | 0.252 |
| m1.xlarge | 0.486 |
実作業時間を考慮した総コスト
高性能インスタンス(g4dn.xlarge)で1時間の作業を他のインスタンスで行った場合:
- 他のインスタンスの実作業時間は単純に処理時間比を掛けた時間で仮定
| インスタンスタイプ | 実作業時間 | 総コスト(USD) | 高性能インスタンス比 |
|---|---|---|---|
| g4dn.xlarge | 1時間 | 0.894 | 1.00倍 |
| c4.xlarge | 10.44時間 | 4.55 | 5.09倍高い |
| r4.large | 13.92時間 | 3.51 | 3.92倍高い |
| m1.xlarge | 16.02時間 | 7.79 | 8.71倍高い |
まとめ
- GPU搭載インスタンスは処理時間で圧倒的優位(10倍以上の差)
-
コストパフォーマンスでも高性能インスタンスが優秀
- 高性能インスタンスの方が時間単価は高くても総コストは安い
- 数倍レベルでコストに差が出るので「高性能インスタンス = とてもコストがかかる」と敬遠せず、実作業時間を加味してトータルのコストを計算することが重要
弊社では、AWSを使ったサービスの開発や技術支援をはじめ、幅広い支援を行っておりますので、何かありましたらお気軽にお問合せください。
お問合せ: https://gmo-connect.jp/contactus/