システム アーキテクチャ
Tensor Processing Unit(TPU)は、機械学習ワークロードを高速化するために Google が設計したアプリケーション固有の集積回路(ASIC)です。Cloud TPU は、TPU をスケーラブルなリソースとして利用できるようにする Google Cloud サービスです。
TPU は、行列演算をすばやく実行するように設計されているため、機械学習ワークロードに最適です。TensorFlow、Pytorch、JAX などのフレームワークを使用して、TPU で機械学習ワークロードを実行できます。
Cloud TPU の用語
Cloud TPU を初めて使用する場合は、TPU ドキュメントのホームページをご覧ください。以降のセクションでは、このドキュメントで使用されている用語と関連するコンセプトについて説明します。
バッチ推論
バッチ推論(オフライン推論)とは、通常は大量の入力に対する推論を本番環境パイプラインの外部で行うことを指します。バッチ推論は、データラベル付けなどのオフライン タスクや、トレーニング済みモデルの評価に使用されます。レイテンシの SLO はバッチ推論の優先事項ではありません。
TPU チップ
TPU チップには、1 つ以上の TensorCore が含まれています。TensorCore の数は、TPU チップのバージョンによって異なります。各 TensorCore は、1 つ以上のマトリックス乗算ユニット(MXU)、ベクトル ユニット、スカラー ユニットから構成されます。
MXU は、シストリック アレイ内の 128 x 128 の乗算アキュムレータで構成されています。MXU は、TensorCore の大部分の計算能力を提供します。 各 MXU により、サイクルごとに 16,000 の乗累算演算を処理できます。すべての乗算は bfloat16 の入力を取りますが、すべての累積は FP32 数値形式で実行されます。
ベクトル ユニットは、活性化やソフトマックスなどの一般的な計算に使用されます。スカラー ユニットは、制御フロー、メモリアドレスの計算、その他のメンテナンス オペレーションに使用されます。
TPU キューブ
4x4x4 トポロジ。これは 3D トポロジ(v4 TPU バージョン以降)にのみ適用されます。
推論
推論は、トレーニング済みモデルを使用して新しいデータの予測を行うプロセスです。サービス提供プロセスで使用されます。
マルチスライスとシングル スライス
マルチスライスはスライスのグループであり、チップ間相互接続(ICI)接続を超えて TPU 接続を拡張し、スライスを超えてデータを送信するためにデータセンター ネットワーク(DCN)を利用します。各スライス内のデータは、ICI で引き続き送信されます。このハイブリッド接続を使用すると、マルチスライスでスライス間の並列処理が可能になり、単一のスライスで処理できるよりも多くの TPU コアを 1 つのジョブで使用できます。
TPU は、単一のスライスや複数のスライスでジョブを実行するために使用できます。つづきの内容は、マルチスライスの概要をご覧ください。
Cloud TPU ICI の復元力
ICI の復元性により、キューブ間で TPU を接続する光リンクと光回路スイッチ(OCS)のフォールト トレランスが向上します。 (キューブ内の ICI 接続は銅リンクを使用しているため、影響を受けません)。ICI 復元力により、ICI 接続は OCS 障害と光 ICI 障害を回避して経路設定されます。その結果、TPU スライスのスケジューリング可用性が改善されますが、ICI のパフォーマンスが一時的に低下するというトレードオフがあります。
Cloud TPU v4 と同様に、1 キューブ以上の v5p スライスでは、ICI の復元力がデフォルトで有効になっています。
- v5p-128(アクセラレータ タイプを指定する場合)
- 4x4x4(アクセラレータ構成を指定する場合)
キューに入れられたリソース
シングルスライスまたはマルチスライス TPU 環境に対するリクエストをキューに追加して管理するために使用される TPU リソースの表現。詳細については、キューに格納されたリソースのユーザーガイドをご覧ください。
サービス提供
サービス提供とは、トレーニング済み機械学習モデルを本番環境にデプロイするプロセスであり、本番環境を使用して予測や決定を行うために使用できます。レイテンシとサービスレベルの可用性は、サービス提供にとって重要です。
単一ホストとマルチホスト
TPU ホストは、TPU ハードウェアに接続された物理コンピュータで実行される VM です。TPU ワークロードは 1 つ以上のホストを使用できます。
単一ホストのワークロードは 1 つの TPU VM に制限されます。マルチホスト ワークロードは、トレーニングを複数の TPU VM に分散します。
スライス
Pod スライスは、高速チップ間相互接続(ICI)で接続された同じ TPU Pod 内にあるチップの集合体です。 スライスは、TPU のバージョンに応じて、チップまたは TensorCore の観点から説明されます。
チップ形状とチップ トポロジもスライス形状を指します。
SparseCore
v5p には、チップあたり 4 つの SparseCore が搭載されています。これは、推奨モデルに見られる埋め込みに依存するモデルを高速化する Dataflow プロセッサです。
TPU Pod
TPU Pod は、専用のネットワークでグループ化された一連の連続した TPU です。TPU Pod 内の TPU チップの数は TPU のバージョンによって異なります。
TPU VM(ワーカー)
基盤となる TPU にアクセスできる Linux を実行している仮想マシン。 TPU VM は、ワーカーとも呼ばれます。
TensorCores
TPU チップには、行列乗算を実行する 1 つまたは 2 つの TensorCore があります。TensorCore の詳細については、この ACM の記事をご覧ください。
ワーカー
TPU VM をご覧ください。
TPU のバージョン
TPU チップのアーキテクチャは、厳密にいえば使用する TPU のバージョンによって異なります。また、TPU バージョンはそれぞれさまざまなスライスサイズと構成をサポートしています。システム アーキテクチャとサポートされている構成の詳細については、次のページをご覧ください。
TPU アーキテクチャ
VM が TPU デバイスに物理的に接続される方法を示す TPU アーキテクチャには、TPU ノードと TPU VM の 2 つがあります。TPU ノードは最初の TPU アーキテクチャで、TPU バージョンは v2 と v3 でした。v4 で TPU VM がデフォルトのアーキテクチャになりましたが、両方のアーキテクチャがサポートされていました。TPU ノード アーキテクチャのサポートは終了しており、TPU VM のみがサポートされています。TPU ノードを使用している場合は、TPU ノードから TPU VM アーキテクチャへの移行を参照して、TPU ノードから TPU VM アーキテクチャへの変換を行ってください。
TPU VM アーキテクチャ
TPU VM アーキテクチャを使用すると、SSH で TPU デバイスに物理的に接続されている VM に直接接続できます。VM への root アクセス権があるため、任意のコードを実行できます。コンパイラとランタイム デバッグログ、エラー メッセージにアクセスできます。
TPU ノード アーキテクチャ
TPU ノード アーキテクチャは、gRPC を介して TPU ホストと通信するユーザー VM で構成されています。このアーキテクチャを使用している場合、TPU ホストに直接アクセスできないため、トレーニング エラーや TPU エラーのデバッグが難しくなります。
TPU ノードから TPU VM アーキテクチャへの移行
TPU ノード アーキテクチャを使用している TPU がある場合は、次の手順で TPU VM として識別、削除、再プロビジョニングを行います。
[TPU] ページに移動します。
- [アーキテクチャ] の見出しで、TPU とそのアーキテクチャを確認します。アーキテクチャが「TPU VM」の場合は、特にご対応いただく必要はありません。アーキテクチャが「TPU ノード」の場合は、TPU を削除して再プロビジョニングする必要があります。
TPU を削除して再プロビジョニングします。