CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
今回は、2021年に公開された論文「Warehouse-Scale Video Acceleration: Co-design and Deployment in the Wild」を元にして、Googleのデータセンターに導入されている、動画のトランスコーディング処理に特化した独自設計のハードウェアを紹介します。今回は、前提知識となる、一般的な動画ファイルのトランスコーディング処理を中心に説明します。
動画ファイルのデータ形式にはさまざまな種類があり、端末の解像度や画面サイズ、あるいは、ネットワークの通信速度によって最適なデータ形式が変わります。利用環境に合わせて、動画ファイルのデータ形式を変換する処理を一般に「トランスコーディング」と呼びます。特に、インターネットを利用した動画配信サービスでは、さまざまな端末、あるいは、ネットワークの通信速度にあわせて動画を配信する必要があるため、ユーザーがアップロードした動画コンテンツに対して、複数の解像度、および、画面サイズに合わせて、事前にデータ形式の変換、すなわち、トランスコーディングの処理を行います。一般のユーザーが動画編集ソフトを用いてトランスコーディングを行うこともありますが、ほとんどの場合は、1〜2種類の形式に変換するだけです。一方、データセンターで実施する場合は、図1のように多数の形式に同時に変換する点が異なります。
図1 データセンターにおけるトランスコーディング処理(論文より抜粋)
動画ファイルのデータには、圧縮処理が行われているため、トランスコーディングを行う際は、はじめに、元のデータ形式から未圧縮の生データ(Raw Frame)を取り出す「デコーディング」の処理を行います。その後、画面サイズの拡大・縮小を行い、新しいデータ形式による再圧縮処理、すなわち、「エンコーディング」の処理を行います。デコードしたデータから、1つの形式にだけエンコーディングする方法を「SOT(Single-output Transcoding)」、そして、複数の形式にまとめてエンコーディングする方法を「MOT(Multiple-output Transcoding)」と呼びます。図2(b)の例では、解像度480pの動画ファイルを元にして、144p、240p、360pという、より低解像度の動画ファイルを並列に生成しています。
図2 SOT と MOT の違い(論文より抜粋)
処理効率の観点では、MOTの方が優れていますが、動画のデータ変換には大量のメモリーと大量の計算処理が必要になるため、メモリーが制限された環境で処理をする場合や処理速度を優先する場合は、SOTを用いることもあります。
図2の例では、異なる解像度のデータを生成する場合を示していますが、単純な解像度(画面を構成するピクセル数)の他に、生成される動画の品質も考慮する必要があります。ピクセル数がいくら多くても、表示される動画の動きが滑らかでなければ意味がありません。動画の品質を損なわずにデータを圧縮するには、画面上で動きの少ない部分を検出して、そのような部分を中心に圧縮処理を行います。逆に、動きが多い部分はデータの圧縮率を下げて、より滑らかで精密な動きが再現できるようにします。この点については、さまざまな圧縮アルゴリズムが考案されており、それぞれでどこまで深く動画データの解析を行うかが異なります。高品質な動画データを生成するには、それだけ多くのデータ解析が必要になるため、エンコーディングの処理にはより長い時間がかかります。そのため、動画配信サービスによっては、特に再生回数の多い、人気の動画についてのみ、時間のかかる最高品質の圧縮アルゴリズムを適用するなどの工夫も行われています。
なお、トランスコーディングに要する時間に対する要求もサービスの種類によって大きく異なります。ユーザーが動画ファイルをアップロードして一般公開するサービスであれば、アップロードした後、実際に閲覧可能になるまで数分から1時間程度待たされても構いません。一方、ライブ配信のサービスであれば、ユーザーから送られてくるリアルタイムの動画データは、遅くとも1〜2分の間にトランスコーディングして再配信する必要があるでしょう。このように、データセンターにおけるトランスコーディング処理では、動画データの種類や処理時間など、さまざまな要求に柔軟に対応する必要があります。
Googleのデータセンターでは、Borgと呼ばれるコンテナ管理システムを用いて、大量のサーバー上でコンテナ技術を利用した分散並列処理を行っています。他のさまざまなサービスと同様に、動画配信サービスもこのようなプラットフォーム上で稼働しています。しかしながら、一般的なサーバーでは、前述のトランスコーディング処理を大量、かつ、高速に行うのは困難です。そこで、Googleのエンジニアは、トランスコーディングの中核となる処理を実行する専用のハードウェア(アクセラレーター)を開発しました。そして、VCU(Video Coding Unit)と呼ばれるこのハードウェアを搭載したサーバーを集めたクラスターを世界各地のデータセンターに配置した上で、動画配信サービスとの連携処理を行っています。
今回は、2021年に公開された論文「Warehouse-Scale Video Acceleration: Co-design and Deployment in the Wild」を元にして、動画配信サービスで必要となるトランスコーディングの処理について、その一般的な仕組みを解説しました。次回は、本文の最後に触れた、Googleが独自に開発したトランスコーディング専用のハードウェアについて、より詳しい仕組みを解説していきます。
Disclaimer:この記事は個人的なものです。ここで述べられていることは私の個人的な意見に基づくものであり、私の雇用者には関係はありません。
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes