Partilhar via


Tutorial: Configurar, conectar e verificar um módulo IoT Edge para uma GPU

Aplica-se a:Marca de verificação do IoT Edge 1.5 IoT Edge 1.5 Marca de verificação do IoT Edge 1.4 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.

  1. Vá para o modelo de implantação de VM do IoT Edge no GitHub: Azure/iotedge-vm-deploy.

  2. Selecione o botão Implantar no Azure , que inicia a criação de uma VM personalizada para você no portal do Azure.

  3. 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 in Standard_N significa que é uma VM habilitada para GPU.

    az vm list-skus --location <YOUR-REGION> --size Standard_N --all --output table
    
  4. 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.

  1. Abra sua VM no portal do Azure e selecione Extensões + aplicativos no menu à esquerda.

  2. Selecione Adicionar e escolha a extensão de driver de GPU NVIDIA na lista e, em seguida, selecione Avançar.

  3. Escolha Rever + criar e, em seguida , Criar. A implantação pode levar até 30 minutos para ser concluída.

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

  5. 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
    
  6. 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 instalar nvidia-utils-515 para o Ubuntu 20.04. Selecione Y quando solicitado na instalação.

    sudo apt install nvidia-utils-515
    

    Aqui está uma lista de todas as nvidia-smi versões. Se você executar nvidia-smi sem instalá-lo primeiro, essa lista será impressa no seu console.

    Screenshot de todas as versões 'nvidia-smi'.

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

    Captura de tela da tabela de drivers NVIDIA.

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 DeviceRequestscreateOptions o manifesto de implantação otimizará o módulo para GPU. Siga estas etapas para configurar um módulo existente.

  1. Vá para seu Hub IoT no portal do Azure e escolha Dispositivos no menu Gerenciamento de dispositivos .

  2. Selecione seu dispositivo IoT Edge para abri-lo.

  3. Selecione a guia Definir módulos na parte superior.

  4. Selecione o módulo que você deseja habilitar para uso da GPU na lista Módulos do IoT Edge.

  5. Um painel lateral se abre, escolha a guia Opções de criação de contêiner.

  6. Copie esta HostConfig cadeia de caracteres JSON e cole na caixa Criar opções .

     {
         "HostConfig": {
             "DeviceRequests": 
             [
                 {
                     "Count": -1,
                     "Capabilities": [
                         [
                             "gpu"
                         ]
                     ]
                 }
             ]
         }
     }
    
  7. Selecione Atualizar.

  8. Selecione Rever + criar. O novo HostConfig objeto agora está visível no settings seu módulo.

  9. Selecione Criar.

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

  1. Selecione seu dispositivo IoT Edge no portal do Azure no menu Dispositivos do Hub IoT.

  2. Selecione a guia Definir módulos na parte superior.

  3. Selecione + Adicionar sob o título Módulos do IoT Edge e escolha Módulo do IoT Edge.

  4. Forneça um nome no campo Nome do Módulo de Borda IoT.

  5. Na guia Configurações do módulo, adicione nvidia/digits:6.0 ao campo URI da imagem.

  6. Selecione a guia Variáveis de ambiente.

  7. Adicione o nome NVIDIA_VISIBLE_DEVICES da variável de ambiente com o valor 0. Essa variável controla quais GPUs são visíveis para o aplicativo em contêiner em execução no dispositivo de borda. A NVIDIA_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
  8. Selecione Adicionar.

  9. Selecione Rever + criar. As propriedades do manifesto de implantação serão exibidas.

  10. Selecione Criar para criar o módulo.

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

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

    Captura de ecrã do resultado do comando 'iotedge list'.

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.