O NVIDIA GPU Cloud (NGC) é um ecossistema de deep learning desenvolvido pela NVIDIA que oferece acesso gratuito a pilhas de software para a construção de ambientes de desenvolvimento. Este tópico descreve como implantar um ambiente NGC em uma instância acelerada por GPU, usando o TensorFlow como exemplo.
Informações básicas
O site do NGC fornece imagens de diferentes versões dos principais frameworks de deep learning, como Caffe, Caffe2, Microsoft Cognitive Toolkit (CNTK), MXNet, TensorFlow, Theano e Torch. Selecione uma imagem para implantar um ambiente de contêiner NGC conforme suas necessidades. Este tópico usa o TensorFlow como exemplo.
A Alibaba Cloud disponibiliza imagens de contêiner NGC otimizadas para GPUs NVIDIA Pascal no Alibaba Cloud Marketplace. Ao criar instâncias aceleradas por GPU, selecione essas imagens para implantar rapidamente ambientes de contêiner NGC com frameworks de deep learning otimizados e atualizados regularmente.
Limites
É possível implantar ambientes NGC nas seguintes famílias de instâncias ECS:
gn5i, gn6v, gn6i, gn6e, gn7i, gn7e e gn7s
ebmgn6i, ebmgn6v, ebmgn6e, ebmgn7i e ebmgn7e
Para mais informações, consulte Famílias de instâncias otimizadas para computação acelerada por GPU.
Pré-requisitos
Antes de começar, certifique-se de ter criado uma conta NGC no site do NGC.
Obtenha a URL da imagem do contêiner TensorFlow antes de iniciar o processo.
-
Na caixa de pesquisa, insira TensorFlow.
Nos resultados da busca, clique em cartão do contêiner TensorFlow.
-
Na página do TensorFlow, clique em aba Tags e copie o caminho da versão desejada da imagem do contêiner TensorFlow.
Neste exemplo, a URL da imagem
22.05-tf1-py3é nvcr.io/nvidia/tensorflow:22.05-tf1-py3. Você usará esse endereço para baixar a imagem em uma instância acelerada por GPU.ImportanteA versão do CUDA na imagem do TensorFlow deve corresponder à versão do driver da instância acelerada por GPU. Caso contrário, a implantação falhará. Para obter informações sobre compatibilidade de versões, consulte as Notas de Lançamento do TensorFlow.
Procedimento
O exemplo a seguir usa uma instância ECS gn7i para implantar um ambiente NGC.
-
Crie uma instância acelerada por GPU.
Para mais informações, consulte Criar uma instância na aba Custom Launch. Configure os seguintes parâmetros principais:
Parâmetro
Descrição
Region
Selecione uma região que ofereça instâncias aceleradas por GPU.
Para verificar a disponibilidade de instâncias aceleradas por GPU em cada região, consulte Tipos de instância disponíveis por região.
Instance
Selecione um tipo de instância. Neste exemplo, usamos a gn7i.
Images
-
Na aba Marketplace Images, clique em Select from Alibaba Cloud Marketplace.
-
Na caixa de diálogo exibida, insira NVIDIA GPU Cloud Virtual Machine Image e clique em Search.
-
Localize a imagem e clique em Use.
Images
Marque a opção Marketplace Images.
NotaSe nenhum endereço IP público for atribuído, associe um Elastic IP Address (EIP) à instância após a criação. Para mais detalhes, consulte Associar um ou mais EIPs a uma instância.
Select from Alibaba Cloud Marketplace
Selecione um grupo de segurança com a porta TCP 22 habilitada. Se sua instância exigir HTTPS ou Deep Learning GPU Training System (DIGITS) 6, ative também a porta TCP 443 para HTTPS ou a porta TCP 5000 para DIGITS 6.
-
-
Conecte-se à instância usando um dos métodos descritos na tabela a seguir.
Método
Referências
Workbench
VNC
-
Execute o comando
nvidia-smipara visualizar informações sobre a GPU atual.A saída indica que a Driver Version é 515.48.07, compatível com o CUDA 11.7 exigido pela imagem TensorFlow
22.05-tf1-py3.root@xxxszfZ:~# nvidia-smi Sun Apr 7 11:01:55 2024 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 515.48.07 Driver Version: 515.48.07 CUDA Version: 11.7 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 NVIDIA A10 On | 00000000:00:07.0 Off | 0 | | N/A 32C P8 14W / 150W | 2MiB / 23028MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+ -
Execute o comando a seguir para baixe a imagem do contêiner TensorFlow:
docker pull nvcr.io/nvidia/tensorflow:22.05-tf1-py3ImportanteO download da imagem do contêiner TensorFlow pode levar bastante tempo.
-
Execute o comando a seguir para visualize informações sobre a imagem do contêiner TensorFlow baixada:
docker image lsA coluna TAG exibe
22.05-tf1-py3, o que confirma o download da imagem.root@xxx lz:~# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE nvcr.io/nvidia/tensorflow 22.05-tf1-py3 7c92d95961e9 2 years ago 14.4GB -
Execute o comando a seguir para implantar o ambiente de desenvolvimento TensorFlow iniciando o contêiner:
docker run --gpus all --rm -it nvcr.io/nvidia/tensorflow:22.05-tf1-py3Em caso de sucesso, uma saída semelhante à seguinte será exibida:
================ == TensorFlow == ================ NVIDIA Release 22.05-tf1 (build 18410160) TensorFlow Version 1.15.5 Container image Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved. Copyright 2017-2020 The TensorFlow Authors. All rights reserved. NVIDIA Deep Learning Profiler (dlprof) Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved. Various files include modifications (c) NVIDIA CORPORATION. All rights reserved. NVIDIA modifications are covered by the license terms that apply to the underlying project or file. NOTE: MOFED driver for multi-node communication was not detected. Multi-node communication performance may be reduced. -
Execute os comandos a seguir em sequência para testar o TensorFlow:
pythonimport tensorflow as tf hello = tf.constant('Hello, TensorFlow!') with tf.compat.v1.Session() as sess: result = sess.run(hello) print(result.decode())Se o TensorFlow carregar o dispositivo GPU conforme esperado, a string
Hello, TensorFlow!será impressa, conforme mostrado na saída a seguir.2024-08-21 04:17:14.076698: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1351] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 20427 MB memory) -> physical GPU (device: 0, name: NVIDIA A10, pci bus id: 0000:00:07.0, compute capability: 8.6) 2024-08-21 04:17:14.077064: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero 2024-08-21 04:17:14.077724: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1351] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:1 with 20427 MB memory) -> physical GPU (device: 1, name: NVIDIA A10, pci bus id: 0000:00:08.0, compute capability: 8.6) 2024-08-21 04:17:14.078021: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero 2024-08-21 04:17:14.078688: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1351] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:2 with 20427 MB memory) -> physical GPU (device: 2, name: NVIDIA A10, pci bus id: 0000:00:09.0, compute capability: 8.6) 2024-08-21 04:17:14.078955: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero 2024-08-21 04:17:14.079624: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1351] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:3 with 20427 MB memory) -> physical GPU (device: 3, name: NVIDIA A10, pci bus id: 0000:00:0a.0, compute capability: 8.6) Hello, TensorFlow! >>> -
Salve a imagem modificada do TensorFlow.
Na página de conexão da GPU, abra uma nova janela para conexão remota.
-
Execute o comando a seguir para consultar o
CONTAINER_ID:docker psroot@xxxg9dZ:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f76a5a4347df nvcr.io/nvidia/tensorflow:22.05-tf1-py3 "/opt/nvidia/nvidia_..." 46 seconds ago Up 45 seconds 6006/tcp, 6064/tcp, 8888/tcp reverent_brattain 68xxxxxxfba nvcr.io/nvidia/tensorflow:22.05-tf1-py3 "/opt/nvidia/nvidia_..." 9 minutes ago Up 9 minutes 6006/tcp, 6064/tcp, 8888/tcp jolly_liskov -
Execute o comando a seguir para salve a imagem modificada do TensorFlow:
# Replace CONTAINER_ID with the container ID that is queried by using the docker ps command, such as f76a5a4347d. docker commit -m "commit docker" CONTAINER_ID nvcr.io/nvidia/tensorflow:20.01-tf1-py3ImportanteCertifique-se de salvar a imagem modificada do TensorFlow. Caso contrário, as alterações poderão ser perdidas na próxima vez que você fizer login na instância.