SANMAN

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

GoogleのTensorFlowのハードウェア高速化について

まとめ

  • ソフトウェアとしてのTensorFlowを公開する前に専用ASIC作ることを決めてたGoogleの決断力
  • 戦略的に使われる金の力はすごい
  • 手持ちのTeslaなどのGPUは売り払い、その金でGoogle Cloud Platformを使おう
  • 貧乏人はFPGAGPU使ってろ

はじめに

Googleが自社の機械学習向けライブラリTensorFlowを高速化するハードウェア「TPU」を1年前以上から稼働させていたという記事が流れてきた。

jp.techcrunch.com

GPUFPGAを使ったハードウェアアクセラレーションはいまとなっては珍しいものではなくなったが、この記事の恐ろしいことはASIC、つまり完全なるカスタムなLSIGoogleが作ってしまったということ。
ASICを作るというのはだいぶヤバい。
GoogleはVP9のRTLを提供していたり、ハードウェアエンジニアも結構雇って怪しげなハードウェアを研究開発させているので、作ろうと思えばいつでも作れる会社だ。なので技術力が特別すごいという意味ではない。インターネット系企業と考えると異常だけど。
http://www.webmproject.org/hardware/vp9/

TPUは機械学習の学習のアクセラレーターということだそうなので、今回一番痛手を受けるのはGPUベンダだろう。 スループットも消費電力も負けたGPUなど、おとなしくゲーム画面作っていろという感じだ。 FPGAは第3のプロッセサーなどというのは妄想に終わりそうで痛手を受けるけれども、本来の魅力であるIOの柔軟性などもあるので、その方面からある程度はくいこめるかも?

ハードウェア開発について

ハードウェアやったるぜ!という意気込みはあっても、1品種のLSIを作るとなると時間もかかるし金もかかる。
開発期間年単位、開発費は億単位。
何百万個チップを作るとかいろいろと状況によるからなんとも言えないが、先端よりのプロセスでまともに1プロジェクト完遂するとなると開発期間1年で実質10億とか?

CPUのプロセスが14nmだとか言っている現代で、90nmとかでもとりあえず1億は用意しないと声を発する権利すら与えられない。
ハードウェア開発自体の技術的な難しさはあるが、そんな瑣末なことよりも金の心配がすべてだ。
よく金に物を言わせるというので「札束での殴り合い」などと表現されるが、ハードウェア開発においてはそれが「金塊での殴り合い」に変わる。 400トロイオンスのラージバーだ。

プロジェクト化されるような仕事は成功する保証などない(簡単なことはプロジェクトにならない)のだから、失敗を考えると10億、20億とかは捨てる覚悟が必要。
Googleですらチップのリビジョンが2あるくらいなので、1回で欲しいチップが作れるはずはまずない。
人員も、開発環境もない0から状態でハードウェアを1つ作ろうと思ったら100億くらいは用意したい。

そんなわけで、ASICを作るのは主に金がつらいので、FPGAGPUといった準汎用チップを活用していた。 FPGAGPUも20nm付近のかなりの先端のプロセスなので、90nmとかのプロセスで一から作るより、1000個くらい欲しいとかいうレベルなら非カスタムであっても買ってしまったほうがトータルで安いことが多い。

最強はASIC

金や時間といったコストが最強に高いASICだが、このコストを回収できるような算段ができていれば、消費電力、性能、1チップあたりの単価において最強のパフォーマンスを発揮するのがASIC。 たとえばAppleiOSバイス向けに自社のカスタムASIC(CPU)を作っている。
以下の記事をみるとiPhoneは3ヶ月間の集計で4、5000万台売れている(本当か?)とか書いてあるので、一ヶ月あたり1000万個はカスタムCPUチップが消費される。iPadなどにも同様のCPUは使っているので2000万個くらいかもしれん。

CNN.co.jp : アップルの「iPhone」販売台数、10億台近づく

これだけ数が出るといくら初期に開発コストがかかるとはいえASICが最強。 回収できてしまえば最強。 これくらいの数になると、たとえ瑣末であってもカスタム要望あるのにASICしないとか頭がおかしい疑惑が出てくる。

なお、MacbookなどのAppleのパソコン系は四半期で500万台とかいうレベルなので、タプティックエンジンみたいなiOSバイスでも使えるものでもなければカスタムASICをおこすメリットは低いと判断されているっぽい?

高度な戦略

すでに1年もの期間、カスタムハードウェアを稼働させていたという点から、Googleが早い段階から機械学習とTensorFlowに並々ならぬ関心を持っていることがわかる。

以下の記事は今回のTPU設計に関係したベテランハードウェア設計者へのインタビュー記事。 www.eetimes.com

これを見ると

  • 3年以上前にはFPGAGPU、CPUでの評価をしていた
  • その結果(3年くらい前)にTensorFlow専用ASIC作る決断をした
  • 2016年秋が楽しみ

ということが書いてある。
2013年頃というとGoogleが16000個のCPUを使って猫を認識するDeep Learningらしきものをやった頃。 wired.jp

2013年頃はDeep Learningは一般レベルでは今ほど騒がれず、まだまだ未知も部分が多かったため、機械学習といえばデータマイニングためでSVMとかが幅をきかせた頃のように思う。

Google Cloud Platformのリリース(Compute Engine基準で2013とする)、TensorFlow(2014,5)、そこへTensorFlowを高速化できるハードウェアの存在を公表(現在)というコンボがすごい。 普通はASIC作ったらいかに大量に製造して、販売して、投資を回収するか?という物理的にモノをどう売りさばくのがポイントになる。 でもGoogleはTPUは自分たちのサービスの差別化のためだけに使い、TPU自体は販売するつもりはない。
www.eetimes.com

Googleストリートビューなどの自社サービスの改善や、Google Cloud PlatformでTPUのパワーを使わせてしまえば(すでに使わされているが)、クラウドサービス含め、これまでの本業経由から回収できる。TensorFlowはどマイナーなフレームワークではないと思うし、むしろ利用情報が多くてとっつきやすいものだと感じているので見込みが良い。
TPUがもたらすであろう消費電力に対するパフォーマンス効率からランニングコストGPUなどより格段に下がるはず。はず。
詳しいことは秋に期待。

Microsoftのハードウェアアクセラレーターはオワコン?

目的がわりと汎用的で、機械学習専用機でもTensorFlow専用機でもないのでFPGAは妥当だろう。
GoogleみたいにTensorFlow専用機つくる!と絞り込みしてないし。
仮にASIC作るならFPGA間通信などをハードマクロ化したり、リコンフィギュレーション部に手を入れたりしたカスタムFPGAを作るほうがマッチしていると思う。 ハードウェア設計部隊はいるし、金もあるからからやろうと思えばできるはず。 重要顧客だしIntel神がもたらすであろうXeon+FPGAとか関わってそう。

その他

8bitの精度があればよいというのはアクセラレート対象であるTensorFlowにくわしくないとわからん。事実だとすれば、CPUやGPUはだいぶ無駄な演算している。8bit以上あると性能上がる、例えば16bitなら2倍の性能とかであれば、今回の8bitは必要十分な精度でしかないのであまり注目してもしょうがないきがする。

ムーアの法則が7年うんぬんは忘れても良いと思う。 「同等の性能を持つGPUが登場するにはあと7年必要だ」的な見積もりとかそういうレベルの話みたい。 性能的にはGPUの10倍あたりらしいので、ムーアの法則とからめると7年というのはそのへんからきてるっぽい。

GPUFPGAでのアクセラレーションを検討する程度のことは当たり前レベルな雰囲気。検討結果がよければASICつくるのも当たり前になるのか。

編集画面がいろいろ変わってて戸惑った。