컨피덴셜 VM에서 GPU를 사용하려면 a3-highgpu-1g 머신 유형을 기반으로 스팟 또는 플렉스 시작 프로비저닝 모델을 사용하여 컨피덴셜 VM 인스턴스를 만들고 Intel TDX를 사용해야 합니다. VM 인스턴스를 만든 후 연결된 GPU에서 컨피덴셜 컴퓨팅 모드를 사용 설정합니다.
GPU 할당량 요구사항
GPU를 사용하여 컨피덴셜 VM 인스턴스를 만들기 전에 Google Cloud프로젝트에 할당된 GPU 할당량이 충분한지 확인하세요. GPU가 포함된 컨피덴셜 VM 인스턴스를 성공적으로 만들려면 다음 할당량 유형에 충분한 할당량이 있어야 합니다.
각 리전에서 만들려는 GPU 모델의 선점형 할당량입니다.
모든 리전의 모든 유형의 총 GPU 수에 적용되는 전역 할당량입니다.
이러한 GPU 할당량의 상향을 요청하려면 선점형 할당량 요청 및 전역 할당량 요청을 참고하세요.
선점형 할당량 요청
리전 선점형 NVIDIA H100 GPU 할당량 상향을 요청하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 할당량 페이지로 이동합니다.
필터 상자에
PREEMPTIBLE_NVIDIA_H100_GPUS
를 입력한 다음 Enter 또는 Return 키를 누릅니다.표의 측정기준 열에서 할당량을 늘리려는 지역이 있는 행을 찾습니다.
해당 행에서
작업 더보기를 클릭한 다음 할당량 수정을 클릭합니다.할당량 변경 창의 새 값 상자에 원하는 GPU 수를 입력합니다.
요청 제출을 클릭합니다.
전역 할당량 요청
전역 할당량 상향을 요청하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 할당량 페이지로 이동합니다.
필터 상자에
GPUS_ALL_REGIONS
를 입력한 다음 Enter 또는 Return 키를 누릅니다.결과 행에서
작업 더보기를 클릭한 다음 할당량 수정을 클릭합니다.할당량 변경 창의 새 값 상자에 원하는 GPU 수를 입력합니다.
요청 제출을 클릭합니다.
할당량 요청 후 절차
할당량 요청이 승인되면 승인 이메일이 전송됩니다. 이메일을 받은 후 15분 정도 기다린 다음 할당량 페이지를 새로고침하여 업데이트된 할당량을 확인합니다. 15분이 지나도 할당량이 업데이트되지 않으면 Cloud Customer Care에 문의하세요.
할당량 요청이 거부되면 취할 수 있는 다음 단계를 설명하는 이메일이 전송될 수 있습니다. 할당량을 추가로 다시 신청하려면 이메일의 안내를 따르세요.
GPU를 사용하여 컨피덴셜 VM 인스턴스 만들기
스팟 또는 flex-start 모델을 사용하여 VM 인스턴스를 만들려면 다음 단계를 따르세요.
스팟 모델을 사용하려면 가속기 최적화 스팟 VM 인스턴스를 만드세요. 자세한 단계는 스팟 모델을 참고하세요.
flex-start 모델을 사용하려면 관리형 인스턴스 그룹 (MIG)을 만드세요. 자세한 단계는 유연한 시작 모델을 참고하세요.
스팟 모델
gcloud
gcloud CLI를 사용하여 가속기 최적화 Spot VM 인스턴스를 만들려면 --provisioning-model
플래그와 함께 instances create
하위 명령어를 사용합니다.
gcloud compute instances create INSTANCE_NAME \
--provisioning-model=SPOT \
--confidential-compute-type=TDX \
--machine-type=a3-highgpu-1g \
--maintenance-policy=TERMINATE \
--zone=ZONE_NAME \
--image-project=IMAGE_PROJECT \
--image-family=IMAGE_FAMILY_NAME \
--boot-disk-size=30G
다음 값을 제공합니다.
INSTANCE_NAME
: 새 VM 인스턴스의 이름입니다.IMAGE_PROJECT
: 지원되는 운영체제 이미지가 포함된 프로젝트입니다. Ubuntu 이미지에는ubuntu-os-cloud
이미지 프로젝트를 사용하는 것이 좋습니다. Container-Optimized OS 이미지에confidential-vm-images
이미지 프로젝트를 선택적으로 사용할 수 있습니다.IMAGE_FAMILY_NAME
: 컨피덴셜 VM 지원 운영체제 이미지의 계열입니다.ubuntu-os-cloud
이미지 프로젝트를 사용하는 경우ubuntu-2204-lts
이미지 계열을 사용하는 것이 좋습니다.confidential-vm-images
프로젝트의 Container-Optimized OS 이미지의 경우cos-tdx-113-lts
이미지 계열을 사용합니다.ZONE_NAME
: VM을 만들 지원되는 영역입니다.
REST
스팟 VM 인스턴스를 만들려면 적절한 본문 콘텐츠와 함께 다음 POST 요청을 전송합니다.
HTTP 메서드 및 URL:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
JSON 요청 본문:
{
"name": "INSTANCE_NAME",
"confidentialInstanceConfig": {
"confidentialInstanceType": "TDX"
},
"machineType": "zones/ZONE_NAME/machineTypes/a3-highgpu-1g",
"scheduling": {
"onHostMaintenance": "TERMINATE",
"provisioningModel": "SPOT"
},
"disks": [
{
"autoDelete": true,
"boot": true,
"index": 0,
"initializeParams": {
"diskSizeGb": "30",
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME"
},
"kind": "compute#attachedDisk",
"mode": "READ_WRITE",
"type": "PERSISTENT"
}
],
"networkInterfaces": [
{
"accessConfigs": [
{
"name": "external-nat",
"type": "ONE_TO_ONE_NAT",
"kind": "compute#accessConfig",
"networkTier": "PREMIUM"
}
],
"kind": "compute#networkInterface",
"name": "nic0",
"network": "projects/PROJECT_ID/global/networks/default"
}
]
}
다음 값을 제공합니다.
INSTANCE_NAME
: 새 VM 인스턴스 템플릿의 이름입니다.IMAGE_PROJECT
: 지원되는 운영체제 이미지가 포함된 프로젝트입니다. Ubuntu 이미지에는ubuntu-os-cloud
이미지 프로젝트를 사용하는 것이 좋습니다. Container-Optimized OS 이미지에confidential-vm-images
이미지 프로젝트를 선택적으로 사용할 수 있습니다.IMAGE_FAMILY_NAME
: 컨피덴셜 VM 지원 운영체제 이미지의 계열입니다.ubuntu-os-cloud
이미지 프로젝트를 사용하는 경우ubuntu-2204-lts
이미지 계열을 사용하는 것이 좋습니다.confidential-vm-images
프로젝트의 Container-Optimized OS 이미지의 경우cos-tdx-113-lts
이미지 계열을 사용합니다.PROJECT_ID
: 선택사항. VM을 만들 프로젝트의 ID입니다.ZONE_NAME
: VM을 만들 지원되는 영역입니다.
flex-start(유연한 시작) 모델
유연한 시작 모델을 사용하려면 먼저 인스턴스 템플릿을 만든 다음 해당 템플릿을 사용하여 관리형 인스턴스 그룹 (MIG)을 만듭니다. 그런 다음 크기 조절 요청을 사용하여 GPU VM 인스턴스를 MIG에 추가할 수 있습니다.
flex-start 프로비저닝 모델과 함께 MIG 크기 조절 요청을 사용하면 GPU VM 인스턴스를 확보할 가능성이 높아집니다. 자세한 내용은 MIG의 크기 조절 요청 정보를 참조하세요.
시작하기 전에
MIG 생성의 기본 요건과 MIG에서 크기 조절 요청을 생성할 때의 제한사항을 참고하세요.
GPU VM 인스턴스로 MIG 만들기
인스턴스 템플릿을 만든 후 템플릿을 사용하여 MIG를 만들려면 다음 단계를 완료하세요.
인스턴스 템플릿을 만듭니다.
gcloud
gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \ --provisioning-model=FLEX_START \ --confidential-compute-type=TDX \ --machine-type=a3-highgpu-1g \ --maintenance-policy=TERMINATE \ --image-project=IMAGE_PROJECT \ --image-family=IMAGE_FAMILY_NAME \ --reservation-affinity=none \ --boot-disk-size=30G \ --instance-termination-action=DELETE \ --max-run-duration=RUN_DURATION \ --project=PROJECT_ID
보안 부팅을 사용 설정하려면 VM 인스턴스 부팅에
--shielded-secure-boot
플래그를 선택적으로 사용할 수 있습니다.다음 값을 제공합니다.
INSTANCE_TEMPLATE_NAME
: 새 VM 인스턴스 템플릿의 이름입니다.IMAGE_PROJECT
: 지원되는 운영체제 이미지가 포함된 프로젝트입니다. Ubuntu 이미지에는ubuntu-os-cloud
이미지 프로젝트를 사용하는 것이 좋습니다. Container-Optimized OS 이미지에confidential-vm-images
이미지 프로젝트를 선택적으로 사용할 수 있습니다.IMAGE_FAMILY_NAME
: 컨피덴셜 VM 지원 운영체제 이미지의 계열입니다.ubuntu-os-cloud
이미지 프로젝트를 사용하는 경우ubuntu-2204-lts
이미지 계열을 사용하는 것이 좋습니다.confidential-vm-images
프로젝트의 Container-Optimized OS 이미지의 경우cos-tdx-113-lts
이미지 계열을 사용합니다.RUN_DURATION
: 요청된 VM 인스턴스를 실행할 기간입니다. 각각d
,h
,m
,s
를 사용하여 일, 시, 분 또는 초 순서로 값 형식을 지정해야 합니다. 예를 들어 30분의 경우30m
을, 1일 2시간 3분 4초의 경우1d2h3m4s
를 지정합니다. 값은 10분~7일 사이여야 합니다.PROJECT_ID
: 선택사항. VM을 만들 프로젝트의 ID입니다.
REST
컨피덴셜 VM 인스턴스 템플릿을 만들려면 적절한 본문 콘텐츠와 함께 다음 POST 요청을 전송하세요.
HTTP 메서드 및 URL:
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/ZONE_NAME/instanceTemplates
JSON 요청 본문:
{ "name": "INSTANCE_TEMPLATE_NAME", "properties": { "confidentialInstanceConfig": { "confidentialInstanceType": "TDX" }, "machineType": "a3-highgpu-1g", "scheduling": { "instanceTerminationAction": "DELETE", "maxRunDuration": { "seconds": RUN_DURATION }, "automaticRestart": true, "onHostMaintenance": "TERMINATE", "provisioningModel": "FLEX_START", "preemptible": false }, "disks": [ { "autoDelete": true, "index": 0, "boot": true, "kind": "compute#attachedDisk", "mode": "READ_WRITE", "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME", "diskSizeGb": "30" }, "type": "PERSISTENT" } ], "networkInterfaces": [ { "accessConfigs": [ { "kind": "compute#accessConfig", "name": "external-nat", "networkTier": "PREMIUM", "type": "ONE_TO_ONE_NAT" } ], "kind": "compute#networkInterface", "name": "nic0", "network": "projects/PROJECT_ID/global/networks/default" } ], "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" }, "canIpForward": false } }
보안 부팅을 사용 설정하려면 VM 인스턴스 부팅에 다음 객체를 선택적으로 포함할 수 있습니다.
"shieldedInstanceConfig": { "enableIntegrityMonitoring": true, "enableSecureBoot": true, "enableVtpm": true }
다음 값을 제공합니다.
PROJECT_ID
: 선택사항. VM을 만들 프로젝트의 ID입니다.ZONE_NAME
: MIG를 만들 지원되는 영역입니다.INSTANCE_TEMPLATE_NAME
: 새 VM 인스턴스 템플릿의 이름입니다.IMAGE_PROJECT
: 지원되는 운영체제 이미지가 포함된 프로젝트입니다. Ubuntu 이미지에는ubuntu-os-cloud
이미지 프로젝트를 사용하는 것이 좋습니다. Container-Optimized OS 이미지에confidential-vm-images
이미지 프로젝트를 선택적으로 사용할 수 있습니다.IMAGE_FAMILY_NAME
: 컨피덴셜 VM 지원 운영체제 이미지의 계열입니다.ubuntu-os-cloud
이미지 프로젝트를 사용하는 경우ubuntu-2204-lts
이미지 계열을 사용하는 것이 좋습니다.confidential-vm-images
프로젝트의 Container-Optimized OS 이미지의 경우cos-tdx-113-lts
이미지 계열을 사용합니다.RUN_DURATION
: 요청된 VM 인스턴스를 실행할 기간(초)입니다. 값은600
~604800
초 사이여야 하며, 이는 10분~7일 범위에 해당합니다.
MIG 및 크기 조절 요청을 만들어 GPU VM 인스턴스를 한 번에 모두 추가합니다.
MIG에 있는 인스턴스를 나열합니다.
gcloud
gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ --zone=ZONE_NAME \ --project=PROJECT_ID
다음 값을 제공합니다.
INSTANCE_GROUP_NAME
: MIG 이름입니다.ZONE_NAME
: VM 인스턴스 목록을 가져올 지원되는 영역입니다.PROJECT_ID
: 선택사항. VM 인스턴스 목록을 가져올 프로젝트의 ID입니다.
REST
모든 인스턴스를 나열하려면 다음 GET 요청을 전송합니다.
HTTP 메서드 및 URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
인스턴스 목록을 특정 영역으로 제한하려면 다음 GET 요청을 보냅니다.
HTTP 메서드 및 URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/ZONE_NAME/instanceTemplates
다음 값을 제공합니다.
ZONE_NAME
: VM 인스턴스 목록을 가져올 지원되는 영역입니다.PROJECT_ID
: VM 인스턴스 목록을 가져올 프로젝트의 ID입니다.
GPU에서 컨피덴셜 컴퓨팅 모드 사용 설정
gcloud compute ssh 명령어를 사용하여 MIG의 VM 인스턴스에 연결합니다.
gcloud compute ssh
패키지 목록을 업데이트하고 필요한 도구와 라이브러리를 설치합니다.
sudo apt-get update --yes sudo apt-get install linux-headers-$(uname -r) sudo apt install -y build-essential libxml2 libncurses5-dev pkg-config libvulkan1 gcc-12
VM 인스턴스에 적절한 GPU 드라이버를 설치합니다. 보안 부팅이 사용 설정된 VM 인스턴스의 경우 GPU 드라이버 설치 (보안 부팅 VM)를 참고하세요.
nvidia-driver-575-open
드라이버 버전을 사용하는 것이 좋습니다.GPU와 GPU 드라이버 간의 보안 통신을 구성하려면 Linux 커널 암호화 API (LKCA)를 사용 설정하세요.
echo "install nvidia /sbin/modprobe ecdsa_generic; /sbin/modprobe ecdh; /sbin/modprobe --ignore-install nvidia" | sudo tee /etc/modprobe.d/nvidia-lkca.conf sudo update-initramfs -u
영속성 모드를 사용 설정하여 GPU와 GPU 드라이버 간에 보안 보안 프로토콜 및 데이터 모델 (SPDM) 연결을 설정합니다.
sudo test -f /usr/lib/systemd/system/nvidia-persistenced.service && sudo sed -i "s/no-persistence-mode/uvm-persistence-mode/g" /usr/lib/systemd/system/nvidia-persistenced.service sudo systemctl daemon-reload
LKCA 및 영구 모드 구성을 적용하려면 VM 인스턴스를 재부팅합니다.
sudo reboot
(선택사항) 다음 CUDA 샘플을 설치합니다.
wget -O cuda-samples.tar.gz https://github.com/NVIDIA/cuda-samples/archive/refs/tags/v12.5.tar.gz tar xzvf cuda-samples.tar.gz
다음 단계
GPU에서 비밀 모드가 사용 설정되어 있는지 확인하는 방법을 알아봅니다.
GPU 할당량을 확인하는 방법을 알아보세요.
GPU VM 및 선점형 배정 할당량을 읽고 할당량 소비를 파악하세요.