Compartilhamento de GPU no seu dispositivo Azure Stack Edge Pro GPU
A GPU (unidade de processamento gráfico) é um processador especializado projetado para acelerar a renderização de gráficos. As GPUs podem processar muitos dados simultaneamente, tornando-as úteis para aprendizado de máquina, edição de vídeo e aplicativos de jogos. Além da CPU para computação de uso geral, seus dispositivos de Azure Stack Edge Pro GPU podem conter uma ou duas GPUs Nvidia Tesla T4 para cargas de trabalho de computação intensiva, como inferência acelerada por hardware. Para obter mais informações, consulte GPU Tesla T4 da Nvidia.
Sobre o compartilhamento de GPU
Muitos aprendizados de máquina ou outras cargas de trabalho de computação podem não precisar de uma GPU dedicada. As GPUs podem ser compartilhadas e o compartilhamento de GPUs entre cargas de trabalho em contêineres ou VM ajuda a aumentar a utilização da GPU sem afetar significativamente os benefícios de desempenho da GPU.
Usando GPU com VMs
Em seu Azure Stack Edge Pro, uma GPU não pode ser compartilhada ao implantar cargas de trabalho de VM. Uma GPU só pode ser mapeada para uma VM. Isso significa que você só pode ter uma VM de GPU em um dispositivo com uma GPU e duas VMs em um dispositivo equipado com duas GPUs. Há outros fatores que também devem ser considerados ao usar VMs de GPU em um dispositivo que tenha o Kubernetes configurado para cargas de trabalho em contêineres. Para obter mais informações, consulte VMs de GPU e Kubernetes.
Usando GPU com contêineres
Se você estiver implantando cargas de trabalho em contêineres, uma GPU poderá ser compartilhada de mais de uma maneira na camada de hardware e software. Com a GPU Tesla T4 em seu dispositivo Azure Stack Edge Pro, estamos limitados ao compartilhamento de software. Em seu dispositivo, as duas abordagens a seguir para compartilhamento de software de GPU são usadas:
A primeira abordagem envolve o uso de variáveis de ambiente para especificar o número de GPUs que podem ser compartilhadas por tempo. Considere as seguintes advertências ao usar essa abordagem:
- Você pode especificar uma ou ambas ou nenhuma GPUs com este método. Não é possível especificar o uso fracionário.
- Vários módulos podem ser mapeados para uma GPU, mas o mesmo módulo não pode ser mapeado para mais de uma GPU.
- Com a saída do SMI Nvidia, você pode ver a utilização geral da GPU, incluindo a utilização de memória.
Para obter mais informações, consulte como Implantar um módulo IoT Edge que usa GPU em seu dispositivo.
A segunda abordagem exige que você habilite o serviço de vários processos em suas GPUs NVIDIA. O MPS é um serviço de runtime que permite que vários processos usando o CUDA sejam executados simultaneamente em uma única GPU compartilhada. O MPS permite a sobreposição de operações de kernel e memcopy de diferentes processos na GPU para atingir o máximo de utilização. Para obter mais informações, confira Serviço de vários processos.
Considere as seguintes advertências ao usar essa abordagem:
- O MPS permite que você especifique mais sinalizadores na implantação de GPU.
- Você pode especificar o uso fracionário por meio de MPS, limitando assim o uso de cada aplicativo implantado no dispositivo. Você pode especificar a porcentagem de GPU que serão usadas para cada aplicativo na seção
env
dedeployment.yaml
adicionando o seguinte parâmetro:
// Example: application wants to limit gpu percentage to 20% env: - name: CUDA_MPS_ACTIVE_THREAD_PERCENTAGE value: "20"
Utilização da GPU
Ao compartilhar a GPU em cargas de trabalho em contêineres implantados em seu dispositivo, você pode usar a interface de gerenciamento do sistema NVIDIA (NVIDIA-SMI). A NVIDIA-SMI é um utilitário de linha de comando que ajuda você a gerenciar e monitorar dispositivos NVIDIA GPU. Para obter mais informações, consulte Interface de gerenciamento do sistema NVIDIA.
Para exibir o uso da GPU, primeiro conecte-se à interface do PowerShell do dispositivo. Execute o comando Get-HcsNvidiaSmi
e exiba a saída do NVIDIA SMI. Você também pode exibir como a utilização de GPU é alterada habilitando MPS e, em seguida, implantando várias cargas de trabalho no dispositivo. Para obter mais informações, confira Habilitar serviço de vários processos.