Instalar controladores GPU NVIDIA em VMs da série N com o Linux

Atenção

Este artigo faz referência ao CentOS, uma distribuição Linux que está se aproximando do status de Fim da Vida Útil (EOL). Por favor, considere o seu uso e planeje de acordo. Para obter mais informações, consulte as diretrizes de Fim da Vida Útil do CentOS.

Aplica-se a: ✔️ Linux VMs

Para tirar partido das capacidades de GPU das VMs da série N do Azure suportadas por GPUs NVIDIA, tem de instalar controladores de GPU NVIDIA. A NVIDIA GPU Driver Extension instala drivers NVIDIA CUDA ou GRID apropriados em uma VM da série N. Instale ou gerencie a extensão usando o portal do Azure ou ferramentas como a CLI do Azure ou os modelos do Azure Resource Manager. Consulte a documentação da NVIDIA GPU Driver Extension para obter as distribuições suportadas e as etapas de implantação.

Se você optar por instalar drivers NVIDIA GPU manualmente, este artigo fornece distribuições suportadas, drivers e etapas de instalação e verificação. Informações de configuração manual do driver também estão disponíveis para VMs do Windows.

Para obter especificações de VM da série N, capacidades de armazenamento e detalhes de disco, consulte Tamanhos de VM GPU Linux.

Distribuições e controladores suportados

Atenção

Este artigo faz referência ao CentOS, uma distribuição Linux que está se aproximando do status de Fim da Vida Útil (EOL). Por favor, considere o seu uso e planejamento de acordo.

Drivers NVIDIA CUDA

Para obter os drivers CUDA mais recentes e sistemas operacionais suportados, visite o site da NVIDIA . Certifique-se de instalar ou atualizar para os drivers CUDA suportados mais recentes para sua distribuição.

Nota

Os drivers CUDA suportados mais recentes para VMs SKU originais da série NC são atualmente 470.82.01. Versões posteriores do driver não são suportadas nas placas K80 no NC.

Nota

As VMs do Azure NVads A10 v5 suportam apenas versões de driver GRID 14.1(510.73) ou superiores. O driver vGPU para o A10 SKU é um driver unificado que suporta cargas de trabalho gráficas e de computação.

Gorjeta

Como alternativa à instalação manual do driver CUDA em uma VM Linux, você pode implantar uma imagem da Máquina Virtual do Azure Data Science. As edições DSVM para Ubuntu 16.04 LTS ou CentOS 7.4 pré-instalam drivers NVIDIA CUDA, a CUDA Deep Neural Network Library e outras ferramentas.

Drivers NVIDIA GRID

A Microsoft redistribui instaladores de driver NVIDIA GRID para VMs das séries NV e NVv3 usadas como estações de trabalho virtuais ou para aplicativos virtuais. Instale apenas esses drivers GRID em VMs do Azure NV, somente nos sistemas operacionais listados na tabela a seguir. Esses drivers incluem o licenciamento para o software de GPU virtual GRID no Azure. Não é necessário configurar um servidor de licenças de software NVIDIA vGPU.

Os drivers GRID redistribuídos pelo Azure não funcionam na maioria das VMs da série não-NV, como NCv2, NCv3, ND e VMs das séries NDv2, mas funcionam na série NCasT4v3.

Para obter mais informações sobre as versões específicas de vGPU e ramificação do driver, visite o site da NVIDIA .

Distribuição Controlador
Ubuntu 20.04 LTS, 22.04 LTS

Red Hat Enterprise Linux 7.9, 8.6, 8.8

SUSE Linux Enterprise Server 15 SP2, 12 SP2,12 SP5

Linux rochoso 8.4
NVIDIA vGPU 16.3, ramificação do driver R535(.exe)

NVIDIA vGPU 16.2, ramificação do driver R535(.exe)

Nota

Para VMs do Azure NVads A10 v5, recomendamos que os clientes estejam sempre na versão mais recente do driver. A mais recente ramificação do driver principal da NVIDIA(n) é apenas compatível com a ramificação principal anterior(n-1). Por exemplo, vGPU 17.x é compatível com vGPU 16.x apenas. Qualquer VM ainda executando n-2 ou inferior pode ver falhas de driver quando a ramificação de unidade mais recente é implementada para hosts do Azure.

NVs_v3 VMs suportam apenas vGPU 16 ou versão inferior do driver.

Visite o GitHub para obter a lista completa de todos os links de drivers Nvidia GRID anteriores.

Aviso

A instalação de software de terceiros em produtos Red Hat pode afetar os termos de suporte do Red Hat. Veja o Red Hat Knowledgebase (Base de Dados de Conhecimento do Red Hat).

Instalar drivers CUDA em VMs da série N

Aqui estão as etapas para instalar drivers CUDA do NVIDIA CUDA Toolkit em VMs da série N.

Os desenvolvedores de C e C++ podem, opcionalmente, instalar o Toolkit completo para criar aplicativos acelerados por GPU. Para obter mais informações, consulte o Guia de Instalação CUDA.

Para instalar drivers CUDA, faça uma conexão SSH para cada VM. Para verificar se o sistema tem uma GPU compatível com CUDA, execute o seguinte comando:

lspci | grep -i NVIDIA

A saída é semelhante ao exemplo a seguir (mostrando uma placa NVIDIA Tesla K80):

saída de comando lspci

lspci lista os dispositivos PCIe na VM, incluindo a NIC InfiniBand e GPUs, se houver. Se o lspci não retornar com êxito, talvez seja necessário instalar o LIS no CentOS/RHEL.

Em seguida, execute comandos de instalação específicos para a sua distribuição.

Ubuntu

Ubuntu pacotes NVIDIA drivers proprietários. Esses drivers vêm diretamente da NVIDIA e são simplesmente empacotados pelo Ubuntu para que possam ser gerenciados automaticamente pelo sistema. Baixar e instalar drivers de outra fonte pode levar a um sistema quebrado. Além disso, a instalação de drivers de terceiros requer etapas extras em VMs com TrustedLaunch e Inicialização Segura habilitados. Eles exigem que o usuário adicione uma nova chave de proprietário da máquina para o sistema inicializar. Os drivers do Ubuntu são assinados pela Canonical e funcionarão com a Inicialização Segura.

  1. Utilitário de instalação ubuntu-drivers :

    sudo apt update && sudo apt install -y ubuntu-drivers-common
    
  2. Instale os drivers NVIDIA mais recentes:

    sudo ubuntu-drivers install
    
  3. Baixe e instale o kit de ferramentas CUDA da NVIDIA:

    Nota

    O exemplo mostra o caminho do pacote CUDA para o Ubuntu 22.04 LTS. Substitua o caminho específico para a versão que você planeja usar.

    Visite o Centro de Download da NVIDIA ou a página de Recursos do NVIDIA CUDA para obter o caminho completo específico para cada versão.

    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
    

    A instalação pode demorar alguns minutos.

  4. Verifique se a GPU é reconhecida corretamente (talvez seja necessário reiniciar a VM para que as alterações no sistema entrem em vigor):

    nvidia-smi
    

Atualizações do driver NVIDIA

Recomendamos que você atualize periodicamente os drivers NVIDIA após a implantação.

sudo apt update
sudo apt full-upgrade

CentOS ou Red Hat Enterprise Linux

  1. Atualize o kernel (recomendado). Se você optar por não atualizar o kernel, certifique-se de que as versões do kernel-devel, e dkms são apropriadas para o seu kernel.

    sudo yum install kernel kernel-tools kernel-headers kernel-devel
    sudo reboot
    
  2. Instale o Linux Integration Services mais recente para Hyper-V e Azure. Verifique se o LIS é necessário, verificando os resultados do lspci. Se todos os dispositivos GPU estiverem listados conforme o esperado, a instalação do LIS não será necessária.

    O LIS é aplicável ao Red Hat Enterprise Linux, CentOS e ao Oracle Linux Red Hat Compatible Kernel 5.2-5.11, 6.0-6.10 e 7.0-7.7. Consulte a documentação do Linux Integration Services para obter mais detalhes. Ignore esta etapa se você planeja usar o CentOS/RHEL 7.8 (ou versões superiores), pois o LIS não é mais necessário para essas versões.

    wget https://aka.ms/lis
    tar xvzf lis
    cd LISISO
    
    sudo ./install.sh
    sudo reboot
    
  3. Reconecte-se à VM e continue a instalação com os seguintes comandos:

    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
    

    A instalação pode demorar alguns minutos.

    Nota

    Visite o repositório Fedora e Nvidia CUDA para escolher o pacote correto para a versão do CentOS ou RHEL que você deseja usar.

Por exemplo, o CentOS 8 e o RHEL 8 precisam das etapas a seguir.

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. Para instalar opcionalmente o kit de ferramentas CUDA completo, digite:

    sudo yum install cuda
    

    Nota

    Se você vir uma mensagem de erro relacionada a pacotes ausentes como vulkan-filesystem, talvez seja necessário editar /etc/yum.repos.d/rh-cloud , procure por rpms opcionais e defina ativado como 1

  2. Reinicialize a VM e prossiga para verificar a instalação.

Verificar a instalação do driver

Para consultar o estado do dispositivo GPU, SSH para a VM e execute o utilitário de linha de comando nvidia-smi instalado com o driver.

Se o driver estiver instalado, o Nvidia SMI listará a GPU-Util como 0% até que você execute uma carga de trabalho de GPU na VM. A versão do driver e os detalhes da GPU podem ser diferentes dos mostrados.

Estado do dispositivo NVIDIA

Conectividade de rede RDMA

A conectividade de rede RDMA pode ser habilitada em VMs da série N compatíveis com RDMA, como NC24r, implantadas no mesmo conjunto de disponibilidade ou em um único grupo de posicionamento em um conjunto de escala de máquina virtual (VM). A rede RDMA suporta tráfego MPI (Message Passing Interface) para aplicativos executados com Intel MPI 5.x ou uma versão posterior:

Distribuições

Implante VMs da série N compatíveis com RDMA a partir de uma das imagens no Azure Marketplace que oferece suporte à conectividade RDMA em VMs da série N:

  • Ubuntu 16.04 LTS - Configure os drivers RDMA na VM e registre-se com a Intel para baixar o Intel MPI:

    1. Instale dapl, rdmacm, ibverbs e mlx4

      sudo apt-get update
      
      sudo apt-get install libdapl2 libmlx4-1
      
      
    2. Em /etc/waagent.conf, habilite o RDMA descomentando as seguintes linhas de configuração. Você precisa de acesso root para editar este arquivo.

      OS.EnableRDMA=y
      
      OS.UpdateRdmaDriver=y
      
    3. Adicione ou altere as seguintes configurações de memória em KB no arquivo /etc/security/limits.conf. Você precisa de acesso root para editar este arquivo. Para fins de teste, você pode definir memlock como ilimitado. Por exemplo: <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. Instale a Intel MPI Library. Compre e faça o download da biblioteca da Intel ou faça o download da versão de avaliação gratuita.

      wget http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9278/l_mpi_p_5.1.3.223.tgz
      

      Somente os tempos de execução do Intel MPI 5.x são suportados.

      Para conhecer as etapas de instalação, consulte o Guia de instalação da biblioteca Intel MPI.

    5. Habilite o ptrace para processos não depuradores não raiz (necessário para as versões mais recentes do Intel MPI).

      echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
      
  • CentOS baseado em 7.4 HPC - RDMA drivers e Intel MPI 5.1 são instalados na VM.

  • HPC baseada em CentOS - CentOS-HPC 7.6 e posterior (para SKUs onde InfiniBand é suportado por SR-IOV). Estas imagens têm as bibliotecas Mellanox OFED e MPI pré-instaladas.

Nota

As placas CX3-Pro são suportadas apenas através das versões LTS do Mellanox OFED. Use a versão LTS Mellanox OFED (4.9-0.1.7.0) nas VMs da série N com placas ConnectX3-Pro. Para obter mais informações, consulte Drivers Linux.

Além disso, algumas das imagens HPC mais recentes do Azure Marketplace têm Mellanox OFED 5.1 e posterior, que não suportam placas ConnectX3-Pro. Verifique a versão do Mellanox OFED na imagem HPC antes de usá-la em VMs com placas ConnectX3-Pro.

As imagens a seguir são as imagens mais recentes do CentOS-HPC que suportam placas 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

Instalar drivers GRID em VMs NV ou NVv3-series

Para instalar drivers NVIDIA GRID em VMs NV ou NVv3-series, faça uma conexão SSH para cada VM e siga as etapas para sua distribuição Linux.

Ubuntu

  1. Execute o comando lspci. Verifique se a placa ou placas NVIDIA M60 estão visíveis como dispositivos PCI.

  2. Instale atualizações.

    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. Desative o driver do kernel Nouveau, que é incompatível com o driver NVIDIA. (Use o driver NVIDIA apenas em VMs NV ou NVv2.) Para desativar o driver, crie um arquivo nomeado com /etc/modprobe.dnouveau.conf o seguinte conteúdo:

    blacklist nouveau
    blacklist lbm-nouveau
    
  4. Reinicialize a VM e reconecte-se. Saia do servidor X:

    sudo systemctl stop lightdm.service
    
  5. Baixe e instale o driver 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. Quando você for perguntado se deseja executar o utilitário nvidia-xconfig para atualizar seu arquivo de configuração X, selecione Sim.

  7. Após a conclusão da instalação, copie /etc/nvidia/gridd.conf.template para um novo arquivo gridd.conf no local /etc/nvidia/

    sudo cp /etc/nvidia/gridd.conf.template /etc/nvidia/gridd.conf
    
  8. Adicione o seguinte a /etc/nvidia/gridd.conf:

    IgnoreSP=FALSE
    EnableUI=FALSE
    
  9. Remova o seguinte de /etc/nvidia/gridd.conf se estiver presente:

    FeatureType=0
    
  10. Reinicialize a VM e prossiga para verificar a instalação.

Instale o driver GRID no Ubuntu com a Inicialização Segura ativada

O processo de instalação do driver GRID não oferece nenhuma opção para pular a construção e instalação do módulo do kernel e selecionar uma fonte diferente de módulos do kernel assinados, portanto, a inicialização segura tem que ser desativada em VMs Linux para usá-las com GRID, depois de instalar módulos de kernel assinados.

CentOS ou Red Hat Enterprise Linux

  1. Atualize o kernel e o DKMS (recomendado). Se você optar por não atualizar o kernel, certifique-se de que as versões de kernel-devel e dkms são apropriadas para o seu kernel.

    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. Desative o driver do kernel Nouveau, que é incompatível com o driver NVIDIA. (Use o driver NVIDIA apenas em VMs NV ou NV3.) Para fazer isso, crie um arquivo nomeado com /etc/modprobe.dnouveau.conf o seguinte conteúdo:

    blacklist nouveau
    blacklist lbm-nouveau
    
  3. Reinicialize a VM, reconecte-se e instale o Linux Integration Services mais recente para Hyper-V e Azure. Verifique se o LIS é necessário, verificando os resultados do lspci. Se todos os dispositivos GPU estiverem listados conforme o esperado, a instalação do LIS não será necessária.

    Ignore esta etapa se você planeja usar o CentOS/RHEL 7.8 (ou versões superiores), pois o LIS não é mais necessário para essas versões.

    wget https://aka.ms/lis
    tar xvzf lis
    cd LISISO
    
    sudo ./install.sh
    sudo reboot
    
    
  4. Reconecte-se à VM e execute o lspci comando. Verifique se a placa ou placas NVIDIA M60 estão visíveis como dispositivos PCI.

  5. Baixe e instale o driver 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. Quando você for perguntado se deseja executar o utilitário nvidia-xconfig para atualizar seu arquivo de configuração X, selecione Sim.

  7. Após a conclusão da instalação, copie /etc/nvidia/gridd.conf.template para um novo arquivo gridd.conf no local /etc/nvidia/

    sudo cp /etc/nvidia/gridd.conf.template /etc/nvidia/gridd.conf
    
  8. Adicione duas linhas a /etc/nvidia/gridd.conf:

    IgnoreSP=FALSE
    EnableUI=FALSE
    
  9. Remova uma linha de /etc/nvidia/gridd.conf se ela estiver presente:

    FeatureType=0
    
  10. Reinicialize a VM e prossiga para verificar a instalação.

Verificar a instalação do driver

Para consultar o estado do dispositivo GPU, SSH para a VM e execute o utilitário de linha de comando nvidia-smi instalado com o driver.

Se o driver estiver instalado, o Nvidia SMI listará a GPU-Util como 0% até que você execute uma carga de trabalho de GPU na VM. A versão do driver e os detalhes da GPU podem ser diferentes dos mostrados.

Captura de tela que mostra a saída quando o estado do dispositivo GPU é consultado.

Servidor X11

Se você precisar de um servidor X11 para conexões remotas com uma VM NV ou NVv2, o x11vnc é recomendado porque permite a aceleração de hardware de gráficos. O BusID do dispositivo M60 deve ser adicionado manualmente ao arquivo de configuração X11 (normalmente, etc/X11/xorg.conf). Adicione uma "Device" seção semelhante à seguinte:

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Tesla M60"
    BusID          "PCI:0@your-BusID:0:0"
EndSection

Além disso, atualize sua "Screen" seção para usar este dispositivo.

O BusID decimal pode ser encontrado executando

nvidia-xconfig --query-gpu-info | awk '/PCI BusID/{print $4}'

O BusID pode mudar quando uma VM é realocada ou reinicializada. Portanto, convém criar um script para atualizar o BusID na configuração X11 quando uma VM é reinicializada. Por exemplo, crie um script chamado busidupdate.sh (ou outro nome escolhido) com conteúdo semelhante ao seguinte:

#!/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

Em seguida, crie uma entrada para o script de atualização para /etc/rc.d/rc3.d que o script seja invocado como root na inicialização.

Resolução de Problemas

  • Você pode definir o modo de persistência usando nvidia-smi para que a saída do comando seja mais rápida quando você precisar consultar cartões. Para definir o modo de persistência, execute nvidia-smi -pm 1. Observe que, se a VM for reiniciada, a configuração de modo desaparecerá. Você sempre pode criar um script para a configuração do modo a ser executado na inicialização.
  • Se você atualizou os drivers NVIDIA CUDA para a versão mais recente e achar que a conectividade RDMA não está mais funcionando, reinstale os drivers RDMA para restabelecer essa conectividade.
  • Durante a instalação do LIS, se uma determinada versão (ou kernel) do CentOS/RHEL OS não for suportada para o LIS, será lançado um erro "Versão não suportada do kernel". Por favor, reporte este erro juntamente com as versões do SO e do kernel.
  • Se os trabalhos forem interrompidos por erros ECC na GPU (corrigíveis ou incorrigíveis), primeiro verifique se a GPU atende a algum dos critérios de RMA da Nvidia para erros ECC. Se a GPU for elegível para RMA, entre em contato com o suporte para obter manutenção; caso contrário, reinicie a VM para reconectar a GPU conforme descrito aqui. Métodos menos invasivos, como nvidia-smi -r não funcionar com a solução de virtualização implantada no Azure.

Próximos passos