ai-center
2021.10
false
AI Center – Installationshandbuch
Automation CloudAutomation SuiteStandalone
Last updated 6. Juni 2024

Bereitstellen einer GPU

Hinweis: Eine GPU kann nur auf einem Agent-Knoten installiert werden, nicht auf einem Serverknoten. Verwenden oder ändern Sie das Flag gpu_support aus cluster_config.json nicht. Folgen Sie stattdessen den Anweisungen unten, um dem Cluster einen dedizierten Agent-Knoten mit GPU-Unterstützung hinzuzufügen.

Derzeit unterstützt die Automation Suite nur Nvidia GPU-Treiber. Siehe Liste der GPU-unterstützten Betriebssysteme.

Cloud-spezifische Instanztypen für die Knoten finden Sie hier:

Führen Sie die Schritte unter Hinzufügen eines neuen Knotens zum Cluster aus, um sicherzustellen, dass der Agent-Knoten korrekt hinzugefügt wird.

Weitere Beispiele zur Bereitstellung von NVIDIA CUDA auf einer GPU finden Sie auf dieser Seite.

Installieren eines GPU-Treibers

  1. Führen Sie den folgenden Befehl aus, um den GPU-Treiber auf dem Agent-Knoten zu installieren:
    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. Führen Sie den folgenden Befehl aus, um die Container-Toolkits zu installieren:
    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

Überprüfen Sie, ob die Treiber ordnungsgemäß installiert sind

Führen Sie den Befehl sudo nvidia-smi auf dem Knoten aus, um zu überprüfen, ob die Treiber ordnungsgemäß installiert wurden.


Hinweis: Nachdem der Cluster bereitgestellt wurde, sind zusätzliche Schritte erforderlich, um die bereitgestellten GPUs zu konfigurieren.

Zu diesem Zeitpunkt wurden die GPU-Treiber installiert und die GPU-Knoten dem Cluster hinzugefügt.

Hinzufügen der GPU zum Agent-Knoten

Führen Sie die beiden folgenden Befehle aus, um die contianerd-Konfiguration des Agent-Knotens zu aktualisieren.
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
Führen Sie nun den folgenden Befehl aus, um rke2-agent neu zu starten
[[ "$(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

Aktivieren des GPU-Treibers nach der Installation

Führen Sie die folgenden Befehle von einem der primären Serverknoten aus.

Navigieren Sie zum Ordner UiPathAutomationSuite.
cd /opt/UiPathAutomationSuitecd /opt/UiPathAutomationSuite

Bei der Online-Installation aktivieren

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

Aktivieren bei der Offline-Installation

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-Markierungen

GPU-Workloads werden automatisch auf GPU-Knoten geplant, wenn ein Workload dies anfordert. Aber auch normale CPU-Workloads können auf diesen Knoten eingeplant werden, wodurch die Kapazität reserviert wird. Wenn sie möchten, dass auf diesen Knoten nur GPU-Workloads geplant werden, können Sie diesen Knoten Markierungen mithilfe folgender Befehle vom ersten Knoten hinzufügen.

  • nvidia.com/gpu=present:NoSchedule – Nicht-GPU-Workloads werden auf diesem Knoten nicht geplant, es sei denn, sie wurden explizit angegeben
  • nvidia.com/gpu=present:PreferNoSchedule – Dies macht sie zu einer bevorzugten Bedingung statt einer harten Bedingung wie die erste Option
Ersetzen Sie <node-name> durch den Namen des entsprechenden GPU-Knotens in Ihrem Cluster und <taint-name> durch eine der beiden oben genannten Optionen im folgenden Befehl:
kubectl taint node <node-name> <taint-name>kubectl taint node <node-name> <taint-name>

Validieren der GPU-Knotenbereitstellung

Um sicherzustellen, dass Sie die GPU-Knoten erfolgreich hinzugefügt haben, führen Sie den folgenden Befehl im Terminal aus. Die Ausgabe sollte nvidia.com/gpu zusammen mit den CPU- und RAM-Ressourcen als Ausgabe anzeigen.
kubectl describe node <node-name>kubectl describe node <node-name>

War diese Seite hilfreich?

Hilfe erhalten
RPA lernen – Automatisierungskurse
UiPath Community-Forum
Uipath Logo White
Vertrauen und Sicherheit
© 2005–2024 UiPath. Alle Rechte vorbehalten