настройка nvidia GPU на сервере Ubuntu

Вопрос или проблема

Я испытываю трудности с правильной настройкой графического процессора nvidia на своем сервере:

У меня есть:

lpuggini@srv-safu-24:~/ProgrammingProjects/nextflow_example$ lshw -C display
ПРЕДУПРЕЖДЕНИЕ: вам следует запустить эту программу от имени суперпользователя.
  *-дисплей
       описание: VGA совместимый контроллер
       продукт: Интегрированный графический контроллер Matrox G200eW3
       производитель: Matrox Electronics Systems Ltd.
       физический ид: 0
       информация о шине: pci@0000:04:00.0
       логическое имя: /dev/fb0
       версия: 04
       ширина: 32 бита
       тактовая частота: 66MHz
       возможности: vga_controller bus_master cap_list rom fb
       конфигурация: глубина=32 драйвер=mgag200 задержка=64 максимальная задержка=32 минимальная задержка=16 разрешение=1024,768
       ресурсы: irq:16 память:94000000-94ffffff память:95808000-9580bfff память:95000000-957fffff память:c0000-dffff
  *-дисплей
       описание: 3D контроллер
       продукт: AD104GL [L4]
       производитель: NVIDIA Corporation
       физический ид: 0
       информация о шине: pci@0000:ae:00.0
       версия: a1
       ширина: 64 бита
       тактовая частота: 33MHz
       возможности: bus_master cap_list
       конфигурация: драйвер=nouveau задержка=0
       ресурсы: iomemory:2d000-2cfff iomemory:2d180-2d17f irq:16 память:e2000000-e2ffffff память:2d0000000000-2d07ffffffff память:2d1800000000-2d1801ffffff память:e3000000-e37fffff память:2d0800000000-2d17ffffffff память:2d1802000000-2d1841ffffff
ПРЕДУПРЕЖДЕНИЕ: вывод может быть неполным или неточным, вам следует запустить эту программу от имени суперпользователя.
lpuggini@srv-safu-24:~/ProgrammingProjects/nextflow_example$

и

lpuggini@srv-safu-24:~/ProgrammingProjects/nextflow_example$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Авторские права (c) 2005-2023 NVIDIA Corporation
Собрано в Fri_Jan__6_16:45:21_PST_2023
Инструменты компиляции Cuda, выпуск 12.0, V12.0.140
Собрано cuda_12.0.r12.0/compiler.32267302_0
lpuggini@srv-safu-24:~/ProgrammingProjects/nextflow_example$

Я не могу использовать графический процессор ни в одном из своих инструментов. Например, посмотрите pytorch:

lpuggini@srv-safu-24:~/ProgrammingProjects/nextflow_example$ poetry shell
Запуск оболочки в /home/lpuggini/.cache/pypoetry/virtualenvs/nextflow-example-jopvkqXR-py3.12
lpuggini@srv-safu-24:~/ProgrammingProjects/nextflow_example$ . /home/lpuggini/.cache/pypoetry/virtualenvs/nextflow-example-jopvkqXR-py3.12/bin/activate
(nextflow-example-py3.12) lpuggini@srv-safu-24:~/ProgrammingProjects/nextflow_example$ ipython
Python 3.12.3 (main, 11 сентября 2024, 14:17:37) [GCC 13.2.0]
Введите 'copyright', 'credits' или 'license' для получения дополнительной информации
IPython 8.28.0 -- Улучшенный интерактивный Python. Введите '?' для помощи.

В [1]: import torch

В [2]: torch.cuda.is_available()
Out[2]: False

но также singularity не видит графический процессор. Как я могу это исправить?

ИЗМЕНЕНИЕ:
По просьбе, вот список драйверов:

lpuggini@srv-safu-24:~$ ubuntu-drivers list
udevadm hwdb устарел. Используйте systemd-hwdb вместо него.
udevadm hwdb устарел. Используйте systemd-hwdb вместо него.
udevadm hwdb устарел. Используйте systemd-hwdb вместо него.
udevadm hwdb устарел. Используйте systemd-hwdb вместо него.
udevadm hwdb устарел. Используйте systemd-hwdb вместо него.
udevadm hwdb устарел. Используйте systemd-hwdb вместо него.
udevadm hwdb устарел. Используйте systemd-hwdb вместо него.
udevadm hwdb устарел. Используйте systemd-hwdb вместо него.
udevadm hwdb устарел. Используйте systemd-hwdb вместо него.
ОШИБКА:root:Команда aplay не найдена
nvidia-driver-560-open, (ядерные модули предоставлены nvidia-dkms-560-open)
nvidia-driver-550, (ядерные модули предоставлены linux-modules-nvidia-550-generic)
nvidia-driver-550-open, (ядерные модули предоставлены linux-modules-nvidia-550-open-generic)
nvidia-driver-555-open, (ядерные модули предоставлены nvidia-dkms-555-open)
nvidia-driver-560, (ядерные модули предоставлены nvidia-dkms-560)
nvidia-driver-535-server, (ядерные модули предоставлены linux-modules-nvidia-535-server-generic)
nvidia-driver-535-server-open, (ядерные модули предоставлены linux-modules-nvidia-535-server-open-generic)
nvidia-driver-535-open, (ядерные модули предоставлены linux-modules-nvidia-535-open-generic)
nvidia-driver-555, (ядерные модули предоставлены nvidia-dkms-555)
lpuggini@srv-safu-24:~$

Ответ или решение

Настройка графического процессора (GPU) NVIDIA на сервере Ubuntu может быть сложной задачей, особенно если вы испытываете проблемы с распознаванием GPU в таких инструментах, как PyTorch и Singularity. Давайте разберем процесс настройки и устранения неполадок по шагам.

Шаг 1: Убедитесь, что GPU правильно установлен

Сначала убедитесь, что ваш NVIDIA GPU правильно распознается операционной системой. Вы уже использовали команду lshw -C display, которая показывает, что ваш GPU NVIDIA (AD104GL [L4]) обнаружен, но в состоянии "driver=nouveau", что означает, что используется открытый драйвер. Для полноценной работы рекомендуется установить проприетарные драйвера NVIDIA.

Шаг 2: Установка драйверов NVIDIA

  1. Удалите старые драйверы (если они есть):

    sudo apt-get purge nvidia*
  2. Добавьте PPA для драйверов NVIDIA:

    sudo add-apt-repository ppa:graphics-drivers/ppa
    sudo apt-get update
  3. Установите рекомендуемые драйверы:
    Используйте ubuntu-drivers devices, чтобы получить список доступных драйверов, затем установите рекомендованный драйвер (например, nvidia-driver-550):

    sudo apt-get install nvidia-driver-550
  4. Перезагрузите сервер:

    sudo reboot

Шаг 3: Убедитесь, что драйверы работают

После перезагрузки проверьте, что драйверы установлены и работают корректно:

nvidia-smi

Вы должны увидеть информацию о вашем GPU. Если команда не распознается или вы видите ошибки, это может указывать на проблемы с установкой драйверов.

Шаг 4: Установка CUDA Toolkit

Поскольку у вас уже установлен CUDA (версией 12.0), вам может потребоваться убедиться, что он совместим с вашим установленным драйвером NVIDIA. Как правило, вам нужно использовать версии драйвера, соответствующие вашей версии CUDA.

  1. Проверьте совместимость на официальном сайте NVIDIA.

Шаг 5: Установка и настройка PyTorch

Чтобы PyTorch мог распознавать GPU, необходимо установить соответствующую версию, которая поддерживает CUDA. Если вы еще этого не сделали, вот как это сделать с использованием Poetry:

poetry add torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu120

Обратите внимание на cu120 в команде – это означает, что PyTorch будет собираться с поддержкой CUDA 12.0.

Шаг 6: Проверка доступности GPU в PyTorch

После установки PyTorch выполните в вашей Poetry-среде следующую команду:

import torch
print(torch.cuda.is_available())

Если вывод будет True, значит PyTorch успешно видит ваш GPU.

Шаг 7: Настройка Singularity

Для использования GPU с Singularity убедитесь, что вы используете правильные опции запуска. Например:

singularity exec --nv your_image.sif your_command

Опция --nv указывает Singularity, что необходимо смонтировать драйвера NVIDIA и обеспечить доступ к GPU.

Шаг 8: Дополнительные проверки

При возникновении дальнейших проблем, проверьте:

  • Логи Xorg: Они могут содержать ошибки, которые помогут в диагностике проблем с драйверами.
  • Убедитесь, что в вашем docker или singularity обязательной зависимостью является поддержка NVIDIA, если ваша среда контейнеризации требует этого.

Заключение

Эти шаги должны помочь вам настроить GPU NVIDIA на вашем сервере Ubuntu для работы с PyTorch и Singularity. Если проблемы продолжают возникать, возможно, вам стоит обратиться к форумам поддержки NVIDIA или к документации сообществ с подробным описанием ваших проблем.

Оцените материал
Добавить комментарий

Капча загружается...