Установка драйверов 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.

Поддерживаемые дистрибутивы и драйверы

Внимание

Эта статья ссылается на CentOS, дистрибутив Linux, который приближается к состоянию конца жизни (EOL). Пожалуйста, рассмотрите возможность использования и планирования соответствующим образом.

Драйверы 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 или CentOS 7.4 предварительно устанавливают драйверы 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

SUSE Linux Enterprise Server 15 с пакетом обновления 2 (SP2), 12 с пакетом обновления 2 (SP2), 12 с пакетом обновления 5 (SP5)

Роки Linux 8.4
NVIDIA vGPU 16.3, ветвь драйвера R535(.exe)

NVIDIA vGPU 16.2, ветвь драйвера 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

lspci перечисляет устройства PCIe на виртуальной машине, включая сетевую карту InfiniBand и GPU (если есть). Если lspci не возвращается успешно, может потребоваться установить LIS в CentOS/RHEL.

Затем выполните команды установки, относящиеся к используемому дистрибутиву.

Ubuntu

Пакеты Ubuntu с собственными драйверами NVIDIA. Эти драйверы приходят непосредственно из NVIDIA и просто упаковываются Ubuntu, чтобы они могли управляться системой автоматически. Скачивание и установка драйверов из другого источника может привести к сломанной системе. Кроме того, для установки сторонних драйверов требуются дополнительные действия на виртуальных машинах с поддержкой TrustedLaunch и Secure Boot. Пользователю требуется добавить новый ключ владельца компьютера для загрузки системы. Драйверы из Ubuntu подписаны каноническим и будут работать с безопасной загрузкой.

  1. Программа установки ubuntu-drivers :

    sudo apt update && sudo apt install -y ubuntu-drivers-common
    
  2. Установите последние драйверы NVIDIA:

    sudo ubuntu-drivers install
    

    Перезагрузите виртуальную машину после установки драйвера GPU.

  3. Скачайте и установите набор средств CUDA из NVIDIA:

    Примечание.

    В примере показан путь пакета CUDA для Ubuntu 22.04 LTS. Замените путь значением для версии, которую вы планируете использовать.

    Посетите центр загрузки NVIDIA или страницу ресурсов NVIDIA CUDA, чтобы получить полный путь для каждой версии.

    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/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-3
    

    Установка может занять несколько минут.

  4. Убедитесь, что GPU правильно распознается (возможно, потребуется перезагрузить виртуальную машину, чтобы изменения системы вступили в силу):

    nvidia-smi
    

Обновления драйверов NVIDIA

Мы рекомендуем периодически обновлять драйверы NVIDIA после развертывания.

sudo apt update
sudo apt full-upgrade

CentOS или Red Hat Enterprise Linux

  1. Обновите ядро (рекомендуется). Если вы решили не обновлять ядро, убедитесь, что версии kernel-develядра и dkms подходят для вашего ядра.

    sudo yum install kernel kernel-tools kernel-headers kernel-devel
    sudo reboot
    
  2. Установите последнюю версию 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
    
  3. Повторно подключитесь к виртуальной машине и продолжите установку с помощью следующих команд:

    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
  1. Чтобы дополнительно установить полный набор средств CUDA, введите следующую команду.

    sudo yum install cuda
    

    Примечание.

    Если отображается сообщение об ошибке, связанное с отсутствующими пакетами, такими как vulkan-filesystem, то, возможно, потребуется изменить /etc/yum.repos.d/rh-cloud, найти optional-rpms и задать для enabled значение 1.

  2. Перезапустите виртуальную машину и приступите к проверке установки.

Проверка установки драйверов

Чтобы запросить состояние устройства GPU, установите SSH-подключение к виртуальной машине и запустите служебную программу командной строки nvidia smi, установленную вместе с драйвером.

Если драйвер установлен, Nvidia SMI перечисляет GPU-Util как 0 % до запуска рабочей нагрузки GPU на виртуальной машине. Версия драйвера и сведения о GPU могут отличаться от показанных на изображении.

Состояние устройства NVIDIA

Сетевое подключение 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.

    1. Установите dapl, rdmacm, ibverbs и mlx4.

      sudo apt-get update
      
      sudo apt-get install libdapl2 libmlx4-1
      
      
    2. В /etc/waagent.conf включите RDMA, раскомментировав следующие строки конфигурации. Для изменения этого файла требуется доступ с правами root.

      OS.EnableRDMA=y
      
      OS.UpdateRdmaDriver=y
      
    3. Добавьте или измените следующие параметры памяти в КБ в файле /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>
      
    4. Установите библиотеку 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.

    5. Включите 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

  1. Выполните команду lspci. Убедитесь, что карта или карты NVIDIA M60 отображаются как устройства PCI.

  2. Установка обновлений.

    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
    
  3. Отключите драйвер ядра Nouveau, который несовместим с драйвером NVIDIA. (Используйте только драйвер NVIDIA на виртуальных машинах NV или NVv2.) Чтобы отключить драйвер, создайте файл с /etc/modprobe.d именем nouveau.conf со следующим содержимым:

    blacklist nouveau
    blacklist lbm-nouveau
    
  4. Перезагрузите виртуальную машину и подключитесь повторно. Выйдите из X-сервера:

    sudo systemctl stop lightdm.service
    
  5. Загрузите и установите драйвер 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
    
  6. Когда появится запрос на запуск служебной программы nvidia-xconfig для обновления файла конфигурации X, выберите Да.

  7. После завершения установки скопируйте /etc/nvidia/gridd.conf.template в новый файл gridd.conf в расположении /etc/nvidia/.

    sudo cp /etc/nvidia/gridd.conf.template /etc/nvidia/gridd.conf
    
  8. Добавьте следующую строку в файл /etc/nvidia/gridd.conf:

    IgnoreSP=FALSE
    EnableUI=FALSE
    
  9. Удалите следующее содержимое из /etc/nvidia/gridd.conf, если оно присутствует:

    FeatureType=0
    
  10. Перезапустите виртуальную машину и приступите к проверке установки.

Установка драйвера GRID в Ubuntu с включенной безопасной загрузкой

Процесс установки драйвера GRID не предоставляет никаких параметров для пропуска сборки и установки модуля ядра и выбора другого источника подписанных модулей ядра, поэтому безопасная загрузка должна быть отключена на виртуальных машинах Linux, чтобы использовать их с GRID после установки подписанных модулей ядра.

CentOS или Red Hat Enterprise Linux

  1. Обновите ядро и 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
    
  2. Отключите драйвер ядра Nouveau, который несовместим с драйвером NVIDIA. (На виртуальных машинах NV или NV3 используйте только драйвер NVIDIA.) Для этого создайте в /etc/modprobe.d файл с именем nouveau.conf и следующим содержимым:

    blacklist nouveau
    blacklist lbm-nouveau
    
  3. Перезагрузите виртуальную машину, повторно подключитесь и установите последнюю версию служб интеграции 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
    
    
  4. Повторно подключитесь к виртуальной машине и выполните команду lspci. Убедитесь, что карта или карты NVIDIA M60 отображаются как устройства PCI.

  5. Загрузите и установите драйвер 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
    
  6. Когда появится запрос на запуск служебной программы nvidia-xconfig для обновления файла конфигурации X, выберите Да.

  7. После завершения установки скопируйте /etc/nvidia/gridd.conf.template в новый файл gridd.conf в расположении /etc/nvidia/.

    sudo cp /etc/nvidia/gridd.conf.template /etc/nvidia/gridd.conf
    
  8. Добавьте две строки в /etc/nvidia/gridd.conf:

    IgnoreSP=FALSE
    EnableUI=FALSE
    
  9. Удалите одну строку, /etc/nvidia/gridd.conf если она присутствует:

    FeatureType=0
    
  10. Перезапустите виртуальную машину и приступите к проверке установки.

Проверка установки драйверов

Чтобы запросить состояние устройства GPU, установите SSH-подключение к виртуальной машине и запустите служебную программу командной строки nvidia smi, установленную вместе с драйвером.

Если драйвер установлен, Nvidia SMI будет перечислять GPU-Util как 0% до запуска рабочей нагрузки GPU на виртуальной машине. Версия драйвера и сведения о 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.

Следующие шаги