No.015 特集:5Gで変わる私たちのくらし
連載02 あらゆるモノに知性を組み込むAIチップ
Series Report

推論処理をGPUの25倍に高速化

第1世代AIチップの代表例であるGoogleのTPUは、AI関連処理に特化したチップの特徴を知るための絶好の題材である。同社は、学会論文や解説ドキュメントなどを大量に公開しているからだ。

TPUは研究開発段階のチップではなく、データセンターなどに投入されている実用化済みのチップである。同社のサービス、「Google検索」「ストリートビュー」「Googleフォト」「Google翻訳」には、既にTPUが使われている。

推論処理向けのTPUは、28nmプロセス*4で製造された動作周波数が700MHz、消費電力が40WのASIC*5である。動作周波数が3GHzを超えるものが当たり前のサーバ向けマイクロプロセッサに比べると、拍子抜けするほどゆっくりと動いていると感じるだろう。ところがGoogle社によると、一般的なマイクロプロセッサやGPUを使ってニューラルネットワークの計算処理を実行した場合より、15~30倍も高速であるとしている(図3)。さらに、単位電力当たりの性能で比べると30~80倍と、その高効率さが際立つ。

様々なAI関連処理を実行したときのマイクロプロセッサ(CPU)、GPUに対するTPUのベンチマーク結果
[図4] 様々なAI関連処理を実行したときのマイクロプロセッサ(CPU)、GPUに対するTPUのベンチマーク結果
出典:Google

ちなみに、単にTPUと呼ばれるチップは推論処理に特化したチップであり、学習処理の高速化を狙った「Cloud TPU」と呼ばれるチップが別にある。そして、TPUやCloud TPUの開発には、新進気鋭のAI研究者や半導体エンジニアに加え、David Patterson氏やNorman Jouppi氏など、マイクロプロセッサの進化をリードした、野球で言えば王・長島クラス、歌手で言えばビートルズクラスの一時代を作ったレジェンド研究者が現役で参加している。新しい時代を万全の布陣で開こうと意気込む、業界の空気が感じられる。

あの手、この手でAI関連処理を高速化

TPUでは、推論処理に欠かせない膨大な積和演算を効率的にするため、あの手この手の技術を併用している(図4)。ここでは代用的な4つの技術を紹介したい。

TPUに投入した技術例
[図4] TPUに投入した技術例
出典:Google

まず、「量子化*6」と呼ぶ技術を使って、32ビットといった高精度の演算対象データを、一律に8ビットへと精度を落としてしまう。Googleによると、画像認識用のニューラルネットワークの場合、元々91Mバイトあった処理対象のデータは、量子化によって1/4の23Mバイトまで削減できるという。さらにこの処理と並行して、浮動小数点演算を整数演算に置き換えてしまい、演算器の回路規模と消費電力を大幅に削減している。

一般的なGPUでは、1個のチップに数千個の32ビット浮動小数点乗算器を搭載している。ところがTPUでは、演算器1個当たりの回路規模が小さくなった分、演算器の数を増やし、8ビット整数乗算器を6万5536個も搭載している。推論精度のわずかな違いを許すことで、乗算器の数を25倍に増やし高速化しているのだ。

次に、複雑な演算の命令で実行できる、「CISC*7」というプロセッサの古典的なアーキテクチャを復活採用している。TPUでは、推論処理で用いる複雑な演算を1つの命令で実行できる、専用命令を十数個も用意した。これによって、データや命令の読み出しや書き込みの作業を最小限に抑えている。

またTPUでは、同じ演算を実行するプロセッサコアを、2次元的に数多く配列した「マトリックスプロセッサ*8」と呼ぶコアの配列法を採用している。これによって、クロック信号*9の1サイクル当たり、数十万回の演算を実行できるようにしている。Googleの言葉を借りれば、「マトリックスプロセッサの採用で、1文字ずつ印刷するタイプライタのようだったマイクロプロセッサの処理が、TPUでは1ページ分の文書を一括印刷するプリンタのように高速化した」という。

さらに、大規模なマトリックスプロセッサをチップ上に実装する方法として、「シストリックアレイ」という、従来のCPUやGPUとはまったく異なる構造を採用している。通常のプロセッサでは、プログラムに記された命令に沿って演算された結果は、演算を終えるたびに、演算対象データの一時保管メモリであるレジスタに保存される*10。ところがシストリックアレイでは、演算結果をレジスタに書き戻さず、次の演算の入力に回してしまう。その結果、TPUは、一般的なCPUに比べて83倍、GPUと比べても29倍という電力性能比を実現している。

[ 脚注 ]

*4
28nmプロセス: 半導体チップに搭載される微細なトランジスタの最小線幅が28nmとなるチップを作る製造技術を、28nmプロセスと呼ぶ。この最小線幅が小さいほど、高速で、大規模な回路を搭載したチップを作ることができる。現在、既に10nmプロセスのチップが実用化され、パソコンやスマートフォン向けに投入されている。GoogleのTPUはそれよりも古い世代の技術を使っており、逆を返せばまだまだ進化する余地が十分あると言える。
*5
ASIC: ASICとは、Application Specific Integrated Circuitの略で、特定の応用分野に向けて機能や性能を特化した専用半導体チップを簡単かつ短期間で設計・製造するための方法。あらかじめ、チップ上にトランジスタをたくさん作り込んでおき、チップに搭載する電子回路を設計した後に、設計図にしたがって、トランジスタ間を配線して専用半導体チップを完成させる。配線前は、すべてのチップ共通であるため、配線工程だけで済む分、製造が楽になる。
*6
量子化: ニューラルネットワークの演算における量子化とは、あらかじめ設定した最大値と最小値の間の値を8ビットといった低精度の整数で表現し、データの情報量を圧縮する手法のことを指す。
*7
CISC: 既存のプロセッサでは、動作周波数の向上を狙って、処理する命令の種類を絞り込んだRISCと呼ぶアーキテクチャを採用している。そもそも、このRISCアーキテクチャを開発したのが、TPUの開発に参加しているPatterson氏である。RISCでは、乗算と加算を何度も繰り返す複雑な演算は、単純な演算の命令を数多く組み合わせて表現し、プログラムを書いている。そして、命令を処理する度にデータの読み出しや書き込みの作業が発生するため、処理手順は複雑になる。
*8
マトリックスプロセッサ: 通常のマイクロプロセッサでは、プログラムに書かれた1つの命令につき1回だけ演算を実行する。こうしたプロセッサのことをスカラプロセッサと呼んでいる。一方でGPUなどでは、数多くのデータを同時に演算するため、同じ演算を実行する数多くのプロセッサコアを横一列に並べた構造を採用している。こうしたプロセッサのことをベクトルプロセッサと呼ぶ。マトリックスプロセッサは、このベクトルプロセッサをさらに発展させたものだ。
*9
クロック信号: 一般的なデジタル電子回路は、一定のサイクルに沿って、処理を実行している。メトロノームで全体のベースを参照しながら、音楽を演奏するのと同じである。このサイクルを刻む信号のことをクロックと呼ぶ。パソコンのマイクロプロセッサの性能を示す指標に、1GHz動作といった表現があるが、これはクロック信号が1GHz、つまり1秒間に10億回脈動して処理を実行していることを指す。
*10
一見面倒な命令ごとのレジスタへの書き込み動作が、プロセッサを万能計算機たらしめているのだが、その一方で消費電力や回路規模を増大させる要因にもなっている。TPUでは、演算の内容自体は積和演算だけなので、汎用性に背を向けた構造を採ることができるのだ。シストリックアレイは、非ノイマン型に一歩近づいた技術であると言える。この他にも、マイクロプロセッサで汎用性を高めるために搭載されている大規模な制御回路が、TPUでは大きく簡略化されている。

Copyright©2011- Tokyo Electron Limited, All Rights Reserved.