Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
Dit product wordt vanaf 14 juli 2025 buiten gebruik gesteld.
Als u bepaalde rekenintensieve workloads op Azure Container Instances wilt uitvoeren, implementeert u uw containergroepen met GPU-resources (Graphics Processing Unit). De containerinstanties in de groep hebben toegang tot een of meer NVIDIA Tesla GPU's tijdens het uitvoeren van containerworkloads, zoals CUDA(Compute Unified Device Architecture) en Deep Learning-toepassingen.
In dit artikel wordt beschreven hoe u GPU-resources toevoegt wanneer u een containergroep implementeert met behulp van een YAML-bestand of een ARM-sjabloon (Azure Resource Manager-sjabloon). U kunt ook GPU-resources opgeven wanneer u een containerinstantie implementeert met behulp van Azure Portal.
Vereiste voorwaarden
Vanwege een aantal huidige beperkingen zijn alle aanvragen voor het verhogen van limieten mogelijk niet goedgekeurd.
Als u deze versie wilt gebruiken voor uw implementaties van productiecontainers, maakt u een Azure-ondersteuningsaanvraag om de limiet te verhogen.
Preview-beperkingen
In preview gelden de volgende beperkingen wanneer u GPU-resources in containergroepen gebruikt.
Regionale beschikbaarheid
| regio's | OS | Beschikbare GPU-SKU's |
|---|---|---|
| VS - oost, Europa - west, VS - west 2, Azië - zuidoost, India - centraal | Linux | V100 |
Er wordt in de loop van de tijd ondersteuning toegevoegd voor meer regio's.
Ondersteunde typen besturingssystemen: alleen Linux.
Andere beperkingen: U kunt GEEN GPU-resources gebruiken wanneer u een containergroep in een virtueel netwerk implementeert.
Over GPU-resources
Aantal en versie
Als u GPU's in een containerinstantie wilt gebruiken, geeft u een GPU-resource op met de volgende informatie:
Aantal: Het aantal GPU's is één, twee of vier.
Versie: De GPU-versie is V100. Elke versie wordt toegewezen aan de NVIDIA Tesla GPU in een van de volgende VM-families met Azure GPU:
Versie VM-serie V100 NCv3
Maximale middelen per SKU
| OS | GPU-SKU | aantal GPU's | Maximaal CPU-gebruik | Maximaal geheugen (GB) | Opslag (GB) |
|---|---|---|---|---|---|
| Linux | V100 | 1 | 6 | 112 | 50 |
| Linux | V100 | 2 | 12 | 224 | 50 |
| Linux | V100 | 4 | 24 | 448 | 50 |
Wanneer u GPU-resources implementeert, stelt u CPU- en geheugenresources in die geschikt zijn voor de workload, tot de maximumwaarden in de voorgaande tabel. Deze waarden zijn momenteel groter dan de CPU- en geheugenbronnen die beschikbaar zijn in containergroepen zonder GPU-resources.
Belangrijk
Standaardabonnementslimieten (quota) voor GPU-resources verschillen per versie. De standaard CPU-limieten voor V100-versies worden aanvankelijk ingesteld op 0. Als u een toename in een beschikbare regio wilt aanvragen, dient u een Azure-ondersteuningsaanvraag in.
Dingen die u moet weten
Implementatietijd: het maken van een containergroep met GPU-resources duurt maximaal 8 tot 10 minuten. Er is meer tijd nodig om een virtuele GPU-machine (VM) in Azure in te richten en te configureren.
Prijzen: Vergelijkbaar met containergroepen zonder GPU-resources, factureert Azure voor resources die worden gebruikt gedurende de duur van een containergroep met GPU-resources. De duur wordt berekend vanaf het moment dat de image van uw eerste container wordt opgehaald totdat de containergroep wordt beëindigd. Het bevat niet de tijd om de containergroep te implementeren.
Raadpleeg Prijsgegevens voor meer informatie.
CUDA-stuurprogramma's: Containerinstanties met GPU-resources zijn vooraf ingericht met NVIDIA CUDA-stuurprogramma's en containerruntimes, zodat u containerinstallatiekopieën kunt gebruiken die zijn ontwikkeld voor CUDA-workloads.
In deze fase ondersteunen we tot en met CUDA 11. U kunt bijvoorbeeld de volgende basisafbeeldingen voor uw Dockerfile gebruiken:
Om de betrouwbaarheid te verbeteren wanneer u een openbare containerafbeelding uit Docker Hub gebruikt, importeert en beheert u de afbeelding in een privécontainerregister in Azure. Werk vervolgens uw Docker-bestand bij om uw privé beheerde basisimage te gebruiken. Meer informatie over het werken met openbare afbeeldingen.
YAML-voorbeeld
Een manier om GPU-resources toe te voegen, is door een containergroep te implementeren met behulp van een YAML-bestand. Kopieer de volgende YAML naar een nieuw bestand met de naam gpu-deploy-aci.yaml en sla het bestand op. Met deze YAML maakt u een containergroep met de naam gpucontainergroup die een containerinstantie met een V100 GPU specificeert. Het exemplaar voert een voorbeeld van een CUDA-vectoroptellingapplicatie uit. De resourceaanvragen zijn voldoende om de workload uit te voeren.
Notitie
In het volgende voorbeeld wordt een openbare containerinstallatiekopieën gebruikt. Om de betrouwbaarheid te verbeteren, importeert en beheert u de images in een privé-Azure-containerregister. Werk vervolgens uw YAML bij om uw basis-image in eigen beheer te gebruiken. Meer informatie over het werken met openbare afbeeldingen.
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
Implementeer de containergroep met de opdracht az container create en geef de YAML-bestandsnaam voor de --file parameter op. U moet de naam van een resourcegroep en een locatie opgeven voor de containergroep, zoals eastus, die GPU-resources ondersteunt.
az container create --resource-group myResourceGroup --file gpu-deploy-aci.yaml --location eastus
Het duurt enkele minuten om de implementatie te voltooien. Vervolgens wordt de container gestart en wordt een CUDA-vector optelbewerking uitgevoerd. Voer de opdracht az container logs uit om de logboekuitvoer weer te geven:
az container logs --resource-group myResourceGroup --name gpucontainergroup --container-name gpucontainer
Uitvoer:
[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
Voorbeeld van Resource Manager-sjabloon
Een andere manier om een containergroep met GPU-resources te implementeren, is met behulp van een ARM-sjabloon. Begin met het maken van een bestand met de naam gpudeploy.json. Kopieer vervolgens de volgende JSON erin. In dit voorbeeld wordt een containerinstantie geïmplementeerd met een V100 GPU waarop een TensorFlow-trainingstaak wordt uitgevoerd voor de MNIST-gegevensset. De resourceaanvragen zijn voldoende om de workload uit te voeren.
{
"$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"
}
}
]
}
Gebruik het commando az deployment group create om de sjabloon te implementeren. U moet de naam opgeven van een resourcegroep die is gemaakt in een regio zoals eastus die GPU-resources ondersteunt.
az deployment group create --resource-group myResourceGroup --template-file gpudeploy.json
Het duurt enkele minuten om de implementatie te voltooien. Vervolgens wordt de container gestart en wordt de TensorFlow-taak uitgevoerd. Voer de opdracht az container logs uit om de logboekuitvoer weer te geven:
az container logs --resource-group myResourceGroup --name gpucontainergrouprm --container-name gpucontainer
Uitvoer:
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
Hulpmiddelen opruimen
Omdat het gebruik van GPU-resources duur kan zijn, moet u ervoor zorgen dat uw containers gedurende lange perioden niet onverwacht worden uitgevoerd. Bewaak uw containers in Azure Portal. U kunt ook de status van een containergroep controleren met de opdracht az container show . Voorbeeld:
az container show --resource-group myResourceGroup --name gpucontainergroup --output table
Wanneer u klaar bent met het werken met de containerinstanties die u hebt gemaakt, verwijdert u deze met de volgende opdrachten:
az container delete --resource-group myResourceGroup --name gpucontainergroup -y
az container delete --resource-group myResourceGroup --name gpucontainergrouprm -y
Verwante inhoud
- Meer informatie over het implementeren van een containergroep met behulp van een YAML-bestand of een ARM-sjabloon.
- Meer informatie over vm-grootten die zijn geoptimaliseerd voor GPU in Azure.