クラウドでのGPU利用入門
Introduction to using GPU in cloud
(株式会社ポリゴン・ピクチュアズ)
(Polygon Pictures Inc.)
2017年12月現在の情報となります。今後の会合の状況を見つつ加筆修正を含めブラッシュアップを進めていく予定です。
■概要
■Overview
最近はレンダラーやシミュレーションを中心にGPUアクセラレーションを利用して、処理の高速化を実装するソフトウェアが増えつつあります。過去にGPGPUと呼ばれていた分野の技術で、現在はOpenCLやCUDA等のAPIを利用してGPU上で計算処理を実行するものが多くあります。
これまではGPUを利用する場合、オンプレミスのサーバーにGPUボードを搭載したり、ワークステーションに性能の高いGPUを装着する方法が一般的ですが、昨今の機械学習やディープラーニング、AIの需要により、1〜2年ほど前かクラウドインフラでもGPUが利用できるケースが増えてきました。
クラウドで利用できるGPUはnVIDIAのなかでも、TESLAやGRIDといった、サーバーソリューション向けのGPUとなりますが、OpenCLやCUDAを利用したアプリケーションであれば、大きな問題なく実行することが可能です。
クラウドインフラ上ではGPUも仮想化されたデバイスとして利用可能ですが、ハードウェアアーキテクチャの都合上、CPUほどのフレキシブルさはまだ無いのが実情です。
また、インスタンスとの接続速度(帯域幅)がボトルネックになるケースもあり、利用時には用途にあわせてパフォーマンスを確認する必要があります。
under construction...
■GPUレンダリング
■Rendering with GPU
GPUレンダラーでは、実際の計算処理を行う際に、多くのVRAMを必要とする場合が多いです。特に背景やエフェクトなど、データ量が多いシーンをレンダリングする際に顕著です。
ポリゴン・ピクチュアズでは、通常オンプレミスの環境でワークステーションやGPUサーバーを使ってGPUレンダリングをする際には、8GB〜24GBのVRAMを搭載したGPUを使用しています。
AWSでも1、2年ほど前ではg2インスタンスなど最大で4GBのVRAMまでしか構成できませんでしたが、最近はp2インスタンスなどより大きなVRAMを仕様できる環境が整いつつあります。
また、多くのGPUレンダリングはCPUやシステムメモリのリソースをほとんど使用しませんが、GPUインスタンスを選択した場合に強制的にハイスペックなGPUやシステムメモリサイズのインスタンスのみに限定されていましたが、最近はGPUの仮想化も進み、Elastic GPUといったインスタンスに対してフレキシブルにGPUを追加できるようなサービスも登場してきています。
ディープラーニングやAIの需要により、より利便性の高いGPUインフラが登場することによって、GPUレンダリングの分野での展開も期待されます。
under construction...
■クラウドインフラを意識した設計
■Design considering cloud infrastructure
GPUをクラウドインフラで利用する場合、パイプライン上の特性やクラウドインフラの特性を把握しつつ、設計を行う必要もあるかと思います。
GPUを使いつつも分散処理として実行できるような設計であるほど、クラウドインフラとは相性が良く、また基本的にはCUDAやOpenCLを利用した、オフスクリーン(GUIなし)の状態で処理が実行可能にすることも重要になります。
また、クラウドではLinux上で動作するソフトウェアのほうが、運用面含め取り回しがしやすくなるため、各種Linuxドライバを扱う知識も必要になってきます。
nVIDIAのフラフィックスドライバなどはAWS側でもカーネルバージョンに合わせたビルドが用意されていますが、状況に応じて自身でビルドを行なったり、OpenCLドライバも追加でインストールする必要がありますので、そういった知識も必要になってきます。
nVIDIAのGPUの場合、ドライバに同梱されている「nvidia-smi」コマンドを使用することによって、GPUのステータスをコマンドライン上で確認することもできます。
プロダクションレベルでは、全てのレンダリングの進捗状況確認の仕組みや、GPUリソースの使用状況トラッキング、再計算のための自動リトライなど、比較的大規模なレンダリングのための設計も重要となるでしょう。
オンプレミスでGPUインフラを構築する場合、電源容量や排熱処理への考慮も必要となり、マシンの構成など設計上の工夫が必要となりますが、商用クラウドインフラを使用する場合は、これらをクラウドサービス側に任せるかたちとなり、運用上の手間からは
開放されます。しかしそれが商用クラウドでのGPU利用が多少高コストになっている原因でもあると考えられます。
・Linux インスタンスに NVIDIA ドライバをインストールする
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/install-nvidia-driver.html
・nvidia-smiコマンド
https://developer.nvidia.com/nvidia-system-management-interface
https://developer.download.nvidia.com/compute/DCGM/docs/nvidia-smi-367.38.pdf
under construction...
■OpenCL対応
■OpenCL support
CPU/GPUの組み合わせで処理するワークフローも近年ソリューションが増えてきています。デノイズをGPUに投げるCPUレンダリングやnVIDIAのCUDAを利用したものだけでなく、最初からOpenCLに最適化されたレンダラーも登場していく可能性があります。
これらをオンプレミスと商用クラウド上でシームレスに制作利用できる仕組みを構築していく、この点は映像制作を進めていく上での一つの課題と思います。
会合時にはざっくばらんにですが、これらの課題にも議論して行きたいと思います。
■AWSでのGPU対応状況
■GPU support status on AWS
under construction...
■GPUに対応した主なソフトウェア
■Software compatible with GPU
レンダリング
Rendering
シミュレーション
Simulation
※会合までに資料の内容を更新する可能性があります。
※There is a possibility to update the contents of materials by the meeting.