GPU(서비스)

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

GPU 기능을 사용하려면 Total Nvidia L4 GPU allocation, per project per region 할당량을 요청해야 합니다. 자세한 내용은 시작하기 전에를 참고하세요.

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

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

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

지원되는 리전

  • us-central1(아이오와) 잎 아이콘 낮은 CO2
  • asia-southeast1(싱가포르)

가격 책정 영향

GPU 가격 책정 세부정보는 Cloud Run 가격 책정을 참조하세요. 다음 중요 사항을 참조하세요.

  • 요청별 요금은 없습니다. GPU 기능을 사용하려면 CPU always allocated를 사용해야 하므로 최소 인스턴스에 대한 요금은 유휴 상태에서도 전체 요금으로 청구됩니다.
  • 최소 4개의 CPU와 16GiB 메모리를 사용해야 합니다.
  • GPU는 인스턴스 수명 주기의 전체 기간 동안 청구됩니다.

지원되는 GPU 유형

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

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

시작하기 전에

다음 목록에서는 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. GPU 기능을 사용하려면 지원되는 리전의 할당량을 늘려 달라고 요청해야 합니다. 필요한 할당량은 Cloud Run Admin API에 있는 Total Nvidia L4 GPU allocation, per project per region입니다.

    할당량 및 시스템 한도 페이지로 이동합니다.

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

필요한 역할

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

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 수를 선택합니다.
  5. 만들기 또는 배포를 클릭합니다.

gcloud

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

  gcloud beta 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 beta run services update 명령어를 사용합니다.

  gcloud beta 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

다음과 같이 바꿉니다.

  • 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 할당량을 초과할 수 없습니다.

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
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/maxScale: 'MAX_INSTANCE'
            run.googleapis.com/cpu-throttling: 'false'
        spec:
          containers:
          - image: IMAGE_URL
            ports:
            - containerPort: CONTAINER_PORT
              name: http1
            resources:
              limits:
                cpu: 'CPU'
                memory: 'MEMORY'
                nvidia.com/gpu: 'GPU_NUMBER'
            # 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_NUMBER를 값 1(한 개)로 바꿉니다. Cloud Run 인스턴스당 GPU 하나만 연결할 수 있기 때문입니다.
    • GPU_TYPE을 값 nvidia-l4(숫자 값 14가 아닌 nvidia-L4 소문자 L)로 바꿉니다.
    • MAX_INSTANCE: 최대 인스턴스 수. 이 숫자는 프로젝트에 할당된 GPU 할당량을 초과할 수 없습니다.
  3. 다음 명령어를 사용하여 서비스를 만들거나 업데이트합니다.

    gcloud run services replace service.yaml

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 beta run services update 명령어를 사용하여 GPU 수를 0으로 설정합니다.

  gcloud beta 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 아래에 마운트됩니다.

서비스에서 제공된 라이브러리를 찾을 수 없으면 Dockerfile에 ENV LD_LIBRARY_PATH /usr/local/nvidia/lib64:${LD_LIBRARY_PATH} 줄을 추가하여 동적 링커의 검색 경로를 업데이트합니다.

기존 이미지가 있고 업데이트된 Dockerfile로 이미지를 다시 빌드하고 싶지 않은 경우 LD_LIBRARY_PATH를 Cloud Run 서비스의 환경 변수로 설정할 수도 있습니다.

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

GPU 및 최대 인스턴스 정보

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

  • 최대 인스턴스 설정은 서비스당 인스턴스 수를 제한합니다. GPU의 리전당 프로젝트당 할당량보다 높게 설정할 수 없습니다.
  • 리전별 프로젝트당 허용되는 GPU 할당량입니다. 이렇게 하면 동일한 리전 내 서비스의 인스턴스 수가 제한됩니다.