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 com status de Fim de Vida (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
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. A edição DSVM para Ubuntu 16.04 LTS pré-instala 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, 8.9, 8.10 SUSE Linux Enterprise Server 15 SP2, 12 SP2,12 SP5 Linux rochoso 8.4 |
NVIDIA vGPU 16.5, ramificação do driver R535 NVIDIA vGPU 16.5, ramificação do driver R535 |
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.
GRID Driver 17.3 atualmente suporta apenas NCasT4_v3 série de VMs. Para usar este driver, baixe e instale o GRID Driver 17.3 manualmente . Temos problemas de licenciamento na série NVv5 A10 e o Azure está trabalhando ativamente com a Nvidia para resolvê-los. Use versões inferiores à v17.x na série NVv5 A10. A extensão atualmente instala 16,5 drivers GRID.
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):
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.
Utilitário de instalação
ubuntu-drivers
:sudo apt update && sudo apt install -y ubuntu-drivers-common
Instale os drivers NVIDIA mais recentes:
sudo ubuntu-drivers install
Reinicialize a VM após a instalação do driver da GPU.
Baixe e instale o kit de ferramentas CUDA da NVIDIA:
Nota
O exemplo mostra o caminho do pacote CUDA para o Ubuntu 24.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/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
A instalação pode demorar alguns minutos.
Reinicialize a VM após a conclusão da instalação:
sudo reboot
Verifique se a GPU é reconhecida corretamente (após a reinicialização):
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
Atualize o kernel (recomendado). Se você optar por não atualizar o kernel, certifique-se de que as versões do
kernel-devel
, edkms
são apropriadas para o seu kernel.sudo yum install kernel kernel-tools kernel-headers kernel-devel sudo reboot
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
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
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
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.
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:
Instale dapl, rdmacm, ibverbs e mlx4
sudo apt-get update sudo apt-get install libdapl2 libmlx4-1
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
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>
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.
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
Execute o comando
lspci
. Verifique se a placa ou placas NVIDIA M60 estão visíveis como dispositivos PCI.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
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.d
nouveau.conf
o seguinte conteúdo:blacklist nouveau blacklist lbm-nouveau
Reinicialize a VM e reconecte-se. Saia do servidor X:
sudo systemctl stop lightdm.service
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
Quando você for perguntado se deseja executar o utilitário nvidia-xconfig para atualizar seu arquivo de configuração X, selecione Sim.
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
Adicione o seguinte a
/etc/nvidia/gridd.conf
:IgnoreSP=FALSE EnableUI=FALSE
Remova o seguinte de
/etc/nvidia/gridd.conf
se estiver presente:FeatureType=0
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
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
edkms
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
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.d
nouveau.conf
o seguinte conteúdo:blacklist nouveau blacklist lbm-nouveau
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
Reconecte-se à VM e execute o
lspci
comando. Verifique se a placa ou placas NVIDIA M60 estão visíveis como dispositivos PCI.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
Quando você for perguntado se deseja executar o utilitário nvidia-xconfig para atualizar seu arquivo de configuração X, selecione Sim.
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
Adicione duas linhas a
/etc/nvidia/gridd.conf
:IgnoreSP=FALSE EnableUI=FALSE
Remova uma linha de
/etc/nvidia/gridd.conf
se ela estiver presente:FeatureType=0
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.
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, executenvidia-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
- Para capturar uma imagem de VM Linux com os drivers NVIDIA instalados, consulte Como generalizar e capturar uma máquina virtual Linux.