TPU インスタンスのネットワーキングとアクセスを構成する
このページでは、TPU インスタンスのカスタム ネットワークとアクセス構成を設定する方法について説明します。以下の内容が含まれます。
- カスタム ネットワークとサブネットワークの指定
- 外部 IP アドレスと内部 IP アドレスの指定
- TPU への SSH アクセスの有効化
- カスタム サービス アカウントの TPU への接続
- カスタム SSH メソッドの有効化
- VPC Service Controls の使用
前提条件
これらの手順を実行する前に、Google Cloud CLI をインストールし、 a Google Cloud プロジェクトを作成して、Compute Engine API を有効にする必要があります。手順については、TPU 用の プロジェクトを設定するをご覧ください。 Google Cloud
カスタム ネットワークとサブネットワークを指定する
TPU VM インスタンスまたはインスタンス テンプレートを作成するときに、必要に応じて、TPU に使用するネットワークとサブネットワークを指定できます。ネットワークを指定しない場合、TPU は default ネットワークに配置されます。サブネットワークは、TPU を実行するゾーンと同じリージョンに存在する必要があります。
VPC ネットワークを作成する の手順に沿って、ネットワークとサブネットワークを作成します。
カスタム ネットワークとサブネットワークを指定して TPU VM を作成します。
ネットワークとサブネットワークを指定するには、 次の例に示すネットワーキング フラグを含めます。
gcloud compute instances createコマンドを実行するときにgcloud compute instances create TPU_NAME \ --machine-type=MACHINE_TYPE \ --image-family=IMAGE_FAMILY \ --image-project=IMAGE_PROJECT \ --zone=ZONE \ --maintenance-policy=TERMINATE \ --network=NETWORK_NAME \ --subnet=SUBNET_NAME \ --stack-type=STACK_TYPE \ --private-network-ip=INTERNAL_IPV4_ADDRESS \ --address=EXTERNAL_IPV4_ADDRESS各プレースホルダを次のように置き換えます。
- TPU_NAME: TPU VM の名前。
- MACHINE_TYPE:TPU VM のマシンタイプ
(例:
ct6e-standard-8t)。 - IMAGE_FAMILY: TPU VM の OS イメージ ファミリー
。特定の OS バージョンをインストールする場合は、
--imageフラグを使用します。OS イメージの詳細については、OS イメージをご覧ください。 - IMAGE_PROJECT: OS
イメージを含むプロジェクト。TPU イメージの場合、これは
ubuntu-os-accelerator-imagesです。 - ZONE: TPU VM のゾーン(
us-central1-bなど)。 - NETWORK_NAME: 省略可。ネットワークの名前。 ネットワークを指定する場合は、サブネットを指定する必要があります。また、ネットワークは同じネットワークに属している必要があります。ネットワークを指定しない場合、Compute Engine は指定されたサブネットからネットワークを推測します。
SUBNET_NAME: インスタンスで使用するサブネットの名前。
ネットワーク内のサブネットの一覧を表示するには、
gcloud compute networks subnets listコマンドを使用します。STACK_TYPE:省略可。ネットワーク インターフェースのネットワーキング スタックタイプ 。
STACK_TYPEは、IPV4_ONLY、IPV4_IPV6、またはIPV6_ONLY(プレビュー版)のいずれかにする必要があります。 デフォルト値はIPV4_ONLYです。INTERNAL_IPV4_ADDRESS:省略可。コンピューティング インスタンスがターゲット サブネットで使用する内部 IPv4 アドレス。特定の IP アドレスが不要な場合は、このフラグを省略します。
内部 IPv6 アドレスを指定するには、代わりにフラグ
--internal-ipv6-addressを使用します。EXTERNAL_IPV4_ADDRESS:省略可。ネットワーク インターフェースで使用する静的 外部 IPv4 アドレス。 EXTERNAL_IPV4_ADDRESS は、次のいずれかに置き換えます。
- 指定したサブネットの有効な IPv4 アドレス。事前に外部 IPv4 アドレスを予約しておく必要があります。
''(空の文字列)エフェメラル外部 IP アドレスを使用する場合。
VM に外部 IP アドレスを設定しない場合は、
--addressフラグを--no-addressフラグに置き換えます。外部 IPv6 アドレスを指定するには、代わりにフラグ
--external-ipv6-addressを使用します。
外部 IP アドレスと内部 IP アドレスについて
TPU VM インスタンスを作成すると、常に内部 IP アドレスが設定されます。
gcloud CLI を使用して TPU インスタンスを作成すると、外部 IP アドレスがデフォルトで生成されます。Compute Engine REST API(compute.googleapis.com)を使用して作成した場合、デフォルトでは外部 IP アドレスは割り当てられません。どちらの場合もデフォルトの動作を変更できます。
TPU VM を内部 IP アドレスのみを使用するように制限する理由は次のとおりです。
- セキュリティの強化: 内部 IP アドレスには、 同じ VPC ネットワーク内のリソースからのみアクセスできます。これにより、 TPU VM への外部アクセスを制限してセキュリティを強化できます。これは、センシティブ データを使用する場合や、TPU VM へのアクセスをネットワーク内の特定のユーザーまたはシステムに制限する場合に特に重要です。
- 費用の削減: 内部 IP アドレスを使用すると、外部 IP アドレスに関連する費用を回避できます。多くの TPU VM を使用する場合、相当な費用になる可能性があります。
- ネットワーク パフォーマンスの向上: 内部 IP アドレスを使用すると、トラフィックが Google のネットワーク内にとどまり、公共のインターネットを経由するルーティングのオーバーヘッドを回避できるため、 ネットワーク パフォーマンスが向上します。これは、TPU VM 間の高帯域幅通信が必要な大規模な ML ワークロードの場合は特に重要になります。
外部 IP アドレスのない TPU VM インスタンスを作成する
外部 IP アドレスのない TPU VM インスタンスを作成する場合は、--no-address フラグをgcloud compute instances createコマンドを実行するときに使用します。
gcloud compute instances create TPU_NAME \
--machine-type=MACHINE_TYPE \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT \
--zone=ZONE \
--maintenance-policy=TERMINATE \
--network=NETWORK_NAME \
--subnet=SUBNET_NAME \
--stack-type=STACK_TYPE \
--private-network-ip=INTERNAL_IPV4_ADDRESS \
--no-address
各プレースホルダを次のように置き換えます。
- TPU_NAME: TPU VM の名前。
- MACHINE_TYPE:TPU VM のマシンタイプ
(例:
ct6e-standard-8t)。 - IMAGE_FAMILY: TPU VM の OS イメージ ファミリー
。特定の OS バージョンをインストールする場合は、
--imageフラグを使用します。OS イメージの詳細については、OS イメージをご覧ください。 - IMAGE_PROJECT: OS イメージを含むプロジェクト。
TPU イメージの場合、これは
ubuntu-os-accelerator-imagesです。 - ZONE: TPU VM のゾーン
(
us-central1-bなど)。 - NETWORK_NAME: 省略可。ネットワークの名前。 ネットワークを指定する場合は、サブネットを指定する必要があります。また、ネットワークは同じネットワークに属している必要があります。ネットワークを指定しない場合、Compute Engine は指定されたサブネットからネットワークを推測します。
SUBNET_NAME: インスタンスで使用するサブネットの名前 。
ネットワーク内のサブネットの一覧を表示するには、
gcloud compute networks subnets listコマンドを使用します。STACK_TYPE: 省略可。ネットワーク インターフェースのネットワーキング スタックタイプ。
STACK_TYPEは、IPV4_ONLY、IPV4_IPV6、IPV6_ONLY(プレビュー版)のいずれかにする必要があります。 デフォルト値はIPV4_ONLYです。INTERNAL_IPV4_ADDRESS: 省略可。コンピューティング インスタンスがターゲット サブネットで使用する内部 IPv4 アドレス。特定の IP アドレスが不要な場合は、このフラグを省略します。
内部 IPv6 アドレスを指定するには、代わりにフラグ
--internal-ipv6-addressを使用します。
外部 IP アドレスを持つ TPU VM インスタンスを作成する
gcloud CLI を使用して TPU VM インスタンスを作成すると、インスタンスにはデフォルトでエフェメラル外部 IP アドレスが設定されます。
REST API を使用して外部 IP アドレスを持つ TPU VM を作成するには、
POST リクエストを instances.insert
メソッドに送信し、リクエスト本文の networkInterfaces 配列に
accessConfigs フィールドを含めます。リクエスト本文で accessConfigs フィールドが指定されていない場合、インスタンスは外部インターネットにアクセスできません。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
"machineType":"zones/ZONE/machineTypes/MACHINE_TYPE",
"name":"TPU_NAME",
"disks":[
{
"initializeParams":{
"sourceImage":"projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
},
"boot":true
}
],
"networkInterfaces":[
{
"network":"global/networks/NETWORK_NAME",
"subnetwork":"regions/REGION/subnetworks/SUBNET_NAME",
"stackType":"STACK_TYPE",
"accessConfigs":[
{
"name": "external-nat",
"type": "ONE_TO_ONE_NAT"
}
]
}
],
"scheduling": {
"onHostMaintenance": "TERMINATE"
}
}
各プレースホルダを次のように置き換えます。
- PROJECT_ID: TPU VM を 作成するプロジェクトの ID。
- ZONE: TPU VM のゾーン(
us-central1-bなど)。 - MACHINE_TYPE:TPU VM のマシンタイプ
(例:
ct6e-standard-8t)。 - TPU_NAME: TPU VM の名前。
- IMAGE_PROJECT: OS
イメージを含むプロジェクト。TPU イメージの場合、これは
ubuntu-os-accelerator-imagesです。 IMAGE_FAMILY: TPU VM の OS イメージ ファミリー 。特定の OS バージョンをインストールする場合は、 値全体を、イメージ バージョンの名前に 次の形式で置き換えます:
projects/IMAGE_PROJECT/global/images/IMAGE_NAME。"sourceImage"OS イメージの詳細については、OS イメージをご覧ください。
NETWORK_NAME: 省略可。ネットワークの名前。 ネットワークを指定する場合は、サブネットを指定する必要があります。また、ネットワークは同じネットワークに属している必要があります。ネットワークを指定しない場合、Compute Engine は指定されたサブネットからネットワークを推測します。
REGION: サブネットワークのリージョン。
SUBNET_NAME: インスタンスで使用するサブネットの名前 。
ネットワーク内のサブネットの一覧を表示するには、
gcloud compute networks subnets listコマンドを使用します。STACK_TYPE: 省略可。ネットワーク インターフェースのスタックタイプ。
STACK_TYPEは、IPV4_ONLY、IPV4_IPV6、IPV6_ONLY(プレビュー版)のいずれかにする必要があります。デフォルト値はIPV4_ONLYです。
静的外部 IP アドレスをすでに予約している場合は、
静的 IP アドレスを指定した --address
フラグまたは
詳細なネットワーク構成を設定する --network-interface
フラグを使用して、
作成時にインスタンスに割り当てることができます。詳細については、静的外部 IP
アドレスを構成するをご覧ください。
TPU VM インスタンスへの SSH アクセスを有効にする
TPU VM インスタンスへの SSH アクセスを有効にするには:
- TPU インスタンスは、外部 IP アドレスまたはプライベート Google アクセスを使用して到達可能である必要があります。
- gcloud CLI を使用して TPU インスタンスを作成すると、インスタンスにはデフォルトでエフェメラル外部 IP アドレスが設定されます。REST API を使用して TPU インスタンスを作成する場合は、インスタンスに外部 IP アドレスを設定する必要があることを指定する必要があります。詳細については、外部 IP アドレスを持つ TPU VM インスタンスを作成するをご覧ください。
- TPU インスタンスに外部 IP アドレスがない場合は、プライベート Google アクセスを構成できます。詳細については、プライベート Google アクセスを有効にするをご覧ください。
- TPU インスタンスが使用するネットワークで SSH トラフィックが許可されている必要があります。デフォルトのネットワークでは、SSH トラフィックが自動的に許可されます。カスタム ネットワークを使用している場合 や、デフォルトのネットワーク設定を変更する場合は、ネットワークで SSH を明示的に 有効にする 必要があります。
プライベート Google アクセスを有効にする
外部 IP アドレスのない TPU は、プライベート Google アクセスを使用して Google API とサービスにアクセスできます。限定公開の Google アクセスを有効にする方法について詳しくは、限定公開の Google アクセスを構成するをご覧ください。
プライベート Google アクセスを構成したら、SSH を使用して VM に接続します。
ネットワークで SSH トラフィックを有効にする
デフォルトのネットワークでは、すべての TPU VM への SSH アクセスが許可されます。カスタム ネットワークを使用する場合や、デフォルトのネットワーク設定を変更する場合は、ファイアウォール ルールを追加して SSH アクセスを明示的に有効にする必要があります。
gcloud compute firewall-rules create \ --network=NETWORK allow-ssh \ --allow=tcp:22
カスタム サービス アカウントを接続する
各 TPU VM には、ユーザーに代わって API リクエストを行うために使用するサービス アカウントが関連付けられています。TPU VM は、このサービス アカウントを使用して Compute Engine API を呼び出し、Cloud Storage やその他のサービスにアクセスします。デフォルトでは、TPU VM はデフォルトの Compute Engine サービス アカウントを使用します。
サービス アカウントの詳細については、 サービス アカウントをご覧ください。
TPU VM インスタンスの作成時にカスタム サービス アカウントを指定するには、
gcloud compute instances create
コマンドを使用し、サービス
アカウントのメールアドレスと cloud-platform アクセス スコープを VM インスタンスに指定します。
gcloud compute instances create TPU_NAME \
--machine-type=MACHINE_TYPE \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT \
--zone=ZONE \
--maintenance-policy=TERMINATE \
--service-account=SERVICE_ACCOUNT_EMAIL \
--scopes=https://www.googleapis.com/auth/cloud-platform
次のように置き換えます。
- TPU_NAME: TPU VM の名前。
- MACHINE_TYPE:TPU VM のマシンタイプ
(例:
ct6e-standard-8t)。 - IMAGE_FAMILY: TPU VM の OS イメージ ファミリー
。特定の OS バージョンをインストールする場合は、
--imageフラグを使用します。OS イメージの詳細については、OS イメージをご覧ください。 - IMAGE_PROJECT: OS
イメージを含むプロジェクト。TPU イメージの場合、これは
ubuntu-os-accelerator-imagesです。 - ZONE:TPU VM のゾーン
(例:
us-central1-b)。 - SERVICE_ACCOUNT_EMAIL:作成したサービス アカウントのメールアドレス。例:
my-sa-123@my-project-123.iam.gserviceaccount.com。メールアドレスを表示するには、サービス アカウントの一覧取得をご覧ください。
TPU VM を作成するプロジェクトとは異なるプロジェクトでサービス アカウントを使用するには、プロジェクト間サービス アカウントを使用するの手順に沿って操作します。
VPC Service Controls と統合する
VPC Service Controls を使用して、TPU リソースのセキュリティ境界を定義し、その境界をまたがるデータの移動を制御します。詳細については、 VPC Service Controls の概要をご覧ください。VPC Service Controls とともに TPU を使用する際の制限事項については、 サポートされているプロダクトと 制限事項をご覧ください。