Ubuntu para aprendizaje automático con NVIDIA RAPIDS en 10 minutos

Ubuntu abril 4, 2021

TLDR; Si solo desea un tutorial para configurar su entorno de ciencia de datos en Ubuntu usando NVIDIA RAPIDS y NGC Containers, simplemente desplácese hacia abajo. Sin embargo, recomendaría leer el razonamiento detrás de ciertas opciones para comprender por qué esta es la configuración recomendada.

Configuración local o en la nube

Las nubes públicas ofrecen un gran conjunto de soluciones para los profesionales de datos. Puede configurar una máquina virtual, un contenedor o usar un entorno listo para usar que le presente un cuaderno de Jupyter. También son excelentes en términos de producir su solución y exponer un punto final de inferencia. Sin embargo, todo científico de datos necesita un entorno local.

Si está comenzando su carrera, es mejor comprender exactamente cómo funcionan todas las piezas juntas, experimentar con muchas herramientas y marcos, y hacerlo de una manera rentable.

Si es un profesional experimentado, siempre se encontrará con un cliente que no puede poner sus datos en una nube pública, es decir. por razones de cumplimiento o reglamentarias.

Además, me gusta poder llevar mi trabajo conmigo de viaje y, a veces, no estoy al alcance de una conexión rápida a Internet. Tener tu propia máquina tiene mucho sentido.

Por qué Ubuntu para profesionales de datos

En términos de sistemas operativos para su entorno local, puede elegir entre Linux, Windows y Mac.

Podemos eliminar Mac de inmediato, porque no tiene una opción para incluir NVIDIA GPU, y debe tenerlo para cualquier entrenamiento de modelo serio. Si realmente te gusta el ecosistema, puedes cortarlo con una carcasa MacBook y eGPU, pero ya no es portátil.

Otra opción sería Windows, y con WSL puede tener un entorno de desarrollo decente donde todas las herramientas y bibliotecas funcionan bien, pero esta opción sigue siendo un nicho en la comunidad de aprendizaje automático por ahora, y la mayoría de la comunidad ejecuta, prueba y escribe tutoriales basados ​​en en Linux.

Ubuntu es la distribución de Linux más popular entre los profesionales de datos porque es fácil de usar y le permite concentrarse en su trabajo, en lugar de jugar con el sistema operativo. Ubuntu es también el sistema operativo más popular en nubes públicas, por lo que cualquier cosa que desarrolle localmente puede pasar fácilmente a producción sin preocuparse por problemas de compatibilidad.

Canonical está trabajando con muchos socios para hacer que la experiencia de AI / ML sea la mejor para los desarrolladores. Puede obtener más información al respecto en el sitio web de Ubuntu.

Hardware y software

Lo siguiente que hay que analizar es el hardware. Por supuesto, esto depende de su presupuesto, pero la configuración razonable que podría recomendar es:

  • CPU Intel i7 / i9 o Ryzen 7/9 de AMD
  • Al menos 16 GB de RAM, preferiblemente 32 GB o más
  • GPU NVIDIA: hay dispositivos RTX o Quadro para estaciones de trabajo profesionales, pero una GPU gamer de la serie 20XX o 30XX también sería buena
  • Pantalla y teclado agradables: afectan mucho su salud, así que no ahorre en esto y elija alta calidad

Gracias a la colaboración de Canonical con NVIDIA, los controladores de GPU están firmados criptográficamente y hacen que su configuración sea mucho más segura.

Para todas las herramientas básicas de desarrollo de software, Ubuntu lo cubre, usando apt install o snap install puede tener su IDE o editor favorito con un comando de distancia. Como siempre, recomiendo emacs, especialmente usando maldición emacs marco de configuración.

Existen innumerables bibliotecas y herramientas para el aprendizaje automático. Si deseas un conjunto completo de ellos que esté bien integrado, probado y disponible en entornos de producción, debe optar por RÁPIDOS.

Con RAPIDS obtienes:

cuDF – Esta es una biblioteca de manipulación de marcos de datos basada en Apache Arrow que acelera la carga, el filtrado y la manipulación de datos para la preparación de datos de entrenamiento de modelos. Los enlaces de Python de las primitivas de manipulación CUDA DataFrame aceleradas por el núcleo reflejan la interfaz de Pandas para una integración perfecta de los usuarios de Pandas.

cuML – Esta colección de bibliotecas de aprendizaje automático aceleradas por GPU eventualmente proporcionará versiones GPU de todos los algoritmos de aprendizaje automático disponibles en Scikit-Learn.

CUADRO – Este es un marco y una colección de bibliotecas de análisis de gráficos.

Envases Anaconda o NGC

La siguiente elección es cómo gestionar su entorno. Cuando juegas con datos durante más tiempo, rápidamente entrarás en un escenario en el que tienes dos proyectos (es decir, trabajo y proyecto favorito) que requieren diferentes versiones de Python, CUDA o Tensorflow. Las dos formas más eficaces de abordar este problema son Anaconda o contenedores.

Recomendaría familiarizarse con ambos. Para aprender cosas nuevas, haciendo un análisis de datos exploratorio simple con una nueva biblioteca de trazado, prefiero usar conda, ya que es rápido, ocupa poco espacio y es conveniente.

Si incluso sospecho que un proyecto podría pasar a producción, prefiero usar contenedores, ya que son portátiles entre mi máquina, el clúster K8 privado del cliente y una nube pública.

Por supuesto, puede crear su propia imagen de contenedor y es una gran habilidad tener, pero también puede encontrar imágenes de contenedor listas para usar y bien probadas en NVIDIA NGC.

Pasando a la producción

Cuando tiene una solución en funcionamiento y comienza a pensar en pasar a la producción, debe familiarizarse con ML Ops. La mejor forma de hacerlo es unirse a los MLOps. holgura de la comunidad.

Instrucciones de instalación

Estas instrucciones son válidas para la última versión de Ubuntu LTS, que es la 20.04.

Después de instalar el sistema operativo Ubuntu 20.04, necesitamos instalar los controladores para la GPU NVIDIA

Primero verifique si su GPU se detecta correctamente

Luego instale los controladores. No necesita preocuparse por averiguar qué versión es la adecuada para usted, el instalador de Ubuntu se encargará de esto por usted.

sudo ubuntu-drivers autoinstall 
sudo reboot

Puede verificar si todo está instalado correctamente usando el comando nvidia-smi.

Opción 1: entornos RAPIDS basados ​​en Conda

wget -P /tmp https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh

bash /tmp/Anaconda3-2020.02-Linux-x86_64.sh

Responda las preguntas del instalador y cree el entorno:

conda create -n rapids-0.18 -c rapidsai -c nvidia -c conda-forge 
-c defaults rapids-blazing=0.18 python=3.7 cudatoolkit=11.0
 
conda activate rapids-0.18 

Puede ejecutar un cuaderno jupyter que abrirá su navegador.

Opción 2: contenedores Docker con RAPIDS de NVIDIA

Instalar ventana acoplable

sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –

sudo add-apt-repository 
“deb [arch=amd64] https://download.docker.com/linux/ubuntu 
$(lsb_release -cs) 
stable”

sudo apt-get update

sudo apt-get install -y docker-ce docker-ce-cli containerd.io

sudo usermod -aG docker $USER

Instalar nvidia-docker2

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add –

curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

curl -s -L https://nvidia.github.io/nvidia-container-runtime/experimental/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list

sudo apt-get update

sudo apt-get install -y nvidia-docker2

sudo systemctl restart docker

Compruebe si la instalación funciona correctamente:

docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi

Ahora puede utilizar el conjunto completo de contenedores NVIDIA de https://ngc.nvidia.com/catalog/ . Supongamos que tenemos un proyecto que usa la biblioteca Tensorflow y python 3. Entonces necesitas ejecutar

docker pull nvcr.io/nvidia/tensorflow:20.12-tf2-py3

mkdir ~/shared_dir

docker run –gpus all –shm-size=1g –ulimit memlock=-1 –ulimit stack=67108864 -it –rm -v ~/shared_dir:/container_dir nvcr.io/nvidia/tensorflow:20.12-tf2-py3

Y tu entorno está listo

Como puede ver, es muy fácil y sencillo configurar un entorno para proyectos de datos. En cinco minutos después de finalizar la instalación de Ubuntu, puede aterrizar en una ordenador portátil o IDE y comenzar a ser productivo. Esta no es nuestra última palabra. Continuaremos trabajando con nuestros socios y para fin de año obtendremos una experiencia aún mejor.

En caso de problemas de sugerencias, puede encontrarme a mí y al resto del equipo de Ubuntu en Discourse.