Aracılığıyla paylaş


Azure Kubernetes Service'te (AKS) çok örnekli GPU düğüm havuzu oluşturma

Belirli NVIDIA GPU'ları yediye kadar bağımsız örneğe bölünebilir. Her örnek, yönergeleri paralel olarak yürütmek ve GPU belleğinden sorumlu kendi Stream Multiprocessor (SM)'ye sahiptir. GPU bölümleme hakkında daha fazla bilgi için bkz. NVIDIA MIG.

Bu makalede, Azure Kubernetes Service (AKS) kümesinde MIG uyumlu vm boyutu kullanarak çok örnekli gpu düğüm havuzu oluşturma adımları anlatılır.

Ön koşullar ve sınırlamalar

  • Etkin aboneliği olan bir Azure hesabı. Hesabınız yoksa ücretsiz bir hesap oluşturabilirsiniz.
  • Azure CLI sürüm 2.2.0 veya üzeri yüklü ve yapılandırılmış. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.
  • Kubernetes komut satırı istemcisi kubectl yüklenir ve yapılandırılır. Azure Cloud Shell kullanıyorsanız zaten kubectl yüklüdür. Yerel olarak yüklemek istiyorsanız komutunu kullanabilirsiniz az aks install-cli .
  • Helm v3 yüklü ve yapılandırılmış. Daha fazla bilgi için Helm'i Yükleme bölümüne bakın.
  • Çok örnekli GPU şu anda AKS'de Standard_NC40ads_H100_v5, Standard_ND96isr_H100_v5ve A100 GPU VM boyutlarında desteklenmektedir.

GPU örneği profilleri

GPU örneği profilleri GPU'ların nasıl bölümlendiğini tanımlar. Aşağıdaki tabloda Standard_ND96asr_v4 için mevcut GPU örnek profili gösterilmektedir.

Profil adı SM'nin kesri Hafıza kesri Oluşturulan örnek sayısı
MIG 1g.5GB 1/7 1/8 7
MIG 2g.10gb 2/7 2/8 3
MIG 3g. 20 GB 3/7 4/8 2
MIG 4G.20GB 4/7 4/8 1
MIG 7g.40gb 7/7 8/8 1

Örneğin, gpu örneği profili MIG 1g.5gb her GPU örneğinin 1g SM (akış çok işlemcili) ve 5 gb belleğe sahip olduğunu gösterir. Bu durumda GPU yedi örneğe ayrılmıştır.

Bu VM boyutu için kullanılabilir GPU örneği profilleri MIG1g, MIG2g, MIG3g ve MIG4g, MIG7g değerlerini içerir.

Önemli

Düğüm havuzu oluşturulduktan sonra uygulanan GPU örnek profilini değiştiremezsiniz.

AKS kümesi oluşturma

  1. komutunu kullanarak az group create bir Azure kaynak grubu oluşturun.

    az group create --name myResourceGroup --location southcentralus
    
  2. komutunu kullanarak az aks create bir AKS kümesi oluşturun.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --generate-ssh-keys
    
  3. AKS kümenize bağlanmak için kubectl'yı, az aks get-credentials komutunu kullanarak yapılandırın.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

Çok örnekli GPU düğüm havuzu oluşturma

Düğüm havuzunu oluşturmak için Azure CLI'yi veya ARM API'sine yönelik bir HTTP isteği kullanabilirsiniz.

  • komutunu kullanarak az aks nodepool add çok örnekli bir GPU düğüm havuzu oluşturun ve GPU örneği profilini belirtin. Aşağıdaki örnek, MIG uyumlu GPU VM boyutuna Standard_ND96asr_v4 sahip bir düğüm havuzu oluşturur.

    az aks nodepool add \
        --name aksMigNode \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --node-vm-size Standard_ND96asr_v4 \
        --node-count 1 \
        --gpu-instance-profile MIG1g
    

Çok örnekli GPU (MIG) stratejisini belirleme

NVIDIA eklentilerini yüklemeden önce, GPU bölümleme için hangi çok örnekli GPU (MIG) stratejisinin kullanılacağını belirtmeniz gerekir: Tek strateji veya Karma strateji. İki strateji, CPU iş yüklerini yürütme şeklinizi değil GPU kaynaklarının nasıl görüntüleneceğini etkiler.

  • Tek strateji: Tek strateji, her GPU örneğini GPU olarak ele alır. Bu stratejiyi kullanırsanız GPU kaynakları olarak nvidia.com/gpu: 1görüntülenir.
  • Karma strateji: Karma strateji, GPU örneklerini ve GPU örneği profilini kullanıma sunar. Bu stratejiyi kullanırsanız GPU kaynağı olarak nvidia.com/mig1g.5gb: 1görüntülenir.

NVIDIA cihaz eklentisini ve GPU özellik bulma (GFD) bileşenlerini yükleme

  1. MIG stratejinizi ortam değişkeni olarak ayarlayın. Tek veya karma strateji kullanabilirsiniz.

    # Single strategy
    export MIG_STRATEGY=single
    
    # Mixed strategy
    export MIG_STRATEGY=mixed
    
  2. NVIDIA cihaz eklentisi helm deposunu `helm repo add` ve `helm repo update` komutlarını kullanarak ekleyin.

    helm repo add nvdp https://nvidia.github.io/k8s-device-plugin
    helm repo update
    
  3. komutunu kullanarak NVIDIA cihaz eklentisini helm install yükleyin.

    helm install nvdp nvdp/nvidia-device-plugin \
    --version=0.17.0 \
    --set migStrategy=${MIG_STRATEGY} \
    --set gfd.enabled=true \
    --namespace nvidia-device-plugin \
    --create-namespace
    

Not

NVIDIA cihaz eklentisinin Helm yüklemesi, Kubernetes cihaz eklentisini ve GFD depolarını birleştirir. AKS tarafından yönetilen çok örnekli GPU kullanılırken GFD yazılım bileşeninin ayrı helm yüklemesi önerilmez.

Çok örnekli GPU özelliğini onaylama

  1. kubectl bağlantısını doğrulamak için kubectl get komutunu kullanarak küme düğümlerinin listesini döndürün.

    kubectl get nodes -o wide
    
  2. komutunu kullanarak düğümün çok örnekli GPU özelliğine kubectl describe node sahip olduğunu onaylayın. Aşağıdaki örnek komut, GPU örneği profili olarak MIG1g kullanan aksMigNode adlı düğümü açıklar.

    kubectl describe node aksMigNode
    

    Çıkışınız aşağıdaki örnek çıkışa benzemelidir:

    # Single strategy output
    Allocatable:
        nvidia.com/gpu: 56
    
    # Mixed strategy output
    Allocatable:
        nvidia.com/mig-1g.5gb: 56
    

Çalışma zamanlama

Aşağıdaki örnekler, sürümü 12.1.1 olan CUDA temel görüntü Ubuntu 22.04 için hazırlanmıştır, olarak etiketlenmiştir 12.1.1-base-ubuntu22.04.

Tek strateji

  1. adlı single-strategy-example.yaml bir dosya oluşturun ve aşağıdaki bildirimde kopyalayın.

    apiVersion: v1
    kind: Pod
    metadata:
      name: nvidia-single
    spec:
      containers:
      - name: nvidia-single
        image: nvidia/cuda:12.1.1-base-ubuntu22.04
        command: ["/bin/sh"]
        args: ["-c","sleep 1000"]
        resources:
          limits:
            "nvidia.com/gpu": 1
    
  2. komutunu kullanarak uygulamayı dağıtın kubectl apply ve YAML bildiriminizin adını belirtin.

    kubectl apply -f single-strategy-example.yaml
    
  3. komutunu kullanarak kubectl exec ayrılmış GPU cihazlarını doğrulayın. Bu komut, küme düğümlerinin listesini döndürür.

    kubectl exec nvidia-single -- nvidia-smi -L
    

    Aşağıdaki örnek, başarıyla oluşturulan dağıtımları ve hizmetleri gösteren çıkışa benzer:

    GPU 0: NVIDIA A100 40GB PCIe (UUID: GPU-48aeb943-9458-4282-da24-e5f49e0db44b)
    MIG 1g.5gb     Device  0: (UUID: MIG-fb42055e-9e53-5764-9278-438605a3014c)
    MIG 1g.5gb     Device  1: (UUID: MIG-3d4db13e-c42d-5555-98f4-8b50389791bc)
    MIG 1g.5gb     Device  2: (UUID: MIG-de819d17-9382-56a2-b9ca-aec36c88014f)
    MIG 1g.5gb     Device  3: (UUID: MIG-50ab4b32-92db-5567-bf6d-fac646fe29f2)
    MIG 1g.5gb     Device  4: (UUID: MIG-7b6b1b6e-5101-58a4-b5f5-21563789e62e)
    MIG 1g.5gb     Device  5: (UUID: MIG-14549027-dd49-5cc0-bca4-55e67011bd85)
    MIG 1g.5gb     Device  6: (UUID: MIG-37e055e8-8890-567f-a646-ebf9fde3ce7a)
    

Karma strateji

  1. adlı mixed-strategy-example.yaml bir dosya oluşturun ve aşağıdaki bildirimde kopyalayın.

    apiVersion: v1
    kind: Pod
    metadata:
      name: nvidia-mixed
    spec:
      containers:
      - name: nvidia-mixed
        image: nvidia/cuda:12.1.1-base-ubuntu22.04
        command: ["/bin/sh"]
        args: ["-c","sleep 100"]
        resources:
          limits:
            "nvidia.com/mig-1g.5gb": 1
    
  2. komutunu kullanarak uygulamayı dağıtın kubectl apply ve YAML bildiriminizin adını belirtin.

    kubectl apply -f mixed-strategy-example.yaml
    
  3. komutunu kullanarak kubectl exec ayrılmış GPU cihazlarını doğrulayın. Bu komut, küme düğümlerinin listesini döndürür.

    kubectl exec nvidia-mixed -- nvidia-smi -L
    

    Aşağıdaki örnek, başarıyla oluşturulan dağıtımları ve hizmetleri gösteren çıkışa benzer:

    GPU 0: NVIDIA A100 40GB PCIe (UUID: GPU-48aeb943-9458-4282-da24-e5f49e0db44b)
    MIG 1g.5gb     Device  0: (UUID: MIG-fb42055e-9e53-5764-9278-438605a3014c)
    

Önemli

latest CUDA görüntülerinin etiketi Docker Hub'da kullanım dışı bırakıldı. En son görüntüler ve ilgili etiketler için lütfen NVIDIA'nın deposuna bakın.

Sorun giderme

Düğüm havuzunu oluşturduktan sonra çok örnekli GPU özelliğini görmüyorsanız API sürümünün 2021-08-01 tarihinden eski olmadığını onaylayın.

Sonraki adımlar

Azure Kubernetes Service'te GPU'lar hakkında daha fazla bilgi edinmek için bkz: