По мере увеличения объёмов бизнес-данных, особенно в сценариях, таких как искусственный интеллект и анализ данных, вы можете захотеть использовать возможности GPU в вашем самостоятельно построенном бизнес-кластере для ускорения обработки данных. Помимо подготовки GPU-ресурсов для узлов кластера, необходимо также выполнить настройку GPU.
В данном решении узлы кластера, обладающие возможностями GPU-вычислений, называются GPU Nodes.
Примечание: Если не указано иное, шаги выполнения применимы к обоим типам узлов. По вопросам установки драйверов обращайтесь к официальной документации NVIDIA по установке.
GPU-ресурсы подготовлены на рабочем узле, который относится к GPU-узлу, описанному в этом разделе.
Внимание: Если GPU-узел использует плагин NVIDIA MPS, убедитесь, что архитектура GPU узла — Volta или новее (Volta/Turing/Ampere/Hopper и т. д.), а драйвер поддерживает CUDA версии 11.5 или выше.
Войдите на GPU-узел и выполните команду lspci |grep -i NVIDIA
, чтобы проверить модель GPU узла.
В следующем примере модель GPU — Tesla T4.
Перейдите на официальный сайт NVIDIA, чтобы получить ссылку для загрузки драйвера.
Нажмите на Drivers в верхней навигационной панели на главной странице.
Заполните необходимые данные для загрузки драйвера в соответствии с моделью GPU узла.
Нажмите Search.
Нажмите Download.
Щёлкните правой кнопкой мыши по Download > Copy Link Address, чтобы скопировать ссылку для загрузки драйвера.
Выполните следующие команды на GPU-узле для создания каталога /home/gpu
и загрузки файла драйвера в этот каталог.
Выполните следующую команду на GPU-узле для установки пакетов gcc и kernel-devel, соответствующих текущей операционной системе.
Выполните следующие команды для установки драйвера GPU.
После установки выполните команду nvidia-smi
. Если возвращается информация о GPU, аналогичная приведённому примеру, значит установка драйвера прошла успешно.
На GPU Node добавьте репозиторий NVIDIA yum.
При появлении сообщения "Metadata cache created." добавление прошло успешно.
Установите NVIDIA Container Runtime.
При появлении сообщения Complete!
установка завершена успешно.
Настройте Runtime по умолчанию. Добавьте следующую конфигурацию в файл.
Containerd: Измените файл /etc/containerd/config.toml
.
Docker: Измените файл /etc/docker/daemon.json
.
Перезапустите Containerd / Docker.
Containerd
Docker
В интерфейсе управления GPU-кластером выполните следующие действия:
В левой боковой панели каталога выберите подраздел "Cluster Plugins", нажмите для развёртывания "ACP GPU Device Plugin" и включите опцию "pGPU";
Во вкладке "Nodes" выберите узлы, на которых необходимо развернуть физический GPU, затем нажмите "Label and Taint Manager", добавьте "device label" и выберите "pGPU", нажмите OK;
Во вкладке "Pods" проверьте статус работы контейнерной группы, соответствующей nvidia-device-plugin-ds, чтобы убедиться в отсутствии сбоев и что она запущена на указанных узлах.
В левой боковой панели каталога выберите подраздел "Cluster Plugins", нажмите для развёртывания "ACP GPU Device Plugin" и включите опцию "MPS";
Во вкладке "Nodes" выберите узлы, на которых необходимо развернуть физический GPU, затем нажмите "Label and Taint Manager", добавьте "device label" и выберите "MPS", нажмите OK;
Во вкладке "Pods" проверьте статус работы контейнерной группы, соответствующей nvidia-mps-device-plugin-daemonset, чтобы убедиться в отсутствии сбоев и что она запущена на указанных узлах.
На узле управления бизнес-кластером проверьте, правильно ли scheduler ссылается на политику планирования.
Проверьте, есть ли опция –config со значением /etc/kubernetes/scheduler-config.yaml, например
Примечание: Указанные параметры и значения — это конфигурации по умолчанию платформы. Если вы их изменяли, пожалуйста, верните к значениям по умолчанию. Ваши оригинальные пользовательские настройки можно скопировать в файл политики планирования.
Проверьте конфигурацию файла политики планирования.
Выполните команду: kubectl describe service kubernetes -n default |grep Endpoints
.
Замените содержимое файла /etc/kubernetes/scheduler-config.yaml
на всех Master-узлах следующим содержимым, где ${kube-apiserver}
нужно заменить на вывод из предыдущего шага.
Если в schedule-config.yaml уже есть extenders, добавьте этот yaml в конец.
Выполните следующую команду для получения ID контейнера:
Containerd: Выполните crictl ps |grep kube-scheduler
, вывод будет примерно таким, первый столбец — это ID контейнера.
Docker: Выполните docker ps |grep kube-scheduler
, вывод будет примерно таким, первый столбец — это ID контейнера.
Перезапустите контейнер Containerd/Docker, используя полученный ID контейнера.
Containerd
Перезапустите Kubelet.
На узле управления бизнес-кластером проверьте, правильно ли scheduler ссылается на политику планирования.
Проверьте, есть ли опция –config со значением /etc/kubernetes/scheduler-config.yaml, например
Примечание: Указанные параметры и значения — это конфигурации по умолчанию платформы. Если вы их изменяли, пожалуйста, верните к значениям по умолчанию. Ваши оригинальные пользовательские настройки можно скопировать в файл политики планирования.
Проверьте конфигурацию файла политики планирования.
Выполните команду: kubectl describe service kubernetes -n default |grep Endpoints
.
Замените содержимое файла /etc/kubernetes/scheduler-config.yaml
на всех Master-узлах следующим содержимым, где ${kube-apiserver}
нужно заменить на вывод из предыдущего шага.
Выполните следующую команду для получения ID контейнера:
Containerd: Выполните crictl ps |grep kube-scheduler
, вывод будет примерно таким, первый столбец — это ID контейнера.
Docker: Выполните docker ps |grep kube-scheduler
, вывод будет примерно таким, первый столбец — это ID контейнера.
Перезапустите контейнер Containerd/Docker, используя полученный ID контейнера.
Containerd
Перезапустите Kubelet.
В интерфейсе управления GPU-кластером выполните следующие действия:
В левой боковой панели каталога выберите подраздел "Cluster Plugins", нажмите для развёртывания "ACP GPU Device Plugin" и включите опцию "GPU-Manager";
Во вкладке "Nodes" выберите узлы, на которых необходимо развернуть физический GPU, затем нажмите "Label and Taint Manager", добавьте "device label" и выберите "vGPU", нажмите OK;
Во вкладке "Pods" проверьте статус работы контейнерной группы, соответствующей gpu-manager-daemonset, чтобы убедиться в отсутствии сбоев и что она запущена на указанных узлах.
Метод 1: Проверьте наличие доступных GPU-ресурсов на GPU-узлах, выполнив следующую команду на управляющем узле бизнес-кластера:
Метод 2: Разверните GPU-приложение на платформе, указав необходимое количество GPU-ресурсов. После развертывания выполните exec в Pod и выполните следующую команду:
Проверьте, корректно ли получена информация о GPU.