2018年7月7日土曜日

GoogleのTPUって結局どんなもの? 日本法人が分かりやすく説明


    機械学習に特化したGoogleの自社開発プロセッサ、「TPU(Tensor Processing Unit)」。Google自身は「Google Search」「Google Translate」「Google Photos」といったサービスで活用している。日本法人がこれについて分かりやすく説明した。


 機械学習に特化したGoogleの自社開発プロセッサ、「TPU(Tensor Processing Unit)」。2018年7月6日、日本法人がこれについて分かりやすく説明した。

 TPUは、ディープラーニングを高速化するため、Googleが開発したプロセッサ。Google自身は「Google Search」「Google Translate」「Google Photos」といったサービスで活用している。

 一方で、Googleは2018年6月27日、クラウドサービス「Google Cloud Platform(GCP)」において、TPUをGCPユーザーが活用できる「Cloud TPU」の正式提供を始めた(GA)。米国、欧州、アジア太平洋地域で、後述のTPU v2が使える。1TPUを6.5ドル/時(米国の場合)で利用可能。料金は1秒単位で請求される。突然止まっても構わないのであれば、「Preemptible Pricing」という料金体系を活用すると、1.95ドル/時(米国の場合)になる(なお、Preemptible PricingでTPUが停止した場合、学習はチェックポイントから再開することになる)。Cloud TPUは、元々Googleが開発したオープンソース機械学習ライブラリTensorFlowを通じてのみ利用できるが、高速な処理を安価に利用できるというのが特徴だ。

TPUが「ディープラーニングに最適化されている」理由は2つ

 TPUは3世代目を迎えようとしている。

 第1世代「TPU v1」は2013年に開発を始め、2015年に運用が開始された。この時点では機械学習の推論フェーズに特化していた。推論に加え学習でメリットをもたらす「TPU v2」は2017年に導入を開始。1ユニットで180TFLOPSの演算能力を発揮するという。さらに2018年5月のGoogle I/Oでは、水冷式の第3世代、「TPU 3.0」を発表。演算能力は1ユニット当たり100PFLOPSだという。

 
第2世代のTPU

 グーグルGoogle Cloudチームの佐藤一憲氏は、CPU、GPUのような汎用プロセッサと、ディープラーニングに特化したTPUの違いを、2つのポイントで説明した。

 第1のポイントは、演算精度を犠牲にし、32ビットでなく、8/16ビットの演算器をベースとしていること。

 「汎用プロセッサでは32ビットの演算が主流だが、ディープラーニングで行われる行列演算ではそれほどの精度を求められない。機械学習の推論では、8ビットが最適」(佐藤氏)。このため、TPU v1では8ビットの演算器を6万5536個搭載した構成(これに対し、GPUの「Tesla K80」では、32ビット演算器が2496個)としているという。消費電力も1ユニット40Wに抑えられた。

 これに対し、TPU v2では、16ビットの演算器を3万2768個搭載したプロセッサを、1ユニットに4個搭載した。学習(トレーニング)には16ビットが必要であり、16ビット化により、第2世代のTPUは学習と推論の双方にメリットをもたらすようになったという。第2世代TPUについては、「グーグルの機械学習/AIへの取り組みを支える『AIファーストデータセンター』とは」という記事でも紹介している。

 第2のポイントは、大規模な行列演算パイプライン(「シストリックアレイ」)の実現という。

 「汎用プロセッサでは、演算の間にメモリへの読み書きが発生する。行列演算では、これがボトルネックになる」(佐藤氏)。TPUでは、演算の結果を、演算回路内で直接渡すようにすることで、メモリへの読み書きを大幅に減らすとともに、集約度を高め、電力消費を抑えているという。

0 件のコメント:

コメントを投稿