O Alibaba Cloud Container Compute Service (ACS) oferece poder de computação em contêineres serverless. Ao usar recursos de GPU, declare os modelos de GPU e as versões de driver compatíveis diretamente nos pods para reduzir a gestão de infraestrutura e os custos de operações e manutenção. 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 suporta diversos modelos de GPU. Use-os com reservas de capacidade ou solicite-os sob demanda durante a criação de um pod. O método de uso varia conforme a classe de computação.
-
GPU de alto desempenho para rede
Nesta modalidade, apenas reservas de nós estão disponíveis. 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 Reserva de Capacidade GPU-HPN.
-
Instâncias de GPU
Use recursos de GPU sob demanda ou configure reservas de capacidade. Ao criar um pod, o ACS deduz automaticamente os recursos de GPU da sua reserva de capacidade.
Para visualizar a lista de modelos de GPU suportados, envie um ticket.
Especifique um modelo de GPU para um pod
Para GPU-HPN, somente reservas de nós são permitidas. Cada reserva funciona como um nó virtual no cluster, cujo rótulo inclui o modelo da GPU. Use o agendamento por afinidade de nó para direcionar pods a esse nó virtual. Para mais detalhes, veja Agende pods em nós virtuais GPU-HPN com rótulos de atributo.
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), uma plataforma de computação paralela e modelo de programação lançado pela NVIDIA em 2007. A API de driver e a API de runtime na pilha de software CUDA diferem nas seguintes formas:
Driver API: oferece funcionalidade completa, mas apresenta maior complexidade de uso.
Runtime API: encapsula parte da Driver API e oculta algumas etapas de inicialização, facilitando sua utilização.
A CUDA Driver API está incluída no pacote do driver NVIDIA. Já a CUDA Library e a CUDA Runtime fazem parte do pacote CUDA Toolkit. A figura abaixo ilustra a arquitetura CUDA.

Ao executar aplicações de GPU em um cluster ACS, observe os pontos a seguir:
Use as imagens base CUDA fornecidas pela NVIDIA para instalar o CUDA Toolkit na imagem do seu contêiner. Essas imagens base já incluem o CUDA Toolkit. Assim, construa sua imagem de aplicação diretamente sobre uma imagem base correspondente à versão específica do CUDA Toolkit exigida pela sua aplicação.
Para definir uma versão de driver ao criar um pod, consulte Especifique uma versão de driver para um pod.
Sobre a compatibilidade entre o CUDA Toolkit e os drivers NVIDIA, veja a documentação oficial da NVIDIA: Notas de Lançamento do CUDA Toolkit.
A versão da API de runtime CUDA usada pela sua aplicação deve corresponder à versão da imagem base CUDA utilizada para construir a imagem do contêiner. Por exemplo, se a imagem do seu contêiner foi criada a partir da imagem base CUDA NVIDIA/CUDA:12.2.0-base-Ubuntu20.04, sua aplicação utilizará a versão 12.2.0 da API de runtime CUDA.
Especifique uma versão de driver para um pod
Defina uma versão de driver por meio de rótulos de pod quando sua aplicação utilizar 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 suportada pelo ACS. Para mais informações, consulte Versões de driver de GPU suportadas.
Versão padrão do driver de GPU para pods
Configure atributos de pod 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, veja Configure seletores.
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 a ele. 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 abaixo para implantar o arquivo
gpu-pod-with-model-and-driver.yamlno seu cluster.kubectl apply -f gpu-pod-with-model-and-driver.yaml -
Verifique o status do pod executando o seguinte comando.
kubectl get podSaída esperada:
NAME READY STATUS RESTARTS AGE gpu-pod-with-model-and-driver 1/1 Running 0 87s -
Consulte as informações da GPU no pod com o comando a seguir.
NotaO comando
/usr/bin/nvidia-smiusado no exemplo já vem pré-configurado na imagem de contêiner 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, correspondendo aos rótulos definidos no pod.ImportanteA saída apresentada serve apenas como referência. Os resultados reais podem variar dependendo do seu ambiente.