Tutorial: Configurar, conectar e verificar um módulo IoT Edge para uma GPU
Aplica-se a: IoT Edge 1.5 IoT Edge 1.4
Importante
IoT Edge 1.5 LTS e IoT Edge 1.4 LTS são versões suportadas. O IoT Edge 1.4 LTS termina a vida útil em 12 de novembro de 2024. Se tiver uma versão anterior, consulte Atualizar IoT Edge.
Este tutorial mostra como criar uma máquina virtual (VM) habilitada para GPU. Na VM, você verá como executar um dispositivo IoT Edge que aloca trabalho de um de seus módulos para sua GPU.
Usaremos o portal do Azure, o Azure Cloud Shell e a linha de comando da sua VM para:
- Crie uma VM compatível com GPU
- Instale a extensão de driver NVIDIA na VM
- Configurar um módulo em um dispositivo IoT Edge para alocar trabalho a uma GPU
Pré-requisitos
Conta do Azure - crie uma conta gratuita
Hub IoT do Azure - criar um Hub IoT
Dispositivo Azure IoT Edge
Se você ainda não tiver um dispositivo IoT Edge e precisar criar um rapidamente, execute o seguinte comando. Use o Azure Cloud Shell localizado no portal do Azure. Crie um novo nome de dispositivo e
<DEVICE-NAME>
substitua a IoT<IOT-HUB-NAME>
pelo seu.az iot hub device-identity create --device-id <YOUR-DEVICE-NAME> --edge-enabled --hub-name <YOUR-IOT-HUB-NAME>
Para obter mais informações sobre como criar um dispositivo IoT Edge, consulte Guia de início rápido: implantar seu primeiro módulo IoT Edge em um dispositivo Linux virtual. Mais adiante neste tutorial, adicionaremos um módulo NVIDIA ao nosso dispositivo IoT Edge.
Criar uma máquina virtual otimizada para GPU
Para criar uma máquina virtual (VM) otimizada para GPU, é importante escolher o tamanho certo. Nem todos os tamanhos de VM acomodam o processamento da GPU. Além disso, há tamanhos de VM diferentes para cargas de trabalho diferentes. Para obter mais informações, consulte Tamanhos de máquinas virtuais otimizados para GPU ou tente o seletor de máquinas virtuais.
Vamos criar uma VM do IoT Edge com o modelo do Azure Resource Manager (ARM) no GitHub e, em seguida, configurá-la para ser otimizada para GPU.
Vá para o modelo de implantação de VM do IoT Edge no GitHub: Azure/iotedge-vm-deploy.
Selecione o botão Implantar no Azure , que inicia a criação de uma VM personalizada para você no portal do Azure.
Preencha os campos de implantação personalizada com suas credenciais e recursos do Azure:
Propriedade Descrição ou valor da amostra Subscrição Escolha sua assinatura de conta do Azure. Grupo de recursos Adicione seu grupo de recursos do Azure. País/Região East US
As VMs GPU não estão disponíveis em todas as regiões.Prefixo de Etiqueta DNS Crie um nome para sua VM. Nome de Utilizador de Administrador adminUser
Como alternativa, crie seu próprio nome de usuário.Cadeia de Ligação de Dispositivo Copie sua cadeia de conexão do dispositivo IoT Edge e cole aqui. Tamanho da VM Standard_NV6
Authentication type Escolha a palavra-passe ou a Chave Pública SSH e, em seguida, crie uma palavra-passe ou um nome de par de chaves, se necessário. Gorjeta
Verifique quais VMs de GPU são suportadas em cada região: Produtos disponíveis por região.
Para verificar qual região sua assinatura do Azure permite, tente este comando do Azure no portal do Azure. O
N
inStandard_N
significa que é uma VM habilitada para GPU.az vm list-skus --location <YOUR-REGION> --size Standard_N --all --output table
Selecione o botão Rever + criar na parte inferior e, em seguida, o botão Criar . A implantação pode levar até um minuto para ser concluída.
Instale a extensão NVIDIA
Agora que temos uma VM otimizada para GPU, vamos instalar a extensão NVIDIA na VM usando o portal do Azure.
Abra sua VM no portal do Azure e selecione Extensões + aplicativos no menu à esquerda.
Selecione Adicionar e escolha a extensão de driver de GPU NVIDIA na lista e, em seguida, selecione Avançar.
Escolha Rever + criar e, em seguida , Criar. A implantação pode levar até 30 minutos para ser concluída.
Para confirmar a instalação no portal do Azure, retorne ao menu Extensões + aplicativos em sua VM. A nova extensão nomeada
NvidiaGpuDriverLinux
deve estar na sua lista de extensões e mostrar Provisionamento bem-sucedido em Status.Para confirmar a instalação usando o Azure Cloud Shell, execute este comando para listar suas extensões. Substitua os
<>
espaços reservados pelos seus valores:az vm extension list --resource-group <YOUR-RESOURCE-GROUP> --vm-name <YOUR-VM-NAME> -o table
Com um módulo NVIDIA, usaremos o programa NVIDIA System Management Interface, também conhecido como
nvidia-smi
.A partir do seu dispositivo, instale o
nvidia-smi
pacote com base na sua versão do Ubuntu. Para este tutorial, vamos instalarnvidia-utils-515
para o Ubuntu 20.04. SelecioneY
quando solicitado na instalação.sudo apt install nvidia-utils-515
Aqui está uma lista de todas as
nvidia-smi
versões. Se você executarnvidia-smi
sem instalá-lo primeiro, essa lista será impressa no seu console.Após a instalação, execute este comando para confirmar que está instalado:
nvidia-smi
Será apresentada uma tabela de confirmação, semelhante a esta tabela.
Nota
A extensão NVIDIA é uma maneira simplificada de instalar os drivers NVIDIA, mas você pode precisar de mais personalização. Para obter mais informações sobre instalações personalizadas em VMs da série N, consulte Instalar drivers de GPU NVIDIA em VMs da série N executando Linux.
Ativar um módulo com aceleração de GPU
Há diferentes maneiras de habilitar um módulo IoT Edge para que ele use uma GPU para processamento. Uma maneira é configurar um módulo IoT Edge existente em seu dispositivo para se tornar acelerado por GPU. Outra maneira é usar um módulo de contêiner pré-fabricado, por exemplo, um módulo da NVIDIA DIGITS que já está otimizado para GPU. Vamos ver como os dois caminhos são feitos.
Habilitar GPU em um módulo existente usando DeviceRequests
Se você tiver um módulo existente em seu dispositivo IoT Edge, adicionar uma configuração usando DeviceRequests
createOptions
o manifesto de implantação otimizará o módulo para GPU. Siga estas etapas para configurar um módulo existente.
Vá para seu Hub IoT no portal do Azure e escolha Dispositivos no menu Gerenciamento de dispositivos .
Selecione seu dispositivo IoT Edge para abri-lo.
Selecione a guia Definir módulos na parte superior.
Selecione o módulo que você deseja habilitar para uso da GPU na lista Módulos do IoT Edge.
Um painel lateral se abre, escolha a guia Opções de criação de contêiner.
Copie esta
HostConfig
cadeia de caracteres JSON e cole na caixa Criar opções .{ "HostConfig": { "DeviceRequests": [ { "Count": -1, "Capabilities": [ [ "gpu" ] ] } ] } }
Selecione Atualizar.
Selecione Rever + criar. O novo
HostConfig
objeto agora está visível nosettings
seu módulo.Selecione Criar.
Para confirmar se a nova configuração funciona, execute este comando na sua VM:
sudo docker inspect <YOUR-MODULE-NAME>
Você deve ver os parâmetros especificados
DeviceRequests
na impressão JSON no console.
Nota
Para entender melhor o DeviceRequests
parâmetro, veja o código-fonte: moby/host_config.go
Ativar uma GPU em um módulo NVIDIA pré-fabricado
Vamos adicionar um módulo NVIDIA DIGITS ao dispositivo IoT Edge e, em seguida, alocar uma GPU para o módulo definindo suas variáveis de ambiente. Este módulo NVIDIA já está em um contêiner Docker.
Selecione seu dispositivo IoT Edge no portal do Azure no menu Dispositivos do Hub IoT.
Selecione a guia Definir módulos na parte superior.
Selecione + Adicionar sob o título Módulos do IoT Edge e escolha Módulo do IoT Edge.
Forneça um nome no campo Nome do Módulo de Borda IoT.
Na guia Configurações do módulo, adicione
nvidia/digits:6.0
ao campo URI da imagem.Selecione a guia Variáveis de ambiente.
Adicione o nome
NVIDIA_VISIBLE_DEVICES
da variável de ambiente com o valor0
. Essa variável controla quais GPUs são visíveis para o aplicativo em contêiner em execução no dispositivo de borda. ANVIDIA_VISIBLE_DEVICES
variável de ambiente pode ser definida como uma lista separada por vírgulas de IDs de dispositivo, que correspondem às GPUs físicas no sistema. Por exemplo, se houver duas GPUs no sistema com IDs de dispositivo 0 e 1, a variável pode ser definida como "NVIDIA_VISIBLE_DEVICES=0,1" para tornar ambas as GPUs visíveis para o contêiner. Neste artigo, como a VM tem apenas uma GPU, usaremos a primeira (e única).Nome Tipo valor NVIDIA_VISIBLE_DEVICES Texto 0 Selecione Adicionar.
Selecione Rever + criar. As propriedades do manifesto de implantação serão exibidas.
Selecione Criar para criar o módulo.
Selecione Atualizar para atualizar sua lista de módulos. O módulo levará alguns minutos para mostrar a execução no status Runtime, portanto, continue atualizando o dispositivo.
A partir do seu dispositivo, execute este comando para confirmar que o seu novo módulo NVIDIA existe e está em execução.
iotedge list
Você deve ver seu módulo NVIDIA em uma lista de módulos em seu dispositivo IoT Edge com um status de
running
.
Nota
Para obter mais informações sobre o módulo de contêiner NVIDIA DIGITS , consulte a documentação do Deep Learning Digits.
Clean up resources (Limpar recursos)
Se quiser continuar com outros tutoriais do IoT Edge, você pode usar o dispositivo criado para este tutorial. Caso contrário, você pode excluir os recursos do Azure que criou para evitar cobranças.
Se você criou sua máquina virtual e hub IoT em um novo grupo de recursos, poderá excluir esse grupo, o que excluirá todos os recursos associados. Verifique novamente o conteúdo do grupo de recursos para certificar-se de que não há nada que você queira manter. Se não quiser excluir todo o grupo, você pode excluir recursos individuais (máquina virtual, dispositivo ou módulo de GPU).
Importante
A eliminação de um grupo de recursos é irreversível.
Use o comando a seguir para remover seu grupo de recursos do Azure. Pode levar alguns minutos para excluir um grupo de recursos.
az group delete --name <YOUR-RESOURCE-GROUP> --yes
Você pode confirmar que o grupo de recursos foi removido exibindo a lista de grupos de recursos.
az group list
Próximos passos
Este artigo ajudou-o a configurar a sua máquina virtual e o dispositivo IoT Edge para serem acelerados por GPU. Para executar um aplicativo com uma configuração semelhante, tente o caminho de aprendizado para o desenvolvimento do NVIDIA DeepStream com o Microsoft Azure. O tutorial Learn mostra como desenvolver aplicativos de vídeo inteligentes otimizados que podem consumir várias fontes de vídeo, imagem e áudio.