Nasazení instancí kontejneru, které používají prostředky GPU
Pokud chcete ve službě Azure Container Instances spouštět určité úlohy náročné na výpočetní výkon, nasaďte skupiny kontejnerů s prostředky GPU. Instance kontejnerů ve skupině mají přístup k jednomu nebo více grafickým procesorům NVIDIA Tesla při spouštění úloh kontejnerů, jako jsou CUDA 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 Resource Manageru. Prostředky GPU můžete také zadat při nasazování instance kontejneru pomocí webu Azure Portal.
Důležité
Skladové položky GPU K80 a P100 se vyřazuje do 31. srpna 2023. Důvodem je vyřazení použitých základních virtuálních počítačů: Řada NC a řada NCv2 , i když budou k dispozici skladové položky V100, doporučujeme místo toho službu Azure Kubernetes Service znovu použít. Prostředky GPU nejsou plně podporované a neměly by se používat pro produkční úlohy. Pomocí následujících prostředků můžete migrovat do AKS ještě dnes: Jak migrovat do AKS.
Důležité
Tato funkce je aktuálně ve verzi Preview a platí některá omezení. Verze Preview vám zpřístupňujeme pod podmínkou, že budete souhlasit s dodatečnými podmínkami použití. Některé aspekty této funkce se můžou před zveřejněním změnit.
Požadavky
Poznámka:
Vzhledem k některým aktuálním omezením není zaručeno, že budou schváleny všechny žádosti o zvýšení limitu.
- Pokud chcete tuto skladovou položku použít 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žívání prostředků GPU ve skupinách kontejnerů.
Regionální dostupnost
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í: Prostředky GPU se nedají použít při nasazování skupiny kontejnerů do virtuální sítě.
Informace o prostředcích GPU
Počet a skladová položka
Pokud chcete použít GPU v instanci kontejneru, zadejte prostředek GPU s následujícími informacemi:
Počet – počet GPU: 1, 2 nebo 4.
Skladová položka – skladová položka GPU: V100. Každá skladová položka se mapuje na GPU NVIDIA Tesla v jedné z následujících rodin virtuálních počítačů s podporou GPU Azure:
Skladová jednotka (SKU) Ř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) | Storage (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 skladové položky. Výchozí omezení procesoru pro skladové položky V100 jsou zpočátku nastavená na 0. Pokud chcete požádat o zvýšení dostupné oblasti, odešlete podpora Azure žádost.
Co je třeba vědět
Čas nasazení – Vytvoření skupiny kontejnerů obsahující prostředky GPU trvá až 8 až 10 minut. Důvodem je další doba zřízení a konfigurace virtuálního počítače GPU v Azure.
Ceny – Podobně jako u skupin kontejnerů bez prostředků GPU se Azure účtuje za prostředky spotřebované po celou 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ů.
Ovladače CUDA – Instance kontejnerů s prostředky GPU jsou předem zřízené pomocí ovladačů NVIDIA CUDA a modulů runtime kontejnerů, takže můžete použít image kontejnerů vyvinuté pro úlohy CUDA.
V této fázi podporujeme až CUDA 11. Například pro váš soubor Dockerfile můžete použít následující základní image:
Poznámka:
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 a aktualizujte soubor Dockerfile tak, aby používal privátní spravovanou základní image. 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 určující 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, naimportujte a spravujte image v privátním registru kontejnerů Azure a aktualizujte YAML tak, aby používala privátní 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 spustí operaci sčítání vektoru 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 Resource Manageru. Začněte vytvořením souboru s názvem gpudeploy.json
a zkopírujte do něj následující 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
Vyčištění prostředků
Vzhledem k tomu, že používání prostředků GPU může být nákladné, ujistěte se, že kontejnery neočekávaně neběží po dlouhou dobu. Monitorujte kontejnery na webu Azure Portal nebo pomocí příkazu az container show zkontrolujte stav skupiny kontejnerů. Pří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
Další kroky
- Přečtěte si další informace o nasazení skupiny kontejnerů pomocí souboru YAML nebo šablony Resource Manageru.
- Přečtěte si další informace o velikostech virtuálních počítačů optimalizovaných pro GPU v Azure.