O Alibaba Cloud Container Compute Service (ACS) oferece poder de computação serverless para containers. Ao usar recursos de GPU, o ACS permite declarar modelos de GPU e versões de driver compatíveis diretamente nos pods. Esse recurso reduz significativamente os custos de gerenciamento de infraestrutura e de operações e manutenção (O&M). Este tópico descreve como especificar um modelo de GPU e uma versão de driver ao criar um pod.
Modelos de GPU
O ACS é compatível com diversos modelos de GPU. Você pode usá-los com capacity reservations ou solicitá-los sob demanda durante a criação de um pod. O método a adotar depende da classe de computação.
-
GPU de alto desempenho para rede
É possível solicitar apenas reservas de nós. Após adquirir as reservas, associe cada uma ao seu cluster. Cada reserva opera como um nó virtual independente no cluster. Para mais informações, consulte GPU-HPN Capacity Reservation.
-
Instâncias de GPU
Use recursos de GPU sob demanda ou configure reservas de capacidade. Após a criação do pod, o ACS deduz automaticamente os recursos de GPU da sua capacity reservation.
Para visualizar a lista de modelos de GPU compatíveis, envie um ticket.
Especifique um modelo de GPU para um pod
Para GPU-HPN, somente solicitações de reserva de nós são permitidas. Cada reserva funciona como um nó virtual no cluster. O rótulo desse nó virtual inclui o modelo da GPU. Use node affinity scheduling para agendar pods nesse nó virtual. Para mais detalhes, consulte Schedule pods to GPU-HPN virtual nodes with attribute labels.
Em pods acelerados por GPU, especifique explicitamente o modelo de GPU nos campos labels e nodeSelector do pod.
Classe de computação | Campo de protocolo | Exemplo |
Tipos de instância de GPU de rede de alto desempenho | spec.nodeSelector | |
Tipo de instância de GPU | metadata.labels[ alibabacloud.com/gpu-model-series] | |
Versões de driver
Aplicações de GPU geralmente dependem da Compute Unified Device Architecture (CUDA), plataforma de computação paralela e modelo de programação lançado pela NVIDIA em 2007. A figura a seguir ilustra a arquitetura CUDA. As APIs de driver e de runtime na pilha de software CUDA diferem da seguinte forma:
Driver API: oferece funcionalidade completa, mas é complexa.
Runtime API: encapsula parte da Driver API e oculta algumas etapas de inicialização do driver, facilitando o uso.
A CUDA Driver API está incluída no pacote do driver NVIDIA. A CUDA Library e a CUDA Runtime fazem parte do pacote CUDA Toolkit.

Ao executar aplicações de GPU em um cluster ACS, observe os pontos abaixo:
Use as imagens base CUDA fornecidas pela NVIDIA para instalar o CUDA Toolkit na imagem do seu container. Essas imagens base já incluem o CUDA Toolkit. Construa sua imagem de aplicação diretamente sobre uma imagem base correspondente à versão específica do CUDA Toolkit exigida pela aplicação.
Para especificar uma versão de driver ao criar um pod, consulte Specify a driver version for a pod.
Sobre a compatibilidade entre o CUDA Toolkit e os drivers NVIDIA, consulte o documento oficial da NVIDIA CUDA Toolkit Release Notes.
A versão da API de runtime CUDA usada pela aplicação deve corresponder à versão da imagem base CUDA utilizada para construir a imagem do container. Por exemplo, se a imagem do seu container foi criada a partir da imagem base CUDA NVIDIA/CUDA:12.2.0-base-Ubuntu20.04, sua aplicação usa a versão 12.2.0 da API de runtime CUDA.
Especifique uma versão de driver para um pod
O ACS permite especificar uma versão de driver por meio de rótulos de pod quando a aplicação usa recursos de GPU. Adote o formato apresentado na tabela a seguir.
Classe de computação | Campo de protocolo | Exemplo |
Instâncias de GPU | metadata.labels[alibabacloud.com/gpu-driver-version] | |
Instância de GPU com Rede de Alto Desempenho | |
Versões de driver de GPU
Certifique-se de que a versão do driver especificada seja compatível com o ACS. Para mais informações, consulte Supported GPU driver versions.
Versão padrão do driver de GPU para pods
O ACS permite configurar atributos específicos de pods por meio de regras. Caso a versão padrão do driver não atenda às suas necessidades, adicione a configuração abaixo ao ConfigMap kube-system/acs-profile para atribuir diferentes versões de driver de GPU a tipos específicos de pods com GPU. Para mais detalhes, consulte Configure selectors.
A configuração a seguir define a versão do driver como 1.5.0 para todos os pods GPU-HPN no cluster.
apiVersion: v1
kind: ConfigMap
metadata:
name: acs-profile
namespace: kube-system
data:
# Keep other system configurations unchanged.
selectors: |
[
{
"name": "gpu-hpn-driver",
"objectSelector": {
"matchLabels": {
"alibabacloud.com/compute-class": "gpu-hpn"
}
},
"effect": {
"labels": {
"alibabacloud.com/gpu-driver-version": "1.5.0"
}
}
}
]
Exemplo
-
Crie um arquivo chamado
gpu-pod-with-model-and-driver.yamle adicione o seguinte conteúdo YAML. Esse arquivo define um pod com a classe de computaçãogpu. O pod solicita uma GPU com o modeloexample-modele a versão de driver535.161.08.apiVersion: v1 kind: Pod metadata: name: gpu-pod-with-model-and-driver labels: # Set the compute class to gpu. alibabacloud.com/compute-class: "gpu" # Set the GPU model to example-model, such as T4. alibabacloud.com/gpu-model-series: "example-model" # Set the driver version to 535.161.08. alibabacloud.com/gpu-driver-version: "535.161.08" spec: containers: - image: registry.cn-beijing.aliyuncs.com/acs/tensorflow-mnist-sample:v1.5 name: tensorflow-mnist command: - sleep - infinity resources: requests: cpu: 1 memory: 1Gi nvidia.com/gpu: 1 limits: cpu: 1 memory: 1Gi nvidia.com/gpu: 1 -
Execute o comando a seguir para implantar o arquivo
gpu-pod-with-model-and-driver.yamlno cluster.kubectl apply -f gpu-pod-with-model-and-driver.yaml -
Execute o comando abaixo para verificar o status do pod.
kubectl get podSaída esperada:
NAME READY STATUS RESTARTS AGE gpu-pod-with-model-and-driver 1/1 Running 0 87s -
Execute o comando a seguir para verificar as informações da GPU no pod.
NotaO comando
/usr/bin/nvidia-smino exemplo já vem pré-configurado na imagem de container de amostra.kubectl exec -it gpu-pod-with-model-and-driver -- /usr/bin/nvidia-smiSaída esperada:
+---------------------------------------------------------------------------------------+ | NVIDIA-SMI xxx.xxx.xx Driver Version: 535.161.08 CUDA Version: xx.x | |-----------------------------------------+----------------------+----------------------+ ... |=========================================+======================+======================| | x NVIDIA example-model xx | xxxxxxxx:xx:xx.x xxx | x | | xxx xxx xx xxx / xxxx | xxxx / xxx| x% xxxxxxxx| | | | xxx | +-----------------------------------------+----------------------+----------------------+A saída exibe o modelo de GPU
example-modele a versão do driver535.161.08, que correspondem aos rótulos definidos na especificação do pod.ImportanteA saída mostrada serve apenas como referência. Os resultados reais podem variar conforme o ambiente.