このドキュメントでは、単一ホスト TPU スライスを形成するマネージド インスタンス グループ(MIG)を作成する方法について説明します。単一ホスト TPU スライスは、1 つの TPU 仮想マシン(VM)インスタンスにマッピングされます。
単一ホスト TPU スライスは、スタンドアロン TPU インスタンスとして作成することもできます。詳細については、 TPU VM インスタンスを作成するをご覧ください。
始める前に
- TPU インスタンスを使用して MIG を作成する際の 制限事項を確認します。
-
まだ設定していない場合は、認証を設定します。
認証では、 Google Cloud サービスと API にアクセスするための ID が確認されます。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
gcloud
-
Google Cloud CLI をインストールします。 インストール後、 初期化するには、次のコマンドを実行して Google Cloud CLI を初期化します。
gcloud init外部 ID プロバイダ(IdP)を使用している場合は、まず フェデレーション ID を使用して gcloud CLI にログインする必要があります。
-
- デフォルトのリージョンとゾーンを設定します。
REST
このページの REST API サンプルをローカル開発環境で使用するには、 gcloud CLI に指定した認証情報を使用します。
Google Cloud CLI をインストールします。
外部 ID プロバイダ(IdP)を使用している場合は、まず フェデレーション ID を使用して gcloud CLI にログインする必要があります。
詳細については、 REST を使用して認証する 認証ドキュメントの Google Cloud をご覧ください。
前提条件
単一ホスト TPU スライスの作成に進む前に、次の操作を行う必要があります。
TPU のバージョンを選択する: ワークロードに適した TPU バージョンを選択します。ワークロード タイプ別の TPU バージョンのリストについては、 ワークロード タイプ別の推奨 TPU バージョンをご覧ください。
優先ロケーションで TPU の可用性を確認する: TPU は 特定の Google Cloud リージョンで利用できます。TPU バージョンを使用するには、優先リージョンでそのバージョンが使用可能であることを確認します。TPU ロケーションのリストについては、 TPU の可用性をご覧ください。
プロジェクトに十分な TPU 割り当てがあることを確認する: オンデマンド VM、Flex Start VM、または Spot VM を使用して 単一ホスト TPU スライスを作成する場合は、使用する リージョンに十分な TPU の割り当てが必要です。TPU 予約を使用する単一ホスト TPU スライスを作成する場合、予約の作成時に割り当てが使用されるため、TPU の割り当ては必要ありません。TPU 割り当て名のリストについては、 TPU 割り当てをご覧ください。割り当てを表示する手順については、 割り当てを表示して管理するをご覧ください。
TPU の使用オプションを選択する: ワークロード、その期間、コストのニーズに最適な 使用オプションを選択します。TPU バージョン別の 使用オプションの可用性のリストについては、 TPU の使用オプションをご覧ください。
トポロジを選択する: 選択した TPU バージョンでサポートされているトポロジを選択します。TPU バージョンごとに使用可能なトポロジのリストについては、 TPU トポロジをご覧ください。
複数の単一ホスト TPU スライスを含む MIG を作成する
MIG に複数の独立した TPU VM を作成するには:
- インスタンス テンプレートを作成します。
- MIG を作成します。
インスタンス テンプレートを作成する
インスタンス テンプレートの構成は、使用する使用オプション(オンデマンド、Spot、予約、Flex Start)によって異なります。使用オプションの詳細については、 VM プロビジョニング モデルについて をご覧ください。
オンデマンド TPU VM のインスタンス テンプレートを作成する
次のコマンドは、オンデマンド使用オプションを使用するインスタンス テンプレートを作成します。
gcloud
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"machineType": "MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
}
}
],
"scheduling": {
"onHostMaintenance": "TERMINATE"
},
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"
各プレースホルダを次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。MACHINE_TYPE: TPU VM のマシンタイプ(ct6e-standard-8tなど)。IMAGE_FAMILY:TPU VM の OS イメージ ファミリー 。特定の OS バージョンをインストールする場合は、--imageフラグを使用します。OS イメージの詳細については、OS イメージをご覧ください。IMAGE_PROJECT: OS イメージを含むプロジェクト。 TPU イメージの場合、これはubuntu-os-accelerator-imagesです。
TPU Spot VM のインスタンス テンプレートを作成する
次のコマンドは、Spot 使用オプションを使用するインスタンス テンプレートを作成します。
gcloud
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE \
--instance-termination-action=STOP \
--provisioning-model=SPOT \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"machineType": "MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
}
}
],
"scheduling": {
"onHostMaintenance": "TERMINATE",
"provisioningModel": "SPOT",
"instanceTerminationAction": "STOP"
},
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"
各プレースホルダを次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。MACHINE_TYPE: TPU VM のマシンタイプ(ct6e-standard-8tなど)。IMAGE_FAMILY:TPU VM の OS イメージ ファミリー 。特定の OS バージョンをインストールする場合は、--imageフラグを使用します。OS イメージの詳細については、OS イメージをご覧ください。IMAGE_PROJECT: OS イメージを含むプロジェクト。 TPU イメージの場合、これはubuntu-os-accelerator-imagesです。
TPU 予約で制限された VM のインスタンス テンプレートを作成する
次のコマンドは、予約で制限された使用オプションを使用するインスタンス テンプレートを作成します。
gcloud
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE \
--instance-termination-action=DELETE \
--reservation-affinity=specific \
--provisioning-model=reservation-bound \
--reservation=RESERVATION_NAME \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"machineType": "MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
}
}
],
"scheduling": {
"onHostMaintenance": "TERMINATE",
"provisioningModel": "RESERVATION_BOUND",
"instanceTerminationAction": "DELETE"
},
"reservationAffinity": {
"consumeReservationType": "SPECIFIC_RESERVATION",
"key": "compute.googleapis.com/reservation-name",
"values": [
"RESERVATION_NAME"
]
},
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"
各プレースホルダを次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。MACHINE_TYPE:TPU VM のマシンタイプ (例:ct6e-standard-8t)。RESERVATION_NAME: 使用する特定の予約の名前。IMAGE_FAMILY:TPU VM の OS イメージ ファミリー 。特定の OS バージョンをインストールする場合は、--imageフラグを使用します。OS イメージの詳細については、OS イメージをご覧ください。IMAGE_PROJECT: OS イメージを含むプロジェクト。 TPU イメージの場合、これはubuntu-os-accelerator-imagesです。
TPU Flex Start VM のインスタンス テンプレートを作成する
次のコマンドは、Flex Start 使用オプションを使用するインスタンス テンプレートを作成します。
gcloud
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE \
--instance-termination-action=DELETE \
--provisioning-model=FLEX_START \
--max-run-duration=DURATION \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"machineType": "MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
}
}
],
"scheduling": {
"onHostMaintenance": "TERMINATE",
"provisioningModel": "FLEX_START",
"instanceTerminationAction": "DELETE",
"maxRunDuration": {
"seconds": "DURATION"
}
},
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"
各プレースホルダを次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。MACHINE_TYPE:TPU VM のマシンタイプ (例:ct6e-standard-8t)。DURATION: TPU VM の最大実行時間。 REST の場合は、秒数を表す数値の後に「s」を付けた文字列として指定します (例: 1 時間の場合は3600s、7 日の場合は604800s)。IMAGE_FAMILY:TPU VM の OS イメージ ファミリー 。特定の OS バージョンをインストールする場合は、--imageフラグを使用します。OS イメージの詳細については、OS イメージをご覧ください。IMAGE_PROJECT: OS イメージを含むプロジェクト。 TPU イメージの場合、これはubuntu-os-accelerator-imagesです。
MIG を作成する
単一ホスト TPU スライスを含むゾーン MIG を作成するには、次のコマンドを使用します。
gcloud
gcloud compute instance-groups managed create MIG_NAME \
--size=MIG_SIZE \
--template=INSTANCE_TEMPLATE_URL \
--zone=ZONE
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "MIG_NAME",
"targetSize": MIG_SIZE,
"instanceTemplate": "INSTANCE_TEMPLATE_URL"
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers"
各プレースホルダを次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。MIG_NAME: MIG の名前。MIG_SIZE: MIG のサイズ。INSTANCE_TEMPLATE_URL: MIG でインスタンスの作成に使用するインスタンス テンプレートの URL。この URL には、インスタンス テンプレートの ID または名前を含めることができます。次のいずれかの値を指定します。- リージョン インスタンス テンプレートの場合:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - グローバル インスタンス テンプレートの場合:
INSTANCE_TEMPLATE_ID
- リージョン インスタンス テンプレートの場合:
ZONE: MIG のゾーン。
単一ホスト TPU スライスを含むリージョン MIG を作成するには、次のコマンドを使用します。
gcloud
gcloud compute instance-groups managed create MIG_NAME \
--size=MIG_SIZE \
--template=INSTANCE_TEMPLATE_URL \
--region=REGION \
--target-distribution-shape=ANY_SINGLE_ZONE \
--instance-redistribution-type=none
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "MIG_NAME",
"targetSize": MIG_SIZE,
"instanceTemplate": "INSTANCE_TEMPLATE_URL",
"distributionPolicy": {
"targetShape": "ANY_SINGLE_ZONE"
},
"updatePolicy": {
"instanceRedistributionType": "NONE"
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers"
各プレースホルダを次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。MIG_NAME: MIG の名前。MIG_SIZE: MIG 内の VM の数。INSTANCE_TEMPLATE_URL: MIG でインスタンスの作成に使用するインスタンス テンプレートの URL。この URL には、インスタンス テンプレートの ID または名前を含めることができます。次のいずれかの値を指定します。- リージョン インスタンス テンプレートの場合:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - グローバル インスタンス テンプレートの場合:
INSTANCE_TEMPLATE_ID
- リージョン インスタンス テンプレートの場合:
ZONE:MIG をプロビジョニングするゾーン 。REGION: MIG をプロビジョニングするリージョン 。
MIG でカスタム名を使用して VM を作成する
各 VM にカスタム名を指定して、MIG に VM を作成できます。これは、デバッグや、特定の順序でインスタンスが作成されるようにする場合に便利です。
gcloud
create-instance コマンド
を使用してカスタム名で VM を作成し、--instance フラグを指定します。複数の VM を作成するには、VM ごとにコマンドを繰り返します。それ以外の場合は、REST API メソッドを使用して、1 つのリクエストで複数の VM を指定します。
ゾーン MIG の場合は、次のコマンドを使用します。
gcloud compute instance-groups managed create-instance MIG_NAME \ --zone=ZONE \ --instance=INSTANCE_NAMEリージョン MIG の場合は、次のコマンドを使用します。
gcloud compute instance-groups managed create-instance MIG_NAME \ --region=REGION \ --instance=INSTANCE_NAME
各プレースホルダを次のように置き換えます。
REST
次のいずれかの REST API メソッドを使用して、カスタム名で VM を作成します。
ゾーン MIG の場合は、
instanceGroupManagers.createInstancesを使用します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME/createInstances { "instances": [ { "name": "INSTANCE_NAME_1" }, { "name": "INSTANCE_NAME_2" }, ... ] }リージョン MIG の場合は、
regionInstanceGroupManagers.createInstancesを使用します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME/createInstances { "instances": [ { "name": "INSTANCE_NAME_1" }, { "name": "INSTANCE_NAME_2" }, ... ] }
各プレースホルダを次のように置き換えます。