Установка драйверов GPU NVIDIA на виртуальные машины серии N под управлением Linux
Внимание
Эта статья ссылается на CentOS, дистрибутив Linux, который является состоянием "Конец жизни" (EOL). Обратите внимание на использование и план соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.
Область применения: ✔️ виртуальные машины Linux
Чтобы воспользоваться всеми преимуществами GPU виртуальных машин Azure серии N, необходимо установить драйверы GPU NVIDIA. Расширение драйвера GPU NVIDIA устанавливает необходимые драйверы CUDA или GRID NVIDIA на виртуальную машину серии N. Для установки расширения и управления им можно использовать портал Azure или такие инструменты, как Azure CLI и шаблоны Azure Resource Manager. Сведения о поддерживаемых дистрибутивах и этапах развертывания см. в документации по расширению драйвера GPU NVIDIA.
Если вы решили установить драйверы GPU NVIDIA вручную, то в этой статье вы найдете сведения о поддерживаемых дистрибутивах, ссылки на драйверы и инструкции по установке и проверке. Сведения о ручной установке драйверов также доступны для виртуальных машин Windows.
Характеристики виртуальных машин серии N, сведения о дисках и объеме памяти см. в статье Размеры виртуальных машин Linux, оптимизированных для GPU.
Поддерживаемые дистрибутивы и драйверы
Драйверы NVIDIA CUDA
Актуальные драйверы CUDA и поддерживаемые операционные системы см. на веб-сайте NVIDIA. Убедитесь, что вы установили последнюю версию драйверов CUDA для своего дистрибутива или выполнили обновление до этой версии.
Примечание.
Последние поддерживаемые драйверы CUDA для исходных виртуальных машин SKU серии NC в настоящее время — 470.82.01. Более поздние версии драйверов не поддерживаются на картах K80 в серии NC.
Примечание.
Виртуальные машины Azure NVads A10 версии 5 поддерживают только GRID 14.1(510.73) или более поздние версии драйверов. Драйвер VGPU для SKU A10 — это единый драйвер, поддерживающий как графические, так и вычислительные рабочие нагрузки.
Совет
Вместо ручной установки драйвера CUDA на виртуальной машине Linux можно развернуть образ виртуальной машины для обработки и анализа данных Azure. Выпуск DSVM для Ubuntu 16.04 LTS предварительно устанавливает драйверы NVIDIA CUDA, библиотеку глубокой нейронной сети CUDA и другие средства.
Драйверы NVIDIA GRID
Корпорация Майкрософт распространяет установщики драйверов NVIDIA GRID для виртуальных машин серии NV и NVv3, используемых в качестве виртуальных рабочих станций или виртуальных приложений. Эти драйверы GRID следует устанавливать только на виртуальные машины Azure серии NV под управлением операционных систем, перечисленных в следующей таблице. Эти драйверы содержат лицензии на ПО виртуального графического процессора GRID в Azure. Вам не нужно настраивать сервер лицензирования программного обеспечения NVIDIA vGPU.
Драйверы GRID, распространяемые Azure, не работают на большинстве виртуальных машин серии NV, таких как NC, NCv2, NCv3, ND и NDv2 серии NDv2, но работают над сериями NCasT4v3.
Дополнительные сведения о конкретных версиях vGPU и драйверов см. на веб-сайте NVIDIA .
Распределение | Драйвер |
---|---|
Ubuntu 20.04 LTS, 22.04 LTS Red Hat Enterprise Linux 7.9, 8.6, 8.8, 8.9, 8.10 SUSE Linux Enterprise Server 15 с пакетом обновления 2 (SP2), 12 с пакетом обновления 2 (SP2), 12 с пакетом обновления 5 (SP5) Роки Linux 8.4 |
NVIDIA vGPU 17.3, ветвь драйвера R550(.exe) NVIDIA vGPU 16.5, ветвь драйвера R535(.exe) |
Примечание.
Для виртуальных машин Azure NVads A10 версии 5 мы рекомендуем клиентам всегда находиться в последней версии драйвера. Последняя основная ветвь драйвера NVIDIA (n) является только обратной compatbile с предыдущей основной ветвью (n-1). Например, vGPU 17.x является обратно совместимым только с vGPU 16.x. Все виртуальные машины по-прежнему выполняются n-2 или ниже, могут видеть сбои драйверов, когда последняя ветвь диска развернута на узлах Azure.
NVs_v3 виртуальные машины поддерживают только версию драйвера vGPU 16 или более поздней версии.
Полный список всех ссылок на все драйверы GRID предыдущих версий компании NVIDIA см. на сайте GitHub.
Предупреждение
Установка стороннего программного обеспечения на продуктах Red Hat может нарушать условия технической поддержки Red Hat. Ознакомьтесь со статьей из базы знаний Red Hat.
Установка драйверов CUDA на виртуальные машины серии N
Ниже приведены инструкции по установке драйверов CUDA из набора средств NVIDIA CUDA Toolkit на виртуальные машины серии N.
Разработчики на языках C и C++ могут дополнительно установить полный набор средств для создания приложений, использующих ускорение на GPU. Дополнительные сведения см. в руководстве по установке CUDA.
Чтобы установить драйверы CUDA, установите SSH-подключение к каждой виртуальной машине. Убедитесь, что в системе есть графический процессор с архитектурой CUDA, выполнив следующую команду:
lspci | grep -i NVIDIA
Выходные данные аналогичны следующему примеру (с картой NVIDIA Tesla K80):
lspci перечисляет устройства PCIe на виртуальной машине, включая сетевую карту InfiniBand и GPU (если есть). Если lspci не возвращается успешно, может потребоваться установить LIS в CentOS/RHEL.
Затем выполните команды установки, относящиеся к используемому дистрибутиву.
Ubuntu
Пакеты Ubuntu с собственными драйверами NVIDIA. Эти драйверы приходят непосредственно из NVIDIA и просто упаковываются Ubuntu, чтобы они могли управляться системой автоматически. Скачивание и установка драйверов из другого источника может привести к сломанной системе. Кроме того, для установки сторонних драйверов требуются дополнительные действия на виртуальных машинах с поддержкой TrustedLaunch и Secure Boot. Пользователю требуется добавить новый ключ владельца компьютера для загрузки системы. Драйверы из Ubuntu подписаны каноническим и будут работать с безопасной загрузкой.
Программа установки
ubuntu-drivers
:sudo apt update && sudo apt install -y ubuntu-drivers-common
Установите последние драйверы NVIDIA:
sudo ubuntu-drivers install
Перезагрузите виртуальную машину после установки драйвера GPU.
Скачайте и установите набор средств CUDA из NVIDIA:
Примечание.
В примере показан путь пакета CUDA для Ubuntu 24.04 LTS. Замените путь значением для версии, которую вы планируете использовать.
Посетите центр загрузки NVIDIA или страницу ресурсов NVIDIA CUDA, чтобы получить полный путь для каждой версии.
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb sudo apt install -y ./cuda-keyring_1.1-1_all.deb sudo apt update sudo apt -y install cuda-toolkit-12-5
Установка может занять несколько минут.
Перезагрузите виртуальную машину после завершения установки:
sudo reboot
Убедитесь, что GPU правильно распознается (после перезагрузки):
nvidia-smi
Обновления драйверов NVIDIA
Мы рекомендуем периодически обновлять драйверы NVIDIA после развертывания.
sudo apt update
sudo apt full-upgrade
CentOS или Red Hat Enterprise Linux
Обновите ядро (рекомендуется). Если вы решили не обновлять ядро, убедитесь, что версии
kernel-devel
ядра иdkms
подходят для вашего ядра.sudo yum install kernel kernel-tools kernel-headers kernel-devel sudo reboot
Установите последнюю версию Linux Integration Services для Hyper-V и Azure. Проверьте, требуется ли LIS, по результатам lspci. Если все устройства GPU указаны должным образом, установка LIS не требуется.
LIS применимо к Red Hat Enterprise Linux, CentOS и Oracle Red Hat Compatible Kernel 5.2-5.11, 6.0-6.10 и 7.0-7.7. Дополнительные сведения см. в документации по службам Linux Integration Services. Пропустите этот шаг, если вы планируете использовать CentOS/RHEL 7.8 (или более поздние версии), так как для этих версий LIS уже не требуется.
wget https://aka.ms/lis tar xvzf lis cd LISISO sudo ./install.sh sudo reboot
Повторно подключитесь к виртуальной машине и продолжите установку с помощью следующих команд:
sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo sudo yum clean all sudo yum -y install nvidia-driver-latest-dkms cuda-drivers
Установка может занять несколько минут.
Примечание.
Посетите репозитории Fedora и NVIDIA CUDA, чтобы подобрать подходящий пакет для выбранной версии CentOS или RHEL.
Например, CentOS 8 и RHEL 8 должны выполнить следующие действия.
sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo yum install dkms
sudo wget https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo -O /etc/yum.repos.d/cuda-rhel8.repo
sudo yum install cuda-drivers
Чтобы дополнительно установить полный набор средств CUDA, введите следующую команду.
sudo yum install cuda
Примечание.
Если отображается сообщение об ошибке, связанное с отсутствующими пакетами, такими как vulkan-filesystem, то, возможно, потребуется изменить /etc/yum.repos.d/rh-cloud, найти optional-rpms и задать для enabled значение 1.
Перезапустите виртуальную машину и приступите к проверке установки.
Проверка установки драйверов
Чтобы запросить состояние устройства GPU, установите SSH-подключение к виртуальной машине и запустите служебную программу командной строки nvidia smi, установленную вместе с драйвером.
Если драйвер установлен, Nvidia SMI перечисляет GPU-Util как 0 % до запуска рабочей нагрузки GPU на виртуальной машине. Версия драйвера и сведения о GPU могут отличаться от показанных на изображении.
Сетевое подключение RDMA
Сетевое подключение RDMA можно включить на виртуальных машинах серии N с поддержкой RDMA, таких как NC24r, развернутых в одной и той же группе доступности или в одной и той же группе размещения в масштабируемом наборе виртуальных машин. Сеть RDMA поддерживает трафик интерфейса передачи сообщений (MPI) для приложений, работающих с Intel MPI 5.x или более поздней версии:
Дистрибутивы
Разверните виртуальные машины серии N с поддержкой RDMA из одного из следующих образов Azure Marketplace, поддерживающих подключение RDMA на виртуальных машинах серии N:
Ubuntu 16.04 LTS. Настройте драйверы RDMA на виртуальной машине и выполните регистрацию на сайте Intel, чтобы скачать Intel MPI.
Установите dapl, rdmacm, ibverbs и mlx4.
sudo apt-get update sudo apt-get install libdapl2 libmlx4-1
В /etc/waagent.conf включите RDMA, раскомментировав следующие строки конфигурации. Для изменения этого файла требуется доступ с правами root.
OS.EnableRDMA=y OS.UpdateRdmaDriver=y
Добавьте или измените следующие параметры памяти в КБ в файле /etc/security/limits.conf. Для изменения этого файла требуется доступ с правами root. В целях тестирования можно также задать неограниченное значение для параметра memlock. Например:
<User or group name> hard memlock unlimited
.<User or group name> hard memlock <memory required for your application in KB> <User or group name> soft memlock <memory required for your application in KB>
Установите библиотеку Intel MPI Купите и скачайте библиотеку с сайта Intel или скачайте бесплатную пробную версию.
wget http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9278/l_mpi_p_5.1.3.223.tgz
Поддерживаются только среды выполнения Intel MPI 5.x.
Шаги установки см. в руководстве по установке библиотеки Intel MPI.
Включите ptrace для некорневых процессов без отладчика (требуется для последних версий Intel MPI).
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
HPC версии 7.4 на основе CentOS. Драйверы RDMA и Intel MPI 5.1 будут установлены на виртуальной машине.
HPC на основе CentOS. CENTOS-HPC 7.6 и более поздних версий (для SKU, где InfiniBand поддерживается за счет применения технологии SR-IOV). На этих изображениях предварительно установлены библиотеки Mellanox OFED и MPI.
Примечание.
Карты CX3-Pro поддерживают только LTS-версии Mellanox OFED. Используйте LTS Mellanox OFED версии (4.9–0.1.7.0) на виртуальных машинах серии N с картами ConnectX3-Pro. См. дополнительные сведения о драйверах Linux.
Кроме того, некоторые из последних образов HPC для Azure Marketplace включают Mellanox OFED 5.1 и более поздних версий, которые не поддерживают карты ConnectX3-Pro. Проверьте версию Mellanox OFED в образе HPC, прежде чем использовать ее на виртуальных машинах с картами ConnectX3-Pro.
Ниже перечислены новейшие образы CentOS-HPC, которые поддерживают карты ConnectX3-Pro:
- OpenLogic:CentOS-HPC:7.6:7.6.2020062900
- OpenLogic:CentOS-HPC:7_6gen2:7.6.2020062901;
- OpenLogic:CentOS-HPC:7.7:7.7.2020062600;
- OpenLogic:CentOS-HPC:7_7-gen2:7.7.2020062601;
- OpenLogic:CentOS-HPC:8_1:8.1.2020062400;
- OpenLogic:CentOS-HPC:8_1-gen2:8.1.2020062401;
Установка драйверов GRID на виртуальные машины серии NV или NVv3
Чтобы установить драйверы GRID NVIDIA на виртуальных машинах серии NV или NVv3, подключитесь по протоколу SSH к каждой виртуальной машине и выполните действия, необходимые для вашего дистрибутива Linux.
Ubuntu
Выполните команду
lspci
. Убедитесь, что карта или карты NVIDIA M60 отображаются как устройства PCI.Установка обновлений.
sudo apt-get update sudo apt-get upgrade -y sudo apt-get dist-upgrade -y sudo apt-get install build-essential ubuntu-desktop -y sudo apt-get install linux-azure -y
Отключите драйвер ядра Nouveau, который несовместим с драйвером NVIDIA. (Используйте только драйвер NVIDIA на виртуальных машинах NV или NVv2.) Чтобы отключить драйвер, создайте файл с
/etc/modprobe.d
именемnouveau.conf
со следующим содержимым:blacklist nouveau blacklist lbm-nouveau
Перезагрузите виртуальную машину и подключитесь повторно. Выйдите из X-сервера:
sudo systemctl stop lightdm.service
Загрузите и установите драйвер GRID.
wget -O NVIDIA-Linux-x86_64-grid.run https://go.microsoft.com/fwlink/?linkid=874272 chmod +x NVIDIA-Linux-x86_64-grid.run sudo ./NVIDIA-Linux-x86_64-grid.run
Когда появится запрос на запуск служебной программы nvidia-xconfig для обновления файла конфигурации X, выберите Да.
После завершения установки скопируйте /etc/nvidia/gridd.conf.template в новый файл gridd.conf в расположении /etc/nvidia/.
sudo cp /etc/nvidia/gridd.conf.template /etc/nvidia/gridd.conf
Добавьте следующую строку в файл
/etc/nvidia/gridd.conf
:IgnoreSP=FALSE EnableUI=FALSE
Удалите следующее содержимое из
/etc/nvidia/gridd.conf
, если оно присутствует:FeatureType=0
Перезапустите виртуальную машину и приступите к проверке установки.
Установка драйвера GRID в Ubuntu с включенной безопасной загрузкой
Процесс установки драйвера GRID не предоставляет никаких параметров для пропуска сборки и установки модуля ядра и выбора другого источника подписанных модулей ядра, поэтому безопасная загрузка должна быть отключена на виртуальных машинах Linux, чтобы использовать их с GRID после установки подписанных модулей ядра.
CentOS или Red Hat Enterprise Linux
Обновите ядро и DKMS (рекомендуется). Если вы решите не делать это, убедитесь, что версии
kernel-devel
иdkms
соответствуют ядру.sudo yum update sudo yum install kernel-devel sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo yum install dkms sudo yum install hyperv-daemons
Отключите драйвер ядра Nouveau, который несовместим с драйвером NVIDIA. (На виртуальных машинах NV или NV3 используйте только драйвер NVIDIA.) Для этого создайте в
/etc/modprobe.d
файл с именемnouveau.conf
и следующим содержимым:blacklist nouveau blacklist lbm-nouveau
Перезагрузите виртуальную машину, повторно подключитесь и установите последнюю версию служб интеграции Linux для Hyper-V и Azure. Проверьте, требуется ли LIS, по результатам lspci. Если все устройства GPU указаны должным образом, установка LIS не требуется.
Пропустите этот шаг, если вы планируете использовать CentOS/RHEL 7.8 (или более поздние версии), так как для этих версий LIS уже не требуется.
wget https://aka.ms/lis tar xvzf lis cd LISISO sudo ./install.sh sudo reboot
Повторно подключитесь к виртуальной машине и выполните команду
lspci
. Убедитесь, что карта или карты NVIDIA M60 отображаются как устройства PCI.Загрузите и установите драйвер GRID.
wget -O NVIDIA-Linux-x86_64-grid.run https://go.microsoft.com/fwlink/?linkid=874272 chmod +x NVIDIA-Linux-x86_64-grid.run sudo ./NVIDIA-Linux-x86_64-grid.run
Когда появится запрос на запуск служебной программы nvidia-xconfig для обновления файла конфигурации X, выберите Да.
После завершения установки скопируйте /etc/nvidia/gridd.conf.template в новый файл gridd.conf в расположении /etc/nvidia/.
sudo cp /etc/nvidia/gridd.conf.template /etc/nvidia/gridd.conf
Добавьте две строки в
/etc/nvidia/gridd.conf
:IgnoreSP=FALSE EnableUI=FALSE
Удалите одну строку,
/etc/nvidia/gridd.conf
если она присутствует:FeatureType=0
Перезапустите виртуальную машину и приступите к проверке установки.
Проверка установки драйверов
Чтобы запросить состояние устройства GPU, установите SSH-подключение к виртуальной машине и запустите служебную программу командной строки nvidia smi, установленную вместе с драйвером.
Если драйвер установлен, Nvidia SMI будет перечислять GPU-Util как 0% до запуска рабочей нагрузки GPU на виртуальной машине. Версия драйвера и сведения о GPU могут отличаться от показанных на изображении.
Сервер X11
Если вам требуется сервер X11 для удаленных подключений к виртуальной машине NV или NVv2, рекомендуем использовать x11vnc, так как он поддерживает аппаратное ускорение графики. BusID устройства M60 необходимо вручную добавить в конфигурационный файл X11 (обычно etc/X11/xorg.conf
). Добавьте раздел "Device"
, аналогичный приведенному ниже.
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "Tesla M60"
BusID "PCI:0@your-BusID:0:0"
EndSection
Чтобы использовать это устройство, обновите раздел "Screen"
.
Чтобы найти десятичное число BusID, выполните эту команду:
nvidia-xconfig --query-gpu-info | awk '/PCI BusID/{print $4}'
BusID может измениться, если виртуальная машина будет перераспределена или перезагружена. Для обновления BusID в конфигурации X11 при перезагрузке виртуальной машины можно создать и использовать сценарий. Например, создайте сценарий busidupdate.sh
(или выберите другое имя) примерно со следующим содержимым:
#!/bin/bash
XCONFIG="/etc/X11/xorg.conf"
OLDBUSID=`awk '/BusID/{gsub(/"/, "", $2); print $2}' ${XCONFIG}`
NEWBUSID=`nvidia-xconfig --query-gpu-info | awk '/PCI BusID/{print $4}'`
if [[ "${OLDBUSID}" == "${NEWBUSID}" ]] ; then
echo "NVIDIA BUSID not changed - nothing to do"
else
echo "NVIDIA BUSID changed from \"${OLDBUSID}\" to \"${NEWBUSID}\": Updating ${XCONFIG}"
sed -e 's|BusID.*|BusID '\"${NEWBUSID}\"'|' -i ${XCONFIG}
fi
Затем создайте запись для сценария обновления в /etc/rc.d/rc3.d
, чтобы этот сценарий вызывался в качестве корневого сценария во время загрузки.
Устранение неполадок
- Когда необходимо запрашивать карты, для быстрого получения выходных данных команды можно задать режим сохранения с помощью команды
nvidia-smi
. Чтобы задать режим сохранения, выполнитеnvidia-smi -pm 1
. Обратите внимание, что в случае перезапуска виртуальной машины настройка режима не сохранится. Всегда можно написать сценарий настройки режима для выполнения при запуске. - Если вы обновили драйверы CUDA NVIDIA до последней версии и обнаруживаете, что подключение RDMA больше не работает, переустановите драйверы RDMA, чтобы восстановить подключение.
- Если при установке LIS определенная версия ОС CentOS/RHEL (или ядра) не поддерживается для LIS, выдается ошибка "Неподдерживаемая версия ядра". Сообщите об этой ошибке, указав версии ОС и ядра.
- Если задания прерываются ошибками ECC на GPU (как исправляемыми, так и неисправимыми), сначала проверьте, соответствует ли GPU любому из критериев RMA для ошибок ECC NVIDIA. Если GPU подходит для RMA, обратитесь в службу поддержки, чтобы получить обслуживание. В противном случае перезагрузите виртуальную машину, чтобы повторно подключить GPU, как описано здесь. Менее инвазивные методы, такие как
nvidia-smi -r
не работают с решением виртуализации, развернутым в Azure.
Следующие шаги
- Чтобы записать образ виртуальной машины Linux с установленными драйверами NVIDIA, см. статью Как подготовить к работе и записать образ виртуальной машины Linux.