Os nós virtuais GPU-HPN em clusters ACS expõem rótulos de atributo de GPU que permitem direcionar pods para um modelo específico de GPU ou zona de rede sem modificar o código da aplicação.
Pré-requisitos
Antes de começar, verifique se você:
Associou o cluster a uma reserva de capacidade GPU-HPN
Rótulos de atributo de GPU
Todo nó virtual GPU-HPN possui os seguintes rótulos:
|
Rótulo |
Descrição |
|
|
Modelo de GPU do nó virtual |
|
|
Tipo de recurso reservado do nó virtual |
|
|
Zona da rede de alto desempenho |
Para visualizar os modelos de GPU compatíveis com sua reserva de capacidade, envie um ticket .
Escolha um método de agendamento
O Kubernetes oferece duas formas de direcionar um pod para um nó específico:
|
Método |
Funcionamento |
Quando usar |
|
node selector |
Correspondência estrita: o pod agenda apenas em nós com o valor exato do rótulo |
Fixar em um modelo específico de GPU sem alternativa de fallback |
|
node affinity |
Suporta restrições estritas ( |
Regras mais flexíveis, como preferir um modelo de GPU, mas aceitar outro |
O exemplo a seguir utiliza um node selector. Para a sintaxe de node affinity, consulte a documentação do Kubernetes.
Agende pods para um modelo específico de GPU
Este exemplo executa um job de treinamento TensorFlow MNIST em um nó virtual com um modelo específico de GPU.
-
Crie um arquivo chamado
tensorflow-mnist.yamlcom o seguinte conteúdo:apiVersion: batch/v1 kind: Job metadata: name: tensorflow-mnist spec: parallelism: 1 template: metadata: labels: app: tensorflow-mnist spec: nodeSelector: alibabacloud.com/gpu-model-series: "gpu-example" # Replace with your GPU model containers: - name: tensorflow-mnist image: registry.cn-beijing.aliyuncs.com/acs/tensorflow-mnist-sample:v1.5 command: - python - tensorflow-sample-code/tfjob/docker/mnist/main.py - --max_steps=1000 - --data_dir=tensorflow-sample-code/data resources: requests: cpu: 1 memory: 1 nvidia.com/gpu: 1 limits: cpu: 1 memory: 1 nvidia.com/gpu: 1 workingDir: /root restartPolicy: Never -
Execute o Job.
kubectl apply -f tensorflow-mnist.yaml -
Visualize o status do pod.
kubectl get pod -l app=tensorflow-mnist -o wideConfira a coluna NODE para confirmar se o pod está em execução no nó virtual esperado.
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES default tensorflow-mnist-xxx 0/2 Running 0 4h2m <none> cn-shanghai-b.cr-u4ub6c3un2mrjlct2l9c <none> <none>A saída indica que os pods estão em execução no nó virtual que utiliza a GPU gpu-example.