1. Introducción
Kubeflow es un kit de herramientas de aprendizaje automático para Kubernetes. El objetivo del proyecto es que las implementaciones de flujos de trabajo de aprendizaje automático (AA) en Kubernetes sean simples, portátiles y escalables. El objetivo es ofrecer una forma directa de implementar sistemas de código abierto de primer nivel para el AA en infraestructuras diversas. |
¿Cómo es una implementación de Kubeflow?
Una implementación de Kubeflow tiene las siguientes características:
- Portátil: Funciona en cualquier clúster de Kubernetes, ya sea que resida en Google Cloud Platform (GCP), de manera local o entre proveedores.
- Escalable: Puede utilizar recursos que fluctúan y se ve limitada solo por la cantidad de recursos asignados al clúster de Kubernetes.
- Componible: Mejorado con service workers para trabajar sin conexión o en redes de baja calidad.
Es un medio para organizar microservicios con acoplamiento bajo como una sola unidad y, luego, implementarlos en una variedad de ubicaciones, ya sea en una laptop o en la nube.
En este codelab, aprenderás a crear tu propia implementación de Kubeflow con MiniKF y a ejecutar un flujo de trabajo de Kubeflow Pipelines desde un notebook de Jupyter.
Qué compilarás
En este codelab, compilarás una canalización compleja de ciencia de datos con Kubeflow Pipelines, sin necesidad de usar SDK ni comandos de la CLI. No es necesario tener conocimientos sobre Kubernetes o Docker. Cuando termine, su infraestructura contendrá lo siguiente:
- Una VM MiniKF (Mini Kubeflow) que instala automáticamente lo siguiente:
- Kubernetes (con Minikube)
- Kubeflow
- Kale, una herramienta para convertir notebooks de Jupyter de uso general en flujos de trabajo de Kubeflow Pipelines ( GitHub)
- Arrikto Rok para el control de versiones y la reproducibilidad de los datos
Qué aprenderás
- Cómo instalar Kubeflow con MiniKF
- Cómo convertir tus notebooks de Jupyter en Kubeflow Pipelines sin usar ningún comando de CLI ni SDK
- Cómo ejecutar Kubeflow Pipelines desde un notebook con solo hacer clic en un botón
- Cómo crear versiones automáticas de tus datos en un notebook y en cada paso de la canalización
Requisitos
- Un proyecto de GCP activo para el que tengas permisos de propietario
Este es un codelab avanzado enfocado en Kubeflow. Para obtener más información general y una introducción a la plataforma, consulta la documentación Introducción a Kubeflow. Los conceptos y los bloques de código que no son relevantes se pasan por alto y se proporcionan para que simplemente los copies y pegues.
2. Configura el entorno
Configura tu ID del proyecto de GCP y el nombre del clúster
Para encontrar el ID de tu proyecto, visita el panel principal de GCP Console, que se encuentra en el menú de opciones en la parte superior izquierda. Si la pantalla está vacía, haz clic en Sí cuando se te solicite para crear un panel.
Si el proyecto aún no está seleccionado, haz clic en Selecciona un proyecto:
Luego, selecciona tu proyecto. Solo deberías tener una:
3. Instala MiniKF
Crea una instancia de Compute
En GCP Marketplace, busca “MiniKF”.
Selecciona la máquina virtual MiniKF de Arrikto.
Haz clic en el botón Iniciar en Compute Engine y selecciona tu proyecto.
En la sección Configurar y Implementar, elige un nombre para tu instancia de MiniKF y deja las opciones predeterminadas. Luego, haz clic en el botón Implementar.
Espera a que se inicie la instancia de Compute de MiniKF.
Cómo acceder a MiniKF
Cuando la VM de MiniKF esté activa, haz clic en el botón SSH para conectarte y acceder. Sigue las instrucciones en pantalla para ejecutar el comando minikf
, que iniciará la implementación de Minikube, Kubeflow y Rok. Este proceso tardará unos minutos en completarse.
Acceder a Kubeflow
Una vez que se complete la instalación y todos los Pods estén listos, visita el panel de MiniKF. Acceda a Kubeflow con el nombre de usuario y la contraseña de MiniKF.
Los usuarios de Chrome verán esta pantalla:
Los usuarios de Firefox verán esta pantalla:
Los usuarios de Safari verán esta pantalla:
Acceder a Rok
Después de acceder a Kubeflow, haz clic en el ícono de tres líneas para abrir el menú de la izquierda. Navega al almacén de instantáneas y accede a Rok con el nombre de usuario y la contraseña de MiniKF.
¡Felicitaciones! Implementaste MiniKF en GCP correctamente. Ahora puedes crear notebooks, escribir tu código de AA y ejecutar Kubeflow Pipelines. Usar Rok para el control de versiones y la reproducibilidad de los datos
4. Ejecuta una canalización desde tu notebook
Durante esta sección, ejecutarás el ejemplo del Titanic, una competencia de Kaggle que predice qué pasajeros sobrevivieron al naufragio del Titanic.
Crea un servidor de notebook
Navega hasta el vínculo Servidores de notebooks en el panel central de Kubeflow.
Haz clic en New Server.
Especifica un nombre para tu servidor de notebooks.
Asegúrate de haber seleccionado esta imagen:
gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop
Agrega un nuevo volumen de datos vacío de 5 GB y asígnale el nombre data.
Haz clic en Iniciar para crear el servidor de notebook.
Cuando el servidor del notebook esté disponible, haz clic en Conectar para conectarte a él.
Descarga los datos y el notebook
Se abrirá una nueva pestaña con la página de destino de JupyterLab. Crea una terminal nueva en JupyterLab.
En la ventana de terminal, ejecuta estos comandos para navegar a la carpeta data y descarga el notebook y los datos que usarás durante el resto del lab.
cd data/ git clone -b kubecon-workshop https://github.com/kubeflow-kale/examples
Este repositorio contiene una serie de ejemplos seleccionados con datos y notebooks anotados. Navega a la carpeta data/examples/titanic-ml-dataset/
en la barra lateral y abre el notebook titanic_dataset_ml.ipynb
.
Explora el código de AA del desafío Titanic
Ejecuta el notebook paso a paso. Ten en cuenta que el código falla porque falta una biblioteca.
Regresa a la terminal e instala la biblioteca que falta.
pip3 install --user seaborn
Haz clic en el ícono Refresh para reiniciar el kernel del notebook.
Vuelve a ejecutar la celda con las bibliotecas correctas instaladas y observa cómo funciona.
Convierte tu notebook en una canalización de Kubeflow
Para habilitar Kale, haz clic en el ícono de Kubeflow en el panel izquierdo.
Explora las dependencias por celda. Observa cómo varias celdas pueden formar parte de un solo paso de canalización y cómo un paso de canalización puede depender de los anteriores.
Haz clic en el botón Compile and Run.
Mira el progreso de la instantánea.
Mirar el progreso de la ejecución de la canalización
Haz clic en el vínculo para ir a la IU de Kubeflow Pipelines y ver la ejecución.
Espera a que se complete.
¡Felicitaciones! Acabas de ejecutar una canalización de Kubeflow de extremo a extremo en tu notebook.
5. Reproducibilidad con instantáneas de volumen
Examine los resultados
Consulta los registros del penúltimo paso de la canalización, Results. Observa que todos los predictores muestran una puntuación del 100%. Un científico de datos experimentado encontraría esta situación sospechosa de inmediato. Este es un buen indicador de que nuestros modelos no se generalizan, sino que sobreajustan el conjunto de datos de entrenamiento. Es probable que esto se deba a un problema con los datos que consumen los modelos.
Reproducir el estado anterior
Afortunadamente, Rok se encarga del control de versiones de datos y de la reproducción de todo el entorno, ya que fue el momento en que hiciste clic en el botón Compile and Run. De esta manera, tendrás una máquina del tiempo para tus datos y código. Reanudamos el estado de la canalización antes de entrenar uno de los modelos y veamos qué sucede. Observa el paso randomforest y, luego, haz clic en Artifacts.
Sigue los pasos en Markdown, es decir, visualiza la instantánea en la IU de Rok haciendo clic en el vínculo correspondiente.
Copia la URL de Rok.
Navega hasta el vínculo Servidores de notebooks.
Haz clic en New Server.
Pega la URL de Rok que copiaste antes y haz clic en el botón Autocompletar.
Especifica un nombre para tu notebook.
Asegúrate de haber seleccionado esta imagen:
gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop
Haz clic en Iniciar para crear el servidor de notebook.
Cuando el servidor del notebook esté disponible, haz clic en Conectar para conectarte a él.
Ten en cuenta que el notebook se abre en la celda exacta del paso de canalización que generaste.
En segundo plano, Kale reanudó el estado del notebook importando todas las bibliotecas y cargando las variables de los pasos anteriores.
Depura el estado anterior
Agrega un comando de impresión a esta celda:
print(acc_random_forest)
Ejecuta la celda activa presionando Mayúsculas + Volver para volver a entrenar el bosque aleatorio y, luego, imprimir la puntuación. Es 100.
Ahora, es momento de ver si hay algo extraño en los datos de entrenamiento. Para explorar y solucionar este problema, agrega una celda arriba del Markdown de bosque aleatorio. Para ello, selecciona la celda anterior y haz clic en el ícono de signo más (+).
Agrega el siguiente texto y ejecuta la celda para imprimir el conjunto de entrenamiento.
train_df
¡Uy! La columna con etiquetas de entrenamiento (“Survived”) se incluyó por error como atributos de entrada. El modelo aprendió a enfocarse en el modelo “sobrevivido” atributo e ignorar el resto, lo que contamina la entrada. Esta columna coincide exactamente con el objetivo del modelo y no está presente durante la predicción, por lo que debe quitarse del conjunto de datos de entrenamiento para permitir que el modelo aprenda de los otros atributos.
Agregar una corrección de errores
Para quitar esta columna, edita la celda y agrega el siguiente comando:
train_df.drop('Survived', axis=1, inplace=True) train_df
Habilita Kale y asegúrate de que la celda que quita las etiquetas Survived forme parte del paso de canalización featureengineering (debe tener el mismo color de contorno).
Haz clic en el botón Compile and Run para volver a ejecutar la canalización.
Haz clic en el vínculo para ir a la IU de Kubeflow Pipelines y ver la ejecución.
Espera a que se complete el paso results y consulta los registros para ver los resultados finales. Ahora tienes puntuaciones de predicción realistas.
6. Limpia
Destruye la VM de MiniKF
Navega a Deployment Manager en la consola de GCP y borra la implementación de minikf-1
.
7. Felicitaciones
Felicitaciones, ejecutaste con éxito un flujo de trabajo de ciencia de datos de extremo a extremo con Kubeflow (MiniKF), Kale y Rok.
¿Qué sigue?
Únete a la comunidad de Kubeflow:
- github.com/kubeflow
- Kubeflow en Slack
- kubeflow-discuss@googlegroups.com
- Llamada a la comunidad los martes