ネット業界などでの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上に実装
・FPGAはNIC上の単体で動作することを想定
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はもっと良い。
GPUのSIMD演算は浅いパイプラインのため、カーネル(処理関数と思え)ごとに外部メモリへのアクセスが発生するが、FPGAはリソースが許す限り、ディープパイプラインを構成出来る。
また浮動小数点演算ユニット(FPU)の性能も近年ではFPGAがGPUを超える性能を見せている。
Alteraが出荷予定のStratix10では10TFLOPSの単精度浮動小数点演算性能を見せるが、GPUは5GFLOPSで停滞している。(ただしFPGAベンダの主張。現在のGPUに引けをとらない性能になった程度に考えたほうが良い)
・FPGAがFPUを扱いやすくなった
FPGAはリソースの関係上これまで浮動小数点演算は積極的に採用せず、固定小数点等でやり過ごしてきたが、高性能なFPUが大量に用意されるようになり、浮動小数点演算もわりと簡単に扱えるようになった。
・これまでのCPUやGPUに比べて倍以上の性能を持つ
FPGAの動作スピードは遅いので、GPUやCPUに負ける状況は充分にあるが、並列演算が活かせるアルゴリズムの採用先としてはASICの次に強い。
また無駄な処理サイクルや演算リソースがないため電力効率にも優れる。
終わりに
不動産、エネルギー、運用などのコスト削減を求められるデータセンターならではの動き。
レイテンシ重視型は実装コストに対して?だが、そこまでやってもぜんぜん儲かるんだろうな。
金くれ。
データセンターなどのデカイデータを扱うようなところでのアクセラレータとしてのFPGAは現状最適解なので、これからはそっち方面でのFPGAの演算リソースとしての利用が進みそう。 電力気にしない(1台で完結とか)ならば、ハイエンドGPUでゴリ押しが良い。