ai-center
2022.4
true
Guia de instalação do AI Center
Automation CloudAutomation SuiteStandalone
Last updated 6 de jun de 2024

Provisionamento de uma GPU

Observação: uma GPU pode ser instalada apenas em um nó de agente, não em um nó de servidor. Não use ou modifique o sinalizador gpu_support do cluster_config.json. Em vez disso, siga as instruções abaixo para adicionar um nó de agente dedicado com suporte da GPU ao cluster.

Atualmente, o Autimation Suite suporta apenas Drivers de GPU do Nvidia. Consulte a lista de sistemas operacionais compatíveis com GPU.

Você pode encontrar tipos de instância específicas da nuvem para os nós aqui:

Siga as etapas de Adicionar um novo nó ao cluster para garantir que o nó de agente seja adicionado corretamente.

Para obter mais exemplos de como implantar o NVIDIA CUDA em uma GPU, consulte esta página.

Instalando um driver de GPU

  1. Execute o seguinte comando para instalar o driver de GPU no nó de agente:
    sudo yum install kernel kernel-tools kernel-headers kernel-devel 
    sudo reboot
    sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
    sudo sed 's/$releasever/8/g' -i /etc/yum.repos.d/epel.repo
    sudo sed 's/$releasever/8/g' -i /etc/yum.repos.d/epel-modular.repo
    sudo yum config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo
    sudo yum install cudasudo yum install kernel kernel-tools kernel-headers kernel-devel 
    sudo reboot
    sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
    sudo sed 's/$releasever/8/g' -i /etc/yum.repos.d/epel.repo
    sudo sed 's/$releasever/8/g' -i /etc/yum.repos.d/epel-modular.repo
    sudo yum config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo
    sudo yum install cuda
  2. Execute o seguinte comando para instalar os kits de ferramenta de contêiner:
    distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \\
              && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
    sudo dnf clean expire-cache
    sudo yum install -y nvidia-container-runtime.x86_64distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \\
              && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
    sudo dnf clean expire-cache
    sudo yum install -y nvidia-container-runtime.x86_64

Verifique se os drivers estão instalados corretamente

Correr sudo nvidia-smicomando no nó para verificar se os drivers foram instalados corretamente.


Observação: depois que o cluster for provisionado, serão necessárias etapas adicionais para configurar as GPUs.

Neste ponto, os drivers da GPU foram instalados e os nós da GPU foram adicionados ao cluster.

Adicionando a GPU ao Nó do agente

Execute os dois comandos abaixo para atualizar a configuração contianerd do nó de agente.
cat <<EOF > gpu_containerd.sh
if ! nvidia-smi &>/dev/null;
then
  echo "GPU Drivers are not installed on the VM. Please refer the documentation."
  exit 0
fi
if ! which nvidia-container-runtime &>/dev/null;
then
  echo "Nvidia container runtime is not installed on the VM. Please refer the documentation."
  exit 0 
fi
grep "nvidia-container-runtime" /var/lib/rancher/rke2/agent/etc/containerd/config.toml &>/dev/null && info "GPU containerd changes already applied" && exit 0
awk '1;/plugins.cri.containerd]/{print "  default_runtime_name = \\"nvidia-container-runtime\\""}' /var/lib/rancher/rke2/agent/etc/containerd/config.toml > /var/lib/rancher/rke2/agent/etc/containerd/config.toml.tmpl
echo -e '\
[plugins.linux]\
  runtime = "nvidia-container-runtime"' >> /var/lib/rancher/rke2/agent/etc/containerd/config.toml.tmpl
echo -e '\
[plugins.cri.containerd.runtimes.nvidia-container-runtime]\
  runtime_type = "io.containerd.runc.v2"\
  [plugins.cri.containerd.runtimes.nvidia-container-runtime.options]\
    BinaryName = "nvidia-container-runtime"' >> /var/lib/rancher/rke2/agent/etc/containerd/config.toml.tmpl
EOFsudo bash gpu_containerd.shcat <<EOF > gpu_containerd.sh
if ! nvidia-smi &>/dev/null;
then
  echo "GPU Drivers are not installed on the VM. Please refer the documentation."
  exit 0
fi
if ! which nvidia-container-runtime &>/dev/null;
then
  echo "Nvidia container runtime is not installed on the VM. Please refer the documentation."
  exit 0 
fi
grep "nvidia-container-runtime" /var/lib/rancher/rke2/agent/etc/containerd/config.toml &>/dev/null && info "GPU containerd changes already applied" && exit 0
awk '1;/plugins.cri.containerd]/{print "  default_runtime_name = \\"nvidia-container-runtime\\""}' /var/lib/rancher/rke2/agent/etc/containerd/config.toml > /var/lib/rancher/rke2/agent/etc/containerd/config.toml.tmpl
echo -e '\
[plugins.linux]\
  runtime = "nvidia-container-runtime"' >> /var/lib/rancher/rke2/agent/etc/containerd/config.toml.tmpl
echo -e '\
[plugins.cri.containerd.runtimes.nvidia-container-runtime]\
  runtime_type = "io.containerd.runc.v2"\
  [plugins.cri.containerd.runtimes.nvidia-container-runtime.options]\
    BinaryName = "nvidia-container-runtime"' >> /var/lib/rancher/rke2/agent/etc/containerd/config.toml.tmpl
EOFsudo bash gpu_containerd.sh
Agora, execute o comando abaixo para reiniciar rke2-agent
[[ "$(sudo systemctl is-enabled rke2-server 2>/dev/null)" == "enabled" ]] && systemctl restart rke2-server
[[ "$(sudo systemctl is-enabled rke2-agent 2>/dev/null)" == "enabled" ]] && systemctl restart rke2-agent[[ "$(sudo systemctl is-enabled rke2-server 2>/dev/null)" == "enabled" ]] && systemctl restart rke2-server
[[ "$(sudo systemctl is-enabled rke2-agent 2>/dev/null)" == "enabled" ]] && systemctl restart rke2-agent

Habilitando a pós-instalação do driver da GPU

Execute os comandos abaixo a partir de qualquer um dos nós do servidor primário.

Navegue até a pasta UiPathAutomationSuite.
cd /opt/UiPathAutomationSuitecd /opt/UiPathAutomationSuite

Habilitar na instalação on-line

DOCKER_REGISTRY_URL=$(cat defaults.json | jq -er ".registries.docker.url")
sed -i "s/REGISTRY_PLACEHOLDER/${DOCKER_REGISTRY_URL}/g" ./Infra_Installer/gpu_plugin/nvidia-device-plugin.yaml
kubectl apply -f ./Infra_Installer/gpu_plugin/nvidia-device-plugin.yaml
kubectl -n kube-system rollout restart daemonset nvidia-device-plugin-daemonsetDOCKER_REGISTRY_URL=$(cat defaults.json | jq -er ".registries.docker.url")
sed -i "s/REGISTRY_PLACEHOLDER/${DOCKER_REGISTRY_URL}/g" ./Infra_Installer/gpu_plugin/nvidia-device-plugin.yaml
kubectl apply -f ./Infra_Installer/gpu_plugin/nvidia-device-plugin.yaml
kubectl -n kube-system rollout restart daemonset nvidia-device-plugin-daemonset

habilitar na instalação off-line

DOCKER_REGISTRY_URL=localhost:30071
sed -i "s/REGISTRY_PLACEHOLDER/${DOCKER_REGISTRY_URL}/g" ./Infra_Installer/gpu_plugin/nvidia-device-plugin.yaml
kubectl apply -f ./Infra_Installer/gpu_plugin/nvidia-device-plugin.yaml
kubectl -n kube-system rollout restart daemonset nvidia-device-plugin-daemonsetDOCKER_REGISTRY_URL=localhost:30071
sed -i "s/REGISTRY_PLACEHOLDER/${DOCKER_REGISTRY_URL}/g" ./Infra_Installer/gpu_plugin/nvidia-device-plugin.yaml
kubectl apply -f ./Infra_Installer/gpu_plugin/nvidia-device-plugin.yaml
kubectl -n kube-system rollout restart daemonset nvidia-device-plugin-daemonset

GPU Taints

As cargas de trabalho de GPU são agendadas nos nós de GPU automaticamente quando uma carga de trabalho solicitá-las. Mas as cargas de trabalho de CPU normais também podem ser agendadas nesses nós, reservando a capacidade. Se você quiser que somente as cargas de trabalho de GPU sejam agendadas nesses nós, poderá adicionar contaminações a esses nós usando os seguintes comandos a partir do primeiro nó.

  • nvidia.com/gpu=present:NoSchedule — As cargas de trabalho não GPU não serão agendadas neste nó, a menos que explicitamente especificadas
  • nvidia.com/gpu=present:PreferNoSchedule — isso a torna uma condição preferida em vez de uma condição difícil, como a primeira opção
Substitua <node-name> pelo nome de nó da GPU correspondente no seu cluster e <taint-name> por uma das duas opções acima no comando a seguir
kubectl taint node <node-name> <taint-name>kubectl taint node <node-name> <taint-name>

Validação do provisionamento do nó de GPU

Para garantir que você tenha adicionado os nós de GPU com sucesso, execute o seguinte comando no terminal. A saída deve mostrar nvidia.com/gpu como uma saída junto com os recursos de CPU e RAM.
kubectl describe node <node-name>kubectl describe node <node-name>

Esta página foi útil?

Obtenha a ajuda que você precisa
Aprendendo RPA - Cursos de automação
Fórum da comunidade da Uipath
Uipath Logo White
Confiança e segurança
© 2005-2024 UiPath. Todos os direitos reservados.