Implementa y usa un contenedor de aprendizaje profundo (DL)

Un contenedor de aprendizaje profundo (DL) 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 implementado tiene un entorno coherente y optimizado para el rendimiento que ayuda a crear prototipos e implementar flujos de trabajo rápidamente.

Implementa un contenedor de DL

Antes de usar un contenedor de AA, debes elegir e implementar una imagen de contenedor que ejecute tu tarea de aprendizaje automático (AA). Los frameworks, las bibliotecas y las herramientas preinstalados aprovisionan un contenedor de AA.

Implementa un contenedor de AA con archivos kubeconfig

El dispositivo aislado de Google Distributed Cloud (GDC) proporciona el siguiente archivo kubeconfig que implementa tu contenedor de DL:

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

Para obtener más información sobre cómo acceder a la IU y a la herramienta de kubectl, consulta Accede. Para recuperar el archivo CLUSTER_KUBECONFIG, consulta Cómo obtener un archivo kubeconfig.

Descarga el script y el conjunto de datos de muestra de aprendizaje automático (AA)

Descarga la secuencia de comandos de AA de muestra, beginner.ipynb, y el conjunto de datos, mnist.npz, para ejecutar el instructivo de inicio rápido de AA. En este instructivo, se muestra cómo implementar y usar un contenedor de AA para ejecutar experimentos de AA.

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

Reemplaza GDC_APPLIANCE_URL por el nombre de dominio que se usó para acceder a GDC. Cuando abres cualquier URL por primera vez, GDC te redirecciona a la página de acceso de tu proveedor de identidad.

Busca la dirección IP del registro de Harbor

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

La primera línea del código de ejemplo establece la ruta de acceso 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 muestra, 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 muestra, la herramienta kubectl recupera 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 implementar antes de poder ejecutar una tarea de AA. Usa el dominio del registro de Harbor y la ruta de acceso 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 está organizada por framework y procesador. Para elegir una imagen de contenedor de AA que pueda procesar tu experimento de AA, sigue estos pasos:

  1. Identifica el framework, que contiene las herramientas de AA.
  2. Elige el procesador. Elige el procesador según el tipo de tarea de AA que deseas ejecutar y la intensidad de procesamiento de esa tarea. Por ejemplo, elige uno de los procesadores de GPU cuando tengas una tarea de AA que requiera mucha capacidad de procesamiento y asigna un recurso de GPU al contenedor de DL.

Crea e implementa un contenedor de DL en el clúster de Kubernetes

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

Reemplaza CONTAINER_IMAGE_NAME por la imagen seleccionada de la lista de imágenes en 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

Usa un contenedor de DL implementado

En los siguientes temas, se proporciona un ejemplo de cómo usar una imagen de contenedor de AA para entrenar un modelo y usarlo para generar predicciones.

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

Copia los archivos del instructivo de inicio rápido en el pod de tu contenedor de AA. El beginner.ipynb contiene los pasos para entrenar y usar un modelo para hacer predicciones. En el instructivo de entrenamiento de AA, 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

Ejecuta el instructivo de inicio rápido de AA

Ejecuta el instructivo con los siguientes comandos. Usa la primera línea para ingresar al pod del contenedor. Después de que 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 instructivo para crear un notebook que genera predicciones.

  1. Ingresa a 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 la predicción del modelo de AA generado:

    cat result.ipynb
    

Opcional: Borra el Pod del contenedor de DL

Después de terminar de ejecutar el experimento en el pod del contenedor de DL, borra el pod como práctica recomendada:

kubectl delete pod dl-container-pod