Udostępnij przez


Wdrażanie wystąpień kontenerów korzystających z zasobów procesora GPU

Ważne

Ten produkt został wycofany od 14 lipca 2025 r.

Aby uruchamiać niektóre obciążenia intensywnie korzystające z obliczeń w usłudze Azure Container Instances, wdróż grupy kontenerów przy użyciu zasobów jednostki przetwarzania grafiki (GPU). Wystąpienia kontenerów w grupie mogą uzyskiwać dostęp do co najmniej jednego procesora GPU NVIDIA Tesla podczas uruchamiania obciążeń kontenerów, takich jak obliczenia ujednoliconej architektury urządzenia (CUDA) i aplikacji uczenia głębokiego.

W tym artykule przedstawiono sposób dodawania zasobów procesora GPU podczas wdrażania grupy kontenerów przy użyciu pliku YAML lub szablonu usługi Azure Resource Manager (szablonu usługi ARM). Można również określić zasoby GPU podczas wdrażania wystąpienia kontenera przy użyciu portalu Azure.

Wymagania wstępne

Ze względu na niektóre bieżące ograniczenia wszystkie żądania zwiększenia limitu mogą nie zostać zatwierdzone.

Jeśli chcesz użyć tej wersji dla wdrożeń kontenerów produkcyjnych, utwórz wniosek o pomoc techniczną platformy Azure , aby zwiększyć limit.

Ograniczenia wersji zapoznawczej

W wersji zapoznawczej następujące ograniczenia mają zastosowanie w przypadku korzystania z zasobów procesora GPU w grupach kontenerów.

Dostępność regionów

Regiony System operacyjny Dostępne jednostki SKU procesora GPU
Wschodnie stany USA, Europa Zachodnia, Zachodnie stany USA 2, Azja Południowo-Wschodnia, Indie Środkowe Linux V100

Obsługa zostanie dodana dla większej liczby regionów z czasem.

Obsługiwane typy systemu operacyjnego: tylko system Linux.

Inne ograniczenia: nie można używać zasobów procesora GPU podczas wdrażania grupy kontenerów w sieci wirtualnej.

Informacje o zasobach procesora GPU

Liczba i wersja

Aby użyć GPU w wystąpieniu kontenera, określ zasób GPU z następującymi informacjami:

  • Liczba: liczba procesorów GPU to jeden, dwa lub cztery.

  • Wersja: wersja procesora GPU to V100. Każda wersja odpowiada GPU NVIDIA Tesla w jednej z następujących rodzin maszyn wirtualnych z obsługą GPU Azure:

    wersja Rodzina maszyn wirtualnych
    V100 NCv3

Maksymalna liczba zasobów na jednostkę SKU

System operacyjny GPU kod produktu Liczba procesorów GPU CPU (maksymalnie) Maksymalna ilość pamięci (GB) Pamięć (GB)
Linux V100 1 6 112 50
Linux V100 2 12 224 50
Linux V100 4 24 448 50

Podczas wdrażania zasobów procesora GPU należy ustawić zasoby procesora CPU i pamięci odpowiednie dla obciążenia, maksymalnie wartości pokazane w poprzedniej tabeli. Te wartości są obecnie większe niż zasoby procesora CPU i pamięci dostępne w grupach kontenerów bez zasobów procesora GPU.

Ważne

Domyślne limity subskrypcji (limity przydziału ) dla zasobów procesora GPU różnią się w zależności od wersji. Domyślne limity procesora CPU dla wersji V100 są początkowo ustawione na 0. Aby zażądać zwiększenia dostępnego regionu, prześlij wniosek o pomoc techniczną platformy Azure.

Fakty, które trzeba znać

  • Czas wdrożenia: tworzenie grupy kontenerów zawierającej zasoby procesora GPU trwa do 8 do 10 minut. Do aprowizowania i konfigurowania maszyny wirtualnej procesora GPU na platformie Azure jest wymagany więcej czasu.

  • Cennik: Podobnie jak w przypadku grup kontenerów bez zasobów procesora GPU, platforma Azure rozlicza zasoby, które są używane w czasie trwania grupy kontenerów z zasobami procesora GPU. Czas trwania jest obliczany od czasu ściągnięcia obrazu pierwszego kontenera do momentu zakończenia grupy kontenerów. Nie obejmuje czasu na wdrożenie grupy kontenerów.

    Aby uzyskać więcej informacji, zobacz szczegóły cennika.

  • Sterowniki CUDA: Wystąpienia kontenerów z zasobami GPU są wstępnie przygotowane za pomocą sterowników NVIDIA CUDA i środowisk uruchomieniowych kontenerów, dzięki czemu można używać obrazów kontenerów opracowanych na potrzeby obciążeń CUDA.

    Na tym etapie obsługujemy CUDA aż do wersji 11. Na przykład możesz użyć następujących obrazów podstawowych dla pliku platformy Docker:

    Aby zwiększyć niezawodność podczas korzystania z publicznego obrazu kontenera z usługi Docker Hub, zaimportuj obraz i zarządzaj nim w prywatnym rejestrze kontenerów platformy Azure. Następnie zaktualizuj plik Docker, aby używał prywatnie zarządzanego obrazu podstawowego. Dowiedz się więcej o pracy z obrazami publicznymi.

Przykład YAML

Jednym ze sposobów dodawania zasobów procesora GPU jest wdrożenie grupy kontenerów przy użyciu pliku YAML. Skopiuj następujący kod YAML do nowego pliku o nazwie gpu-deploy-aci.yaml, a następnie zapisz plik. Ten kod YAML tworzy grupę kontenerów o nazwie gpucontainergroup, która określa instancję kontenera z GPU V100. Wystąpienie uruchamia przykładową aplikację dodawania wektora CUDA. Żądania zasobów są wystarczające do uruchomienia zadania.

Uwaga

W poniższym przykładzie użyto obrazu kontenera publicznego. Aby zwiększyć niezawodność, zaimportuj obraz i zarządzaj nim w prywatnym rejestrze kontenerów platformy Azure. Następnie zaktualizuj kod YAML, aby używał twojego prywatnie zarządzanego obrazu bazowego. Dowiedz się więcej o pracy z obrazami publicznymi.

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

Wdróż grupę kontenerów za pomocą polecenia az container create i określ nazwę pliku YAML dla parametru --file . Musisz podać nazwę grupy zasobów i lokalizację grupy kontenerów, taką jak eastus, która obsługuje zasoby procesora GPU.

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

Przeprowadzenie wdrożenia zajmuje kilka minut. Następnie kontener uruchamia operację dodawania wektorów CUDA. Uruchom polecenie az container logs, aby wyświetlić wyniki logów:

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

Wyjście:

[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

Przykład szablonu usługi Resource Manager

Innym sposobem wdrożenia grupy kontenerów z zasobami GPU jest użycie szablonu ARM. Zacznij od utworzenia pliku o nazwie gpudeploy.json. Następnie skopiuj do niego następujący kod JSON. W tym przykładzie wdrażane jest wystąpienie kontenera z procesorem V100 GPU, które wykonuje zadanie szkoleniowe TensorFlow na podstawie zestawu danych MNIST. Żądania zasobów są wystarczające do uruchomienia zadania.

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

Wdróż szablon używając az deployment group create. Musisz podać nazwę grupy zasobów, która została utworzona w regionie, takim jak eastus , który obsługuje zasoby procesora GPU.

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

Przeprowadzenie wdrożenia zajmuje kilka minut. Następnie kontener startuje i wykonuje zadanie TensorFlow. Uruchom polecenie az container logs, aby wyświetlić wyniki logów:

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

Wyjście:

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

Czyszczenie zasobów

Ponieważ korzystanie z zasobów procesora GPU może być kosztowne, upewnij się, że kontenery nie działają nieoczekiwanie przez długi czas. Monitorowanie kontenerów w witrynie Azure Portal. Możesz również sprawdzić stan grupy kontenerów za pomocą polecenia az container show . Na przykład:

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

Po zakończeniu pracy z utworzonymi wystąpieniami kontenera usuń je za pomocą następujących poleceń:

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