読者です 読者をやめる 読者になる 読者になる

SANMAN

思いつきの考えを垂れ流すブログ

ネット業界などでのFPGA化について

FPGA

勉強を兼ね、Microsoftによる検索エンジンFPGA化についていろいろ書こうと思う。
今回はバックグラウンドやらの話。
次回はMicrosoftの実装したシステムについてFPGAよりにいろいろ書きなぐる。
無駄に図も作っている。

ひとつ言えるのはソフトウェアエンジニアでFPGA方面きたきゃOpenCLガッツリやって趣味レベルFPGA設計やれ。
優秀な兵隊になれるぞ。

ネット企業などにおけるFPGAの用途

現状は2つ
スループット重視型(大量データの処理)
機械学習
→テキスト検索
→画像検索

・レイテンシ重視型
→HFT(High Frequency Trade)
→RTB(Real Time Bidding)
→CEP(Complex Event Processing)
に利用されている。

クラウドサービスや巨大なネットサービスを実現するデータセンタでの
・画像認識
・暗号化
・テキスト検索
などの各種処理をさせる。 こうした各種処理をCPU意外のプロセッサに投げるのをアクセラレーションと呼ぶ。

こういった処理はこれまでGPUが担当していたのが、今FPGAに変わってきている。

ちなみに旧来のFPGA利用者はASICデザインハウスで、ASICのプロトタイピングやASIC作る時間が惜しい、作るまでもないようなケースに利用されてきた。
完全にASICの代わり。

スループット・レイテンシ 2つの処理のアプローチの違い

スループット重視型は
・サーバーのアクセラレータとして機能する
複数FPGAからなるパイプライン構成を想定

レイテンシ重視型
NIC上に実装
FPGANIC上の単体で動作することを想定

MSがやったBingのハードウェア化はスループット重視型。
金融系がレイテンシ重視型ですな。

動き

FPGAメーカーとしてはAlteraが先行し、Xilinxが追随するかたちで、どちらもデータセンター向けのサポートを強化している。
OpenCLのサポート、対応ツールの整備等。

研究も含めた採用決定事例は、HFTの金融系、サイバーエージェント子会社の広告関連企業マイクロアドMicrosoft、Baidu、Facebook&HP、NEC(HFTのデモ。採用はなし)など。
Alteraと仲の良いIntelもサーバー向けにFPGA部搭載CPUの計画(in-package accelerator)を発表するなどしている。
マイクロアドNECくらいしか有名でないが、一応日本企業も取り組んでいる。

今回のMicrosoftの動き

Microsoftはもともと自社向けサーバーを開発し、台湾Quantaに製造させていた会社。
それが2008年頃からHDL設計スキル等を持つハードウェアに詳しい人材を研究施設Microsoft Reserchへ集め、データセンターにおけるFPGA利用について研究を進めていた。
2014年6月にCatapultを試作し、計1632個のFPGAを利用したハードウェアアクセラレーション可能なサーバーシステムを構築。
これにより実験的ではあるがBingの検索エンジンスループットが2倍にすることが出来た。

FPGAが採用される理由

ビックデータなどにむけた性能向上のため、マルチコア等による並列化を推し進めていった結果、一番向いてるFPGAに辿り着いたというある意味自然な流れ。
CPU、GPUに続く第三のコンピューティングデバイスなどと言われているそうな。
なんだそれ。

内容的に重複したりしてるが、一般的な採用される理由は以下。

・CPUの動作周波数の停滞
3GHz台で停滞したため性能と電力効率にすぐれたGPUの採用が進む

・電力効率の改善要求
CPUよりGPUは良いが、FPGAはもっと良い。 GPUSIMD演算は浅いパイプラインのため、カーネル(処理関数と思え)ごとに外部メモリへのアクセスが発生するが、FPGAはリソースが許す限り、ディープパイプラインを構成出来る。 また浮動小数点演算ユニット(FPU)の性能も近年ではFPGAGPUを超える性能を見せている。 Alteraが出荷予定のStratix10では10TFLOPSの単精度浮動小数点演算性能を見せるが、GPUは5GFLOPSで停滞している。(ただしFPGAベンダの主張。現在のGPUに引けをとらない性能になった程度に考えたほうが良い)

FPGAがFPUを扱いやすくなった
FPGAはリソースの関係上これまで浮動小数点演算は積極的に採用せず、固定小数点等でやり過ごしてきたが、高性能なFPUが大量に用意されるようになり、浮動小数点演算もわりと簡単に扱えるようになった。

・これまでのCPUやGPUに比べて倍以上の性能を持つ
FPGAの動作スピードは遅いので、GPUやCPUに負ける状況は充分にあるが、並列演算が活かせるアルゴリズムの採用先としてはASICの次に強い。 また無駄な処理サイクルや演算リソースがないため電力効率にも優れる。

終わりに

不動産、エネルギー、運用などのコスト削減を求められるデータセンターならではの動き。
レイテンシ重視型は実装コストに対して?だが、そこまでやってもぜんぜん儲かるんだろうな。

金くれ。

データセンターなどのデカイデータを扱うようなところでのアクセラレータとしてのFPGAは現状最適解なので、これからはそっち方面でのFPGAの演算リソースとしての利用が進みそう。 電力気にしない(1台で完結とか)ならば、ハイエンドGPUでゴリ押しが良い。