Desplegar y usar un contenedor de aprendizaje profundo

Un contenedor de aprendizaje profundo es un contenedor de Docker con frameworks, bibliotecas y herramientas de ciencia de datos preinstalados. Un usuario, como un científico de datos, elige un solo contenedor de DL y lo implementa. El contenedor desplegado tiene un entorno coherente y con rendimiento optimizado que permite crear prototipos e implementar flujos de trabajo rápidamente.

Desplegar un contenedor de DL

Antes de usar un contenedor de aprendizaje profundo, debes elegir y desplegar una imagen de contenedor que ejecute tu tarea de aprendizaje automático. Los frameworks, las bibliotecas y las herramientas preinstalados proporcionan un contenedor de aprendizaje profundo.

Desplegar un contenedor de DL con archivos kubeconfig

El dispositivo air-gapped de Google Distributed Cloud (GDC) proporciona el siguiente archivo kubeconfig para implementar tu contenedor de datos:

  • CLUSTER_KUBECONFIG: el archivo kubeconfig del clúster de Kubernetes bare metal. GDC proporciona un clúster para todas las cargas de trabajo.

Para obtener más información sobre cómo iniciar sesión en la interfaz de usuario y en la herramienta kubectl, consulta Iniciar sesión. Para recuperar el archivo CLUSTER_KUBECONFIG, consulta Obtener un archivo kubeconfig.

Descargar la secuencia de comandos y el conjunto de datos de aprendizaje automático (ML) de ejemplo

Descarga la secuencia de comandos de aprendizaje automático de ejemplo, beginner.ipynb, y el conjunto de datos, mnist.npz, para ejecutar el tutorial de inicio rápido de aprendizaje automático. En el tutorial se muestra cómo desplegar y usar un contenedor de aprendizaje profundo para ejecutar experimentos de aprendizaje automático.

mkdir -p /tmp/datasets
cd /tmp/datasets

wget --no-check-certificate
https://GDC_APPLIANCE_URL/.well-known/static/dl-container-tutorial/beginner.ipynb

wget --no-check-certificate
https://GDC_APPLIANCE_URL/.well-known/static/dl-container-tutorial/mnist.npz

Sustituye GDC_APPLIANCE_URL por el nombre de dominio que se usa para acceder a GDC. Cuando abres cualquier URL por primera vez, GDC te redirige a la página de inicio de sesión de tu proveedor de identidad.

Buscar la dirección IP del registro de Harbor

Antes de usar la secuencia de comandos y el conjunto de datos de ejemplo, debes encontrar la ubicación de la imagen del contenedor de DL en el registro de Harbor. El registro de Harbor es un servicio que almacena imágenes de contenedor privadas.

La primera línea de código de ejemplo define la ruta de la variable de entorno KUBECONFIG, que obtiene la dirección del registro de Harbor. La dirección del registro de Harbor proporciona acceso a una lista de imágenes de contenedor disponibles.

En la segunda línea del código de ejemplo, la herramienta kubectl usa la variable de entorno KUBECONFIG.

En la tercera línea del código de muestra, el comando REGISTRY_URL#https:// quita el prefijo https:// de la URL y almacena el dominio del registro de Harbor en la variable de entorno REGISTRY_IP.

En la última línea del código de ejemplo, la herramienta kubectl obtiene la contraseña del usuario admin.

export KUBECONFIG=CLUSTER_KUBECONFIG

REGISTRY_URL=$(kubectl get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}')
REGISTRY_IP=${REGISTRY_URL#https://}
ADMIN_PASS=$(kubectl -n harbor-system get secret harbor-admin -o jsonpath="{.data.secret}" | base64 -d)

Elegir una imagen de contenedor

Debes elegir una imagen de contenedor para desplegarla antes de poder ejecutar una tarea de aprendizaje automático. Usa el dominio del registro de Harbor y la ruta de la siguiente tabla del registro de Harbor para ver la lista de imágenes de contenedor disponibles:

Framework Procesador Nombre de la imagen del contenedor
Base GPU base-cu113
Base CPU base-cpu
TensorFlow Enterprise 2.x GPU tf2-gpu
PyTorch GPU pytorch-gpu

Esta tabla se organiza por framework y procesador. Para elegir una imagen de contenedor de DL que pueda procesar tu experimento de aprendizaje automático, sigue estos pasos:

  1. Identifica el framework, que contiene las herramientas de aprendizaje automático.
  2. Elige el procesador. Elige el procesador en función del tipo de tarea de aprendizaje automático que quieras ejecutar y de la intensidad de computación de esa tarea. Por ejemplo, elige uno de los procesadores de GPU cuando tengas una tarea de aprendizaje automático que requiera muchos recursos de computación y asigna un recurso de GPU al contenedor de aprendizaje profundo.

Crear y desplegar un contenedor de aprendizaje profundo en el clúster de Kubernetes

Para crear la instancia de GDC, especifica la ruta al archivo kubeconfig del clúster de Kubernetes de hardware desnudo. La variable de entorno KUBECONFIG especifica en qué clúster implementa la herramienta kubectl el contenedor de descarga. El comando kubectl apply despliega la instancia de contenedor de DL.

Sustituye CONTAINER_IMAGE_NAME por la imagen seleccionada de la lista de imágenes de Elige una imagen de contenedor y asegúrate de proporcionar la etiqueta.

export KUBECONFIG=CLUSTER_KUBECONFIG

kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: dl-container-pod
  namespace: NAMESPACE
spec:
  containers:
  - image: gcr.io/private-cloud-staging/notebooks/deeplearning-platform-release/CONTAINER_IMAGE_NAME:CONTAINER_IMAGE_TAG
    command: ["tail", "-f", "/dev/null"]
    name: training
EOF

Usar un contenedor de DL implementado

En los siguientes temas se muestra un ejemplo de cómo usar una imagen de contenedor de aprendizaje profundo para entrenar un modelo y usarlo para generar predicciones.

Copia los archivos del tutorial en el pod del contenedor de DL

Copia los archivos del tutorial de inicio rápido en tu pod de contenedor de DL. La beginner.ipynb contiene los pasos para entrenar y usar un modelo para hacer predicciones. En el tutorial de entrenamiento de aprendizaje automático se usa el archivo del conjunto de datos mnist.npz para entrenar un modelo.

cd /tmp/datasets

kubectl cp beginner.ipynb dl-container-pod:/tmp
kubectl cp mnist.npz dl-container-pod:/tmp

Ejecutar el tutorial de inicio rápido de aprendizaje automático

Ejecuta el tutorial con los siguientes comandos. Usa la primera línea para introducir el pod del contenedor. Cuando estés en el pod del contenedor, cambia el directorio a tmp y ejecuta la herramienta papermill que se incluye en el contenedor de DL. La herramienta papermill ejecuta el tutorial para crear un cuaderno que genera predicciones.

  1. Introduce una terminal interactiva en el pod de DL:

    kubectl exec -it dl-container-pod -- /bin/bash
    
  2. En el contexto del pod de DL, ejecuta los siguientes comandos:

    cd tmp
    papermill beginner.ipynb result.ipynb
    

    La implementación genera un archivo result.ipynb en el directorio /tmp.

  3. Consulta el contenido y los resultados de las predicciones del modelo de AA generado:

    cat result.ipynb
    

Opcional: Elimina el pod del contenedor de descarga

Una vez que hayas terminado de ejecutar el experimento en el pod del contenedor de datos de cliente, elimina el pod. Es una práctica recomendada:

kubectl delete pod dl-container-pod