Sdílet prostřednictvím


Nasazení instancí kontejneru, které používají prostředky GPU

Důležité

Tento produkt je vyřazen od 14. července 2025.

Pokud chcete ve službě Azure Container Instances spouštět určité výpočetní úlohy, nasaďte skupiny kontejnerů s prostředky grafických procesorů (GPU). Instance kontejnerů ve skupině mají přístup k jednomu nebo několika grafickým procesorům NVIDIA Tesla při spouštění úloh kontejnerů, jako je architektura CUDA (Compute Unified Device Architecture) a aplikace hlubokého učení.

Tento článek ukazuje, jak přidat prostředky GPU při nasazení skupiny kontejnerů pomocí souboru YAML nebo šablony Azure Resource Manageru (šablona ARM). Prostředky GPU můžete také zadat při nasazování instance kontejneru pomocí webu Azure Portal.

Požadavky

Z důvodu některých aktuálních omezení nemusí být všechny žádosti o zvýšení limitu schváleny.

Pokud chcete použít tuto verzi pro nasazení produkčního kontejneru, vytvořte žádost o podporu Azure , která zvýší limit.

Omezení verze Preview

Ve verzi Preview platí následující omezení při použití prostředků GPU ve skupinách kontejnerů.

Dostupnost oblastí

Oblasti Operační systém Dostupné skladové položky GPU
USA – východ, Západní Evropa, USA – západ 2, Jihovýchodní Asie, Indie – střed Linux V100

Podpora bude přidána pro další oblasti v průběhu času.

Podporované typy operačního systému: pouze Linux.

Další omezení: Při nasazování skupiny kontejnerů do virtuální sítě nemůžete používat prostředky GPU.

O prostředcích GPU

Počet a verze

Pokud chcete použít GPU v instanci kontejneru, zadejte prostředek GPU s následujícími informacemi:

  • Počet: Počet GPU je jeden, dva nebo čtyři.

  • Verze: Verze GPU je V100. Každá verze odpovídá NVIDIA Tesla GPU v jedné z těchto následujících Rodin virtuálních počítačů s podporou GPU Azure:

    Version Řada virtuálních počítačů
    V100 NCv3

Maximální počet prostředků na skladovou položku

Operační systém Skladová položka GPU Počet GPU Max CPU (maximální využití procesoru) Maximální paměť (GB) Úložiště (GB)
Linux V100 1 6 112 50
Linux V100 2 12 224 50
Linux V100 4 24 448 50

Při nasazování prostředků GPU nastavte prostředky procesoru a paměti vhodné pro úlohu až do maximálních hodnot zobrazených v předchozí tabulce. Tyto hodnoty jsou aktuálně větší než prostředky procesoru a paměti dostupné ve skupinách kontejnerů bez prostředků GPU.

Důležité

Výchozí limity předplatného (kvóty) pro prostředky GPU se liší podle verze. Výchozí omezení procesoru pro verze V100 jsou zpočátku nastavená na 0. Pokud chcete požádat o zvýšení dostupné oblasti, odešlete žádost o podporu Azure.

Co je potřeba vědět

  • Čas nasazení: Vytvoření skupiny kontejnerů obsahující prostředky GPU trvá až 8 až 10 minut. K zřízení a konfiguraci virtuálního počítače s GPU v Azure je potřeba více času.

  • Ceny: Podobně jako u skupin kontejnerů bez prostředků GPU se Azure účtuje za prostředky, které se spotřebovávají po dobu trvání skupiny kontejnerů s prostředky GPU. Doba trvání se vypočítá od okamžiku, kdy se stáhne image vašeho prvního kontejneru, dokud se skupina kontejnerů neukončí. Nezahrnuje čas nasazení skupiny kontejnerů.

    Další informace najdete v podrobnostech o cenách.

  • Ovladače CUDA: Kontejnerové instance s GPU prostředky jsou předem vybaveny ovladači NVIDIA CUDA a kontejnerovými runtime, což umožňuje použití kontejnerových imagí vyvinutých pro úlohy CUDA.

    V této fázi podporujeme až CUDA 11. Například pro soubor Dockeru můžete použít následující základní image:

    Pokud chcete zvýšit spolehlivost při použití veřejné image kontejneru z Docker Hubu, naimportujte a spravujte image v privátním registru kontejnerů Azure. Potom aktualizujte soubor Dockeru tak, aby používal privátně spravovaný základní obraz. Přečtěte si další informace o práci s veřejnými imagemi.

Příklad YAML

Jedním ze způsobů, jak přidat prostředky GPU, je nasadit skupinu kontejnerů pomocí souboru YAML. Zkopírujte následující YAML do nového souboru s názvem gpu-deploy-aci.yaml a pak soubor uložte. Tento YAML vytvoří skupinu kontejnerů s názvem gpucontainergroup , která určuje instanci kontejneru s GPU V100. Instance spustí ukázkovou aplikaci sčítání vektorů CUDA. Požadavky na prostředky jsou dostatečné ke spuštění úlohy.

Poznámka:

Následující příklad používá image veřejného kontejneru. Pokud chcete zvýšit spolehlivost, importujte a spravujte image v privátním registru kontejneru Azure. Pak aktualizujte YAML tak, aby používala soukromě spravovanou základní image. Přečtěte si další informace o práci s veřejnými imagemi.

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

Nasaďte skupinu kontejnerů pomocí příkazu az container create a zadejte název souboru YAML pro --file parametr. Musíte zadat název skupiny prostředků a umístění pro skupinu kontejnerů, například eastus, která podporuje prostředky GPU.

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

Dokončení nasazení trvá několik minut. Kontejner se pak spustí a provede operaci sčítání vektorů pomocí CUDA. Spuštěním příkazu az container logs zobrazte výstup protokolu:

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

Výstup:

[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

Příklad šablony Resource Manageru

Dalším způsobem, jak nasadit skupinu kontejnerů s prostředky GPU, je použití šablony ARM. Začněte vytvořením souboru s názvem gpudeploy.json. Pak do něj zkopírujte následující KÓD JSON. Tento příklad nasadí instanci kontejneru s GPU V100, která spouští trénovací úlohu TensorFlow pro datovou sadu MNIST. Požadavky na prostředky jsou dostatečné ke spuštění úlohy.

{
    "$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"
        }
      }
    ]
}

Nasaďte šablonu pomocí příkazu az deployment group create . Musíte zadat název skupiny prostředků, která byla vytvořena v oblasti, například eastus , která podporuje prostředky GPU.

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

Dokončení nasazení trvá několik minut. Pak se kontejner spustí a spustí úlohu TensorFlow. Spuštěním příkazu az container logs zobrazte výstup protokolu:

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

Výstup:

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

Čištění zdrojů

Vzhledem k tomu, že používání prostředků GPU může být nákladné, ujistěte se, že vaše kontejnery neběží neočekávaně dlouho. Monitorujte kontejnery na webu Azure Portal. Stav skupiny kontejnerů můžete také zkontrolovat pomocí příkazu az container show . Například:

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

Po dokončení práce s instancemi kontejneru, které jste vytvořili, je odstraňte pomocí následujících příkazů:

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