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

Nvidia'nın A100 GPU'su yediye kadar bağımsız örneğe ayrılabilir. Her örneğin kendi belleği ve Stream Multiprocessor (SM) vardır. Nvidia A100 hakkında daha fazla bilgi için bkz . Nvidia A100 GPU.

Bu makalede, Azure Kubernetes Service (AKS) kümesinde ç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 bkz . Helm'i Yükleme.
  • Küme Otomatik Ölçeklendiricisi'ni çok örnekli düğüm havuzlarıyla kullanamazsınız.

GPU örneği profilleri

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

Profil adı SM'nin kesri Bellek kesri Oluşturulan örnek sayısı
MIG 1g.5gb 1/7 1/8 7
MIG 2g.10gb 2/7 2/8 3
MIG 3g.20gb 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 (Bilgi işlem kaynağı) ve 5 gb belleğe sahip olduğunu gösterir. Bu durumda GPU yedi örneğe ayrılmıştır.

Bu örnek boyutu için kullanılabilir GPU örneği profilleri , , MIG2gMIG3g, MIG4gve MIG7gdeğerlerini içerirMIG1g.

Önemli

Düğüm havuzu oluşturulduktan sonra uygulanan GPU örneği 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\
        --node-count 1 \
        --generate-ssh-keys
    

Ç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ğini kullanabilirsiniz.

  • komutunu kullanarak az aks nodepool add çok örnekli bir GPU düğüm havuzu oluşturun ve GPU örneği profilini belirtin.

    az aks nodepool add \
        --name mignode \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --node-vm-size Standard_ND96asr_v4 \
        --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 bulmayı 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. ve helm repo update komutlarını kullanarak Nvidia cihaz eklentisini ve GPU özellik bulma helm depolarını helm repo add ekleyin.

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

    helm install \
    --version=0.14.0 \
    --generate-name \
    --set migStrategy=${MIG_STRATEGY} \
    nvdp/nvidia-device-plugin
    
  4. komutunu kullanarak helm install GPU özellik bulmayı yükleyin.

    helm install \
    --version=0.2.0 \
    --generate-name \
    --set migStrategy=${MIG_STRATEGY} \
    nvgfd/gpu-feature-discovery
    

Çok örnekli GPU özelliğini onaylama

  1. komutunu kullanarak AKS kümenize bağlanacak şekilde az aks get-credentials yapılandırınkubectl.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. Küme düğümlerinin listesini döndürmek için komutunu kullanarak kubectl get kümenize bağlantıyı doğrulayın.

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

    kubectl describe node mignode
    

    Çı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, olarak etiketlenmiş 12.1.1-base-ubuntu22.04Ubuntu22.04 için cuda temel görüntü sürümü 12.1.1'i temel alır.

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'den eski olmadığını onaylayın.

Sonraki adımlar

AKS düğüm havuzları hakkında daha fazla bilgi için bkz . AKS'de küme için düğüm havuzlarını yönetme.