Share via


Instalar drivers NVIDIA GPU em VMs da série N que executam o Linux

Cuidado

Este artigo faz referência ao CentOS, uma distribuição do Linux que está se aproximando do status de EOL (fim da vida útil). Considere seu uso e planeje adequadamente. Para obter mais informações, consulte as Diretrizes de fim de vida do CentOS.

Aplica-se a: ✔️ VMs do Linux

Para aproveitar as funcionalidades de GPU das VMs da série N do Azure que contam com GPUs da NVIDIA, é preciso instalar os drivers para GPU NVIDIA. A Extensão de Driver de GPU NVIDIA instala drivers CUDA ou GRID NVIDIA apropriados em VMs 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. Confira a documentação da Extensão de Driver de GPU NVIDIA para saber quais são as distribuições compatíveis e as etapas de implantação.

Se você optar por instalar os drivers de GPU da NVIDIA manualmente, este artigo fornecerá as distribuições compatíveis, os drivers e as etapas de instalação e verificação. Também há informações de As informações de instalação manual de driver também estão disponíveis para VMs do Windows.

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

Distribuições e drivers com suporte

Cuidado

Este artigo faz referência ao CentOS, uma distribuição do Linux que está se aproximando do status de EOL (fim da vida útil). Considere seu uso e planejamento adequadamente.

Drivers NVIDIA CUDA

Para ver os últimos drivers CUDA e os sistemas operacionais com suporte, acesse o site NVIDIA. Certifique-se de instalar ou atualizar para os drivers CUDA mais recentes com suporte para a sua distribuição.

Observação

Atualmente, os drivers CUDA mais recentes com suporte para VMs do SKU da série NC original são 470.82.01. Não há suporte para versões posteriores do driver nos cartões K80 no NC.

Observação

As VMs NVads A10 v5 do Azure só dão suporte a versões de driver GRID 14.1(510.73) ou superiores. O driver vGPU para o SKU A10 é um driver unificado que dá suporte a cargas de trabalho de computação e de elementos gráficos.

Dica

Como alternativa à instalação manual do driver CUDA em uma VM do Linux, você pode implantar uma imagem de Máquina Virtual de Ciência de Dados do Azure. As edições DSVM para Ubuntu 16.04 LTS ou CentOS 7.4 vem com drivers NVIDIA CUDA pré-instalados, a Biblioteca de Rede Neural Avançada CUDA Neural e outras ferramentas.

Drivers NVIDIA GRID

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

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

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

Distribuição Driver
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

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

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

Observação

Para VMs do Azure NVads A10 v5, recomendamos que os clientes estejam sempre na versão mais recente do driver. O branch de driver principal NVIDIA mais recente(n) só tem compatibilidade com versões anteriores para o branch principal anterior(n-1). Por exemplo, vGPU 17.x é compatível com versões anteriores somente para vGPU 16.x. Todas as VMs que ainda executam n-2 ou inferior podem ver falhas de driver quando o branch de unidade mais recente é distribuído para hosts do Azure.

As VMs NVs_v3 dão suporte apenas à versão de driver vGPU 16 ou inferior.

Para obter a lista completa de todos os links de driver Nvidia GRID anteriores, acesse o GitHub.

Aviso

A instalação de software de terceiros em produtos do Red Hat pode afetar os termos de suporte do Red Hat. Consulte o artigo da Base de conhecimento do Red Hat.

Instalar drivers de CUDA em VMs série N

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

Os desenvolvedores de C e C++ podem opcionalmente instalar o Kit de ferramentas completo para criar aplicativos com aceleração de GPU. Para obter mais informações, consulte o Guia de instalação do CUDA.

Para instalar os drivers de CUDA, realize 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 um cartão NVIDIA Tesla K80):

Saída do comando lspci

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

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

Ubuntu

O Ubuntu empacota drivers proprietários da NVIDIA. 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 adicionais em VMs com TrustedLaunch e Inicialização Segura habilitados. Eles exigem que o usuário adicione uma nova Chave de Proprietário do Computador para o sistema ser inicializado. Os drivers do Ubuntu são assinados pela Canonical e funcionarão com a Inicialização Segura.

  1. Instalar o utilitário ubuntu-drivers:

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

    sudo ubuntu-drivers install
    

    Reinicie a VM após a instalação do driver de GPU.

  3. Baixe e instale o kit de ferramentas CUDA da NVIDIA:

    Observação

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

    Visite o Centro de Download da NVIDIA ou a Página de Recursos CUDA da NVIDIA para 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 poderá levar vários minutos.

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

    nvidia-smi
    

Atualizações do driver NVIDIA

É recomendável 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, verifique se as versões de 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 os Integration Services do Linux para Hyper-V mais recentes. Verifique se o LIS é necessário verificando os resultados do lspci. Se todos os dispositivos GPU estiverem listados como esperado, não é necessário instalar o LIS.

    O LIS é aplicável ao Red Hat Enterprise Linux, CentOS e ao kernel compatível com o Red Hat do Oracle Linux 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. Pule essa etapa se quiser usar o CentOS/RHEL 7.8 (ou versões superiores), pois o LIS não é mais obrigató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 poderá levar vários minutos.

    Observação

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

Por exemplo, CentOS 8 e 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 opcionalmente instalar o Kit de ferramentas CUDA completo, digite:

    sudo yum install cuda
    

    Observação

    Se você vir uma mensagem de erro relacionada a pacotes ausentes, como vulkan-filesystem, talvez seja preciso editar /etc/yum.repos.d/rh-cloud. Procure optional-rpms e defina ativado como 1

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

Verificar a instalação de drivers

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

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

Status do dispositivo NVIDIA

Conectividade de rede RDMA

A conectividade de rede RDMA pode ser habilitada em VMs da série N com capacidade de RDMA, como o NC24r implementada no mesmo conjunto de disponibilidade ou em um único grupo de posicionamento em um conjunto de dimensionamento de máquina virtual (VM). A rede RDMA dá suporte ao tráfego da Interface de Passagem de Mensagem (MPI) para aplicativos executados com Intel MPI 5.x ou uma versão posterior:

Distribuições

Implante VMs da série N habilitadas para RDMA de uma das imagens no Azure Marketplace que é compatível com a conectividade RDMA nas VMs da série N:

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

    1. Instalar dapl, rdmacm, ibverbs e mlx4

      sudo apt-get update
      
      sudo apt-get install libdapl2 libmlx4-1
      
      
    2. Em /etc/waagent.conf, habilite o RDMA removendo as marcas de comentários das seguintes linhas de configuração. Você precisa de acesso à raiz para editar esse 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 à raiz para editar esse arquivo. Para fins de teste, é possível 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. Instalar a Intel MPI Library. Comprar e baixe a biblioteca da Intel ou baixe a 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
      

      Há suporte apenas para runtimes MPI Intel 5.x.

      Para saber as etapas de instalação, consulte o Guia de instalação da Intel MPI Library.

    5. Habilite ptrace para os processos que não são de depuração e não são da raiz (necessária para as versões mais recentes da Intel MPI).

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

  • HPC baseado em CentOS – CentOS-HPC 7.6 e posterior (para SKUs em que a InfiniBand tem suporte por SR-IOV). Essas imagens têm bibliotecas Mellanox OFED e MPI pré-instaladas.

Observação

Cartões CX3-Pro têm suporte somente por meio de versões LTS do Mellanox OFED. Use o LTS Mellanox OFED versão 4.9-0.1.7.0 nas VMs da série N com cartões ConnectX3-Pro. Para obter mais informações, veja Drivers do Linux.

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

As imagens a seguir são as mais recentes do CentOS-HPC que dão suporte a cartões de 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 de GRID em VMs da série NVv3 ou NV

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

Ubuntu

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

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

    blacklist nouveau
    blacklist lbm-nouveau
    
  4. Reinicie a VM e reconecte. 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 questionado 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/hosts 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. Reinicie a VM e prossiga para verificar a instalação.

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

O processo de instalação do driver do GRID não oferece nenhuma opção para ignorar a compilação e a instalação do módulo do kernel e selecionar uma fonte diferente de módulos do kernel assinados, portanto, a inicialização segura deve ser desabilitada nas VMs do Linux para usá-las com o GRID, após a instalação dos módulos do 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, verifique se as versões kernel-devel e dkms são apropriadas para 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. Desabilite o driver de kernel Nouveau, que é incompatível com o driver NVIDIA. (Somente use o driver NVIDIA em VMs NV3 ou NV). Para fazer isso, crie um arquivo em /etc/modprobe.d chamado nouveau.conf com o conteúdo a seguir:

    blacklist nouveau
    blacklist lbm-nouveau
    
  3. Reinicie a VM, reconecte e instale o último Integration Services do Linux para Hyper-V e Azure. Verifique se o LIS é necessário verificando os resultados do lspci. Se todos os dispositivos GPU estiverem listados como esperado, não é necessário instalar o LIS.

    Pule essa etapa se quiser usar o CentOS/RHEL 7.8 (ou versões superiores), pois o LIS não é mais obrigató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 comando lspci. 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 questionado 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/hosts nvidia/

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

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

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

Verificar a instalação de drivers

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

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

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

Servidor X11

Se você precisa de um servidor X11 para conexões remotas com uma VM NVv2 ou NV, o x11vnc é recomendado porque ele permite a aceleração de hardware para gráfico. A BusID do dispositivo M60 precisa ser adicionada manualmente ao arquivo de configuração X11 (normalmente, etc/X11/xorg.conf). Adicione uma seção "Device" 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 seção "Screen" para usar este dispositivo.

A BusID decimal pode ser encontrada executando

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

A BusID pode mudar quando uma VM é realocada ou reinicializada. Portanto, convém criar um script para atualizar a BusID na configuração do X11 quando uma VM é reiniciada. Por exemplo, crie um script chamado busidupdate.sh (ou outro nome que desejar) com um 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 seu script de atualização em /etc/rc.d/rc3.d para que o script seja invocado como raiz na inicialização.

Solução de problemas

  • Você pode definir o modo de persistência usando nvidia-smi, de modo que o resultado do comando seja mais rápido 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 do modo desaparecerá. Você sempre pode gerar um script da configuração de modo para ser executada na inicialização.
  • Se você atualizou os drivers NVIDIA CUDA para a versão mais recente e descobrir 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 do sistema operacional CentOS/RHEL OS (ou kernel) não for compatível com o LIS, será gerado um erro “Versão do kernel sem suporte”. Informe esse erro junto com as versões do sistema operacional e do kernel.
  • Se os trabalhos forem interrompidos por erros de ECC na GPU (corrigíveis ou incorrigíveis), verifique se a GPU atende aos critérios de ADM da Nvidia para erros de ECC. Se a GPU for qualificada para ADM, entre em contato com o suporte para manutenção. Caso contrário, reinicialize a VM para anexar novamente a GPU, conforme descrito aqui. Métodos menos invasivos, como nvidia-smi -r não funcionam com a solução de virtualização implantada no Azure.

Próximas etapas