実用化が進むGoogleのTensorFlow

2018年4月18日より開催された「COOL Chips 21」は、世間の関心の高いニューラルネットワーク関係の講演や論文発表が多く、昨年に比べて出席者が大幅に増加していた。特に、初日の最後にGoogleのKaz Sato氏のGoogleの「Tensor Processing Unit(TPU)」についての基調講演を持ってきたので、人が集まった。

GoogleのTensorFlowはニューラルネットだけではなく、次の図に示すように、K-Meansを始めとして多くの用途に使えるツールキットとなっている。また、実行するハードウェアとしては、TPUだけでなくCPUやGPUでも使えるようになっている。

  • GoogleのTensorFlowは機械学習全般に使えるツールキットになっている

    GoogleのTensorFlowは機械学習全般に使えるツールキットになっている (このレポートのすべての図は、Cool Chips 21におけるKaz Sato氏の基調講演のスライドのコピーである)

TensorFlowはいろいろなところで使われており、その一例としてキュウリ農家の例が紹介された。キュウリは大きさや曲がり具合などで等級が異なり、選別に手間がかかる。これを見兼ねた息子さん(以下の写真中央の人物)がTensorFlowを使って以下の写真の右上のような等級の自動選別システムを作り、大幅な省力化に成功したという。

  • キュウリ農家はTensorFlowを使って等級の自動選別システムを開発して省力化を実現した

    キュウリ農家はTensorFlowを使って等級の自動選別システムを開発して省力化を実現した。右上が自動選別システム

また、NTTドコモは街を500m四方に区切り、時刻や天候などを加味してそれぞれの区域にどれだけのタクシー需要があるかを、TensorFlowを使って予測するシステムを開発した。この情報に基づいてタクシーの配車を行うことにより、新人の運転手でもベテランドライバーに迫る売り上げを上げることができるようになったとのことである。

このようにTensorFlowを使ったAIはあちこちですでに実用化が始まっている。

Google脅威の開発力

GoogleのTPUの開発は、2006年ころから検討されていたが着手には至らなかった。しかし、2013年にディープラーニングに必要となる計算能力を見積もると、このままではGoogle全体のデータセンタの処理能力を倍増する必要が出てくるという見積もりとなり、尻に火が付いた。

そして、15か月で最初のTensor Processing Unit(TPU v1と呼ぶ)を完成し、実用化まで持っていき、2015年に稼働に漕ぎつけたという。後述のようにTPU v1は演算のパイプラインが中心で、複雑なコントロールが無いので、CPUと比べると設計は簡単と思われるが、それでも15か月で設計、検証、チップ製造、デバグを経て、稼働に漕ぎつけるのは驚異的な短期間開発である。

  • 15か月で開発から稼動に漕ぎつけたTPU

    2013年に見積もるとディープラーニングの負荷が急増するという予測になり、急遽、開発に着手し、15か月で稼働に漕ぎつけた

次の図の左側は2015年に稼働を開始したTPU v1である。中央の大きなLSIがTPUで周囲に付いているのはDDR3メモリとTPUに電源を供給するDC-DCコンバータである。図の右側は2017年に実用を開始したTPU v2で、白い大きなヒートシンクの下にTPU v2チップが搭載されており、4個のTPU v2チップを搭載したボードをTPU v2と呼んでいる。

なお、TPU v1は8ビット整数でニューラルネットワークの計算を行っており、推論専用であるが、TPU v2は16ビット長の浮動小数点数で計算を行っており、学習に使えるという点が大きく異なっている。

このため、TPU v2は主に学習に使われ、引き続きTPU v1は推論に使われるという使い分けが行われているという。

  • TPU v1とTPU v2

    左は2015年から使われているTPU v1。右は2017年から稼働を開始したTPU v2である

TPU v1は28nmプロセスで製造され、700MHzで動作し、消費電力は40Wである。次の図に見られるように、SATAディスクと同じスロットに実装できる形状となっている。電気的なインタフェースはPCIe Gen3 ×16であり、バンド幅は12.5GB/sである。

  • ここに画像の説明が入ります

    TPU v1は28nmプロセスで製造され、動作クロックは700MHz、消費電力は40Wとなっている

TPU v1は推論専用であり、サーチのランキング、音声認識、テキストやスピーチの翻訳、写真のサーチなどに利用されている。これらのWebサービスの需要は膨大であるので、TPU v1は現在も活躍している。

そして、TPU v1はIntelのHaswell CPUとNVIDIAのK80 GPUと比較すると、性能は15~30倍、電力効率は30~80倍になっているという。

  • TPU v1とIntel CPU、NVIDIA GPUの比較

    TPU v1はIntelのHaswell CPUやNVIDIAのK80 GPUと比較すると、性能は15~30倍、性能/Wは30~80倍となっている

TPU v1の用途

2016年6月のデータであるが、TPU v1の61%の能力はMLP0(Multi-Layer Perceptron)とMLP1というサーチなどの用途に使われており、29%がLSTM0(Long-Short Term Memory)0と1という音声認識などの処理に使われている。ディープラーニングというとCNN(Convolutional Neural Network)が有名であるが、画像認識などのCNNでの使用は5%に留まるという。

  • 2016年6月時点でのTPU v1の用途別の使用割合

    2016年6月時点でのTPU v1の用途別の使用割合。CNNでの使用は5%に留まり、CNN向けに設計を最適化するのは間違いという

TPU v1では、入力を量子化して8bitに変換して計算している。NVIDIAのK80 GPUでは32bitの浮動小数点演算を行っているので、2496個の演算器しか搭載できていないが、8bit整数で計算するTPU v1では65,536個と25倍の演算器を持つことができる。

推論の計算自体、それほど高い計算精度は必要は無いし、Googleは広い範囲の値を扱う必要がある部分では浮動小数点数に変換して処理を行うなど基本は8bit整数で推論計算ができるようなアルゴリズムを作っているので、これが可能になっている。

  • TPU v1は8bit整数で計算することでK80と比べて25倍の演算器を持っている

    TPU v1は8bit整数で計算することでK80と比べて25倍の演算器を持っている