NCCL Fast Socket을 사용하여 워크로드 효율성 개선


이 페이지에서는 NVIDIA Collective Communications Library(NCCL) Fast Socket 플러그인을 사용하여 Google Kubernetes Engine(GKE) 클러스터에서 더 효율적인 워크로드를 실행하는 방법을 보여줍니다.

시작하기 전에

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 initialize합니다. 이전에 gcloud CLI를 설치한 경우 gcloud components update를 실행하여 최신 버전을 가져옵니다.

제한사항

요구사항

GKE Autopilot:

  • GKE Autopilot 클러스터는 1.30.2-gke.1023000 이상을 실행해야 합니다.

자세한 내용은 Autopilot 클러스터 만들기를 참조하세요.

GKE Standard:

  • NCCL Fast Socket을 사용하려면 노드 풀에 gVNIC가 사용 설정되어 있어야 합니다.
  • GKE 노드는 Container-Optimized OS 노드 이미지를 사용해야 합니다.
  • 클러스터가 GKE 버전 1.25.2-gke.1700 이상을 실행해야 합니다.

자세한 내용은 리전 클러스터 만들기를 참조하세요.

Standard 클러스터에서 NCCL Fast Socket 사용 설정

이 섹션에서는 GKE Standard 노드 풀에서 NCCL Fast Socket 플러그인을 사용 설정하는 방법을 보여줍니다. GKE Autopilot 클러스터를 사용하는 경우 워크로드에서 NCCL Fast Socket을 요청할 때 GKE가 플러그인을 자동으로 사용 설정합니다. 자세한 내용은 Autopilot의 NCCL Fast Socket 섹션을 참조하세요.

Standard 클러스터의 경우 NCCL Fast Socket 플러그인을 사용하는 노드 풀을 만듭니다. 또한 gcloud container node-pools update를 사용하여 기존 노드 풀을 업데이트할 수 있습니다.

gcloud container node-pools create NODEPOOL_NAME \
    --accelerator type=ACCELERATOR_TYPE,count=ACCELERATOR_COUNT \
    --machine-type=MACHINE_TYPE \
    --cluster=CLUSTER_NAME \
    --enable-fast-socket \
    --enable-gvnic

다음을 바꿉니다.

  • NODEPOOL_NAME: 새 노드 풀의 이름입니다.
  • CLUSTER_NAME: 클러스터의 이름입니다.
  • ACCELERATOR_TYPE: 사용하는 GPU 가속기의 유형입니다. 예를 들면 nvidia-tesla-t4입니다.
  • ACCELERATOR_COUNT: 노드당 GPU 수입니다.
  • MACHINE_TYPE: 사용할 머신 유형입니다. NCCL Fast Socket은 메모리 최적화 머신 유형에서 지원되지 않습니다.

NVIDIA GPU 기기 드라이버 설치

Autopilot에서 GPU 기기 드라이버는 자동으로 설치됩니다.

Standard 클러스터의 경우 NVIDIA GPU 기기 드라이버 설치의 안내에 따라 노드에 필요한 NVIDIA 기기 드라이버를 설치합니다.

Autopilot의 NCCL Fast Socket

Autopilot 클러스터에서 cloud.google.com/gke-nccl-fastsocket 노드 선택기를 사용하여 워크로드에서 NCCL Fast Socket을 요청합니다. 워크로드에서 NCCL Fast Socket을 요청하면 GKE는 GKE가 워크로드에 프로비저닝하는 노드에서 gVNIC 및 NCCL Fast Socket을 사용 설정합니다. Autopilot에서 지원하는 모든 GPU 유형에 NCCL Fast Socket을 사용할 수 있습니다.

다음 포드는 NCCL Fast Socket을 요청합니다.

apiVersion: v1
kind: Pod
metadata:
  name: my-gpu-pod
spec:
  nodeSelector:
    cloud.google.com/gke-accelerator: GPU_TYPE
    cloud.google.com/gke-nccl-fastsocket: "true"
  containers:
  - name: my-gpu-container
    image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
    command: ["/bin/bash", "-c", "--"]
    args: ["while true; do sleep 600; done;"]
    resources:
      limits:
        nvidia.com/gpu: GPU_QUANTITY

다음을 바꿉니다.

  • GPU_TYPE: GPU 하드웨어의 유형. 허용되는 값은 다음과 같습니다.
    • nvidia-h100-80gb: NVIDIA H100(80GB)(가속기 컴퓨팅 클래스에서만 사용 가능)
    • nvidia-a100-80gb: NVIDIA A100(80GB)
    • nvidia-tesla-a100: NVIDIA A100(40GB)
    • nvidia-l4: NVIDIA L4
    • nvidia-tesla-t4: NVIDIA T4
  • GPU_QUANTITY: 컨테이너에 할당할 GPU 수

Fast Socket 사용 설정 확인

NCCL Fast Socket이 사용 설정되어 있는지 확인하려면 kube-system 포드를 살펴봅니다.

kubectl get pods -n kube-system

출력은 다음과 비슷합니다.

NAME                             READY   STATUS    RESTARTS   AGE
nccl-fastsocket-installer-qvfdw  2/2     Running   0          10m
nccl-fastsocket-installer-rtjs4  2/2     Running   0          10m
nccl-fastsocket-installer-tm294  2/2     Running   0          10m

이 출력에서 포드 수가 노드 풀의 노드 수와 동일해야 합니다.

NCCL Fast Socket 중지

GKE Autopilot 클러스터에서는 NCCL Fast Socket 플러그인이 기본적으로 사용 중지됩니다. 기존 워크로드에서 플러그인을 사용 중지하려면 NCCL Fast Socket 노드 선택기 없이 워크로드를 다시 배포하세요.

Standard 클러스터의 노드 풀에 NCCL Fast Socket을 사용 중지하려면 다음 명령어를 실행합니다.

gcloud container node-pools update NODEPOOL_NAME \
    --cluster=CLUSTER_NAME \
    --no-enable-fast-socket

기존 노드에는 플러그인이 계속 설치된 상태입니다. 워크로드를 새 노드로 마이그레이션하려면 수동으로 노드 풀 크기를 조정해야 합니다.

문제 해결

gVNIC 문제를 해결하려면 Google Virtual NIC 문제 해결을 참조하세요.

다음 단계