TPU のタイプとトポロジ
概要
TPU 構成を作成するときは、TPU のタイプとサイズ、または TPU タイプとトポロジ(論理チップの配置)を指定する必要があります。gcloud create
オペレーションでこれを行うには、次の 2 つの方法があります。
- 1 つの
accelerator-type
文字列を作成して、型(v2、v3、または v4)とリクエストする TensorCore の数を指定します。 - TPU の
type
パラメータとtopology
フラグを指定します。
accelerator-type
文字列または type
フラグと topology
フラグを使って TPU を作成する例については、TPU タイプをご覧ください。
さまざまな Cloud TPU のバージョンとトポロジに関する追加情報については、システム アーキテクチャのドキュメントをご覧ください。
TPU タイプ
TPU 構成を指定するには、gcloud
コマンドの「accelerator-type」フラグを使用します。TPU の構成は、TPU のバージョンと TensorCore の数で構成されます。たとえば、次の gcloud
コマンドは 128 個の TensorCore を持つ v3
TPU を作成します。
$ gcloud compute tpus tpu-vm create tpu-name
--zone=zone
--accelerator-type=v3-128
--version=tpu-vm-tf-2.12.0
TPU チップの数と論理配列(トポロジ)として TPU の構成を指定することもできます。詳細については、チップベースの TPU の構成をご覧ください。
TensorCore ベースの TPU 構成
TPU タイプの場合、バージョンの後に TensorCore の数が表示されます(例: 8, 32, 128).
たとえば、--accelerator-type=v2-8
と 8 個の TensorCore を使用した TPU v2
を指定し、v3-1024
は 1, 024 個の TensorCore(v3
のスライス)がある v3
TPU を指定します Pod)。
チップトポロジ ベースの TPU 構成
v4 の構成は、TPU のバージョンとトポロジで指定します。 トポロジは、チップの配置方法を説明する 3 タプルで指定されています。たとえば、32-TensorCore の構成は、2x2x4(チップごとに 2 つの TensorCore を持つ 16 個のチップ)で表すことができます。 3 タプルはトポロジのみを指定します。TPU バージョンが必要な構成は指定しません。
v4 トポロジは AxBxC になります。A<=B<=C で、A,B,C はすべて 4 以下、または 4 のすべての整数倍数です。値 A、B、C は、3 つの次元のチップ数です。2A=B=C または 2A=2B=C のトポロジでも、完全対多通信用に最適化されたバリアントがあります(例: 4×4×8)。 8×8×16、12×12×24。
v4 トポロジの詳細については、TPU v4 の構成をご覧ください。
チップトポロジ ベースのトポロジ(v4)の作成
v4 では、TensorBoard ではなくデバイスが表示されます。チップあたり 1 つのデバイスです。チップトポロジ ベースのトポロジを指定するには、v4 に 3 次元トポロジ形式(4x4x4 など)が導入され、gcloud
作成 TPU オペレーションの --topology
フラグが導入されました。トポロジのバリアントで示されている表には、サポートされている他のチップトポロジ ベースのトポロジの例が含まれています。
gcloud
作成オペレーションで type
フラグと topology
フラグを使用して、v4 タイプとトポロジを指定できます。たとえば、次の gcloud
コマンドは、4x4x4 キューブ トポロジで 64 個のチップを持つ v4
TPU を作成します。
$ gcloud alpha compute tpus tpu-vm create tpu-name
--zone=zone
--type=v4
--topology=4x4x4
--version=tpu-vm-tf-2.12.0
--type
に指定できる値は v4
です。
トポロジのバリアント
特定の TensorCore またはチップ数に関連付けられた標準トポロジは、立方体に最も類似しています(トポロジの形をご覧ください)。この形状のため、データ並列 ML トレーニングに最適な選択肢になります。他のトポロジは、複数の種類の並列処理を行うワークロード(モデルとデータの並列処理、シミュレーションの空間パーティショニングなど)に利用できます。スライス形態が一致する並列処理と一致する場合、これらのワークロードは最高のパフォーマンスを発揮します。たとえば、X 軸に 4 方向のモデルの並列処理を設定し、Y 軸と Z 次元に 256 方向のデータの並列処理を配置すると、4x16x16 のトポロジと一致します。
並列処理の次元がいくつもあるモデルは、並列処理の次元が全体的な次元にマッピングされていると、最高のパフォーマンスが得られます。通常は、データとモデルの並列大規模言語モデル(LLM)です。たとえば、トポロジ 8x16x16 の TPU v4 Pod スライスの場合、Torus ディメンションは 8、16、16 です。8 方向または 16 方向のモデルの並列処理(いずれかの物理層ディメンションにマッピング)を使用すると、パフォーマンスが向上します。このトポロジでは、4 方向モデルの並列処理は最適ではありません。これは、トール ディメンションに合わせられていないため、同じ数のチップ上で 4x16x32 のトポロジで行うのが最適です。
小規模な v4 トポロジ
Cloud TPU は、次の 64 チップよりも小さい TPU v4 スライス(4x4x4 キューブ)をサポートしています。これらの小規模な v4 トポロジは、TensorCore ベースの名前(v4-32 など)またはトポロジ(2x2x4 など)を使用して作成できます。
名前(TensorCore のカウントに基づく) | チップ数 | トポロジ |
v4-8 | 4 | 2x2x1 |
v4-16 | 8 | 2x2x2 |
v4-32 | 16 | 2x2x4 |
v4-64 | 32 | 2x4x4 |
大規模な v4 トポロジ
TPU v4 スライスは 64 チップ単位で利用でき、3 つのディメンションすべてで 4 の倍数の形状になっています。ディメンションも昇順でなければなりません。次の表にいくつかの例を示します。これらのトポロジのいくつかは、トポロジ API を使用してのみ起動できる「カスタム」トポロジです。これは、一般的に使用される名前付きトポロジと同じチップ数を持つためです。 。
名前(TensorCore のカウントに基づく) | チップ数 | トポロジ |
v4-128 | 64 | 4x4x4 |
v4-256 | 128 | 4x4x8 |
v4-512 | 256 | 4x8x8 |
Topology API をご覧ください | 256 | 4x4x16 |
v4-1024 | 512 | 8x8x8 |
v4-1536 | 768 | 8x8x12 |
v4-2048 | 1024 | 8x8x16 |
Topology API をご覧ください | 1024 | 4x16x16 |
v4-4096 | 2048 | 8x16x16 |
… | … | … |
トポロジ API
カスタム トポロジを使用して Cloud TPU Pod スライスを作成するには、gcloud
TPU API を次のように使用します。
$ gcloud alpha compute tpus tpu-vm create tpu-name \
--zone=us-central2-b \
--subnetwork=tpusubnet \
--type=v4 \
--topology=4x4x16 \
--version=runtime-version
トポロジの形状
次の図は、3 つのトポロジトポロジと、関連する topology
フラグを示しています。
TPU タイプの互換性
TPU タイプを、同じ TensorCore 数を持つ別の TPU タイプ(たとえば、v3-128
や v4-128
)に変更し、コードを変更せずにトレーニング スクリプトを実行できます。ただし、チップ数または TensorCore 数の増減を実施した TPU タイプに変更する場合は、かなりの調整と最適化を行う必要があります。詳細については、TPU Pod でのトレーニングをご覧ください。
次のステップ
- TPU アーキテクチャの詳細については、システム アーキテクチャ ページをご覧ください。
- TPU の用途を参照して、Cloud TPU に最適なモデルの種類について確認する。