仮想GPU」が生まれた理由と、機械学習では“使えない”理由

仮想GPUは一見すると機械学習に適している。だが処理能力をフルに必要とする用途でなければ、仮想GPUへの投資には慎重になる必要がある。

仮想化技術が進化したことで、GPU(グラフィックスプロセッシングユニット)の並列処理機能を活用する機会が広がった。ハードウェア仮想化の一つである仮想GPUは、アプリケーションの稼働効率をどのようにして高められるのだろうか。ハードウェアへの投資を最大化するためには、この点を知っておくことが大事だ。

 従来、GPUはコンピュータ支援設計(CAD)や仮想デスクトップなど、グラフィックス処理を必要とするアプリケーションを稼働させるために使用されてきた。現在はグラフィックス処理だけではなく、パフォーマンス要件が厳しい一般的なアプリケーションにもGPUを利用する「GPGPU」(GPUによる汎用<はんよう>計算)が普及している。

 GPGPUを採用すると、大規模なデータセットを分析する機能を強化できる。AI(人工知能)技術を利用したアプリケーションやスーパーコンピュータに適する。注意しなければならないのは、パフォーマンスの需要が大きく変動する場合や予測が不可能な場合は、高価なGPUがアイドル(待機)状態になる時間が多くなり、そのメリットを十分に活用できない可能性があることだ。

GPUへのニーズの変化が後押しした「仮想GPU」の誕生

 グラフィックスカードが登場した時点では、GPUを簡単に仮想化する技術は存在しなかった。そのため初期のGPUの利用目的はグラフィックス処理関連か、高度な高性能コンピューティング(HPC)用途に限定されていた。例えば、サーバに可能な限り多くのGPUを搭載し、強力なレンダリング(データを基にして画像を生成し、表示すること)用のシステムや、アカデミック指向のニッチなHPC環境の構築が代表例だった。

 その後、次第にGPUはx86サーバの仮想環境に組み込まれるようになり、VDI(仮想デスクトップインフラ)環境を中心に使用されるようになった。VDI環境でのGPUの利用には、仮想マシン(VM)でGPUを直接利用できるようにする「パススルー」、GPUを1対1でVMに関連付ける「マッピング」といった仕組みを活用している。

 これはかなり非効率的な仕組みだった。ほとんどのVMは、CADまたはVDIのタスクにGPU全体を必要としていなかったからだ。そこでGPUそのものの仮想化が求められるようになった。

 GPUの仮想化は、その初期段階では構成が難しく、非常に脆弱(ぜいじゃく)な仕組みだった。VMwareのようなx86サーバの仮想化ソフトウェアを提供するベンダーが、この問題を解決した。

 学術界で仮想GPUが普及しつつある。この理由を理解するのは簡単だ。数百人の教員と数千人の学生を抱える大規模な大学では、短期的かつ突発的にコンピューティングリソースを必要とすることが珍しくない。仮想GPUとアプリケーションのスケジューリングによって、スーパーコンピュータとHPCクラスタの高い稼働率を維持し、ROI(投資利益率)を最適化できる。

仮想GPUが生きる機械学習のニーズ

 企業の通常業務におけるコンピューティングも、仮想GPUの応用分野の一つとして注目に値する。機械学習を活用したアプリケーションの活用が、企業の間で広がっているためだ。企業においてビッグデータを分析するニーズは拡大している。企業はロジスティクス(物流合理化)のようなごく一般的な分野で、集中的な処理ができるコンピューティングリソースを必要とするようになった。

 機械学習は膨大な量の計算を必要とし、仮想GPUは大量の計算を得意とする。そのため、この需要と供給の関係は完璧に見える。しかし、機械学習のアプリケーションの大部分は、常に安定した量の処理が必要になるようなワークフローにはなっていない。そのため仮想GPUの占有を必ずしも必要としない。アイドル時間が発生し、結果的にリソースとコストに無駄が発生するからだ。

 仮想GPUが機械学習に適している用途が幾つかある。条件は仮想GPUが実行する機械学習用の作業負荷が、比較的安定している場合だ。FBI(米連邦捜査局)、移民局、税関などが利用する顔認識機能が、その代表例として挙げられる。24時間体制で稼働しなければならない大規模な顔認識用のデータベースを運用する場合、仮想GPUを常時利用できることが重要になる。

 企業が必要とする機械学習では、コンピューティングリソースに対するニーズが継続しない場合が一般的だ。そのため、仮想GPUの導入が効果的ではない可能性がある。機械学習を実装する場合、コンピューティングリソースに対するニーズがどのように発生するかは予測不可能であることが少なくない。余分に調達すれば、仮想GPUの待機時間が長くなってしまう。GPUを仮想化することで、物理GPUにさまざまな処理を担わせることができることは確かだ。ただし、ほとんどの場合、コストやリソースの観点で理想的とはいえない。

 現在、主要なクラウドベンダーは、GPUベースのコンピューティング機能を利用できるインスタンス(VM)を提供している。そのため、企業は必要な場合にのみGPUリソースを調達できる。こうしたGPUベースのインスタンスに対するニーズは増加している。今後はアプリケーションに特化した次世代のチップが登場する可能性もあり、これにも注目する必要がある。例えばIntelは、機械学習のアプリケーション用に、企業のデータセンターに導入可能なFPGA(電子回路をプログラム可能なチップ)を開発している。企業のIT担当者であれば、こうした動向があることを念頭に置き、長期的な視点に立ってx86アーキテクチャ以外の選択肢を考慮しておくべきだといえる。