AI Center
2021.10
バナーの背景画像
AI Center インストール ガイド
最終更新日 2024年3月11日

GPU をプロビジョニングする

注: GPU は、サーバー ノードではなく、エージェント ノードでのみインストールできます。cluster_config.jsongpu_support フラグを使用または変更しないでください。代わりに、以下の手順に従って、GPU がサポートされた専用のエージェント ノードをクラスターに追加します。

現在、Automation Suite では、Nvidia GPU ドライバーのみをサポートしています。GPU がサポートされているオペレーティング システムのリストをご覧ください。

ノードのクラウド固有インスタンス タイプは以下のとおりです。

クラスターに新しいノードを追加する」の手順を実行して、エージェント ノードが正しく追加されていることを確認します。

GPU に NVIDIA CUDA をデプロイする方法の他の例については、こちらのページをご覧ください。

GPU ドライバーをインストールする

  1. 次のコマンドを実行し、エージェント ノードに GPU ドライバーをインストールします。
    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. 次のコマンドを実行してコンテナー ツールキットをインストールします。
    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

ドライバーが適切にインストールされているかどうかを確認します。

ノード上で sudo nvidia-smi コマンドを実行し、ドライバーが適切にインストールされたかどうかを確認します。


注: クラスターがプロビジョニングされた後、プロビジョニングされた GPU を構成するには追加の手順が必要です。

この時点で、GPU ドライバーがインストールされ、GPU ノードがクラスターに追加されています。

GPU をエージェント ノードに追加する

次の 2 つのコマンドを実行して、エージェント ノードの contianerd 構成を更新します。
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
次に、以下のコマンドを実行して再起動します。 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

インストール後に GPU ドライバーを有効化する

任意のプライマリ サーバー ノードから、次のコマンドを実行します。

UiPathAutomationSuite フォルダーに移動します。
cd /opt/UiPathAutomationSuitecd /opt/UiPathAutomationSuite

オンライン インストールで有効化する

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

オフライン インストールで有効化する

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 taint

GPU ワークロードは、要求すると自動的に GPU ノード上でスケジュールされます。ただし、通常の CPU ワークロードも、キャパシティを確保して、これらのノード上でスケジュールされる可能性があります。これらのノード上で GPU ワークロードのみをスケジュールする場合、最初のノードから次のコマンドを使用して、これらのノードに taint を追加できます。

  • nvidia.com/gpu=present:NoSchedule - GPU 以外のワークロードは、明示的に指定されない限り、このノードでスケジュールされません。
  • nvidia.com/gpu=present:PreferNoSchedule - このコマンドでは、最初のオプションのように厳しい条件ではなく、望ましい条件になります。
次のコマンドで、<node-name> をクラスター内の対応する GPU ノード名に、<taint-name> を上記 2 つのオプションのいずれかに置き換えます。
kubectl taint node <node-name> <taint-name>kubectl taint node <node-name> <taint-name>

GPU ノードのプロビジョニングを検証する

GPU ノードが正常に追加されたことを確認するには、ターミナルで次のコマンドを実行します。出力には、CPU および RAM リソースとともに nvidia.com/gpu が表示されます。
kubectl describe node <node-name>kubectl describe node <node-name>

Was this page helpful?

サポートを受ける
RPA について学ぶ - オートメーション コース
UiPath コミュニティ フォーラム
UiPath ロゴ (白)
信頼とセキュリティ
© 2005-2024 UiPath. All rights reserved.