- Вопрос или проблема
- Ответ или решение
- 1. Ввод в контекст
- 2. Возможные причины проблемы
- 2.1. Версия драйвера NVIDIA
- 2.2. Параметры BIOS/UEFI
- 2.3. Конфликт с другими модулями
- 2.4. Блокировка аппаратного обеспечения
- 3. Решения и рекомендации
- 3.1. Проверка загрузки модулей
- 3.2. Переустановка драйвера NVIDIA
- 3.3. Проверка конфигурации GRES
- 4. Заключение
Вопрос или проблема
Я пытаюсь настроить кластер Slurm с 3 узлами со следующими характеристиками:
- ОС: Proxmox VE 8.1.4 x86_64 (на базе Debian 12)
- Ядро: 6.5.13-1-pve
- ЦП: AMD EPYC 7662
- ГП: NVIDIA GeForce RTX 4070 Ti
- Память: 128 Гб
Пакеты на узлах в основном идентичны, кроме пакетов, добавленных на узел #1 (имя хоста: server1) после установки нескольких вещей. Этот узел – единственный, на котором существует файл /dev/nvidia0.
Пакеты, которые я установил на server1:
- conda
- окружение рабочего стола gnome, не удалось заставить его работать
- несколько других, которые я не помню и которые, как я действительно сомневаюсь, могут повредить драйверы nvidia
Чтобы Slurm мог использовать ГП, они должны быть сконфигурированы для GRES.
Файл /etc/slurm/gres.conf, который нужен для этого, требует путь к ‘узлу устройства’ /dev/nvidia0 (как его называют согласно ChatGPT).
Однако этого файла нет на 2 из 3 узлов:
root@server1:~# ls /dev/nvidia0 ; ssh server2 ls /dev/nvidia0 ; ssh server3 ls /dev/nvidia0
/dev/nvidia0
ls: невозможно получить доступ к '/dev/nvidia0': Нет такого файла или каталога
ls: невозможно получить доступ к '/dev/nvidia0': Нет такого файла или каталога
Файл был создан на server2 после нескольких часов работы без какого-либо использования после переустановки cuda, это поведение не повторилось. Это поведение не проявлялось на server3, даже после переустановки cuda, файл вообще не появился.
Это происходит после месяцев нормального поведения данного файла, перед тем как файлы исчезли, все три узла были отключены на несколько недель. Период, в котором все было нормально, содержал несколько жестких отключений и циклов питания всех узлов одновременно.
Что может быть причиной этой проблемы? Я включил в этот пост выводы nvidia-smi
и dmesg | grep -i nvidia
, пожалуйста, дайте знать, если есть другие данные, которые могут быть актуальными. Могу ли я что-то сделать через интерфейс браузера Proxmox для отладки/исправления этого?
Вот выводы nvidia-smi
:
На server1:
root@server1:~# nvidia-smi
Вт Дек 24 16:18:04 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.14 Версия драйвера: 550.54.14 Версия CUDA: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| Имя ГП Необходимость постоянного использования | Bus-Id Disp.A | Непостоянная некорр. ECC |
| Вентилятор Темп Перф Потребление:Использование/Макс | Использование памяти | Использ. ГП Вычисл. М. |
| | | MIG М. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 4070 Ti Выкл | 00000000:C2:00.0 Выкл | N/A |
| 0% 29C P8 5W / 285W | 20MiB / 12282MiB | 0% По умолчанию |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Процессы: |
| ГП GI CI PID Тип Имя процесса Используемая память ГП |
| ID ID Использование |
|=========================================================================================|
| 0 N/A N/A 4222 G /usr/lib/xorg/Xorg 9MiB |
| 0 N/A N/A 4975 G /usr/bin/gnome-shell 4MiB |
+-----------------------------------------------------------------------------------------+
На server2:
root@server2:~# nvidia-smi
Вт Дек 24 16:23:57 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.14 Версия драйвера: 550.54.14 Версия CUDA: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| Имя ГП Необходимость постоянного использования | Bus-Id Disp.A | Непостоянная некорр. ECC |
| Вентилятор Темп Перф Потребление:Использование/Макс | Использование памяти | Использ. ГП Вычисл. М. |
| | | MIG М. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 4070 Ti Выкл | 00000000:C2:00.0 Выкл | N/A |
| 30% 33C P0 N/A / 285W | 0MiB / 12282MiB | 0% По умолчанию |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Процессы: |
| ГП GI CI PID Тип Имя процесса Используемая память ГП |
| ID ID Использование |
|=========================================================================================|
| Нет работающих процессов |
+-----------------------------------------------------------------------------------------+
На server3:
root@server3:~# nvidia-smi
Вт Дек 24 16:25:32 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.14 Версия драйвера: 550.54.14 Версия CUDA: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| Имя ГП Необходимость постоянного использования | Bus-Id Disp.A | Непостоянная некорр. ECC |
| Вентилятор Темп Перф Потребление:Использование/Макс | Использование памяти | Использ. ГП Вычисл. М. |
| | | MIG М. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 4070 Ti Выкл | 00000000:C2:00.0 Выкл | N/A |
| 30% 29C P0 31W / 285W | 0MiB / 12282MiB | 0% По умолчанию |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Процессы: |
| ГП GI CI PID Тип Имя процесса Используемая память ГП |
| ID ID Использование |
|=========================================================================================|
| Нет работающих процессов |
+-----------------------------------------------------------------------------------------+
Вот выводы dmesg | grep -i nvidia
:
На server1:
root@server1:~# dmesg | grep -i nvidia
[ 16.573635] nvidia: проверка модуля не удалась: отсутствует подпись и/или необходимый ключ - загрязнение ядра
[ 16.743891] nvidia-nvlink: инициализируется ядро Nvlink, основной номер устройства 511
[ 16.746998] nvidia 0000:c2:00.0: vgaarb: изменены декоды VGA: старыедекоды=io+mem, декоды=none: собственность=io+mem
[ 16.793640] NVRM: загрузка модуля ядра NVIDIA UNIX x86_64 550.54.14 Чт Фев 22 01:44:30 UTC 2024
[ 16.847931] nvidia-modeset: загрузка драйвера NVIDIA Kernel Mode Setting для UNIX 550.54.14 Чт Фев 22 01:25:25 UTC 2024
[ 16.874845] [drm] [nvidia-drm] [ID ГП 0x0000c200] загрузка драйвера
[ 16.874850] [drm] Инициализирован nvidia-drm 0.0.0 20160202 для 0000:c2:00.0 на миноре 1
[ 17.447880] audit: тип=1400 audit(1734333058.552:4): apparmor="STATUS" операция="profile_load" профиль="unconfined" имя="nvidia_modprobe" pid=3129 comm="apparmor_parser"
[ 17.447890] audit: тип=1400 audit(1734333058.552:5): apparmor="STATUS" операция="profile_load" профиль="unconfined" имя="nvidia_modprobe//kmod" pid=3129 comm="apparmor_parser"
[ 19.914023] input: HDA NVidia HDMI/DP,pcm=3 как /devices/pci0000:c0/0000:c0:01.3/0000:c2:00.1/sound/card0/input4
[ 19.914161] input: HDA NVidia HDMI/DP,pcm=7 как /devices/pci0000:c0/0000:c0:01.3/0000:c2:00.1/sound/card0/input5
[ 19.914249] input: HDA NVidia HDMI/DP,pcm=8 как /devices/pci0000:c0/0000:c0:01.3/0000:c2:00.1/sound/card0/input6
[ 19.914341] input: HDA NVidia HDMI/DP,pcm=9 как /devices/pci0000:c0/0000:c0:01.3/0000:c2:00.1/sound/card0/input7
[ 490.145165] nvidia_uvm: модуль использует символы nvUvmInterfaceDisableAccessCntr из проприетарного модуля nvidia, наследуя загрязнение.
[ 490.205086] nvidia-uvm: загружен драйвер UVM, основной номер устройства 509.
На server2:
root@server2:~# dmesg | grep -i nvidia
[ 15.802056] nvidia: проверка модуля не удалась: отсутствует подпись и/или необходимый ключ - загрязнение ядра
[ 15.946456] nvidia-nvlink: инициализируется ядро Nvlink, основной номер устройства 510
[ 15.949422] nvidia 0000:c2:00.0: vgaarb: изменены декоды VGA: старыедекоды=io+mem, декоды=none: собственность=io+mem
[ 15.999494] NVRM: загрузка модуля ядра NVIDIA UNIX x86_64 550.54.14 Чт Фев 22 01:44:30 UTC 2024
[ 16.082782] nvidia-modeset: загрузка драйвера NVIDIA Kernel Mode Setting для UNIX 550.54.14 Чт Фев 22 01:25:25 UTC 2024
[ 16.133452] [drm] [nvidia-drm] [ID ГП 0x0000c200] загрузка драйвера
[ 16.133455] [drm] Инициализирован nvidia-drm 0.0.0 20160202 для 0000:c2:00.0 на миноре 1
[ 16.684792] audit: тип=1400 audit(1734333052.814:3): apparmor="STATUS" операция="profile_load" профиль="unconfined" имя="nvidia_modprobe" pid=3022 comm="apparmor_parser"
[ 16.684804] audit: тип=1400 audit(1734333052.814:4): apparmor="STATUS" операция="profile_load" профиль="unconfined" имя="nvidia_modprobe//kmod" pid=3022 comm="apparmor_parser"
[ 19.217360] input: HDA NVidia HDMI/DP,pcm=3 как /devices/pci0000:c0/0000:c0:01.3/0000:c2:00.1/sound/card0/input4
[ 19.217465] input: HDA NVidia HDMI/DP,pcm=7 как /devices/pci0000:c0/0000:c0:01.3/0000:c2:00.1/sound/card0/input5
[ 19.217613] input: HDA NVidia HDMI/DP,pcm=8 как /devices/pci0000:c0/0000:c0:01.3/0000:c2:00.1/sound/card0/input6
[ 19.217689] input: HDA NVidia HDMI/DP,pcm=9 как /devices/pci0000:c0/0000:c0:01.3/0000:c2:00.1/sound/card0/input7
[614766.966974] [drm] [nvidia-drm] [ID ГП 0x0000c200] выгрузка драйвера
[614767.007398] nvidia-modeset: выгрузка
[614767.055085] nvidia-nvlink: отмена регистрации ядра Nvlink, основной номер устройства 510
[614792.941974] nvidia-nvlink: инициализируется ядро Nvlink, основной номер устройства 510
[614792.945073] nvidia 0000:c2:00.0: vgaarb: изменены декоды VGA: старыедекоды=none, декоды=none: собственность=io+mem
[614792.990426] NVRM: загрузка модуля ядра NVIDIA UNIX x86_64 550.54.14 Чт Фев 22 01:44:30 UTC 2024
[614793.118228] nvidia_uvm: модуль использует символы nvUvmInterfaceDisableAccessCntr из проприетарного модуля nvidia, наследуя загрязнение.
[614793.174935] nvidia-uvm: загружен драйвер UVM, основной номер устройства 508.
[614793.193257] nvidia-modeset: загрузка драйвера NVIDIA Kernel Mode Setting для UNIX 550.54.14 Чт Фев 22 01:25:25 UTC 2024
[614793.207944] [drm] [nvidia-drm] [ID ГП 0x0000c200] загрузка драйвера
[614793.207949] [drm] Инициализирован nvidia-drm 0.0.0 20160202 для 0000:c2:00.0 на миноре 1
[614793.215255] [drm] [nvidia-drm] [ID ГП 0x0000c200] выгрузка драйвера
[614793.235527] nvidia-modeset: выгрузка
[614793.269550] nvidia-uvm: выгружен драйвер UVM.
[614793.308722] nvidia-nvlink: отмена регистрации ядра Nvlink, основной номер устройства 510
[614830.614019] nvidia-nvlink: инициализируется ядро Nvlink, основной номер устройства 510
[614830.617285] nvidia 0000:c2:00.0: vgaarb: изменены декоды VGA: старыедекоды=none, декоды=none: собственность=io+mem
[614830.667271] NVRM: загрузка модуля ядра NVIDIA UNIX x86_64 550.54.14 Чт Фев 22 01:44:30 UTC 2024
[614830.682131] nvidia-modeset: загрузка драйвера NVIDIA Kernel Mode Setting для UNIX 550.54.14 Чт Фев 22 01:25:25 UTC 2024
[614830.694063] [drm] [nvidia-drm] [ID ГП 0x0000c200] загрузка драйвера
[614830.694066] [drm] Инициализирован nvidia-drm 0.0.0 20160202 для 0000:c2:00.0 на миноре 1
[702154.162815] nvidia_uvm: модуль использует символы nvUvmInterfaceDisableAccessCntr из проприетарного модуля nvidia, наследуя загрязнение.
[702154.219888] nvidia-uvm: загружен драйвер UVM, основной номер устройства 508.
На server3:
root@server3:~# dmesg | grep -i nvidia
[ 16.265794] nvidia: проверка модуля не удалась: отсутствует подпись и/или необходимый ключ - загрязнение ядра
[ 16.412839] nvidia-nvlink: инициализируется ядро Nvlink, основной номер устройства 510
[ 16.415939] nvidia 0000:c2:00.0: vgaarb: изменены декоды VGA: старыедекоды=io+mem, декоды=none: собственность=io+mem
[ 16.467074] NVRM: загрузка модуля ядра NVIDIA UNIX x86_64 550.54.14 Чт Фев 22 01:44:30 UTC 2024
[ 16.569524] nvidia-modeset: загрузка драйвера NVIDIA Kernel Mode Setting для UNIX 550.54.14 Чт Фев 22 01:25:25 UTC 2024
[ 16.620362] [drm] [nvidia-drm] [ID ГП 0x0000c200] загрузка драйвера
[ 16.620367] [drm] Инициализирован nvidia-drm 0.0.0 20160202 для 0000:c2:00.0 на миноре 1
[ 17.343983] audit: тип=1400 audit(1734333048.998:3): apparmor="STATUS" операция="profile_load" профиль="unconfined" имя="nvidia_modprobe" pid=2865 comm="apparmor_parser"
[ 17.343996] audit: тип=1400 audit(1734333048.998:4): apparmor="STATUS" операция="profile_load" профиль="unconfined" имя="nvidia_modprobe//kmod" pid=2865 comm="apparmor_parser"
[ 19.667244] input: HDA NVidia HDMI/DP,pcm=3 как /devices/pci0000:c0/0000:c0:01.3/0000:c2:00.1/sound/card0/input4
[ 19.667442] input: HDA NVidia HDMI/DP,pcm=7 как /devices/pci0000:c0/0000:c0:01.3/0000:c2:00.1/sound/card0/input5
[ 19.668256] input: HDA NVidia HDMI/DP,pcm=8 как /devices/pci0000:c0/0000:c0:01.3/0000:c2:00.1/sound/card0/input6
[ 19.668476] input: HDA NVidia HDMI/DP,pcm=9 как /devices/pci0000:c0/0000:c0:01.3/0000:c2:00.1/sound/card0/input7
[614759.853881] [drm] [nvidia-drm] [ID ГП 0x0000c200] выгрузка драйвера
[614759.905821] nvidia-modeset: выгрузка
[614759.963154] nvidia-nvlink: отмена регистрации ядра Nvlink, основной номер устройства 510
[614789.654906] nvidia-nvlink: инициализируется ядро Nvlink, основной номер устройства 510
[614789.658044] nvidia 0000:c2:00.0: vgaarb: изменены декоды VGA: старыедекоды=none, декоды=none: собственность=io+mem
[614789.701057] NVRM: загрузка модуля ядра NVIDIA UNIX x86_64 550.54.14 Чт Фев 22 01:44:30 UTC 2024
[614789.823786] nvidia_uvm: модуль использует символы nvUvmInterfaceDisableAccessCntr из проприетарного модуля nvidia, наследуя загрязнение.
[614789.878569] nvidia-uvm: загружен драйвер UVM, основной номер устройства 508.
[614789.897978] nvidia-modeset: загрузка драйвера NVIDIA Kernel Mode Setting для UNIX 550.54.14 Чт Фев 22 01:25:25 UTC 2024
[614789.913011] [drm] [nvidia-drm] [ID ГП 0x0000c200] загрузка драйвера
[614789.913016] [drm] Инициализирован nvidia-drm 0.0.0 20160202 для 0000:c2:00.0 на миноре 1
[614789.920452] [drm] [nvidia-drm] [ID ГП 0x0000c200] выгрузка драйвера
[614789.936637] nvidia-modeset: выгрузка
[614789.965280] nvidia-uvm: выгружен драйвер UVM.
[614790.007013] nvidia-nvlink: отмена регистрации ядра Nvlink, основной номер устройства 510
[614830.032477] nvidia-nvlink: инициализируется ядро Nvlink, основной номер устройства 510
[614830.035536] nvidia 0000:c2:00.0: vgaarb: изменены декоды VGA: старыедекоды=none, декоды=none: собственность=io+mem
[614830.078527] NVRM: загрузка модуля ядра NVIDIA UNIX x86_64 550.54.14 Чт Фев 22 01:44:30 UTC 2024
[614830.094605] nvidia-modeset: загрузка драйвера NVIDIA Kernel Mode Setting для UNIX 550.54.14 Чт Фев 22 01:25:25 UTC 2024
[614830.105589] [drm] [nvidia-drm] [ID ГП 0x0000c200] загрузка драйвера
[614830.105593] [drm] Инициализирован nvidia-drm 0.0.0 20160202 для 0000:c2:00.0 на миноре 1
Ответ или решение
Проблема с отсутствием устройства /dev/nvidia0
на двух из трех узлов кластера Slurm является значимой, так как эта ситуация может затруднить или полностью остановить использование графических процессоров (GPU) в ваших вычислительных задачах. Давайте рассмотрим потенциальные причины этой проблемы и возможные способы её решения.
1. Ввод в контекст
Вы указываете, что все три узла обладают схожими аппаратными спецификациями и установлены на одной и той же системе Proxmox VE 8.1.4 с ядром 6.5.13-1-pve. Однако лишь на одном из узлов (server1) приложение NVIDIA SMI успешно отображает информацию о GPU и создает устройство /dev/nvidia0
. На других узлах (server2 и server3) это устройство появляется не всегда и требует длительного времени для его инициализации.
2. Возможные причины проблемы
2.1. Версия драйвера NVIDIA
Текущая версия драйвера NVIDIA 550.54.14 может иметь особенности или конфликты с конфигурацией Proxmox или архитектурой AMD EPYC. Возможно, вам стоит рассмотреть обновление драйвера до последней стабильной версии или переустановку текущей версии на узлах, где отсутствуют /dev/nvidia0
.
2.2. Параметры BIOS/UEFI
Убедитесь, что настройки BIOS/UEFI являются одинаковыми на всех узлах. Например, поддержка виртуализации и соответствующих функций графической подсистемы должна быть включена. Проверьте также уровень управления питанием, чтобы GPU не отключались при бездействии.
2.3. Конфликт с другими модулями
Каждый узел может содержать различные программные пакеты, которые могли бы вызвать конфликты. Например, установленные условия окружения с Conda или дополнительная графическая среда могут влиять на загрузку модулей ядра. Рекомендуется проверить, какие модули загружаются на server1 и сравнить их с server2 и server3.
2.4. Блокировка аппаратного обеспечения
Если узлы испытывали проблемы с отключением питания, могут быть аппаратные сбои — например, повреждение слотов PCIe или самих GPU. Вы можете протестировать GPUs на другом оборудовании или провести тестирование на наличие ошибок системной памяти.
3. Решения и рекомендации
3.1. Проверка загрузки модулей
Используйте следующую команду, чтобы проверить, загружены ли необходимые модули на узлах:
lsmod | grep nvidia
Если модули не загружены, вы можете попробовать их загрузить вручную:
modprobe nvidia
modprobe nvidia-uvm
3.2. Переустановка драйвера NVIDIA
На узлах server2 и server3 выполните следующие команды для переустановки драйвера NVIDIA:
apt-get remove --purge '^nvidia-.*'
apt-get install nvidia-driver
3.3. Проверка конфигурации GRES
Убедитесь, что в файле /etc/slurm/gres.conf
указана правильная конфигурация. Например:
NodeName=server2 Name=nvidia File=/dev/nvidia0
NodeName=server3 Name=nvidia File=/dev/nvidia0
4. Заключение
Исходя из вышеизложенного, проблемы с отсутствием /dev/nvidia0
могут быть вызваны неправильными конфигурациями, конфликтами программного обеспечения или даже физическими неисправностями оборудования. Рекомендуется тщательно проверить драйвера, модули ядра и аппаратные настройки, чтобы обеспечить корректную работу вашего кластера Slurm. Если проблема будет сохраняться, может потребоваться обратиться в техническую поддержку NVIDIA или провести более глубокую проверку аппаратного обеспечения.