TPU 인스턴스에 대한 네트워킹 및 액세스 구성

이 페이지에서는 다음을 포함하여 TPU 인스턴스의 커스텀 네트워크 구성과 액세스 구성을 설정하는 방법을 설명합니다.

  • 커스텀 네트워크 및 서브네트워크 지정
  • 외부 및 내부 IP 주소 지정
  • TPU에 대한 SSH 액세스 사용 설정
  • TPU에 커스텀 서비스 계정 연결
  • 커스텀 SSH 메서드 사용 설정
  • VPC 서비스 제어 사용

기본 요건

다음 절차를 실행하기 전에 Google Cloud CLI를 설치하고 Google Cloud 프로젝트를 만들고 Compute Engine API를 사용 설정해야 합니다. 자세한 내용은 TPU용 Google Cloud 프로젝트 설정을 참고하세요.

커스텀 네트워크 및 서브네트워크 지정

TPU VM 인스턴스 또는 인스턴스 템플릿을 만들 때 TPU에 사용할 네트워크와 서브네트워크를 선택적으로 지정할 수 있습니다. 네트워크를 지정하지 않으면 TPU는 default 네트워크에 배치됩니다. 서브네트워크는 TPU가 실행되는 영역과 동일한 리전에 있어야 합니다.

  1. VPC 네트워크 만들기 안내에 따라 네트워크와 서브네트워크를 만듭니다.

  2. 커스텀 네트워크 및 서브네트워크를 지정하여 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_TYPEIPV4_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 주소 이해하기

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 간에 고대역폭 통신이 필요한 대규모 머신러닝 워크로드에서 중요합니다.

외부 IP 주소 없이 TPU VM 인스턴스 만들기

외부 IP 주소 없이 TPU VM 인스턴스를 만들려면 gcloud compute instances create 명령어를 실행할 때 --no-address 플래그를 사용합니다.

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_TYPEIPV4_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을 만들려면 instances.insert 메서드POST 요청을 보내고 요청 본문의 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 버전을 설치하려면 "sourceImage" 값을 다음 형식의 이미지 버전 이름으로 바꿉니다. projects/IMAGE_PROJECT/global/images/IMAGE_NAME

    OS 이미지에 대한 자세한 내용은 OS 이미지를 참고하세요.

  • NETWORK_NAME: 선택사항: 네트워크 이름입니다. 네트워크를 지정하는 경우 서브넷을 지정해야 하며 서브넷은 동일한 네트워크에 속해야 합니다. 네트워크를 지정하지 않으면 Compute Engine은 지정된 서브넷에서 네트워크를 추론합니다.

  • REGION: 서브네트워크의 리전입니다.

  • SUBNET_NAME: 인스턴스와 함께 사용할 서브넷의 이름입니다.

    네트워크의 서브넷 목록을 보려면 gcloud compute networks subnets list 명령어를 사용합니다.

  • STACK_TYPE: 선택사항: 네트워크 인터페이스의 스택 유형입니다. STACK_TYPEIPV4_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 명령어를 사용하고 VM 인스턴스에 서비스 계정 이메일과 cloud-platform 액세스 범위를 제공합니다.

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 서비스 제어와 통합

VPC 서비스 제어를 사용하여 TPU 리소스 주위에 보안 경계를 정의하고 경계를 넘는 데이터 이동을 제어합니다. 자세한 내용은 VPC 서비스 제어 개요를 참고하세요. TPU를 VPC 서비스 제어와 함께 사용할 때의 제한사항을 알아보려면 지원되는 제품 및 제한사항을 참고하세요.