Cloud Run 작업에 GPU 구성

이 페이지에서는 Cloud Run 작업의 GPU 구성을 설명합니다. GPU는 선호하는 프레임워크를 사용하여 대규모 언어 모델(LLM)을 학습하고, LLM에서 배치 또는 오프라인 추론을 실행하고, 동영상 처리 및 그래픽 렌더링과 같은 기타 컴퓨팅 집약적인 작업을 백그라운드 작업으로 처리하는 등 AI 워크로드에 적합합니다. Google은 NVIDIA L4 GPU에 24GB의 GPU 메모리(VRAM)를 제공하며, 이는 인스턴스 메모리와는 별개입니다.

Cloud Run의 GPU는 추가 드라이버나 라이브러리가 필요하지 않은 완전 관리형입니다. GPU 기능은 Cloud Run에서 주문형 CPU 및 주문형 메모리가 작동하는 방식과 유사하게 예약 없이 주문형 가용성을 제공합니다.

드라이버가 사전 설치된 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는 영역별 중복 없음 가격 책정을 따릅니다(미리보기).
  • 최소 4개의 CPU와 16GB의 메모리를 사용해야 합니다.
  • 인스턴스 수명 주기의 전체 기간에 대한 GPU 요금이 청구됩니다.

GPU 비영역 중복성

Cloud Run 작업은 GPU 지원 인스턴스에 대해 비영역 중복 지원(미리보기)을 제공합니다. 비영역 중복이 사용 설정된 경우 Cloud Run은 최선의 방식으로 GPU 지원 작업의 장애 조치를 시도합니다. Cloud Run은 해당 시점에 충분한 GPU 용량이 있는 경우에만 작업 실행을 다른 영역으로 라우팅합니다. 이 옵션은 장애 조치 시나리오를 위한 예약된 용량을 보장하지 않지만 GPU 초당 비용이 더 저렴합니다.

할당량 상향 조정 요청

프로젝트에 GPU 할당량이 없는 경우 Cloud Run 서비스를 배포하여 해당 리전에 대해 3개의 nvidia-l4 GPU 할당량(영역 중복 사용 안함)을 자동으로 부여받으세요. 이 자동 할당량 부여는 CPU 및 메모리 용량에 따라 사용 가능 여부가 달라질 수 있습니다. 사용하지 않는 서비스를 삭제해도 할당된 할당량은 변경되지 않습니다.

작업에 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. GPU와 함께 Cloud Run 작업을 사용할 때 성능을 최적화하려면 권장사항: GPU를 사용한 Cloud Run 작업을 참조하세요.

필요한 역할

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를 구성할 수 있습니다.

gcloud

GPU가 사용 설정된 작업을 만들려면 gcloud beta run jobs create 명령어를 사용합니다.

gcloud beta run jobs create JOB_NAME --image=IMAGE --gpu=1

다음과 같이 바꿉니다.

  • JOB_NAME을 Cloud Run 작업 이름으로 바꿉니다.
  • IMAGE_URL컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/job:latest)로 바꿉니다.

작업의 GPU 구성을 업데이트하려면 gcloud beta run jobs update 명령어를 사용합니다.

    gcloud beta run jobs update JOB_NAME \
      --image IMAGE_URL \
      --cpu CPU \
      --memory MEMORY \
      --gpu GPU_NUMBER \
      --gpu-type GPU_TYPE \
      --parallelism PARALLELISM

다음과 같이 바꿉니다.

  • JOB_NAME을 Cloud Run 작업 이름으로 바꿉니다.
  • IMAGE_URL컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/job:latest)로 바꿉니다.
  • CPU를 작업에 필요한 최소 4 CPU로 바꿉니다. 추천 값은 8입니다.
  • MEMORY를 최소 16Gi(16GiB)로 바꿉니다. 추천 값은 32Gi입니다.
  • GPU_NUMBER: 값 1(1)로 바꿉니다. 지정하지 않았지만 GPU_TYPE이 있으면 기본값은 1입니다.
  • GPU_TYPE: GPU 유형. 지정되지 않았지만 GPU_NUMBER가 있으면 기본값은 nvidia-l4(숫자 값 14가 아닌 nvidia L4 소문자 L)입니다.
  • PARALLELISM를 프로젝트에 할당한 적용 가능한 할당량 한도의 최솟값보다 작은 정수 값으로 바꿉니다.

YAML

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

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. nvidia.com/gpu 속성, 출시 단계의 annotations: run.googleapis.com/launch-stage, nodeSelector:
    run.googleapis.com/accelerator
    를 업데이트합니다.

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB_NAME
      labels:
        cloud.googleapis.com/location: REGION
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
    template:
      spec:
        template:
          spec:
            containers:
            - image: IMAGE_URL
              limits:
                cpu: 'CPU'
                memory: 'MEMORY'
                nvidia.com/gpu: 'GPU_NUMBER'
            nodeSelector:
              run.googleapis.com/accelerator: GPU_TYPE

    다음과 같이 바꿉니다.

    • JOB_NAME을 Cloud Run 작업 이름으로 바꿉니다.
    • IMAGE_URL컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/job:latest)로 바꿉니다.
    • CPU: CPU 수 4 CPU 이상을 지정해야 합니다.
    • MEMORY: 메모리 양. 16Gi(16GiB) 이상을 지정해야 합니다.
    • GPU_NUMBER를 값 1(한 개)로 바꿉니다. Cloud Run 인스턴스당 GPU 하나만 연결할 수 있기 때문입니다.
    • GPU_TYPE을 값 nvidia-l4(숫자 값 14가 아닌 nvidia-L4 소문자 L)로 바꿉니다.
  3. 다음 명령어를 사용하여 작업을 만들거나 업데이트합니다.

    gcloud run jobs replace job.yaml

GPU 설정 보기

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

gcloud

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

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

GPU 삭제

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

gcloud

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

  gcloud beta run jobs update JOB_NAME --gpu 0
  

JOB_NAME을 Cloud Run 작업 이름으로 바꿉니다.

YAML

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

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

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

    gcloud run jobs replace job.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 작업 인스턴스 할당량은 병렬로 실행되는 태스크에 대해 5로 설정됩니다. 할당량 상향을 요청하려면 할당량을 늘리는 방법을 참조하세요. GPU 태스크는 최대한 빨리 시작되며 프로젝트에 할당한 GPU 할당량과 선택한 리전에 따라 달라지는 최댓값까지 올라갑니다. 병렬 처리를 GPU 할당량 한도보다 크게 설정하면 Cloud Run 배포가 실패합니다.

실행당 작업에서 사용하는 GPU 할당량을 계산하려면 작업 태스크당 GPU 수에 병렬 처리 값을 곱합니다. 예를 들어 GPU 할당량이 10이고 --gpu=1, --parallelism=10으로 Cloud Run 작업을 배포하면 작업에서 GPU 할당량 10을 모두 사용합니다. 또는 --gpu=1, --parallelism=20로 배포하면 배포가 실패합니다.

자세한 내용은 권장사항: GPU를 사용하는 Cloud Run 작업을 참조하세요.