ai-center
2021.10
false
AI Center - Guide d'installation
Automation CloudAutomation SuiteStandalone
Last updated 6 juin 2024

Enregistrement d'un GPU

Remarque : un GPU ne peut être installé que sur un nœud d'agent, pas sur un nœud de serveur. N'utilisez pas ou ne modifiez pas l'indicateur gpu_support du cluster_config.json. Au lieu de cela, suivez les instructions ci-dessous pour ajouter un nœud d'agent dédié avec prise en charge GPU au cluster.

Actuellement, Automation Suite ne prend en charge que les pilotes GPU Nvidia. Consultez la liste des systèmes d'exploitation compatibles avec le GPU.

Vous pouvez trouver des types d'instances spécifiques au cloud pour les nœuds ici :

Suivez les étapes de l'Ajout d'un nouveau nœud au cluster pour vous assurer que le nœud de l'agent est ajouté correctement.

Pour plus d'exemples de déploiement de NVIDIA CUDA sur un GPU, consultez cette page.

Installation d'un pilote GPU

  1. Exécutez la commande suivante pour installer le pilote GPU sur le nœud de l'agent :
    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. Exécutez la commande suivante pour installer les boîtes à outils de conteneur :
    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

Vérifiez si les pilotes sont correctement installés

Exécutez la commande sudo nvidia-smi sur le nœud pour vérifier si les pilotes ont été installés correctement.


Remarque : une fois le cluster enregistré, des étapes supplémentaires sont nécessaires pour configurer les GPU enregistrés.

À ce stade, les pilotes GPU ont été installés et les nœuds GPU ont été ajoutés au cluster.

Ajout du GPU au nœud d'agent

Exécutez les deux commandes ci-dessous pour mettre à jour la configuration contianerd du nœud de l'agent.
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
Exécutez maintenant la commande ci-dessous pour redémarrer 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

Activation de la post-installation du pilote GPU

Exécutez les commandes ci-dessous à partir de l'un des nœuds du serveur principal.

Accédez au dossier UiPathAutomationSuite.
cd /opt/UiPathAutomationSuitecd /opt/UiPathAutomationSuite

Activer dans l'installation en ligne

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

Activer dans l'installation hors ligne

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

Rejets du GPU

Les charges de travail GPU sont automatiquement planifiées sur les nœuds GPU lorsqu'une charge de travail envoie une requête. Toutefois, les charges de travail CPU normales peuvent également être planifiées sur ces nœuds, en réservant ainsi la capacité. Si vous souhaitez que seules les charges de travail GPU soient planifiées sur ces nœuds, vous pouvez ajouter des rejets à ces nœuds en utilisant les commandes suivantes à partir du premier nœud.

  • nvidia.com/gpu=present:NoSchedule - les charges de travail non GPU ne sont pas planifiées sur ce nœud, sauf indication contraire
  • nvidia.com/gpu=present:PreferNoSchedule - cela en fait une condition à privilégier à une condition difficile comme la première option
Remplacez <node-name> par le nom de nœud GPU correspondant dans votre cluster et <taint-name> par l'une des 2 options ci-dessus dans la commande suivante
kubectl taint node <node-name> <taint-name>kubectl taint node <node-name> <taint-name>

Validation de l'enregistrement du nœud GPU

Pour vous assurer que vous avez ajouté les nœuds GPU avec succès, exécutez la commande suivante dans le terminal. La sortie doit afficher nvidia.com/gpu en tant que sortie avec les ressources CPU et RAM.
kubectl describe node <node-name>kubectl describe node <node-name>

Cette page vous a-t-elle été utile ?

Obtenez l'aide dont vous avez besoin
Formation RPA - Cours d'automatisation
Forum de la communauté UiPath
Uipath Logo White
Confiance et sécurité
© 2005-2024 UiPath Tous droits réservés.