Ajudar a melhorar esta página
Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.
Gerenciar dispositivos Neuron no Amazon EKS
O AWS Trainium e o AWS Inferentia são chips de machine learning com propósito específico desenvolvidos pela AWS. O Amazon EKS oferece suporte a dois mecanismos para gerenciar dispositivos Neuron em clusters do EKS: o driver Neuron DRA e o plug-in de dispositivo Neuron para o Kubernetes.
Recomenda-se usar o driver Neuron DRA para novas implantações em clusters do EKS que executem o Kubernetes versão 1.34 ou posterior. O driver Neuron DRA oferece alocação com reconhecimento de topologia, agendamento de subconjuntos de dispositivos conectados, configuração do Logical NeuronCore (LNC) e alocação em vários nós do UltraServer sem a necessidade de extensões personalizadas do agendador. O plug-in do dispositivo Neuron continua com suporte.
Driver DRA do Neuron x plug-in do dispositivo Neuron
| Recurso | Driver Neuron DRA | Plug-in do dispositivo Neuron |
|---|---|---|
|
Versão mínima do Kubernetes |
1.34 |
Todas as versões do Kubernetes compatíveis com o EKS |
|
Karpenter e o Modo Automático do EKS |
Não compatível |
Compatível |
|
Suporte a AMI otimizado para EKS |
AL2023 |
AL2023, Bottlerocket |
|
Anúncio de dispositivo |
Atributos detalhados por meio de objetos |
Contagem de inteiros de recursos estendidos |
|
Subconjuntos de dispositivos conectados |
Alocar subconjuntos de 1, 4, 8 ou 16 dispositivos Neuron conectados utilizando restrições de topologia |
Requer a extensão do agendador Neuron |
|
Configuração da LNC |
Configuração do Logical NeuronCore por workload (LNC=1 ou LNC=2) por meio de parâmetros |
É necessário realizar pré-configuração nos modelos de lançamento do EC2 |
|
Seleção baseada em atributos |
Filtrar dispositivos por tipo de instância, versão do driver e outros atributos usando expressões CEL |
Não compatível |
Instale o driver do Neuron DRA
O driver Neuron DRA apresenta os dispositivos Neuron como objetos ResourceSlice com o nome DeviceClass neuron.aws.com. O driver é executado como um DaemonSet e detecta automaticamente os dispositivos Neuron e seus atributos de topologia.
Informações detalhadas sobre o driver Neuron DRA estão disponíveis na documentação do Neuron DRA
Atualmente, o uso do driver Neuron DRA com o Bottlerocket não é compatível.
Pré-requisitos
-
Um cluster do Amazon EKS executando o Kubernetes versão 1.34 ou posterior.
-
Nós com os tipos de instância Trainium AWS ou Inferentia2.
-
O Helm instalado em seu ambiente de linha de comando. Consulte as Instruções de configuração do Helm para obter mais informações.
-
kubectlconfigurado para se comunicar com o seu cluster; consulte Instalar ou atualizar o kubectl para obter mais informações.
Procedimento
Importante
Não instale o driver Neuron DRA em nós nos quais o plug-in do dispositivo Neuron esteja em execução. Os dois mecanismos não podem coexistir no mesmo nó. Consulte o KEP-5004
-
Instale o driver do Neuron DRA usando o Helm.
helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart \ --namespace neuron-dra-driver \ --create-namespace \ --set "devicePlugin.enabled=false" \ --set "npd.enabled=false" \ --set "draDriver.enabled=true"Por padrão, a implantação do driver é realizada como um DaemonSet no namespace
neuron-dra-drivercom oDeviceClassneuron.aws.com. -
Verifique se o DaemonSet do driver DRA está em execução.
kubectl get ds -n neuron-dra-driver neuron-dra-driver-kubelet-pluginNAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE neuron-dra-driver-kubelet-plugin 1 1 1 1 1 <none> 60s -
Verifique se
DeviceClassfoi criado.kubectl get deviceclass neuron.aws.comNAME AGE neuron.aws.com 60s -
Verifique se objetos
ResourceSliceestão sendo anunciados para seus nós.kubectl get resourceslice
Consulte a documentação do Neuron DRAResourceSlice disponíveis.
Solicitar dispositivos Neuron em um Pod
Para solicitar dispositivos Neuron usando o driver DRA, crie um ResourceClaimTemplate que faça referência a neuron.aws.com DeviceClass e inclua-o na especificação do seu Pod.
O exemplo a seguir solicita todos os dispositivos Neuron em uma instância trn2.48xlarge:
apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: all-neurons spec: spec: devices: requests: - name: neurons exactly: deviceClassName: neuron.aws.com selectors: - cel: expression: "device.attributes['neuron.aws.com'].instanceType == 'trn2.48xlarge'" allocationMode: All --- apiVersion: v1 kind: Pod metadata: name: neuron-workload spec: containers: - name: app ... resources: claims: - name: neurons resourceClaims: - name: neurons resourceClaimTemplateName: all-neurons
Alocar subconjuntos de dispositivos conectados
O driver Neuron DRA pode alocar subconjuntos de dispositivos Neuron conectados sem a necessidade da extensão do agendador NeuronmatchAttribute com um ID de grupo de topologia para garantir que os dispositivos estejam conectados.
O exemplo a seguir solicita 4 dispositivos Neuron conectados:
apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: 1x4-connected-neurons spec: spec: devices: requests: - name: neurons exactly: deviceClassName: neuron.aws.com allocationMode: ExactCount count: 4 selectors: - cel: expression: "device.attributes['neuron.aws.com'].instanceType == 'trn2.48xlarge'" constraints: - requests: ["neurons"] matchAttribute: "resource.aws.com/devicegroup4_id"
Os valores matchAttribute com suporte para subconjuntos conexos são resource.aws.com/devicegroup1_id, resource.aws.com/devicegroup4_id, resource.aws.com/devicegroup8_id e resource.aws.com/devicegroup16_id.
Configurar NeuronCores lógicos (LNC)
O driver Neuron DRA permite a configuração do Logical NeuronCore por workload por meio de parâmetros ResourceClaimTemplate. Isso elimina a necessidade de pré-configurar o LNC nos modelos de lançamento do EC2.
O exemplo a seguir solicita todos os dispositivos Neuron com o LNC definido como 1:
apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: all-neurons-lnc-1 spec: spec: devices: requests: - name: neurons exactly: deviceClassName: neuron.aws.com selectors: - cel: expression: "device.attributes['neuron.aws.com'].instanceType == 'trn2.48xlarge'" allocationMode: All config: - requests: ["neurons"] opaque: driver: neuron.aws.com parameters: apiVersion: neuron.aws.com/v1 kind: NeuronConfig logicalNeuronCore: 1
Instalar o plug-in de dispositivos do Neuron para Kubernetes
O plug-in de dispositivo Neuron para Kubernetes expõe dispositivos Neuron como aws.amazon.com/neuron e os NeuronCores como recursos estendidos aws.amazon.com/neuroncore. Você solicita dispositivos Neuron nas solicitações e limites de recursos de contêineres.
Pré-requisitos
-
Um cluster do Amazon EKS.
-
Nós com componentes no nível do host instalados para instâncias do AWS Trainium ou do AWS Inferentia. Esses recursos estão incluídos caso você utilize as AMIs aceleradas do EKS AL2023 ou as AMIs Bottlerocket do EKS.
-
O Helm instalado em seu ambiente de linha de comando. Consulte as Instruções de configuração do Helm para obter mais informações.
-
kubectlconfigurado para se comunicar com o seu cluster; consulte Instalar ou atualizar o kubectl para obter mais informações.
Procedimento
-
Instale o plug-in de dispositivo Neuron Kubernetes usando o Helm.
helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart \ --set "npd.enabled=false" -
Verifique se o DaemonSet do plug-in do dispositivo Neuron está em execução.
kubectl get ds -n kube-system neuron-device-pluginNAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE neuron-device-plugin 1 1 1 1 1 <none> 60s -
Verifique se os seus nós possuem dispositivos Neuron alocáveis.
kubectl get nodes "-o=custom-columns=NAME:.metadata.name,NeuronDevice:.status.allocatable.aws\.amazon\.com/neuron,NeuronCore:.status.allocatable.aws\.amazon\.com/neuroncore"NAME NeuronDevice NeuronCore ip-192-168-47-173.us-west-2.compute.internal 1 2
Verifique os dispositivos Neuron com um Pod de teste
Você pode verificar se os dispositivos Neuron estão acessíveis executando a ferramenta neuron-ls em um Pod de teste.
-
Crie um arquivo denominado
neuron-ls.yamlcom os conteúdos a seguir. Este manifesto executa um contêiner do Neuron Monitorcom a ferramenta neuron-lsinstalada.apiVersion: v1 kind: Pod metadata: name: neuron-ls spec: restartPolicy: Never containers: - name: neuron-container image: public.ecr.aws/g4h4h0b5/neuron-monitor:1.0.0 command: ["/bin/sh"] args: ["-c", "neuron-ls"] resources: limits: aws.amazon.com/neuron: 1 tolerations: - key: "aws.amazon.com/neuron" operator: "Exists" effect: "NoSchedule" -
Aplique o manifesto.
kubectl apply -f neuron-ls.yaml -
Depois que o Pod terminar de ser executado, visualize seus logs.
kubectl logs neuron-lsVeja abaixo um exemplo de saída.
instance-type: inf2.xlarge instance-id: ... +--------+--------+--------+---------+ | NEURON | NEURON | NEURON | PCI | | DEVICE | CORES | MEMORY | BDF | +--------+--------+--------+---------+ | 0 | 2 | 32 GB | 00:1f.0 | +--------+--------+--------+---------+
nota
Ao usar o plug-in do dispositivo Neuron, a alocação contígua de dispositivos em instâncias com vários dispositivos Neuron (como trn2.48xlarge) é necessária a extensão do agendador do Kubernetes para Neuron
Para obter mais informações sobre como usar dispositivos Neuron com o Amazon EKS, consulte a documentação do Neuron sobre a execução no EKS