NVIDIA GPU Cloud (NGC) es un ecosistema de aprendizaje profundo desarrollado por NVIDIA que ofrece acceso gratuito a pilas de software para construir entornos de desarrollo. Este tema explica cómo desplegar un entorno NGC en una instancia acelerada por GPU, con TensorFlow como ejemplo.
Contexto
El sitio web de NGC proporciona imágenes de diversas versiones de los principales frameworks de aprendizaje profundo, como Caffe, Caffe2, Microsoft Cognitive Toolkit (CNTK), MXNet, TensorFlow, Theano y Torch. Seleccione una imagen para desplegar un entorno de contenedores NGC según sus necesidades. Este tema utiliza TensorFlow como ejemplo.
Alibaba Cloud ofrece imágenes de contenedores NGC optimizadas para GPU NVIDIA Pascal en Alibaba Cloud Marketplace. Puede seleccionar estas imágenes al crear instancias aceleradas por GPU para desplegar rápidamente entornos de contenedores NGC con frameworks de aprendizaje profundo optimizados y actualizados periódicamente.
Límites
Los entornos NGC se pueden desplegar en instancias de las siguientes familias:
gn5i, gn6v, gn6i, gn6e, gn7i, gn7e y gn7s
ebmgn6i, ebmgn6v, ebmgn6e, ebmgn7i y ebmgn7e
Para obtener más información, consulte GPU-accelerated compute-optimized instance families.
Requisitos previos
Antes de empezar, asegúrese de haber creado una cuenta de NGC en el sitio web de NGC.
Obtenga la URL de la imagen del contenedor de TensorFlow antes de comenzar.
-
En el cuadro de búsqueda, introduzca TensorFlow.
En los resultados de búsqueda, haga clic en la tarjeta del contenedor TensorFlow.
-
En la página de TensorFlow, haga clic en la pestaña Tags y copie la ruta de la versión deseada de la imagen del contenedor de TensorFlow.
En este ejemplo, la URL de la imagen
22.05-tf1-py3es nvcr.io/nvidia/tensorflow:22.05-tf1-py3, que utilizará para descargar la imagen en una instancia acelerada por GPU.ImportanteLa versión de CUDA en la imagen de TensorFlow debe coincidir con la versión del controlador de la instancia acelerada por GPU. De lo contrario, el despliegue fallará. Para obtener información sobre la compatibilidad de versiones, consulte las Notas de la versión de TensorFlow.
Procedimiento
El siguiente ejemplo utiliza una instancia gn7i para desplegar un entorno NGC.
-
Cree una instancia acelerada por GPU.
Para obtener más información, consulte Create an instance on the Custom Launch tab. Configure los siguientes parámetros clave:
Parámetro
Descripción
Region
Seleccione una región que ofrezca instancias aceleradas por GPU.
Para comprobar la disponibilidad de instancias aceleradas por GPU en cada región, consulte Tipos de instancia disponibles por región.
Instance
Seleccione un tipo de instancia. En este ejemplo se utiliza gn7i.
Images
-
En la pestaña Marketplace Images, haga clic en Select from Alibaba Cloud Marketplace.
-
En el cuadro de diálogo que aparece, introduzca NVIDIA GPU Cloud Virtual Machine Image y haga clic en Search.
-
Busque la imagen y haga clic en Use.
Images
Seleccione Marketplace Images.
NotaSi no se asigna ninguna dirección IP pública, asocie una dirección IP elástica (EIP) a la instancia después de crearla. Para obtener más información, consulte Associate one or more EIPs with an instance.
Select from Alibaba Cloud Marketplace
Seleccione un security group con el puerto TCP 22 habilitado. Si su instancia requiere HTTPS o Deep Learning GPU Training System (DIGITS) 6, habilite también el puerto TCP 443 para HTTPS o el puerto TCP 5000 para DIGITS 6.
-
-
Utilice uno de los métodos descritos en la siguiente tabla para conectarse a la instancia.
Método
Referencias
Workbench
VNC
-
Ejecute el comando
nvidia-smipara consultar la información de la GPU actual.La salida muestra que la Driver Version es 515.48.07, compatible con CUDA 11.7 según lo requiere la imagen de 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 | +-----------------------------------------------------------------------------+ -
Ejecute el siguiente comando para descargar la imagen del contenedor de TensorFlow:
docker pull nvcr.io/nvidia/tensorflow:22.05-tf1-py3ImportanteLa descarga de la imagen del contenedor de TensorFlow puede tardar bastante tiempo.
-
Ejecute el siguiente comando para consultar la información de la imagen del contenedor de TensorFlow descargada:
docker image lsLa columna TAG muestra
22.05-tf1-py3, lo que confirma que la imagen se descargó correctamente.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 -
Ejecute el siguiente comando para desplegar el entorno de desarrollo de TensorFlow mediante la ejecución del contenedor:
docker run --gpus all --rm -it nvcr.io/nvidia/tensorflow:22.05-tf1-py3Si la operación se completa correctamente, se mostrará una salida similar a la siguiente:
================ == 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. -
Ejecute los siguientes comandos en secuencia para realizar una prueba sencilla de TensorFlow:
pythonimport tensorflow as tf hello = tf.constant('Hello, TensorFlow!') with tf.compat.v1.Session() as sess: result = sess.run(hello) print(result.decode())Si TensorFlow carga el dispositivo GPU como se espera, se imprimirá la cadena
Hello, TensorFlow!, como se muestra en la siguiente salida.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! >>> -
Guarde la imagen de TensorFlow modificada.
En la página de conexión de la GPU, abra una nueva ventana para la conexión remota.
-
Ejecute el siguiente comando para consultar el
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 -
Ejecute el siguiente comando para guardar la imagen de TensorFlow modificada:
# 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-py3ImportanteAsegúrese de guardar la imagen de TensorFlow modificada. De lo contrario, los cambios podrían perderse la próxima vez que inicie sesión en la instancia.