서비스를 위한 GPU 지원

이 페이지에서는 Cloud Run 서비스의 GPU 구성을 설명합니다. GPU는 대규모 언어 모델(LLM)과 같은 AI 추론 워크로드 또는 동영상 트랜스코딩 및 3D 렌더링과 같은 컴퓨팅 집약적인 AI가 아닌 사용 사례에 적합합니다. Google은 NVIDIA L4 GPU에 24GB의 GPU 메모리(VRAM)를 제공하며, 이는 인스턴스 메모리와는 별개입니다.

Cloud Run의 GPU는 추가 드라이버나 라이브러리가 필요하지 않은 완전 관리형입니다. GPU 기능은 Cloud Run에서 주문형 CPU 및 주문형 메모리가 작동하는 방식과 유사하게 예약 없이 주문형 가용성을 제공합니다. GPU를 사용하도록 구성된 Cloud Run 서비스의 인스턴스는 사용하지 않을 때 비용을 절감하기 위해 0으로 축소할 수 있습니다.

드라이버가 사전 설치된 L4 GPU가 연결된 Cloud Run 인스턴스는 약 5초 후에 시작되며 이때 컨테이너에서 실행되는 프로세스가 GPU를 사용하기 시작합니다.

Cloud Run 인스턴스당 하나의 GPU를 구성할 수 있습니다. 사이드카 컨테이너를 사용하는 경우 GPU는 하나의 컨테이너에만 연결할 수 있습니다.

지원되는 리전

  • asia-southeast1(싱가포르)
  • asia-south1(뭄바이) . 이 리전은 초대를 받아야만 사용할 수 있습니다. 이 리전에 관심이 있다면 Google 계정팀에 문의하세요.
  • europe-west1(벨기에) 잎 아이콘 낮은 CO2
  • europe-west4(네덜란드) 잎 아이콘 낮은 CO2
  • us-central1(아이오와) 잎 아이콘 낮은 CO2
  • us-east4(북 버지니아)

지원되는 GPU 유형

Cloud Run 인스턴스당 하나의 L4 GPU를 사용할 수 있습니다. L4 GPU에는 다음 드라이버가 사전 설치되어 있습니다.

  • 현재 NVIDIA 드라이버 버전: 535.216.03(CUDA 12.2)

가격 책정 영향

GPU 가격 책정 세부정보는 Cloud Run 가격 책정을 참조하세요. 다음 요구사항과 고려사항에 유의하세요.

  • 요청별 비용은 없습니다. GPU 기능을 사용하려면 인스턴스 기반 결제를 사용해야 하며 최소 인스턴스는 유휴 상태일 때도 전체 요금이 청구됩니다.
  • GPU 영역 중복성과 비영역 중복성 간에는 비용에 차이가 있습니다. GPU 가격 책정 세부정보는 Cloud Run 가격 책정을 참조하세요.
  • 최소 4개의 CPU와 16GB의 메모리를 사용해야 합니다.
  • 인스턴스 수명 주기의 전체 기간에 대한 GPU 요금이 청구됩니다.

GPU 영역 중복성 옵션

기본적으로 Cloud Run은 한 리전 내 여러 영역에 서비스를 배포합니다. 이 아키텍처는 내재된 복원력을 제공합니다. 영역에 서비스 중단이 발생하면 Cloud Run은 영향을 받는 영역에서 동일한 리전 내의 정상 영역으로 트래픽을 자동으로 라우팅합니다.

GPU 리소스로 작업할 때는 GPU 리소스에 특정 용량 제약 조건이 적용된다는 점에 유의하세요. 영역 서비스 중단 시 GPU 워크로드의 표준 장애 조치 메커니즘은 나머지 정상 영역에 미사용 GPU 용량이 충분히 제공되는지 여부에 따라 달라집니다. GPU의 제한된 특성으로 인해 이 용량을 항상 사용할 수 있는 것은 아닙니다.

영역 서비스 중단 시 GPU 가속 서비스의 가용성을 높이려면 특히 GPU에 대한 영역 중복성을 구성하면 됩니다.

  • 영역 중복성 사용 설정됨(기본값): Cloud Run은 여러 영역에서 서비스의 GPU 용량을 예약합니다. 영향을 받는 영역에서 다시 라우팅된 트래픽을 서비스가 성공적으로 처리할 가능성이 크게 높아져 GPU 초당 추가 비용을 통해 영역 장애 시 안정성이 향상됩니다.

  • 영역 중복성 사용 중지됨: Cloud Run은 최선의 방식으로 GPU 워크로드의 장애 조치를 시도합니다. 트래픽은 해당 시점에 충분한 GPU 용량이 있는 경우에만 다른 영역으로 라우팅됩니다. 이 옵션은 장애 조치 시나리오를 위한 예약된 용량을 보장하지 않지만 GPU 초당 비용이 더 저렴합니다.

SLA

Cloud Run GPU의 SLA는 서비스에서 영역 중복성 또는 비영역 중복성 옵션을 사용하는지에 따라 다릅니다. 자세한 내용은 SLA 페이지를 참조하세요.

할당량 상향 조정 요청

리전에서 Cloud Run nvidia-l4 GPU를 처음 사용하는 프로젝트에는 첫 번째 배포가 생성될 때 GPU 할당량 3개(영역 중복성 사용 안함)가 자동으로 부여됩니다. Cloud Run GPU가 추가로 필요한 경우 Cloud Run 서비스의 할당량 상향 조정을 요청해야 합니다. 다음 버튼에 제공된 링크를 사용하여 필요한 할당량을 요청하세요.

필요한 할당량 할당량 링크
영역 중복성이 사용 중지된 GPU(가격이 저렴함) 영역 중복성을 사용하지 않는 GPU 할당량 요청
영역 중복성이 사용 설정된 GPU(가격이 더 높음) 영역 중복성을 사용하는 GPU 할당량 요청

할당량 상향 조정 요청에 대한 자세한 내용은 할당량을 늘리는 방법을 참조하세요.

시작하기 전에

다음 목록은 Cloud Run에서 GPU를 사용할 때의 요구사항과 제한사항을 설명합니다.

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Cloud Run API.

    Enable the API

  7. 필요한 할당량을 요청합니다.
  8. 컨테이너 이미지 빌드 및 대규모 모델 로드에 관한 권장사항은 권장사항: GPU를 사용하는 Cloud Run의 AI 추론을 참조하세요.
  9. Cloud Run 서비스에 다음 구성이 포함되었는지 확인합니다.
  10. 필요한 역할

    Cloud Run 서비스를 구성하고 배포하는 데 필요한 권한을 얻으려면 관리자에게 서비스에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

    • Cloud Run 개발자(roles/run.developer) - Cloud Run 서비스
    • 서비스 계정 사용자(roles/iam.serviceAccountUser) - 서비스 ID

    Cloud Run과 연결된 IAM 역할 및 권한 목록은 Cloud Run IAM 역할Cloud Run IAM 권한을 참조하세요. Cloud Run 서비스가 Cloud 클라이언트 라이브러리와 같은Google Cloud API와 상호작용하는 경우에는 서비스 ID 구성 가이드를 참조하세요. 역할 부여에 대한 자세한 내용은 배포 권한액세스 관리를 참조하세요.

    GPU가 있는 Cloud Run 서비스 구성

    구성을 변경하면 새 버전이 생성됩니다. 이를 변경하는 명시적 업데이트가 없으면 이후 버전에도 이 구성 설정이 자동으로 적용됩니다.

    Google Cloud 콘솔, Google Cloud CLI 또는 YAML을 사용하여 GPU를 구성할 수 있습니다.

    콘솔

    1. Google Cloud 콘솔에서 Cloud Run으로 이동합니다.

      Cloud Run으로 이동

    2. 메뉴에서 서비스를 선택하고 컨테이너 배포를 클릭하여 새 서비스를 구성합니다. 기존 서비스를 구성하는 경우 서비스를 클릭한 후 새 버전 수정 및 배포를 클릭합니다.

    3. 새 서비스를 구성하는 경우 초기 서비스 설정 페이지를 작성한 후 컨테이너, 볼륨, 네트워킹, 보안을 클릭하여 서비스 구성 페이지를 펼칩니다.

    4. 컨테이너 탭을 클릭합니다.

      이미지

      • 시작하기 전에의 권장사항에 따라 CPU, 메모리, 동시 실행, 실행 환경, 시작 프로브를 구성합니다.
      • GPU 체크박스를 선택한 다음 GPU 유형 메뉴에서 GPU 유형을 선택하고 GPU 수 메뉴에서 GPU 수를 선택합니다.
      • 새 서비스의 경우 기본적으로 영역 중복성이 사용 설정되어 있습니다. 현재 설정을 변경하려면 GPU 체크박스를 선택하여 GPU 중복성 옵션을 표시합니다.
        • 영역 중복성을 사용 중지하려면 영역 중복성 없음을 선택합니다.
        • 영역 중복성을 사용 설정하려면 영역 중복성을 선택합니다.
    5. 만들기 또는 배포를 클릭합니다.

    gcloud

    GPU가 사용 설정된 서비스를 만들려면 gcloud run deploy 명령어를 사용합니다.

      gcloud run deploy SERVICE \
        --image IMAGE_URL \
        --gpu 1

    다음과 같이 바꿉니다.

    • SERVICE를 Cloud Run 서비스 이름으로 바꿉니다.
    • IMAGE_URL을 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest)로 바꿉니다. Artifact Registry를 사용하는 경우 저장소 REPO_NAME이 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG입니다.

    서비스의 GPU 구성을 업데이트하려면 gcloud run services update 명령어를 사용합니다.

      gcloud run services update SERVICE \
        --image IMAGE_URL \
        --cpu CPU \
        --memory MEMORY \
        --no-cpu-throttling \
        --gpu GPU_NUMBER \
        --gpu-type GPU_TYPE \
        --max-instances MAX_INSTANCE
        --GPU_ZONAL_REDUNDANCY
        

    다음과 같이 바꿉니다.

    • SERVICE를 Cloud Run 서비스 이름으로 바꿉니다.
    • IMAGE_URL을 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest)로 바꿉니다. Artifact Registry를 사용하는 경우 저장소 REPO_NAME이 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG입니다.
    • CPU: CPU 수 4 CPU 이상을 지정해야 합니다.
    • MEMORY: 메모리 양. 16Gi(16GiB) 이상을 지정해야 합니다.
    • GPU_NUMBER: 값 1(1)로 바꿉니다. 지정하지 않았지만 GPU_TYPE이 있으면 기본값은 1입니다.
    • GPU_TYPE: GPU 유형. 지정되지 않았지만 GPU_NUMBER가 있으면 기본값은 nvidia-l4(숫자 값 14가 아닌 nvidia L4 소문자 L)입니다.
    • MAX_INSTANCE: 최대 인스턴스 수. 이 숫자는 프로젝트에 할당된 GPU 할당량을 초과할 수 없습니다.
    • GPU_ZONAL_REDUNDANCY를 영역 중복성을 사용 중지하려면 no-gpu-zonal-redundancy로, 영역 중복성을 사용 설정하려면 gpu-zonal-redundancy로 바꿉니다.

    YAML

    1. 새 서비스를 만드는 경우에는 이 단계를 건너뜁니다. 기존 서비스를 업데이트하는 경우 YAML 구성을 다운로드합니다.

      gcloud run services describe SERVICE --format export > service.yaml
    2. nvidia.com/gpu: 속성과 nodeSelector:
      run.googleapis.com/accelerator:
      를 업데이트합니다.

      apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        name: SERVICE
      spec:
        template:
          metadata:
            annotations:
              autoscaling.knative.dev/maxScale: 'MAX_INSTANCE'
              run.googleapis.com/cpu-throttling: 'false'
              run.googleapis.com/gpu-zonal-redundancy-disabled: 'GPU_ZONAL_REDUNDANCY'
          spec:
            containers:
            - image: IMAGE_URL
              ports:
              - containerPort: CONTAINER_PORT
                name: http1
              resources:
                limits:
                  cpu: 'CPU'
                  memory: 'MEMORY'
                  nvidia.com/gpu: '1'
              # Optional: use a longer startup probe to allow long starting containers
              startupProbe:
                failureThreshold: 1800
                periodSeconds: 1
                tcpSocket:
                  port: CONTAINER_PORT
                timeoutSeconds: 1
            nodeSelector:
              run.googleapis.com/accelerator: GPU_TYPE

      다음과 같이 바꿉니다.

      • SERVICE를 Cloud Run 서비스 이름으로 바꿉니다.
      • IMAGE_URL을 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest)로 바꿉니다. Artifact Registry를 사용하는 경우 저장소 REPO_NAME이 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG입니다.
      • CONTAINER_PORT를 서비스에 설정된 컨테이너 포트로 바꿉니다.
      • CPU: CPU 수 4 CPU 이상을 지정해야 합니다.
      • MEMORY: 메모리 양. 16Gi(16GiB) 이상을 지정해야 합니다.
      • GPU_TYPE을 값 nvidia-l4(숫자 값 14가 아닌 nvidia-L4 소문자 L)로 바꿉니다.
      • MAX_INSTANCE: 최대 인스턴스 수. 이 숫자는 프로젝트에 할당된 GPU 할당량을 초과할 수 없습니다.
      • GPU_ZONAL_REDUNDANCYfalse로 바꿔 GPU 영역 중복성을 사용 설정하거나 true로 바꿔 사용 중지합니다.
    3. 다음 명령어를 사용하여 서비스를 만들거나 업데이트합니다.

      gcloud run services replace service.yaml

    Terraform

    Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

    Terraform 구성에서 다음을 google_cloud_run_v2_service 리소스에 추가합니다.

    resource "google_cloud_run_v2_service" "default" {
      provider = google-beta
      name     = "SERVICE"
      location = "europe-west1"
    
      template {
        gpu_zonal_redundancy_disabled = "GPU_ZONAL_REDUNDANCY"
        containers {
          image = "IMAGE_URL"
          resources {
            limits = {
              "cpu" = "CPU"
              "memory" = "MEMORY"
              "nvidia.com/gpu" = "1"
            }
          }
        }
        node_selector {
          accelerator = "GPU_TYPE"
        }
      }
    }
    

    다음과 같이 바꿉니다.

    • SERVICE를 Cloud Run 서비스 이름으로 바꿉니다.
    • GPU_ZONAL_REDUNDANCYfalse로 바꿔 GPU 영역 중복성을 사용 설정하거나 true로 바꿔 사용 중지합니다.
    • IMAGE_URL을 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest)로 바꿉니다. Artifact Registry를 사용하는 경우 저장소 REPO_NAME이 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG입니다.
    • CPU: CPU 수 4 CPU 이상을 지정해야 합니다.
    • MEMORY: 메모리 양. 16Gi(16GiB) 이상을 지정해야 합니다.
    • GPU_TYPE을 값 nvidia-l4(숫자 값 14가 아닌 nvidia-L4 소문자 L)로 바꿉니다.

    GPU 설정 보기

    Cloud Run 서비스의 현재 GPU 설정을 보려면 다음 안내를 따르세요.

    콘솔

    1. Google Cloud 콘솔에서 Cloud Run으로 이동합니다.

      Cloud Run으로 이동

    2. 관심이 있는 서비스를 클릭하여 서비스 세부정보 페이지를 엽니다.

    3. 버전 탭을 클릭합니다.

    4. 오른쪽의 세부정보 패널에서 GPU 설정이 컨테이너 탭에 표시됩니다.

    gcloud

    1. 다음 명령어를 사용하세요.

      gcloud run services describe SERVICE
    2. 반환된 구성에서 GPU 설정을 찾습니다.

    GPU 삭제

    Google Cloud 콘솔, Google Cloud CLI 또는 YAML을 사용하여 GPU를 삭제할 수 있습니다.

    콘솔

    1. Google Cloud 콘솔에서 Cloud Run으로 이동합니다.

      Cloud Run으로 이동

    2. 메뉴에서 서비스를 선택하고 컨테이너 배포를 클릭하여 새 서비스를 구성합니다. 기존 서비스를 구성하는 경우 서비스를 클릭한 후 새 버전 수정 및 배포를 클릭합니다.

    3. 새 서비스를 구성하는 경우 초기 서비스 설정 페이지를 작성한 후 컨테이너, 볼륨, 네트워킹, 보안을 클릭하여 서비스 구성 페이지를 펼칩니다.

    4. 컨테이너 탭을 클릭합니다.

      이미지

      • GPU 체크박스를 선택 해제합니다.
    5. 만들기 또는 배포를 클릭합니다.

    gcloud

    GPU를 삭제하려면 gcloud run services update 명령어를 사용하여 GPU 수를 0으로 설정합니다.

      gcloud run services update SERVICE --gpu 0
      

    SERVICE를 Cloud Run 서비스 이름으로 바꿉니다.

    YAML

    1. 새 서비스를 만드는 경우에는 이 단계를 건너뜁니다. 기존 서비스를 업데이트하는 경우 YAML 구성을 다운로드합니다.

      gcloud run services describe SERVICE --format export > service.yaml
    2. nvidia.com/gpu:nodeSelector: run.googleapis.com/accelerator: nvidia-l4 줄을 삭제합니다.

    3. 다음 명령어를 사용하여 서비스를 만들거나 업데이트합니다.

      gcloud run services replace service.yaml

    라이브러리

    기본적으로 모든 NVIDIA L4 드라이버 라이브러리가 /usr/local/nvidia/lib64 아래에 마운트됩니다. Cloud Run은 이 경로를 GPU가 있는 컨테이너의 LD_LIBRARY_PATH 환경 변수(예: ${LD_LIBRARY_PATH}:/usr/local/nvidia/lib64)에 자동으로 추가합니다. 이렇게 하면 동적 링커에서 NVIDIA 드라이버 라이브러리를 찾을 수 있습니다. 링커는 LD_LIBRARY_PATH 환경 변수에 나열된 순서대로 경로를 검색하고 확인합니다. 이 변수에 지정된 모든 값은 기본 Cloud Run 드라이버 라이브러리 경로 /usr/local/nvidia/lib64보다 우선 적용됩니다.

    12.2보다 높은 CUDA 버전을 사용하려면 가장 쉬운 방법은 이후 버전과의 호환성 패키지가 이미 설치된 최신 NVIDIA 기본 이미지를 사용하는 것입니다. 또 다른 방법은 수동으로 NVIDIA 이후 버전과의 호환성 패키지를 설치하고 LD_LIBRARY_PATH에 추가하는 것입니다. NVIDIA의 호환성 매트릭스를 참고하여 제공된 NVIDIA 드라이버 버전(535.216.03)과 이후 버전이 호환되는 CUDA 버전을 확인합니다.

    GPU 및 최대 인스턴스 정보

    GPU가 있는 인스턴스의 수는 두 가지 방식으로 제한됩니다.