ai-center
2022.4
true
UiPath logo, featuring letters U and I in white
Guía de instalación de AI Center
Automation CloudAutomation SuiteStandalone
Last updated 6 de jun. de 2024

Aprovisionar una GPU

Aviso: Las GPU solo pueden instalarse en un nodo agente, no en un nodo servidor. No utilices ni modifiques el gpu_supportmarcador cluster_config.json desde. A cambio, sigue las siguientes instrucciones para añadir un nodo de agente dedicado con soporte de GPU al clúster.

Actualmente, Automation Suite solo es compatible con los controladores de GPU de Nvidia. Consulta la lista de sistemas operativos compatibles con la GPU.

Para los nodos, puedes encontrar aquí los tipos de instancias específicas para la nube:

Sigue los pasos de Añadir un nuevo nodo al clúster para garantizar que el agente de nodo se añade correctamente.

Para ver más ejemplos sobre cómo implementar NVIDIA CUDA en una GPU, consulta esta página.

Instalación de un controlador de GPU

  1. Ejecuta el siguiente comando para instalar el controlador GPU en el agente de nodo:
    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. Ejecuta el siguiente comando para instalar los contenedores de paquetes de herramientas:
    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

Comprueba si los controladores están instalados correctamente

Ejecute el comando sudo nvidia-smi en el nodo para comprobar si los controladores se instalaron correctamente.


Aviso: Una vez aprovisionado el clúster, se requieren pasos adicionales para configurar las GPU aprovisionadas.

Llegados a este punto, los controladores de GPU ya se han instalado y se han añadido los nodos de GPU al clúster.

Añadir la GPU al Agente de Nodo

Ejecuta a continuación los dos comandos para actualizar la configuración contianerd" id="1"/> del agente de nodo.

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

Ahora ejecuta el siguiente comando para reiniciar rke2-agent" id="1"/>

[[ "$(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

Habilitar el controlador GPU después de la instalación

Ejecuta los siguientes comandos desde cualquier nodo del servidor principal.

Accede a la carpeta UiPathAutomationSuite" id="1"/>.

cd /opt/UiPathAutomationSuitecd /opt/UiPathAutomationSuite

Habilitar en la instalación en línea

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 en la instalación sin conexión

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

"Taints" de GPU

Las cargas de trabajo de la GPU se programan en los nodos de la GPU automáticamente cuando así lo pide una carga de trabajo. Pero las cargas de trabajo de la CPU normales también pueden programarse en estos nodos, preservando la capacidad. Si quieres que solo se programen las cargas de trabajo de la GPU en estos nodos, puedes añadir taints a estos nodos mediante los siguientes comandos del primer nodo.

  • nvidia.com/gpu=present:NoSchedule" id="1"/> - las cargas de trabajo externas a la GPU no se programan en este nodo, a menos que así se indique explícitamente
  • nvidia.com/gpu=present:PreferNoSchedule" id="1"/> - esto se convierte en una preferencia en vez de una imposición como la primera opción

Sustituye <node-name>" id="1"/> con el correspondiente nombre del nodo de GPU en tu clúster y <taint-name>" id="2"/> por una de las 2 opciones anteriores en el siguiente comando

kubectl taint node <node-name> <taint-name>kubectl taint node <node-name> <taint-name>

Validar el aprovisionamiento en nodos de GPU

Para garantizar que los nodos de GPU se han añadido con éxito, ejecuta el siguiente comando en el terminal. La salida debe indicar nvidia.com/gpu" id="1"/> como un resultado junto a los recursos de la CPU y la RAM.

kubectl describe node <node-name>kubectl describe node <node-name>

¿Te ha resultado útil esta página?

Obtén la ayuda que necesitas
RPA para el aprendizaje - Cursos de automatización
Foro de la comunidad UiPath
Uipath Logo White
Confianza y seguridad
© 2005-2024 UiPath. Todos los derechos reservados.