※ 本記事は、Praveen Coca, Yan Sunによる”Graphics rendering with NVIDIA A10 GPU shapes on OCI“を翻訳したものです。
2023年6月15日
3Dグラフィックス・レンダリング、アニメーション、レイ・トレーシング機能を備えた新しいOracle Cloud Infrastructure(OCI)GPUシェイプの駆動テストにご参加ください。Blenderのクラスルーム・サンプルを使用した単純なレンダリングおよびアニメーション・タスクの実行、パフォーマンス結果の概要、およびCPUベースのレンダリングに関連するGPUベースのレンダリングの紹介を行います。
OCI上のNVIDIA A10シェイプ
OCIは、NVIDIA RTX Virtual Workstationソフトウェアと組み合せた場合に、人工知能(AI)、機械学習(ML)推論、計算流体力学(CFD)、仮想デスクトップなど、様々な加速ワークロードに適したNVIDIA A10 Tensor Core GPUを搭載した複数のベア・メタルおよび仮想マシン(VM)インスタンスを提供しています。
このブログに特に興味があるのは、NVIDIA A10 Tensor Core GPUに基づくOCI GPUコンピュート・シェイプです。これは、4Kビデオ、ゲーム、およびStable DiffusionやNVIDIA Omniverseなどの関連AIアプリケーションに最も適しています。OCIネットワーク・インフラストラクチャ上のこれらのシェイプは、リアルタイムのビデオ本番および再生アプリケーション用のSMPTE ST 2110非圧縮ビデオ・トランスポートもサポートしています。A10-based GPUシェイプは優れた価格パフォーマンスを提供し、従量制料金(PAYG)インスタンスに対してGPUあたり1時間あたり$2のリスト価格を提供します。
A10 GPUは、クワッドA10 GPUを搭載したベア・メタル・シェイプ(BM.GPU.A10.4)で使用でき、Intel Xeon Platinum 8358プロセッサを搭載したシステムで、合計64 OCPU (128 vCPUs相当)、1TBのCPUメモリー、2つのNVMeドライブ(合計7.68TBのローカル・ストレージ、および2つの50Gbpsネットワーク帯域幅)の96 GBのGPUでサポートされています。
A10 GPUは、次の機能および利点を備えたVMインスタンスとしても使用可能です。:
-
VM.GPU.A10.1 (15 OCPU、240 GBのCPUメモリ、24Gbpsのネットワーク帯域幅でサポートされる1 GPUと24 GPUメモリ)
-
VM.GPU.A10.2 (30 OCPU、480 GBのCPUメモリ、48 Gbpsのネットワーク帯域幅でサポートされる2つのGPUと48 GPUメモリ)
-
VMシェイプにはブロック・ストレージのみが付属しています。
Jeff DaviesによるOracle Cloud InfrastructureでのBlenderの実行に関する優れたブログ投稿を確認してください。次の方法論を使用して、サンプル・レンダリング・タスクのメトリックを収集するために、OCI上の新しいA10 GPU VMシェイプをテストしました。:
-
Ubuntu 20.04を選択したオペレーティング・システムとして、目的のコンピュート・シェイプ(VM.GPU.A10.1およびVM.GPU.A10.2)をプロビジョニングしました。
-
NVIDIAドライバをインストールしました。
-
Blender 3.5.0をインストールしました。
-
BlenderのWebサイトからクラスルームのデモ・プロジェクトをダウンロードしました。
-
Blenderコマンドを実行して、CYCLESおよびNVIDIAのOptiXレイ・トレース機能を使用するクラスルーム・オブジェクトの単一フレームおよび複数のフレームをレンダリングします。
A10 GPUベースのシェイプは、メトリックによって証明されるレンダリング・タスクで優れ、GPUベースのレンダリングとCPUベースのレンダリングの速度の違いを示しています。Blenderコマンドライン・インタフェースでは、次のPythonスクリプトを使用して、OptiXをレイ・トレースのレンダリング・エンジンとして設定し、レンダリングにGPUを使用します。:
rendersettings.py
import bpy
prop = bpy.context.preferences.addons['cycles'].preferences
prop.get_devices()
prop.compute_device_type = 'OPTIX'
for device in prop.devices:
if device.type == 'OPTIX':
device.use = True
else:
device.use = False
bpy.context.scene.cycles.device = 'GPU'
for scene in bpy.data.scenes:
scene.cycles.device = 'GPU'
Blenderコマンドライン ヘッドレス呼び出しを使用したシングルフレーム・レンダリングでは、CPUベースのレンダリングで次のコマンドを実行しました。:
blender -b classroom.blend -o //classroom -f 1 -F PNG -noaudio > blender-CPU-F1.log
A10 GPUベースのVMでのGPUベースのレンダリングでは、次のコマンドを実行しました。:
blender -b classroom.blend -o //classroom -f 1 -F PNG -noaudio -E CYCLES -- --cycles-device OPTIX --cycles-print-stats -P ~/rendersettings.py --debug-cycles > blender-GPU-F1.log
また、Blenderコマンドラインのヘッドレス呼び出しを使用して複数フレーム・レンダリングを実行しました。複数のフレームのCPUベースのレンダリングでは、次のコマンドを実行しました。:
blender -b classroom.blend -o //classroom -s 1 -e 6 -F PNG -noaudio -a > blender-CPU-F6.log
次に、複数のフレームに対してGPUベースのレンダリングを実行しました。:
blender -b classroom.blend -o //classroom -s 1 -e 6 -F PNG -noaudio -a -E CYCLES -- --cycles-device OPTIX -P ~/rendersettings.py > blender-GPU-F6.log
これらのコマンドを実行すると、次の情報が収集されました。この表では、OCPUは、ハイパースレッドが有効になっているプロセッサの1つの物理コアと同等です。1 OCPUは、2つのハードウェア処理スレッドまたはvCPUsに対応します。
| インスタンス・タイプ | GPU/CPU | フレーム | レンダリング時間 |
|---|---|---|---|
| VM.Standard.E4.Flex |
16 OCPU |
1 |
3分48秒 |
| VM.Standard.E4.Flex |
32 OCPU |
1 |
1分55秒 |
| VM.GPU.A10.1 |
One A10 GPU |
1 |
19.3 秒 |
| VM.GPU.A10.2 |
Two A10 GPUs |
1 |
11.4秒 |
| VM.Standard.E4.Flex |
16 OCPU |
6 |
22分42秒 |
| VM.Standard.E4.Flex |
32 OCPU |
6 |
11分30秒 |
| VM.GPU.A10.1 |
One A10 GPU |
6 |
1分56秒 |
| VM.GPU.A10.2 |
Two A10 GPUs |
6 |
1分7秒 |
GPUベースのレンダリングによるパフォーマンスの向上:
| GPUシェイプ | 16 OCPUでE4.Flexよりもパフォーマンスが向上 | 32 OCPUでE4.Flexよりもパフォーマンスが向上 |
|---|---|---|
| VM.GPU.A10.1 (1 フレーム) |
91.5% |
83.2% |
| VM.GPU.A10.2 (1 フレーム) |
95% |
.90.1% |
| VM.GPU.A10.1 (6 フレーム) |
91.5% |
83.2% |
| VM.GPU.A10.2 (6 フレーム) |
95% |
90.3% |
まとめ
これらのベンチマークは、OCI上のNVIDIA A10-based GPUシェイプによって提供された、グラフィックス・レンダリング、アニメーション、ビデオ、MLのワークロードとソリューションのパフォーマンス、速度、価格上の利点に役立つことを願っています。Oracle Cloud Infrastructureを無料で試し、その機能を確認してください。
詳細は、次のリソースを参照してください。:
-
OCI GPU VMシェイプ (ドキュメント)
-
OCI GPUベア・メタル・シェイプ (ドキュメント)
