Megosztás a következőn keresztül:


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

Ha az Azure Container Instancesben bizonyos számítási feladatokat szeretne futtatni, helyezze üzembe a tárolócsoportokat GPU-erőforrásokkal. A csoport tárolópéldányai hozzáférhetnek egy vagy több NVIDIA Tesla GPU-hoz tárolóterhelések, például CUDA és mélytanulási alkalmazások futtatása közben.

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, ha tárolópéldányt helyez üzembe az Azure Portalon.

Fontos

A K80 és A P100 GPU-k 2023. augusztus 31-ig visszavonulnak. Ennek oka az alapul szolgáló virtuális gépek kivonása: NC sorozat és NCv2 sorozat Bár a V100 termékváltozatok elérhetők lesznek, a rendszer inkább az Azure Kubernetes Service-t használja. A GPU-erőforrások nem támogatottak teljes mértékben, és nem használhatók éles számítási feladatokhoz. A következő erőforrások használatával migrálhat ma az AKS-be: Migrálás az AKS-be.

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

Feljegyzés

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

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

Előzetes verzióra vonatkozó korlátozások

Előzetes verzióban a következő korlátozások érvényesek a GPU-erőforrások tárolócsoportokban való használatakor.

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

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

Idővel további régiókhoz is hozzáadódik a támogatás.

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ócsoport virtuális hálózatba való üzembe helyezésekor.

A GPU-erőforrások ismertetése

Darabszám és termékváltozat

A GPU-k tárolópéldányban való használatához adjon meg egy GPU-erőforrást a következő információkkal:

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

  • Termékváltozat – A GPU termékváltozata: V100. Minden termékváltozat az NVIDIA Tesla GPU-ra van leképzve az alábbi Azure GPU-kompatibilis virtuálisgép-családok egyikében:

    Termékváltozat Virtuálisgép-család
    V100 NCv3

Termékváltozatonkénti erőforrások maximális száma

OS GPU-termékváltozat GPU-k száma Max CPU (Max. CPU) Maximális memória (GB) Storage (GB)
Linux V100 0 6 112 50
Linux V100 2 12 224 50
Linux V100 4 24 448 50

GPU-erőforrások telepítésekor állítsa be a számítási feladatnak megfelelő CPU- és memóriaerő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ő PROCESSZOR- és memóriaerő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 V100 SKU-k alapértelmezett CPU-korlátai kezdetben 0-ra vannak állítva. Ha növelni szeretne egy 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 virtuális gép üzembe helyezé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 a GPU-erőforrásokkal rendelkező tárolócsoportok időtartama alatt felhasznált erőforrásokat számlálja meg. Az időtartam az első tároló lemezképének lekérésétől a tárolócsoport megszűnéséig számítható ki. Nem tartalmazza a tárolócsoport üzembe helyezésének idejét.

    Tekintse meg a díjszabást.

  • 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 kifejlesztett tárolórendszerképeket.

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

    Feljegyzés

    A Docker Hub nyilvános tárolórendszerképének használatakor a megbízhatóság javítása érdekében importálja és kezelje a lemezké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ájl használatával. 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 V100 GPU-val rendelkező tárolópéldányt határoz meg. A példány egy CUDA-mintavektor-összeadási alkalmazást futtat. Az erőforrás-kérelmek elegendőek a számítási feladat futtatásához.

Feljegyzé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-et 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: V100
  osType: Linux
  restartPolicy: OnFailure

Helyezze üzembe a tárolócsoportot az az container create paranccsal, és adja meg a paraméter YAML-fájlnevét --file . 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ó Eastust .

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 olyan V100 GPU-val rendelkező tárolópéldányt helyez üzembe, amely 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 az eastus , amely támogatja a GPU-erőforrásokat.

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

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. Figyelje a tárolókat az Azure Portalon, vagy ellenőrizze egy tárolócsoport állapotát az az container show paranccsal. Példa:

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

  • További információ a tárolócsoportok YAML-fájl vagy Resource Manager-sablon használatával történő üzembe helyezéséről.
  • További információ a GPU-optimalizált virtuálisgép-méretekről az Azure-ban.