Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Importante
Este produto foi desativado a partir de 14 de julho de 2025.
Para executar certas cargas de trabalho intensivas em computação em Azure Container Instances, implemente os seus grupos de contentores com recursos de unidades de processamento gráfico (GPU). As instâncias de contentores do grupo podem aceder a uma ou mais GPUs NVIDIA Tesla enquanto executam cargas de trabalho em contentores, como compute unified device architecture (CUDA) e aplicações de deep learning.
Este artigo mostra como adicionar recursos de GPU quando implementa um grupo de contentores usando um ficheiro YAML ou um modelo Azure Resource Manager (template ARM). Também podes especificar recursos da GPU quando implementas uma instância de contentor usando o portal Azure.
Pré-requisitos
Devido a algumas limitações atuais, todos os pedidos de aumento de limite podem não ser aprovados.
Se quiser usar esta versão para as suas implementações de contentores de produção, crie um pedido de Suporte Azure para aumentar o limite.
Limitações de pré-visualização
Na pré-visualização, aplicam-se as seguintes limitações quando utiliza recursos da GPU em grupos de contentores.
Disponibilidade da região
| Regiões | SO | SKUs de GPU disponíveis |
|---|---|---|
| Leste dos EUA, Europa Ocidental, Oeste dos EUA 2, Sudeste Asiático, Índia Central | Linux | V100 |
O suporte será adicionado para mais regiões ao longo do tempo.
Tipos de sistemas operativos suportados: apenas Linux.
Outras limitações: Não podes usar recursos da GPU quando implementas um grupo de contentores numa rede virtual.
Sobre os recursos da GPU
Contagem e versão
Para usar GPUs em uma instância de contêiner, especifique um recurso de GPU com as seguintes informações:
Número: O número de GPUs é um, dois ou quatro.
Versão: A versão da GPU é a V100. Cada versão corresponde à GPU NVIDIA Tesla numa das seguintes famílias de VMs habilitadas para GPU Azure:
Versão Família VM V100 NCv3
Máximo de recursos por SKU
| SO | GPU SKU | Contagem de GPU | CPU Máxima | Memória máxima (GB) | Armazenamento (GB) |
|---|---|---|---|---|---|
| Linux | V100 | 1 | 6 | 112 | 50 |
| Linux | V100 | 2 | 12 | 224 | 50 |
| Linux | V100 | 4 | 24 | 448 | 50 |
Ao implementar recursos da GPU, defina os recursos de CPU e memória adequados à carga de trabalho, até aos valores máximos mostrados na tabela anterior. Atualmente, esses valores são maiores do que os recursos de CPU e memória disponíveis em grupos de contêineres sem recursos de GPU.
Importante
Os limites de subscrição padrão (quotas) para recursos da GPU variam consoante a versão. Os limites padrão de CPU para versões V100 estão inicialmente definidos para 0. Para solicitar um aumento numa região disponível, submeta um pedido de Suporte Azure.
Coisas a saber
Tempo de implementação: A criação de um grupo de contentores que contenha recursos da GPU demora entre 8 a 10 minutos. É necessário mais tempo para provisionar e configurar uma máquina virtual (VM) da GPU no Azure.
Preços: Tal como os grupos de contentores sem recursos da GPU, o Azure fatura pelos recursos que são consumidos durante a duração de um grupo de contentores com recursos da GPU. A duração é calculada a partir do momento em que a imagem do primeiro contêiner é extraída até que o grupo de contêineres seja encerrado. Ele não inclui o tempo para implantar o grupo de contêineres.
Para obter mais informações, consulte os detalhes de preços.
Controladores CUDA: As instâncias de contentores com recursos da GPU são previamente configuradas com drivers NVIDIA CUDA e ambientes de execução de contentores, permitindo que possa usar imagens de contentores desenvolvidas para cargas de trabalho CUDA.
Damos suporte até à versão CUDA 11 nesta fase. Por exemplo, pode usar as seguintes imagens base para o seu ficheiro Docker:
Para melhorar a fiabilidade ao usar uma imagem pública de contentor do Docker Hub, importe e gere a imagem num registo privado de contentores Azure. Depois atualiza o ficheiro Docker para usar a tua imagem base gerida privadamente. Saiba mais sobre como trabalhar com imagens públicas.
Exemplo de YAML
Uma maneira de adicionar recursos de GPU é implantar um grupo de contêineres usando um arquivo YAML. Copie o YAML seguinte para um novo ficheiro chamado gpu-deploy-aci.yaml e depois guarde o ficheiro. Este YAML cria um grupo de contentores chamado gpucontainergroup que especifica uma instância de contentor com uma GPU V100. A instância executa um aplicativo de adição de vetor CUDA de exemplo. As solicitações de recursos são suficientes para executar a carga de trabalho.
Observação
O exemplo a seguir usa uma imagem de contêiner público. Para melhorar a fiabilidade, importe e gere a imagem num registo privado de contentores Azure. Depois atualiza o teu YAML para usar a tua imagem base gerida privadamente. Saiba mais sobre como trabalhar com imagens públicas.
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
Implemente o grupo de contentores com o comando az container create e especifique o nome do ficheiro YAML para o --file parâmetro. Precisa de fornecer o nome de um grupo de recursos e uma localização para o grupo de contentores, como eastus, que suporta recursos da GPU.
az container create --resource-group myResourceGroup --file gpu-deploy-aci.yaml --location eastus
A conclusão da implementação demora vários minutos. Em seguida, o contêiner inicia e executa uma operação de adição de vetor CUDA. Execute o comando az container logs para exibir a saída do log:
az container logs --resource-group myResourceGroup --name gpucontainergroup --container-name gpucontainer
Saída:
[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
Exemplo de modelo do Resource Manager
Outra forma de implementar um grupo de contentores com recursos da GPU é usando um template ARM. Comece por criar um ficheiro chamado gpudeploy.json. Depois copia o JSON seguinte para o documento. Este exemplo implanta uma instância de contêiner com uma GPU V100 que executa um trabalho de treinamento do TensorFlow no conjunto de dados MNIST. As solicitações de recursos são suficientes para executar a carga de trabalho.
{
"$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"
}
}
]
}
Implemente o modelo predefinido com o comando az deployment group create. Você precisa fornecer o nome de um grupo de recursos que foi criado em uma região como eastus que suporta recursos de GPU.
az deployment group create --resource-group myResourceGroup --template-file gpudeploy.json
A conclusão da implementação demora vários minutos. Depois, o contentor inicia e executa o trabalho TensorFlow. Execute o comando az container logs para exibir a saída do log:
az container logs --resource-group myResourceGroup --name gpucontainergrouprm --container-name gpucontainer
Saída:
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
Limpar recursos
Como usar recursos da GPU pode ser caro, assegura-te de que os teus containers não funcionam inesperadamente durante longos períodos. Monitoriza os teus contentores no portal Azure. Também pode verificar o estado de um grupo de contentores com o comando az container show . Por exemplo:
az container show --resource-group myResourceGroup --name gpucontainergroup --output table
Quando terminares de trabalhar com as instâncias do contentor que criaste, elimina-as com os seguintes comandos:
az container delete --resource-group myResourceGroup --name gpucontainergroup -y
az container delete --resource-group myResourceGroup --name gpucontainergrouprm -y
Conteúdo relacionado
- Saiba mais sobre como implementar um grupo de contentores usando um ficheiro YAML ou um template ARM.
- Saiba mais sobre tamanhos de VM otimizados para GPU no Azure.