Cloud TPU 入門ガイド

Google が独自に設計した特定用途向け集積回路(ASIC)を使用すると、機械学習(ML)モデルを費用効率の高い方法で迅速にトレーニングできます。

Tensor Processing Unit(TPU)は、機械学習アプリケーションの演算要件への対応専用に設計された ASIC デバイスです。Cloud TPU サービス ファミリーでは、スケーラブルで使いやすいクラウド コンピューティング リソースを通じて TPU のメリットを享受できるため、ML 研究者、ML エンジニア、デベロッパー、データ サイエンティストの誰もが Google Cloud 上で最先端の ML モデルを実行できます。1 台の TPU デバイスから、Cloud TPU v2 Pod のフル機能である 64 台までのデバイスのスケーリングが可能である Cloud TPU は、最大 11.5 ペタフロップスのパフォーマンスを発揮します。

Compute Engine 上で Cloud TPU を使ってみる

主な機能

機械学習アプリケーションを加速化 Cloud TPU と Cloud TPU Pod は、ディープ ラーニング コンピューティングを加速化することを目的に Google が独自に設計した ASIC チップをベースにして構築されています。
アプリケーションのスケーリングを迅速化 1 台の Cloud TPU デバイス(180 テラフロップス)でプロトタイプを低費用で作成した後、Cloud TPU Pod スライスのサイズを徐々に拡大することで、コードを変更せずにアプリケーションをスケールアップできます。
機械学習の作業負荷を優れた費用効果で管理 Cloud TPU には、機械学習モデルのトレーニングおよび実行費用の大幅な削減に役立つ料金オプションが用意されています。
最適化されたオープンソースのリファレンス モデルを利用して着手可能 Mask R-CNN や AmoebaNet をはじめとする最先端のオープンソース リファレンス モデルを活用できます。Google の研究チームとエンジニアリング チームはこれらの公開、最適化、および継続的なテストを実施し、モデルの数は続々と増えています。

仕組み

Cloud TPU が、お客様とお客様が開発する機械学習アプリケーションにどのようなメリットをもたらすかをご紹介するため、機械学習アプリケーション内でのニューラル ネットワークの仕組みを確認してましょう。

過去数年間にわたり飛躍的進歩を遂げた人口知能(AI)ですが、こうした進歩の多くは、いわゆるディープ ニューラル ネットワークによって達成されています。ディープ ニューラル ネットワークの動作は神経科学における発見から大まかなヒントを得たものです。しかし現在は、「ニューラル ネットワーク」という用語は生物学的所見に限らず、さまざまなクラスの数学的構造に適用されています。最も一般的なニューラル ネットワーク構造、つまり「アーキテクチャ」の多くは、複数のからなる階層で構成されます。最も正確かつ有用なモデルでは多数の層が含まれる傾向にあります。このことから「ディープ」という用語が使用されるようになりました。このようなディープ ニューラル ネットワークのほとんどは、画像、音声、テキスト、構造化データなどを入力データとして受け取り、データに一連の変換を適用してから、予測に使用できる出力を生成します。

例として、次の図に示すような手書きの数字の画像を認識する、単層構成のニューラル ネットワークがあるとします。

数字に関するニューラル ネットワークの表現

この例での入力画像は、28 x 28 ピクセルのグレースケール グリッドです。最初のステップとして、各画像が 784 個の数値からなる文字列、より正式な表現では 784 ディメンションのベクトルに変換されます。この例では、数字 8 に対応する出力ニューロンがこの入力ピクセルを直接受け取り、重みと呼ばれる一連のパラメータ値で乗算してから、その結果とともに渡されます。上の図に示されている赤い線ごとに、個別の重みが適用されます。

次の図に示されているように、ニューロンは受け取った入力に、パラメータとしての一連の重みを突き合わせます。こうすることで、類似度フィルタの役割を果たします。

パラメータの仕組みを表す図

これは基本的な例ですが、受け取った入力データに対して多数の中間的な変換が実行される多層構成の複雑なニューラル ネットワークの場合も、中核的な動作はこれと同様です。つまり、それぞれの層が先行する層から(おそらく、それまでの層によって大幅に変更されている)入力データを受け取り、そのデータをネットワーク内の各ニューロンの一連の重みと突き合わせます。これらのニューロンがそのレスポンスでデータを次の層の入力として渡していくという仕組みです。

各ニューロン セットの一連の重みはどのように計算されるのでしょうか?その計算は、トレーニング プロセスで行われます。多くの場合、トレーニング プロセスでは非常に大規模なラベル付きデータセットが反復的に処理されます。大規模なデータセットになってくると、数百万、あるいは数十億ものラベル付きサンプルが含まれます。これだけ大規模なデータセットで最先端の ML モデルをトレーニングするには、強力なハードウェアを使ったとしても数週間はかかることもあります。このように大量の演算ワークロードの処理を数週間ではなく数分、そうでなくとも数時間で完了できるようにして生産性を向上させるために、Google が設計し、作成したのが、TPU です。

CPU の仕組み

前のセクションで、ニューラル ネットワークの実用的定義とニューラル ネットワークで必要となる種類の計算について説明しました。ニューラル ネットワークにおける TPU の役割を理解するには、このような演算の課題に、他のハードウェア デバイスがどのように対処しているかを理解することが役立ちます。まずは、CPU について検討してみましょう。

CPU は、フォンノイマン アーキテクチャに基づく汎用プロセッサです。つまり、CPU は以下に示すようにソフトウェアとメモリと連動して機能します。

CPU の仕組みを表す図

CPU の最大のメリットは、その柔軟性です。フォンノイマン アーキテクチャに基づく CPU には、多種多様な無数のアプリケーションに対応するあらゆる種類のソフトウェアを読み込むことができます。CPU は、PC での文書処理、ロケット エンジンの制御、銀行取引、さらにはニューラル ネットワークを使用した画像分類にも対処できます。

しかし、CPU が柔軟であるがゆえに、ハードウェアはソフトウェアからの次の命令を読み取るまでは、次の計算処理を認識できないことがあります。CPU では、計算結果すべてを CPU レジスタまたは L1 キャッシュに格納する必要があります。この頻繁なメモリアクセスが、フォンノイマン ボトルネックと呼ばれる CPU アーキテクチャの欠点になっています。大規模なニューラル ネットワークでの計算とは、先々のステップが完全に予測可能であることを意味します。各 CPU の算術論理演算ユニット(ALU)(乗算器と加算器を保持して制御するコンポーネント)では一度に 1 つの計算しか実行できません。計算のたびに CPU からメモリへのアクセスが必要であるため、全体的なスループットが制限されるだけでなく、相当なエネルギーも消費します。

GPU の仕組み

CPU より高いスループットを達成するために、GPU では単純な戦略をとり、単一プロセッサ内で数千もの ALU を使っています。実際、最近の GPU は 1 つのプロセッサ内に 2,500~5,000 個の ALU を保持するのが通常となっています。このように大量のプロセッサが存在するということは、数千の乗算と加算を同時に実行できるということになります。

GPU の仕組みを表す図

ニューラル ネットワークでの行列乗算のように大量の並列処理を行うアプリケーションでは、この GPU アーキテクチャが効果を発揮します。実際、ディープ ラーニングの典型的なトレーニング ワークロードでは、GPU によって CPU とは桁違いのスループットを達成できます。このことから、GPU はディープ ラーニングで最もよく使われているプロセッサー アーキテクチャとなっています。

しかし、GPU が汎用プロセッサであることに変わりはなく、数百万種類ものアプリケーションとソフトウェアをサポートしなければなりません。したがって、GPU にも CPU と同じ問題、つまりフォンノイマン ボトルネックの問題が生じます。何千もの ALU で行われる個別の計算のすべてで、GPU はレジスタや共有メモリにアクセスして、計算の中間結果を読み取って保存しなければなりません。しかも、何千もの ALU を備えた GPU では並列で処理される計算の数も増加するため、並列処理の規模に比例してメモリアクセスによるエネルギー消費が大きくなり、複雑な構成では GPU のフットプリントも大きくなります。

TPU の仕組み

Cloud TPU は、Google がニューラル ネットワークのワークロードに特化して設計した行列プロセッサです。TPU では、文書処理、ロケット エンジンの制御、銀行取引といった操作に対応できませんが、ニューラル ネットワークの大規模な乗算と加算に関しては、極めて高速に処理でき、しかも、消費電力と内部の物理フットプリントは CPU や GPU と比較して大幅に下回ります。

TPU が他のデバイスより優れている点としては、フォンノイマン ボトルネックが大幅に軽減されることが挙げられます。このプロセッサの主要なタスクは行列処理であるため、TPU のハードウェア設計者はその演算処理の実行に必要なあらゆる計算ステップを把握しました。そしてその知識を基に、何千もの乗算器と加算器を配置して直接相互に接続し、これらの演算子からなる大規模な物理行列を形成することができました。この構造は、シストリック アレイ アーキテクチャと呼ばれています。Cloud TPU v2 の場合、128 x 128 のシストリック アレイが 2 つあり、16 ビットの浮動小数点値を処理する 32,768 個の ALU を単一プロセッサ内に集約しています。

次に、シストリック アレイによるニューラル ネットワークの計算方法について説明します。まず、TPU は乗算器と加算器からなる行列にメモリからパラメータを読み込みます。

TPU がメモリからパラメータを読み込む方法を示す図

続いて、TPU はメモリからデータを読み込みます。乗算が行われるたびに、その結果を次の乗算器に渡し、それと同時に合計が取得されます。したがって、データとパラメータの乗算結果すべての合計が出力となります。大量の計算を行ってデータを渡していくプロセス全体で、メモリにアクセスする必要は一切ありません。

TPU がメモリからデータを読み込む方法を示す図

したがって、TPU はニューラル ネットワークにおいて、優れた演算スループットの達成と、消費電力とフットプリントの大幅削減を両立できるのです。

実装パス

TPU のサービスの選択 Cloud TPU の起動と管理に使用する Google Cloud Platform サービスを選択します。Compute Engine、Google Kubernetes Engine、AI Platform のいずれかを選択できます。
TPU のバージョンの選択 Cloud TPU はいくつかのバージョンで用意されています。最適な消費電力と費用効率の組み合わせを選択できます。
TPU デバイスまたはポッドの選択 Cloud TPU は、機械学習アプリケーションのニーズに応じてスケーリングできます。単一のデバイス スライスを使用するか、完全なポッドを使用するかを選択します。
ツールの構成 ctpu を使用します。この強力なコマンドライン ツール 1 つで、Compute Engine と TPU を同時に管理できます。または、TensorBoard などのすでに使い慣れているツールを使用することもできます。
データの保管 Cloud Storage を使用して簡単にデータを保管できます。
モデルの実行 Google が作成した多数のチュートリアルのいずれかを使用して、アプリケーションに最適な機械学習モデルを選択します。

その他の機械学習サービス

Cloud TPU は、Google Cloud Platform が提供する多数の機械学習サービスの 1 つです。次のリソースも参考にしてください。

Cloud Video Intelligence Cloud Video Intelligence は、動画コンテンツでメタデータを抽出し、重要な名詞を特定し、アノテーション(注釈)を付けることで、動画を検索可能で見つけやすいものにします。簡単に使える REST API を呼び出して、自身のカタログ内のすべての動画ファイルのあらゆる瞬間を検索して、キーとなる名詞のすべてのオカレンスと有意性を調べることができます。また、関連する情報を動画単位、ショット単位、フレーム単位で取得して、ノイズと信号を分離します。
Cloud AutoML Vision Cloud AutoML Vision を利用すると、事前にトレーニングされた強力な API モデルに基づいて画像から有意義な情報を抽出できます。また、Cloud AutoML Vision(ベータ版)では、カスタム ビジョンモデルを簡単にトレーニングできます。この API は画像を何千ものカテゴリ(たとえば、「ヨット」、「エッフェル塔」など)に高速に分類できます。そして画像内の個々の物体や顔を検出したり、画像に含まれている印刷文字を見つけてそれを読み取ったりできます。AutoML Vision では、機械学習の専門知識を必要とせずに、特定分野のビジネスニーズに合うようにカスタム機械学習モデルを構築してトレーニングできます。
Cloud Speech-to-Text Cloud Speech-to-Text を利用すると、ニューラル ネットワーク モデルを使いやすい API に応用することで、デベロッパーは音声を文字テキストに変換できます。この API は 120 の言語と方言を認識し、グローバルなユーザーベースをサポートします。音声コマンド コントロールの有効化や、コールセンターの音声の文字起こしなどを実現できます。Google の機械学習技術を使用すると、ストリームのリアルタイム処理や事前に録音された音声の処理が可能です。
Cloud Text-to-Speech Cloud Text-to-Speech を利用すると、デベロッパーは、32 種類の音声で自然な会話の音声を合成できます。また、多くの言語と方言に対応しています。WaveNet における DeepMind の画期的な研究の成果と Google のニューラル ネットワークを利用して、極めて忠実度の高い音声を実現しています。この使いやすい API を組み込めば、さまざまなアプリケーションやデバイスでユーザーと自然なやり取りができます。
Cloud Natural Language Cloud Natural Language は、使用が簡単な REST API で強力な機械学習モデルを提供することで、テキストの構造と意味を明らかにするサービスです。また、機械学習の専門知識があまりなくても Cloud AutoML Natural Language(ベータ版)を利用して機械学習モデルを簡単に構築してトレーニングできます。Cloud Natural Language を使用すると、テキスト ドキュメント、ニュース記事、ブログ投稿で言及されている人物、場所、イベントなどに関する情報を抽出できます。ソーシャル メディア上で自社の製品に対する評判の傾向を把握したり、コールセンターやメッセージング アプリで発生したお客様の会話から意図を分析したりすることもできます。
Cloud Translation Cloud Translation API は、任意の文字列をサポート対象の任意の言語に翻訳する、簡単なプログラマティック インターフェースを提供します。Translation API はレスポンス機能が高いため、ウェブサイトやアプリケーションと統合することで、ソース言語からターゲット言語へ(例: フランス語から英語)、高速かつ動的に原文を翻訳できます。この API に加え、Cloud AutoML Translation べータ版を使用すると、プロジェクトや分野に固有の高品質のモデルを迅速かつ簡単に作成してトレーニングできます。

オプションはまだ他にもあります。上記以外のオプションについては、Cloud AI プロダクト ページをご覧ください。

次のステップ

Cloud TPU の詳細を調べるには、次のリソースも役立ちます。

Compute Engine を使用したクイックスタート Google Cloud Platform で Cloud TPU を設定および使用する方法を短時間で学習できます。
TPU Colab さまざまな無料の Colab を使って Cloud TPU を試してみてください。
Cloud TPU のチュートリアル さまざまな ML モデルを使って Cloud TPU を試してみてください。
料金 Cloud TPU では費用効果の高い方法で機械学習ワークロードを処理する仕組みを把握してください。
お問い合わせ 具体的な実装やアプリケーションに関するディスカッションをご希望の場合は、営業部門にご連絡ください。
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...