GPU kaynaklarını kullanan kapsayıcı örneklerini dağıtın

Önemli

Bu ürün 14 Temmuz 2025 itibarıyla kullanımdan kaldırılmıştır.

Azure Container Instances'ta işlem yoğunluklu bazı iş yüklerini çalıştırmak için kapsayıcı gruplarınızıgrafik işleme birimi (GPU) kaynaklarıyla dağıtın. Gruptaki kapsayıcı örnekleri, işlem birleşik cihaz mimarisi (CUDA) ve derin öğrenme uygulamaları gibi kapsayıcı iş yüklerini çalıştırırken bir veya daha fazla NVIDIA Tesla GPU'ya erişebilir.

Bu makalede YAML dosyası veya Azure Resource Manager şablonu (ARM şablonu) kullanarak bir kapsayıcı grubu dağıttığınızda GPU kaynaklarının nasıl ekleneceği gösterilmektedir. Azure portalını kullanarak bir kapsayıcı örneği dağıtırken GPU kaynaklarını da belirtebilirsiniz.

Önkoşullar

Bazı geçerli sınırlamalar nedeniyle tüm sınır artışı istekleri onaylanmayabilir.

Üretim kapsayıcısı dağıtımlarınız için bu sürümü kullanmak istiyorsanız, sınırı artırmak için bir Azure Desteği isteği oluşturun.

Önizleme sınırlamaları

Önizlemede, kapsayıcı gruplarında GPU kaynaklarını kullandığınızda aşağıdaki sınırlamalar geçerlidir.

Bölgesel kullanılabilirlik

Bölgeler İşletim sistemi Kullanılabilir GPU SKU'ları
Doğu ABD, Batı Avrupa, Batı ABD 2, Güneydoğu Asya, Orta Hindistan Linux V100

Zaman içinde daha fazla bölge için destek eklenecektir.

Desteklenen işletim sistemi türleri: Yalnızca Linux.

Diğer sınırlamalar: Bir kapsayıcı grubunu sanal ağa dağıtırken GPU kaynaklarını kullanamazsınız.

GPU kaynakları hakkında

Sayı ve sürüm

Gpu'ları kapsayıcı örneğinde kullanmak için aşağıdaki bilgileri içeren bir GPU kaynağı belirtin:

  • Sayı: GPU sayısı bir, iki veya dört'tür.

  • Sürüm: GPU sürümü V100'dür. Her sürüm, aşağıdaki Azure GPU özellikli VM ailelerinden birindeki NVIDIA Tesla GPU ile eşleşir.

    Sürüm VM ailesi
    V100 NCv3

SKU başına en fazla kaynak sayısı

İşletim sistemi GPU SKU'su GPU sayısı Maksimum CPU Maksimum bellek (GB) Depolama (GB)
Linux V100 1 6 112 50
Linux V100 2 12 224 50
Linux V100 4 24 448 50

GPU kaynaklarını dağıttığınızda, önceki tabloda gösterilen en yüksek değerlere kadar iş yüküne uygun CPU ve bellek kaynaklarını ayarlayın. Bu değerler şu anda GPU kaynakları olmayan kapsayıcı gruplarında kullanılabilen CPU ve bellek kaynaklarından daha büyüktür.

Önemli

GPU kaynakları için varsayılan abonelik sınırları (kotalar) sürüme göre farklılık gösterir. V100 sürümleri için varsayılan CPU sınırları başlangıçta 0 olarak ayarlanır. Kullanılabilir bir bölgede artış istemek için bir Azure Destek isteği gönderin.

Bilinmesi gerekenler

  • Dağıtım süresi: GPU kaynaklarını içeren bir kapsayıcı grubunun oluşturulması 8-10 dakika kadar sürer. Azure'da GPU sanal makinesi (VM) sağlamak ve yapılandırmak için daha fazla zaman gerekir.

  • Fiyatlandırma: GPU kaynakları olmayan kapsayıcı gruplarına benzer şekilde Azure, GPU kaynaklarına sahip bir kapsayıcı grubunun süresi boyunca tüketilen kaynaklar için fatura oluşturur. Süre, ilk kapsayıcınızın görüntüsünün çekilmesinden kapsayıcı grubunun sonlanmasına kadar hesaplanır. Kapsayıcı grubunu dağıtma süresini içermez.

    Daha fazla bilgi için bkz . fiyatlandırma ayrıntıları.

  • CUDA sürücüleri: GPU kaynaklarına sahip kapsayıcı örnekleri, CUDA iş yükleri için geliştirilen kapsayıcı görüntülerini kullanabilmeniz için NVIDIA CUDA sürücüleri ve kapsayıcı çalışma zamanları ile önceden sağlanır.

    Bu aşamada CUDA 11'i destekliyoruz. Örneğin, Docker dosyanız için aşağıdaki temel görüntüleri kullanabilirsiniz:

    Docker Hub'dan genel kapsayıcı görüntüsü kullandığınızda güvenilirliği artırmak için görüntüyü özel bir Azure kapsayıcı kayıt defterinde içeri aktarın ve yönetin. Ardından Docker dosyanızı özel olarak yönetilen temel görüntünüzü kullanacak şekilde güncelleştirin. Genel görüntülerle çalışma hakkında daha fazla bilgi edinin.

YAML örneği

GPU kaynakları eklemenin bir yolu , YAML dosyası kullanarak bir kapsayıcı grubu dağıtmaktır. Aşağıdaki YAML'yi gpu-deploy-aci.yaml adlı yeni bir dosyaya kopyalayın ve dosyayı kaydedin. Bu YAML, V100 GPU'ya sahip bir kapsayıcı örneğini belirten adlı gpucontainergroup bir kapsayıcı grubu oluşturur. Örnek, örnek bir CUDA vektör ekleme uygulaması çalıştırır. Kaynak istekleri iş yükünü çalıştırmak için yeterlidir.

Uyarı

Aşağıdaki örnekte genel kapsayıcı imajı kullanılır. Güvenilirliği artırmak için görüntüyü özel bir Azure kapsayıcı kayıt defterinde içeri aktarın ve yönetin. Ardından YAML'nizi özel olarak yönetilen temel görüntünüzü kullanacak şekilde güncelleştirin. Genel görüntülerle çalışma hakkında daha fazla bilgi edinin.

additional_properties: {}
apiVersion: '2021-09-01'
name: gpucontainergroup
properties:
  containers:
  - name: gpucontainer
    properties:
      image: k8s-gcrio.azureedge.net/cuda-vector-add:v0.1
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
          gpu:
            count: 1
            sku: V100
  osType: Linux
  restartPolicy: OnFailure

kapsayıcı grubunu az container create komutuyla dağıtın ve parametresi için --file YAML dosya adını belirtin. Kaynak grubunun adını ve kapsayıcı grubu için GPU kaynaklarını destekleyen eastus gibi bir konum sağlamanız gerekir.

az container create --resource-group myResourceGroup --file gpu-deploy-aci.yaml --location eastus

Dağıtımın tamamlanması birkaç dakika sürer. Ardından kapsayıcı bir CUDA vektör ekleme işlemi başlatır ve çalıştırır. Günlük çıkışını görüntülemek için az container logs komutunu çalıştırın:

az container logs --resource-group myResourceGroup --name gpucontainergroup --container-name gpucontainer

Output:

[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done

Resource Manager şablon örneği

GPU kaynaklarıyla kapsayıcı grubu dağıtmanın bir diğer yolu da ARM şablonu kullanmaktır. adlı gpudeploy.jsonbir dosya oluşturarak başlayın. Ardından aşağıdaki JSON dosyasını içine kopyalayın. Bu örnek, MNIST veri kümesine karşı TensorFlow eğitim işi çalıştıran V100 GPU'ya sahip bir kapsayıcı örneği başlatır. Kaynak istekleri iş yükünü çalıştırmak için yeterlidir.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      "containerGroupName": {
        "type": "string",
        "defaultValue": "gpucontainergrouprm",
        "metadata": {
          "description": "Container Group name."
        }
      }
    },
    "variables": {
      "containername": "gpucontainer",
      "containerimage": "mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu"
    },
    "resources": [
      {
        "name": "[parameters('containerGroupName')]",
        "type": "Microsoft.ContainerInstance/containerGroups",
        "apiVersion": "2021-09-01",
        "location": "[resourceGroup().location]",
        "properties": {
            "containers": [
            {
              "name": "[variables('containername')]",
              "properties": {
                "image": "[variables('containerimage')]",
                "resources": {
                  "requests": {
                    "cpu": 4.0,
                    "memoryInGb": 12.0,
                    "gpu": {
                        "count": 1,
                        "sku": "V100"
                  }
                }
              }
            }
          }
        ],
        "osType": "Linux",
        "restartPolicy": "OnFailure"
        }
      }
    ]
}

Az deployment group create komutuyla şablonu dağıtın. GPU kaynaklarını destekleyen eastus gibi bir bölgede oluşturulmuş bir kaynak grubunun adını sağlamanız gerekir.

az deployment group create --resource-group myResourceGroup --template-file gpudeploy.json

Dağıtımın tamamlanması birkaç dakika sürer. Ardından kapsayıcı başlatılır ve TensorFlow görevini çalıştırır. Günlük çıkışını görüntülemek için az container logs komutunu çalıştırın:

az container logs --resource-group myResourceGroup --name gpucontainergrouprm --container-name gpucontainer

Output:

2018-10-25 18:31:10.155010: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
2018-10-25 18:31:10.305937: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Found device 0 with properties:
name: Tesla V100 major: 3 minor: 7 memoryClockRate(GHz): 0.8235
pciBusID: ccb6:00:00.0
totalMemory: 11.92GiB freeMemory: 11.85GiB
2018-10-25 18:31:10.305981: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: Tesla V100, pci bus id: ccb6:00:00.0, compute capability: 3.7)
2018-10-25 18:31:14.941723: I tensorflow/stream_executor/dso_loader.cc:139] successfully opened CUDA library libcupti.so.8.0 locally
Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.
Extracting /tmp/tensorflow/input_data/train-images-idx3-ubyte.gz
Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.
Extracting /tmp/tensorflow/input_data/train-labels-idx1-ubyte.gz
Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.
Extracting /tmp/tensorflow/input_data/t10k-images-idx3-ubyte.gz
Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.
Extracting /tmp/tensorflow/input_data/t10k-labels-idx1-ubyte.gz
Accuracy at step 0: 0.097
Accuracy at step 10: 0.6993
Accuracy at step 20: 0.8208
Accuracy at step 30: 0.8594
...
Accuracy at step 990: 0.969
Adding run metadata for 999

Kaynakları temizleme

GPU kaynaklarını kullanmak pahalı olabileceğinden kapsayıcılarınızın uzun süre beklenmedik bir şekilde çalışmadığından emin olun. Azure portalında kapsayıcılarınızı izleyin. Az container show komutuyla bir kapsayıcı grubunun durumunu da de kontrol edebilirsiniz. Örneğin:

az container show --resource-group myResourceGroup --name gpucontainergroup --output table

Oluşturduğunuz kapsayıcı örnekleriyle çalışmayı bitirdiğinizde, bunları aşağıdaki komutlarla silin:

az container delete --resource-group myResourceGroup --name gpucontainergroup -y
az container delete --resource-group myResourceGroup --name gpucontainergrouprm -y