ASICでAIを高速化するGoogle、FPGAを使うMicrosoft。違いは何か?
先々週はGoogle I/OとMicrosoft Buildが同じ週に開催されていたのですね。一気にいろいろなニュースが飛び込んできました。その中で、2社共がAI処理用のプロセッサに関する発表をしています。Microsoftの発表がこれで、
Googleの発表がこちらです。
Google、機械学習専用の第三世代プロセッサ「TPU 3.0」を発表。Google初の液冷システム採用。Google I/O 2018
Googleはここのところ毎年機械学習用プロセッサを発表していますが、今年も昨年比8倍の高速性を持つチップを発表しました。で、これはASICなのですね。一方Microsoftは、FPGAベースです。両者ともAIの処理をチップ化して高速化しようという考えは同じなのですが、使っている技術が違うのです。これは両者の戦略の違いが出ていると考えられますので、面白いですね。
ASICとFPGAの違い
ASICもFPGAも、ゲートアレイを使うことで開発期間を短縮できます。しかしASICは設計完了後は普通のチップ同様、マスクを作ってシリコンに回路を焼き付けます。このマスク作をるのに、数千万円から数億円かかると言われています。(こちらのサイトでは、最大10億円近いとも)それに、チップを作ってしまうと後から変更はできません。これに対し、FPGAはマスクを作る必要はありませんし、設計さえ済めばすぐに使え、さらにいつでも回路を書き換えることができます。開発にかかるコストと時間においてはFPGAが圧倒的に有利です。それにAIはまだ発展途上の分野であり、何時画期的なアルゴリズムが発見されるかわかりません。それを考えると、いつでも書き換え可能なFPGAの方が安心できます
最大の違いは製造コスト
しかし、両者の最大の違いは製造コストにあります。ASICは、作るまでにお金がかかりますが、製造に入ると1個数十円~数百円レベルで製造できるということです。一方のFPGAはどうしても数千円かかるということです。開発コストを考えても、数万個以上使う予定があるなら、そして回路を書き換える必要は無いと考えるなら、ASICのほうが費用対効果は高いということでしょう。
Microsoftはソフト屋さんだからプログラマブルが好きなのだろうという見方もできますが、最近はプロセス面でもFPGAのほうが進んでいるようですから、コスト以外の点では、FPGAを選ぶほうが良いように思えます。ただ、FPGAはコスト以外にも設計自由度が低かったり、ゲートの利用効率が良くないなどのデメリットもあるようです。
Googleはあらゆる手段で計算能力を確保したい
GoogleがASICを選んだのは、すぐにでも莫大な計算能力が欲しいからでしょう。すでにGoogleのデータセンターでは機械学習用に大量のGPUを使っていますが、Nvidiaの最新のGPU(TESLA V100)は1台で100万円以上しており、ゲーム用のGPUとは異次元の価格設定になっています。Googleへの提供価格がどうなのかはわかりませんが、それはASIC作ってでもコストを下げたいでしょう。恐らく数十~数百万個(あるいはもっと)の単位でデータセンターに配備して、機械学習をさせまくりたいのでは無いでしょうか。そのくらい使うつもりなら、単価はかなり安くなります。
それに、GoogleとしてはNvidiaに頼り切りというのも良くないと考えているはずです。昨年末、Nvidiaは突然不可解なEULAの改定を行って物議を醸しましたし、独占状態が続くといろいろと良くないことを考え出すのは世の常ですが、そういうのはGoogleの考えに反するでしょう。
「Don't be Evil」から「Do the Right Thing」へ、Googleの新しい行動規範が公開されたことが判明
単価が高くてもFPGAを使うMicrosoftのほうがお金持ちに見えるかもしれませんが、恐らくGoogleは新しいアルゴリズムが良いと思えば、躊躇無くそれまでのTPUを捨て、新しいチップを開発するのではないかと思います。そちらのほうがよほどお金持ちということかも ^^;
<2018年5月22日追記>
重要なことを書き忘れていました。MicrosoftのFPGAチップは、「学習済みのモデルを高速に実行することに特化」しているということで、推論専用ですね。TPU1は推論用でしたが、TPU2移行は学習にも使えるようになっています。学習は推論よりも高い演算負荷がかかりますので、Googleはクラウドでの機械学習を強力にすることを目的としており、Microsoftはエッジでの処理を強化することが目的と考えられ、活用のターゲットが(いまのところ)大きく違う、ということのようです。