AWS F1 で始めるサーバーサイド FPGA (1)

server-fpga

はじめに

何気なく利用しているインターネットサービスの多くはデータセンターで運営されており、今やデータセンターは社会になくてはならない重要な存在となっています。道路や水道と同様に私たちの生活に欠かせないインフラのひとつと言っても過言ではないでしょう。そのようなデータセンターの中で FPGA をアクセラレータとして利用する事例が増えています。

全5回を予定しているこの連載では、アマゾン・ウェブ・サービス (AWS) を題材に、データセンターでの FPGA の活用事例と開発環境を紹介し、実際にクラウドでアプリケーションをアクセラレートするところまで体験します。

データセンターで FPGA アクセラレータ?

さて、データセンターと言うとどんなイメージが浮かびますか。空調が管理された広大な室内に大きなサーバーラックが整然と並び、そのラックの中にはサーバー、ストレージ装置、ネットワーク装置が詰め込まれ、カラフルなネットワークケーブルがびっしりと張り巡らされている、といったイメージでしょうか。次の動画で Google のデータセンターの内部を知ることができます。ぜひ見てみてください。

Google Data Center 360° Tour

普段、私たちが YouTube を見るときには意識していませんが、インターネットの向こう側には巨大なデータセンターがあって、その中でたくさんの様々な装置が複雑に連携して、サービスを提供しているのですね。

米国カリフォルニア大学バークレー校の David A. Paterson 教授は、「ムーアの法則とデナード・スケーリングの終息は、命令セットアーキテクチャにイノベーションが必要だということを示唆している。われわれは、コンピュータアーキテクチャの“ルネサンス期”に入っているのではないか。ベンチャーキャピタルは2017年の1年間で、チップのスタートアップに計15億米ドルを投資している」と語った。

ムーアの法則から離れることで、より自由に
https://eetimes.jp/ee/articles/1802/14/news084.html

近年、データセンターで扱うデータ量の増大、計算の複雑化、リアルタイム性の要求がますます高まる一方、サーバーの頭脳とも言うべき CPU の性能が頭打ちになっています。そこで、CPU の苦手な処理を、FPGA や GPU にオフロードし、アプリケーションをアクセラレート (高速化) することが注目されています。

余談となりますが、GPU は本来、グラフィックス処理をオフロードするグラフィックスアクセラレータですが、その並列計算の高い性能を活かして、ディープラーニングなどの機械学習を高速化する用途でも活発に利用されています。

FPGA も GPU もアクセラレータとして使われますが、どのような違いがあるでしょうか。

GPU は CPU と同様にソフトウェアを実行するプロセッサで構成されます。命令セットアーキテクチャを持ち、命令に従ってメモリ上のデータを加工していきます。CPU と比べたときの GPU の特徴は、プロセッサが大量に (〜2,000個くらい、CPU は多くて数十コアなので2桁違いますね) 搭載されていて、大量なデータの並列処理が得意な点です。元がグラフィックス処理に向いていますから、3D オブジェクトの頂点やピクセルごとに独立したたくさんの計算が得意なのです。

唐突ですが、料理に例えると、GPU はなんでもこなせる器用な料理人 (プロセッサ) を大量に雇って、人海戦術でたくさんの料理 (データ) を調理 (処理) するイメージです。

人海戦術で調理するGPUのイメージ

FPGA は書き換え可能な (アダプティブな) ハードウェアですから、様々なアーキテクチャを持つことができますが、アクセラレータとして用いるときはアプリケーションに特化した専用ハードウェアとすることがほとんどです。そのようなアクセラレータでは、処理の一連の計算がそれぞれ専用のハードウェアを持ち、バケツリレーのようにデータを流しながら加工していきます (パイプラインやデータフローなどと言います) 。

FPGA を料理に例えると、食品の工場です。工程ごとに専門の職人 (もしくは機械) がいて、それぞれの職人は担当の仕事しかできませんが、手際よく自分の仕事をこなします。また、加工中の食品はベルトコンベアで運ばれ、工程と工程の間は、最短経路で結ばれます。

食品工場で流れ作業をするFPGAのイメージ

左から右に食材が流れていき、右端に着いたときに料理ができあがっているイメージです。食材を流し続けることで次々と料理ができあがっていきます。イメージがうまく伝わっていることを願います。ここで伝えたかったことは、GPU と FPGA が使う並列性の違いです。GPU が得意なのはデータ並列 (たくさんのデータを並列に処理する) 、FPGA が得意なのはタスク並列 (流れてくるデータに対してたくさんの計算を並列に実行する) と言われています。

このように GPU と FPGA は、それぞれの得意な分野で住み分けたり、あるいはぶつかり合ったりしているのですが、ハードウェアの性能をいかに引き出すかを競うアクセラレーションの市場が大いに盛り上がると面白いですね。

クラウドでも FPGA が使える AWS F1 インスタンス

この連載では AWS F1 を題材としますので、ここでクラウドについておさらいします。クラウドでは、サーバー、ストレージ、ネットワークなどの設備はあらかじめクラウド事業者によってデータセンターに設置されており、それらが柔軟に利用できるようになっています。ユーザーはこれらの資源を API を介して利用できます。私が説明するより、クラウド最大手である Amazon Web Services 社の説明を見た方がよいですね。

「クラウド(クラウドサービス、クラウドコンピューティング)」とは、クラウドサービスプラットフォームからインターネット経由でコンピューティング、データベース、ストレージ、アプリケーションをはじめとした、さまざまな IT リソースをオンデマンドで利用することができるサービスの総称です。クラウドサービスでは、必要なときに必要な量のリソースへ簡単にアクセスすることができ、ご利用料金は 実際に使った分のお支払いのみといった従量課金が一般的です。

クラウド (クラウドサービス) とは?
https://aws.amazon.com/jp/cloud/

クラウドの利点についても詳しく説明されています。クラウドに馴染みがない方はぜひご一読ください。

クラウドサービスを利用することで、ハードウェア導入に伴う初期の多額の投資や、リソースの調達、メンテナンス、容量の使用計画といったわずらわしい作業に 多大な人的リソースを費やす必要がなくなります。削減することができた資金や人的リソースを新しいアイデアの実現に充てることが可能になり、IT 部門を運営するために必要な、適切な種類とスペックのコンピューティングリソースもプロビジョニングすることができます。

インフラの調達期間、拡張・縮小の迅速さ、セキュリティ、既存のデータセンター環境との連携の利便性など、自社サーバーでは難しかった多くのケースもクラウドサービスで解決することができます。

クラウド (クラウドサービス) とは?
https://aws.amazon.com/jp/cloud/

AWS ではクラウドで FPGA を利用できる Amazon EC2 F1 と呼ばれるインスタンスを2017年から提供しています。

Amazon EC2 F1 インスタンス | AWS
低コスト、バースト可能な汎用の Amazon EC2 インスタンス

このサービスによりユーザーは、あらかじめ FPGA がインストールされたサーバーを (お金さえ払えば) 好きなときに好きなだけ使えるようになりました。初めから FPGA アクセラレータカードを購入して開発を始めるのは初期投資が大きく、気軽にできないかもしれませんが、クラウドでしたら FPGA を動かしたいときだけ F1 インスタンスを利用することで、費用の負担は小さくなり、まずはちょっと試してみる、といった使い方もできそうですね。

F1 インスタンスのサイトでは、次の6つのユースケースと、FPGA によってもたらされる効果が紹介されています。

  • ゲノミクス研究:CPUインスタンスと比べて30倍優れたコンピュートコスト
  • 金融分析:リアルタイム分析が可能に
  • リアルタイム動画処理:品質を犠牲にせず帯域幅コストを節約
  • 高スループットの画像処理:画像変換でストレージを節約
  • ビッグデータ検索と分析:量、種類、速度の面で厳しくなり続けるデータの分析と検索の要件を満たす
  • ネットワークとセキュリティ:ネットワークパケットをラインレートで効率的に計算

ここまでの説明で、FPGA の特徴と、データセンターの FPGA が活用されている分野か分かったと思います。より理解を深めるために、事例を詳しく掘り下げて説明します。専門用語が出てきて難しいかもしれませんが、すべてを理解する必要はなく、FPGA の強みについて少しでもイメージが伝わればと思います。

FPGA 事例紹介:動画エンコーダ

よくゲームをするのであれば Twitch というサービスを知っているのではないでしょうか。世界的に人気のあるゲームのライブ配信サービスです。実はこのサービスの裏方として FPGA が活躍しています。見出しにある通り、Twitch で動画をライブ配信する際の、動画のエンコード(圧縮)の処理に FPGA が使われています。ここでは2018年に発表された次の記事を紹介します。

How VP9 delivers value for Twitch’s esports live streaming
VP9 will soon help Twitch offer a better viewing experience for premium esports and partner channels

ライブ配信なので、映像をリアルタイムにエンコードする必要があります。また、画質はできるだけ良くしながら、一方でデータ量は減らしてコストを下げたい、という要求があります。

H.264 は現在広く使われている動画エンコード方式ですが、フル HD 映像 (1080p60) をリアルタイムにエンコードするには圧縮性能 (画質とデータ量のバランス) が限界に達しているそうです。次世代の動画エンコーダである VP9, HEVC, AV1 などは従来の規格より圧縮率が格段に向上するため、H.264 よりも画質を上げたり、データ量を減らしたりできる可能性があるのですが、一方で高い圧縮率の達成には計算量も大きく増えるためリアルタイム処理が難しくなっています。

そこで Twitch 社は NGCodec 社の VP9 ハードウェアエンコーダを採用し、H.264 と同等以上の画質で、データ量を25%削減することに成功しました。詳しく見ていきましょう。画質を客観評価した結果として次のグラフが示されています。

https://blog.twitch.tv/assets/uploads/8223dde7a5d4d82ec2336679684bb0a8.png

横軸はビットレート (1秒あたりのMbit数) 、縦軸は VMAF です。VMAF とは動画配信サービスを提供する Netflix が開発した、人間の主観により近い画質評価を行うことができる客観的な評価指標です (簡単に言うと人間の代わりにコンピュータが画質の良し悪しを評価してくれる指標のことです) 。オレンジ色の H.264 の線よりも、青色の VP9 の線の方が左にあるということは、同等の画質であっても VP9 の方がより小さいビットレートを実現できることを意味します (同じ画質でもデータ量を少なくできる) 。

アルゴリズムの画期的な発明があってこのような高圧縮率が実現できるというよりは、アルゴリズムを複雑にして (圧縮の手段を増やして) 実現していると考えた方が良さそうです。その分、計算が大変になりそうですね。VP9 で具体的にどのようなことが行われているか紹介されています。

動画の圧縮では、画像を平坦にしてエントロピーを下げる「予測」と呼ばれる処理が行われます。VP9 の場合の予測ブロックと、H.264 の場合の予測ブロックを次の画像に示します。

VP9の予測ブロック
https://blog.twitch.tv/assets/uploads/e9083175522d99ca3d129456b7bc5579.png
H.264の予測ブロック
https://blog.twitch.tv/assets/uploads/da69cd5e6589ef49f4bdb53f72112a6b.png

ご覧の通り、VP9 の方が予測ブロックのサイズのバリエーションが多く、大きいブロックから小さいブロックまでが、画像の部分ごとに使い分けられていることが分かります。どのように使い分けてデータ量を減らしているかと言いますと、例えば空のような平坦な部分は大きなブロックで予測して、予測に必要なビット数を減らし、一方で細かなテクスチャの部分には小さなブロックを割り当て、予測の精度を上げ、圧縮の効率を上げています。このように圧縮方法の選択肢が増えると、それに伴って圧縮の効率を上げることができますが、一方で適切な圧縮方法を選択するためにより多くの計算が必要となります。

NGCodec 社の VP9 ハードウェアエンコーダでは、この予測ブロックのサイズや、その他の圧縮の選択肢 (の一部) を網羅的に評価し、画質とデータ量の観点から最適な組み合わせを選択します。FPGA が得意なタスク並列の計算性能が大いに発揮され、CPU では難しいリアルタイム性が実現されています。

最後に、実際に圧縮されたゲーム映像を見てみましょう。左が H.264 (6Mbps) 、右が VP9 (4.5Mbps) の結果です。VP9 の方がビットレートが低いですが、道路の細かなテクスチャを再現できていて、またトラックの側面の部分もよりくっきりとした映像となっています。

https://blog.twitch.tv/assets/uploads/51c4b5b43c485d8d3a4a451e8a21bbe7.png

まとめ

今回はデータセンターでの FPGA の利用が注目されていることをご紹介しました。また、GPU と比べたときの FPGA の特徴と、その特徴を活かした FPGA の活用事例をご紹介しました。すぐにでも AWS F1 で FPGA を試してみたいですね。

次回からはサーバー向けの FPGA 開発ツールの紹介と、AWS F1 サービスを利用して FPGA によるアプリケーションのアクセラレーションを体験してみましょう。

ザイリンクス株式会社 安藤潤

タイトルとURLをコピーしました