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

Aplica-se a: ✔️ Linux VMs

Para tirar partido das capacidades de GPU de VMs da série Azure N apoiados por GPUs NVIDIA, você deve instalar controladores GPU NVIDIA. A extensão do condutor do GPU NVIDIA instala controladores NVIDIA CUDA ou GRID apropriados num VM da série N. Instale ou gerencie a extensão utilizando os portal do Azure ou ferramentas como os modelos Azure CLI ou Azure Resource Manager. Consulte a documentação da extensão do condutor do GPU da NVIDIA para distribuição e etapas de implantação suportadas.

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

Para especificações VM da série N, capacidades de armazenamento e detalhes do disco, consulte os tamanhos VM gpu Linux.

Distribuições e controladores suportados

Condutores da NVIDIA CUDA

Para os mais recentes controladores da CUDA e sistemas operativos suportados, visite o site da NVIDIA . Certifique-se de que instala ou atualiza para os controladores CUDA mais recentes suportados para a sua distribuição.

Nota

Os mais recentes condutores cuda apoiados para VMs da série NC são atualmente 470.82.01. Versões posteriores do condutor não são suportadas nos cartões K80 em NC.

Dica

Como alternativa à instalação manual do controlador CUDA num Linux VM, pode implementar uma imagem Máquina Virtual de Ciência de Dados Azure. As edições DSVM para Ubuntu 16.04 LTS ou CentOS 7.4 pré-instalar os controladores NVIDIA CUDA, a Biblioteca da Rede Neural Profunda CUDA, e outras ferramentas.

Condutores da NVIDIA GRID

A Microsoft redistribui os instaladores de controladores NVIDIA GRID para VM da série NV e NVv3 utilizados como estações de trabalho virtuais ou para aplicações virtuais. Instale apenas estes controladores GRID em VMS Azure NV, apenas nos sistemas operativos listados na tabela seguinte. Estes controladores incluem licenciamento para GRID Virtual GPU Software em Azure. Não precisa de configurar um servidor de licença de software NVIDIA vGPU.

Os controladores grid redistribuídos pela Azure não funcionam na maioria dos VMs da série não-NV como NC, NCv2, NCv3, ND e NDv2 série VMs, mas funciona em série NCasT4v3.

Distribuição Controlador
Ubuntu 16.04 LTS, 18.04 LTS, 20.04 LTS, 22.04 LTS

Red Hat Enterprise Linux 7.9

SUSE Linux Enterprise Server 15 SP2+, 15 SP2
NVIDIA GRID 14.1, ramo do condutor R510 (.exe)

Nota

As versões Azure NVads A10 v5 VMs suportam apenas versões GRID 14.1(510.73) ou mais altas do condutor. Ubuntu 20.04 ainda não está suportado em Azure NVads A10 v5 VMs

Visite o GitHub para obter a lista completa de todas as ligações anteriores do controlador Nvidia GRID.

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).

Instale controladores CUDA em VMs da série N

Aqui estão os passos para instalar os controladores CUDA do Kit de Ferramentas CUDA NVIDIA em VMs da série N.

Os desenvolvedores C e C++ podem opcionalmente instalar o Kit de Ferramentas completo para construir aplicações aceleradas pela GPU. Para mais informações, consulte o Guia de Instalação da CUDA.

Para instalar os controladores CUDA, faça uma ligação SSH a cada VM. Para verificar se o sistema tem uma GPU com capacidade para a CUDA, executar o seguinte comando:

lspci | grep -i NVIDIA

Verá uma saída semelhante ao seguinte exemplo (mostrando uma carta NVIDIA Tesla K80):

Saída de comando lspci

O ISPCI lista os dispositivos PCIe no VM, incluindo o InfiniBand NIC e GPUs, se houver. Se o LSPCI não regressar com sucesso, poderá ter de instalar o LIS no CentOS/RHEL (instruções abaixo). Em seguida, executar comandos de instalação específicos para a sua distribuição.

Ubuntu

  1. Faça o download e instale os controladores CUDA a partir do site da NVIDIA.

    Nota

    O exemplo abaixo mostra o caminho do pacote CUDA para Ubuntu 16.04. Substitua o caminho específico da versão que pretende utilizar.

    Visite o Nvidia Download Center para obter o percurso completo específico de cada versão.

    CUDA_REPO_PKG=cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
    wget -O /tmp/${CUDA_REPO_PKG} https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/${CUDA_REPO_PKG} 
    
    sudo dpkg -i /tmp/${CUDA_REPO_PKG}
    sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/3bf863cc.pub
    rm -f /tmp/${CUDA_REPO_PKG}
    
    sudo apt-get update
    sudo apt-get install cuda-drivers
    

    A instalação pode demorar vários minutos.

  2. Para instalar opcionalmente o conjunto completo de ferramentas CUDA, escreva:

    sudo apt-get install cuda
    
  3. Reinicie o VM e proceda à verificação da instalação.

Atualizações do condutor da CUDA

Recomendamos que atualize periodicamente os controladores CUDA após a implantação.

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get dist-upgrade -y
sudo apt-get install cuda-drivers

sudo reboot

CentOS ou Red Hat Enterprise Linux

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

    sudo yum install kernel kernel-tools kernel-headers kernel-devel
    sudo reboot
    
  2. Instale os mais recentes Serviços de Integração Linux para Hiper-V e Azure. Verifique se o LIS é necessário verificando os resultados do lspci. Se todos os dispositivos GPU estiverem listados como esperado (e documentados acima), não é necessário instalar LIS.

    Por favor, note que o LIS é aplicável à 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 dos Serviços de Integração Linux para mais detalhes. Ignore este passo se pretender utilizar CentOS/RHEL 7.8 (ou versões mais altas) uma vez que o LIS já não é necessário para estas versões.

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

    sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    sudo yum install dkms
    
    sudo wget https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo -O /etc/yum.repos.d/cuda-rhel7.repo
    
    sudo yum install cuda-drivers
    

    A instalação pode demorar vários minutos.

    Nota

    Visite fedora e Nvidia CUDA repo para escolher o pacote correto para a versão CentOS ou RHEL que pretende utilizar.

Por exemplo, o CentOS 8 e o RHEL 8 precisarão dos seguintes passos.

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 conjunto completo de ferramentas CUDA, escreva:

    sudo yum install cuda
    

    Nota

    Se vir uma mensagem de erro relacionada com pacotes em falta como o sistema de ficheiros vulkan, então poderá ter de editar /etc/yum.repos.d/rh-cloud, procure opcionais-rpms e esteja ativado para 1

  2. Reinicie o VM e proceda à verificação da instalação.

Verifique a instalação do condutor

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

Se o controlador estiver instalado, verá uma saída semelhante à seguinte. Note que a GPU-Util mostra 0% a menos que esteja atualmente a executar uma carga de trabalho gpu no VM. A versão do seu condutor e os detalhes da GPU podem ser diferentes dos apresentados.

Estado do dispositivo NVIDIA

Conectividade da rede RDMA

A conectividade da rede RDMA pode ser ativada em VMs da série N com capacidade RDMA, tais como NC24r implantados no mesmo conjunto de disponibilidade ou num único grupo de colocação num conjunto de escala de máquina virtual (VM). A rede RDMA suporta o tráfego de Interface de Passagem de Mensagens (MPI) para aplicações em execução com Intel MPI 5.x ou uma versão posterior. Os requisitos adicionais seguem-se:

Distribuições

Implementar VMs da série N capaz de RDMA a partir de uma das imagens do Azure Marketplace que suporta a conectividade RDMA em VMs da série N:

  • Ubuntu 16.04 LTS - Configurar os controladores RDMA no VM e registar-se com a Intel para descarregar a Intel MPI:

    1. Instalar dapl, rdmacm, ibverbs e mlx4

      sudo apt-get update
      
      sudo apt-get install libdapl2 libmlx4-1
      
      
    2. Em /etc/waagent.conf, permitir RDMA descodundo as seguintes linhas de configuração. Precisa de acesso à raiz para editar este ficheiro.

      OS.EnableRDMA=y
      
      OS.UpdateRdmaDriver=y
      
    3. Adicione ou altere as seguintes definições de memória em KB no ficheiro /etc/security/limits.conf. Precisa de acesso à raiz para editar este ficheiro. Para efeitos de teste, pode definir o memlock para 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 Biblioteca Intel MPI. Ou compra e descarrega a biblioteca da Intel ou descarrega 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
      

      Apenas os tempos de execução do INTEL MPI 5.x são suportados.

      Para obter etapas de instalação, consulte o Guia de Instalação da Biblioteca Intel MPI.

    5. Ativar os processos de não-depuração sem raiz (necessários para as versões mais recentes do Intel MPI).

      echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
      
  • CentOS-based 7.4 HPC - Motoristas RDMA e Intel MPI 5.1 estão instalados no VM.

  • HPC baseado em CentOS - CentOS-HPC 7.6 e posteriormente (para SKUs onde a InfiniBand é suportada sobre SR-IOV). Estas imagens têm bibliotecas Mellanox OFED e MPI pré-instaladas.

Nota

CX3-Pro cartões são suportados apenas através de versões LTS de Mellanox OFED. Utilize a versão LTS Mellanox OFED (4.9-0.1.7.0) nos VMs da série N com cartões ConnectX3-Pro. Para mais informações, consulte a Linux Drivers.

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

As imagens a seguir são as imagens centos-HPC mais recentes que suportam ConnectX3-Pro cartões:

  • 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

Instale controladores GRID em VMs da série NV ou NVv3

Para instalar os controladores NVIDIA GRID em VMs da série NV ou NVv3, faça uma ligação SSH a cada VM e siga os passos para a sua distribuição Linux.

Ubuntu

  1. Execute o comando lspci. Verifique se o cartão ou cartões NVIDIA M60 sã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 condutor do núcleo Nouveau, que é incompatível com o condutor da NVIDIA. (Utilize apenas o controlador NVIDIA em NV ou NVv2 VMs.) Para tal, crie um ficheiro com /etc/modprobe.d o nome nouveau.conf com os seguintes conteúdos:

    blacklist nouveau
    blacklist lbm-nouveau
    
  4. Reinicie o VM e reconecte-se. Servidor de saída X:

    sudo systemctl stop lightdm.service
    
  5. Descarregue e instale o controlador 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 lhe perguntarem se pretende executar o utilitário nvidia-xconfig para atualizar o seu ficheiro de configuração X, selecione Sim.

  7. Após a instalação concluída, copiar /etc/nvidia/gridd.conf.template para um novo ficheiro 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. Retire o seguinte de /etc/nvidia/gridd.conf se estiver presente:

    FeatureType=0
    
  10. Reinicie o VM e proceda à verificação da instalação.

CentOS ou Red Hat Enterprise Linux

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

    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 condutor do núcleo Nouveau, que é incompatível com o condutor da NVIDIA. (Utilize apenas o controlador NVIDIA em NV ou NV3 VMs.) Para tal, crie um ficheiro com /etc/modprobe.d o nome nouveau.conf com os seguintes conteúdos:

    blacklist nouveau
    blacklist lbm-nouveau
    
  3. Reinicie o VM, reconecte e instale os mais recentes Serviços de Integração Linux para Hiper-V e Azure. Verifique se o LIS é necessário verificando os resultados do lspci. Se todos os dispositivos GPU estiverem listados como esperado (e documentados acima), não é necessário instalar LIS.

    Ignore este passo se pretender utilizar CentOS/RHEL 7.8 (ou versões mais altas) uma vez que o LIS já não é necessário para estas versões.

    wget https://aka.ms/lis
    tar xvzf lis
    cd LISISO
    
    sudo ./install.sh
    sudo reboot
    
    
  4. Voltar a ligar-se ao VM e executar o lspci comando. Verifique se o cartão ou cartões NVIDIA M60 são visíveis como dispositivos PCI.

  5. Descarregue e instale o controlador 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 lhe perguntarem se pretende executar o utilitário nvidia-xconfig para atualizar o seu ficheiro de configuração X, selecione Sim.

  7. Após a instalação concluída, copiar /etc/nvidia/gridd.conf.template para um novo ficheiro 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. Retire o seguinte de /etc/nvidia/gridd.conf se estiver presente:

    FeatureType=0
    
  10. Reinicie o VM e proceda à verificação da instalação.

Verifique a instalação do condutor

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

Se o controlador estiver instalado, verá uma saída semelhante à seguinte. Note que a GPU-Util mostra 0% a menos que esteja atualmente a executar uma carga de trabalho gpu no VM. A versão do seu condutor e os detalhes da GPU podem ser diferentes dos apresentados.

Screenshot que mostra a saída quando o estado do dispositivo GPU é questionado.

Servidor X11

Se necessitar de um servidor X11 para ligações remotas a um NV ou VM NVv2, o x11vnc é recomendado porque permite a aceleração de hardware de gráficos. O BusID do dispositivo M60 deve ser adicionado manualmente ao ficheiro de configuração X11 (normalmente, etc/X11/xorg.conf). Adicione uma "Device" secção semelhante às seguintes:

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

Além disso, atualize a sua "Screen" secção para utilizar este dispositivo.

O BusID decimal pode ser encontrado correndo

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

O BusID pode mudar quando um VM é realojado ou reiniciado. Portanto, é melhor criar um script para atualizar o BusID na configuração X11 quando um VM é reiniciado. Por exemplo, crie um script nomeado busidupdate.sh (ou outro nome que escolher) com conteúdos semelhantes aos seguintes:

#!/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 para /etc/rc.d/rc3.d que o script seja invocado como raiz no arranque.

Resolução de problemas

  • Pode definir o modo de persistência utilizando nvidia-smi para que a saída do comando seja mais rápida quando necessitar de consultar cartões. Para definir o modo de persistência, execute nvidia-smi -pm 1. Note que se o VM for reiniciado, a definição de modo desaparece. Pode sempre escrever a definição de modo para executar no arranque.
  • Se atualizou os controladores da NVIDIA CUDA para a versão mais recente e descobriu que a conectividade RDMA já não está a funcionar, reinstale os controladores RDMA para restabelecer essa conectividade.
  • Durante a instalação do LIS, se uma determinada versão CentOS/RHEL OS (ou kernel) não for suportada para LIS, é lançado um erro "versão kernel não suportada". Por favor, reporte este erro juntamente com as versões SO e kernel.
  • Se os postos de trabalho forem interrompidos por erros da ECC na GPU (corrigíveis ou incorrecíveis), verifique primeiro se a GPU satisfaz algum dos critérios de RMA da Nvidia para erros de ECC. Se a GPU for elegível para RMA, contacte o suporte para o serviço; caso contrário, reinicie o seu VM para voltar a ligar a GPU, conforme descrito aqui. Note que métodos menos invasivos como nvidia-smi -r não funcionam com a solução de virtualização implementada em Azure.

Passos seguintes