GPU-erőforrásokat használó tárolópéldányok üzembe helyezése

Ha bizonyos nagy számítási igényű számítási feladatokat szeretne futtatni Azure Container Instances, helyezze üzembe a tárolócsoportokatGPU-erőforrásokkal. A csoport tárolópéldányai hozzáférhetnek egy vagy több NVIDIA Tesla GPU-hoz, miközben tárolóalapú számítási feladatokat futtatnak, például CUDA- és mélytanulási alkalmazásokat.

Ez a cikk bemutatja, hogyan adhat hozzá GPU-erőforrásokat, amikor YAML-fájl vagy Resource Manager sablon használatával helyez üzembe egy tárolócsoportot. GPU-erőforrásokat is megadhat, amikor tárolópéldányt helyez üzembe a Azure Portal használatával.

Fontos

Ez a funkció jelenleg előzetes verzióban érhető el, és bizonyos korlátozások érvényesek. Az előzetes verziók azzal a feltétellel érhetők el, hogy Ön beleegyezik a kiegészítő használati feltételekbe. A szolgáltatás néhány eleme megváltozhat a nyilvános rendelkezésre állás előtt.

Előfeltételek

Megjegyzés

Néhány jelenlegi korlátozás miatt nem minden korlátnövelési kérés garantáltan jóvá lesz hagyva.

  • Ha ezt a termékváltozatot szeretné használni az éles tárolók üzemelő példányaihoz, hozzon létre egy Azure-támogatási kérést a korlát növeléséhez.

Előzetes verzió korlátozásai

Az előzetes verzióban a következő korlátozások vonatkoznak a GPU-erőforrások tárolócsoportokban való használatára.

Régiónkénti elérhetőség

Régiók Operációs rendszer Elérhető GPU-termékváltozatok
USA keleti régiója, Nyugat-Európa, USA 2. nyugati régiója Linux K80, P100, V100
Délkelet-Ázsia Linux P100, V100
Közép-India Linux V100
Észak-Európa Linux K80

Idővel további régiók is támogatást kapnak.

Támogatott operációsrendszer-típusok: csak Linux

További korlátozások: A GPU-erőforrások nem használhatók tárolócsoportok virtuális hálózaton való üzembe helyezésekor.

A GPU-erőforrások ismertetése

Darabszám és termékváltozat

Ha GPU-kat szeretne használni egy tárolópéldányban, adjon meg egy GPU-erőforrást a következő információkkal:

  • Darabszám – A GPU-k száma: 1, 2 vagy 4.

  • SKU – A GPU-termékváltozat: K80, P100 vagy V100. Minden termékváltozat az NVIDIA Tesla GPU-ra képezi le az alábbi Azure GPU-kompatibilis virtuálisgép-családok egyikét:

    Termékváltozat Virtuálisgép-család
    K80 NC
    P100 NCv2
    V100 NCv3

Erőforrások maximális száma termékváltozatonként

Operációs rendszer GPU-termékváltozat GPU-k száma Max CPU (Max. CPU) Maximális memória (GB) Tárterület (GB)
Linux K80 1 6 56 50
Linux K80 2 12 112 50
Linux K80 4 24 224 50
Linux P100 1 6 112 50
Linux P100 2 12 224 50
Linux P100 4 24 448 50
Linux V100 1 6 112 50
Linux V100 2 12 224 50
Linux V100 4 24 448 50

GPU-erőforrások üzembe helyezésekor állítsa be a számítási feladatnak megfelelő CPU- és memória-erőforrásokat az előző táblázatban látható maximális értékekig. Ezek az értékek jelenleg nagyobbak, mint a GPU-erőforrások nélküli tárolócsoportokban elérhető CPU- és memória-erőforrások.

Fontos

A GPU-erőforrások alapértelmezett előfizetési korlátai (kvótái) termékváltozatonként eltérnek. A P100 és a V100 termékváltozatok alapértelmezett CPU-korlátai kezdetben 0-ra vannak állítva. Ha növelni szeretné az elérhető régiót, küldjön egy Azure-támogatás kérelmet.

Tudnivalók

  • Üzembe helyezési idő – GPU-erőforrásokat tartalmazó tárolócsoport létrehozása akár 8–10 percet is igénybe vehet. Ennek az az oka, hogy a GPU-alapú virtuális gép kiépítése és konfigurálása az Azure-ban további időt igényel.

  • Díjszabás – A GPU-erőforrások nélküli tárolócsoportokhoz hasonlóan az Azure számláz a GPU-erőforrásokkal rendelkező tárolócsoportok időtartama alatt felhasznált erőforrásokért. A rendszer az időtartamot az első tároló lemezképének lekérésétől a tárolócsoport leállításáig számítja ki. Nem tartalmazza a tárolócsoport üzembe helyezésének idejét.

    Tekintse meg a díjszabás részleteit.

  • CUDA-illesztőprogramok – A GPU-erőforrásokkal rendelkező tárolópéldányok előre ki vannak építve NVIDIA CUDA-illesztőprogramokkal és tároló-futtatókörnyezetekkel, így használhatja a CUDA számítási feladatokhoz fejlesztett tárolórendszerképeket.

    Ebben a szakaszban a CUDA 11-et támogatjuk. Használhatja például a következő alaprendszerképeket a Dockerfile-hoz:

    Megjegyzés

    A megbízhatóság javítása Docker Hub nyilvános tárolórendszerképek használatakor, importálja és felügyeli a rendszerképet egy privát Azure-tárolóregisztrációs adatbázisban, és frissítse a Dockerfile-t a privátan felügyelt alaprendszerkép használatára. További információ a nyilvános rendszerképek használatával kapcsolatban.

YAML-példa

GPU-erőforrások hozzáadásának egyik módja egy tárolócsoport üzembe helyezése YAML-fájllal. Másolja a következő YAML-t egy gpu-deploy-aci.yaml nevű új fájlba, majd mentse a fájlt. Ez a YAML létrehoz egy gpucontainergroup nevű tárolócsoportot , amely egy K80 GPU-val rendelkező tárolópéldányt határoz meg. A példány egy CUDA-vektor-összeadási alkalmazást futtat. Az erőforrás-kérelmek elegendőek a számítási feladat futtatásához.

Megjegyzés

Az alábbi példa egy nyilvános tárolórendszerképet használ. A megbízhatóság javítása érdekében importálja és kezelje a rendszerképet egy privát Azure-tárolóregisztrációs adatbázisban, és frissítse a YAML-t a privátan felügyelt alaprendszerkép használatára. További információ a nyilvános rendszerképek használatával kapcsolatban.

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: K80
  osType: Linux
  restartPolicy: OnFailure

Helyezze üzembe a tárolócsoportot az az container create paranccsal, és adja meg a --file paraméter YAML-fájlnevét. Meg kell adnia egy erőforráscsoport nevét és a tárolócsoport helyét, például a GPU-erőforrásokat támogató eastusnak .

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

Az üzembe helyezés több percet is igénybe vehet. Ezután a tároló elindít és futtat egy CUDA-vektor-összeadási műveletet. Futtassa az az container logs parancsot a napló kimenetének megtekintéséhez:

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

Kimenet:

[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élda Resource Manager sablonra

A tárolócsoportok GPU-erőforrásokkal való üzembe helyezésének másik módja egy Resource Manager sablon használata. Először hozzon létre egy nevű gpudeploy.jsonfájlt, majd másolja bele a következő JSON-t. Ez a példa egy V100 GPU-val rendelkező tárolópéldányt helyez üzembe, amely egy TensorFlow betanítási feladatot futtat az MNIST-adathalmazon. Az erőforrás-kérelmek elegendőek a számítási feladat futtatásához.

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

Helyezze üzembe a sablont az az deployment group create paranccsal. Meg kell adnia egy olyan régióban létrehozott erőforráscsoport nevét, mint például a GPU-erőforrásokat támogató Eastus .

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

Az üzembe helyezés több percet is igénybe vehet. Ezután a tároló elindítja és futtatja a TensorFlow-feladatot. Futtassa az az container logs parancsot a napló kimenetének megtekintéséhez:

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

Kimenet:

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 K80 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 K80, 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

Az erőforrások eltávolítása

Mivel a GPU-erőforrások használata költséges lehet, győződjön meg arról, hogy a tárolók hosszú ideig nem futnak váratlanul. Monitorozza a tárolókat a Azure Portal, vagy ellenőrizze egy tárolócsoport állapotát az az container show paranccsal. Például:

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

Ha végzett a létrehozott tárolópéldányokkal, törölje őket a következő parancsokkal:

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

Következő lépések