CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
前回に続いて、2021年に公開された論文「Warehouse-Scale Video Acceleration: Co-design and Deployment in the Wild」を元にして、Googleのデータセンターに導入されている、動画のトランスコーディング処理に特化した独自設計のハードウェアを紹介します。今回は、VCUの性能を示すベンチマークの結果を紹介します。
はじめに、トランスコーディング処理をCPU、GPU、VCUのそれぞれで実施した場合の処理速度の比較結果を示します。論文内では、次の4種類のシステムを用いて、vbenchと呼ばれる一般公開されたベンチマークツールを実行した結果が示されています。
(1) x86 Skylake CPU × 2を搭載したサーバー(メモリー容量384G)
(2) Nvidia T4 GPU × 4を搭載した2ソケットサーバー
(3) VCU × 20
(4) VCU × 8
(1)のシステムでは、すべての計算処理をCPUで行います。(2)のシステムでは、トランスコーディングに関わる処理はすべてGPUで実施します。(3)は1台のサーバーに10枚のVCUカードを接続したもので、前回の記事で説明したように、Googleのデータセンターで用いられている標準構成のサーバーになります。1枚のカードには、2個のVCUが搭載されている点に注意してください。また、(4)は、VCUカードを4枚に制限したものです。(2)がGPUカードを4枚使用しており、これとカードの枚数を揃えた構成になります。
実行結果は、図1のようになります。「Throughput」の列に示された値は、1秒あたりの処理フレーム数に1フレームあたりのピクセル数を掛けることで計算した、1秒あたりに処理したピクセル数(単位は百万ピクセル)を示します。エンコーディングに使用するアルゴリズムは、H.264とVP9の2種類を用いています。VCUを用いたシステムの方が、CPU、GPUに比べてより高い性能(処理速度)を発揮していることがわかります。
図1 CPU、GPU、VCUによるトランスコーディング処理の速度比較(論文より抜粋)
また、「Perf/TCO」の列には、(1)のシステムをベースラインとした場合の価格性能比が示されています。価格部分の計算については、想定する前提条件によってある程度の変動が発生しますが、論文内では、H.264に比べて、VP9の場合に、VCUの価格性能比が特に大きくなっている点が指摘されています。これは、VP9は、H.264よりも計算量が多く、CPUによるVP9の処理速度がH.264よりも大きく劣ることが原因です。VP9を標準的に用いる環境では、VCUのようなハードウェアアクセラレーターの有用性がより高まります。
続いて、VCUを用いてエンコードした動画の品質に関するデータを紹介します。一般に動画の品質は、ビットレート(1秒間の動画に含まれるデータ量)によって変化しますが、図2は、さまざまな種類の動画に対して、生成する動画ファイルのビットレートを変化させながら、得られた動画の品質がどのように変化するかを示した結果になります。
図2 CPUとVCUによる動画の品質比較(論文より抜粋)
左の2つのグラフは、CPUのみを用いてソフトウェア的にエンコーディングした結果で、右の2つのグラフは、VCUを用いてエンコーディングした結果を表します。上下のグラフは、それぞれ、エンコーディングのアルゴリズムにH.264とVP9を用いた結果を表します。グラフの横軸がビットレートで、縦軸は、PSNR(ピークS/N比)と呼ばれる動画の品質を表す数値になります。PSNRが大きいほど、動画の品質はよくなります。
4つのグラフを比較すると、CPUの方がより高い品質を達成しているようにも見えますが、これは、VCUの設計上、意図された結果だと言うことです。それぞれのグラフには、PSNRの値が45dBの部分に破線が引かれていますが、これは、PSNR Ceilingと呼ばれるもので、PSNRをこれ以上あげても、人間の目では品質の違いが分からなくなるという限界値を示します。インターネットで動画を配信するという目的に合わせて、VCUは、より低いビットレートで、できるだけPSNRに近い品質を達成するようにチューニングされており、その結果が現れたものと理解できます。
なお、この観点では、H.264に対するVP9の有用性を読み取ることもできます。図2の右側にある上下2つのグラフを比較すると、同じVCUを用いた場合でも、1Mbps以下のビットレートでは、VP9の方がより高いPSNRを達成しています。
最後に、GoogleのデータセンターにVCUを導入した後のプロダクション環境における利用状況を示すデータを紹介します。VCUは、トランスコーディングに必要な計算処理を実装したハードウェアですが、トランスコーディングに関わるさまざまな処理を複数のタスクに分割して、VCUを搭載したサーバーに割り当てる処理は、サーバー上のタスクスケジューラーによって行われます。あるいは、VCUのファームウェアは、VCUに割り振られた処理を多数のコアに効率的に割り当てる必要があります。VCUは、このようなソフトウェアやファームウェアと連携して動作する前提で設計されており、ソフトウェアやファームウェアのチューニングによって、全体の処理量は大きく変動する可能性があります。
図3 VCU導入後のVCUによる処理量の変化(論文より抜粋)
図3は、VCU導入直後から12ヶ月の間に、VCUによる処理量がどのように変化したかを表すもので、左のグラフはユーザーがアップロードした動画のバッチ処理によるトランスコーディング、右のグラフはライブ配信に伴うリアルタイムでのトランスコーディング処理量の変化を示します。横軸の数値は導入後の「月数」を表します。いずれのグラフにおいても、CPUを用いたソフトウェアによる処理が減少すると共に、VCUを用いた処理量が増加している様子が読み取れます。論文内の説明によると、VCU導入後に、実際の稼働状況をモニタリングしながら、スケジューラーやファームウェアのチューニングを続けた結果だと言うことです。
今回は、2021年に公開された論文「Warehouse-Scale Video Acceleration: Co-design and Deployment in the Wild」を元にして、動画配信サービスで必要となるトランスコーディングの処理を行う専用のハードウェア、VCUについて、その性能を示すベンチマークの結果を紹介しました。
次回は、Googleのデータセンターに導入された、新しいデータ分析システムに関する話題をお届けします。
Disclaimer:この記事は個人的なものです。ここで述べられていることは私の個人的な意見に基づくものであり、私の雇用者には関係はありません。
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes