Mas leido
Building Stories
Modo Rua: Redefiniendo el desarrollo de aplicaciones mediante iteración centrada en el usuario Ago 23
Building Stories
NuStories: Adaptación de productos para clientes fanáticos en varios países Oct 30
Culture & Values
Cómo los valores y la cultura de Nu dan forma a los productos que creamos Ago 7
Carreras
Reunimos a grandes mentes de diversos orígenes que permiten la discusión y el debate y mejoran la resolución de problemas.
Conoce más sobre nuestras carreras



Autor: Pedro Viana Gomes Pena
Revisado por Kevin Rossell
Los flujos de trabajo de machine learning (ML) son el corazón de la innovación basada en datos, pero asegurar que sean escalables y adaptables puede ser todo un reto. Por eso creamos Common Python Workflows (CPW), una solución versátil que simplifica cómo los equipos crean, gestionan y ejecutan pipelines de machine learning.
CPW aborda problemas comunes como la complejidad de los flujos de trabajo y la falta de flexibilidad, permitiendo que los equipos se concentren en mejorar sus modelos en lugar de lidiar con procesos ineficientes. En este blog, exploraremos las razones detrás del desarrollo de CPW, sus características únicas y los aprendizajes clave de nuestra experiencia hasta ahora.
Desafios inciales
Antes de CPW, enfrentábamos varias limitaciones con nuestra herramienta existente, Sheep:
Estos desafíos nos llevaron a desarrollar CPW: una solución flexible y preparada para el futuro que simplifica los flujos de trabajo de ML y resuelve estos puntos problemáticos.
¿Qué es CPW?
CPW es una biblioteca diseñada para simplificar la creación y gestión de flujos de trabajo de ML. Introduce varias características clave:
Para ejecutar pipelines de modelos, utilizamos Kubeflow Pipelines: una plataforma open-source de machine learning que facilita la implementación y gestión de flujos de trabajo de ML de extremo a extremo. Además de orquestar pipelines de ML en Kubernetes, ofrece herramientas para gestionar y monitorear ejecuciones de pipeline.
CPW se integra perfectamente con Kubeflow a través de Argo Workflows. Una vez que se crea un flujo (Flow), este puede compilarse en un Argo Workflow y someterse a ejecución en Kubeflow, que ofrece características como:
CPW se basa en Dagster, aprovechando principalmente los conceptos de activos definidos por software y IOManagers.
Por qué elegimos Dagster
Al diseñar CPW, evitamos deliberadamente reinventar soluciones existentes para Grafos Acíclicos Dirigidos (DAG) y orquestación. Había varios frameworks open-source que lo hacían bien. Queríamos enfocarnos en la experiencia de creación de pipelines.
Después de evaluar frameworks como Metaflow y Dagster, elegimos Dagster por su:
Diseño de la clase workflow
Para facilitar la creación de workflows reutilizables, introdujimos la clase FlowSpec, que permite que los equipos hereden y adapten workflows fácilmente. Esta clase permite cambios mínimos, lo que facilita la colaboración y la adaptación de flujos entre equipos.
Este enfoque aporta ventajas adicionales:
Esto permite realizar cambios mínimamente intrusivos que requieren poca o ninguna modificación del código del usuario para poder ser utilizados.
Este diseño también ha facilitado la colaboración, ya que los equipos desarrollan Flujos de formación básicos que se utilizan para varios modelos, lo que permite aplicar las mejoras una sola vez a todos los modelos.
Conceptos centrales
CPW se basa en varios conceptos centrales de Dagster, principalmente activos definidos por software e IOManagers. Estos conceptos permiten definir y gestionar componentes de flujo de trabajo de forma modular y reutilizable.
He aquí un ejemplo de definición de un flujo en CPW:
En este ejemplo, hemos definido un flujo de trabajo sencillo con tres activos:
Basándose en los nombres y argumentos de los activos (funciones), CPW establece automáticamente las dependencias entre las funciones. El DAG (grafo acíclico dirigido) resultante tendrá el siguiente aspecto:
Descubre las oportunidades
Artefactos y persistencia
CPW garantiza que los artefactos de cada activo se conservan en un directorio S3 compartido (o local). Por ejemplo:
CPW gestiona la serialización y deserialización de estos artefactos, garantizando que se almacenan y recuperan de forma eficiente. Esta persistencia automática permite a los usuarios concentrarse en definir su flujo de trabajo sin preocuparse de la gestión subyacente de los datos.
Al aprovechar los activos definidos por software y los IOManagers de Dagster, CPW proporciona un marco sólido y flexible para crear y gestionar flujos de trabajo de ML. Este enfoque modular facilita la definición, el uso compartido y la adaptación de los flujos de trabajo, lo que permite a los equipos trabajar de forma más eficiente y eficaz, centrándose únicamente en lo que importa:
Casos prácticos
CPW ha permitido a varios equipos simplificar considerablemente sus flujos de trabajo:
Compartir el mismo flujo base para diversos modelos de PLN
Uno de los éxitos más significativos procede de un equipo que trabaja con modelos de procesamiento del lenguaje natural (PLN). Al compartir un flujo base común para varios modelos de PNL, el equipo pudo reducir en un 80% el esfuerzo de actualización del flujo de trabajo de entrenamiento de los modelos.
Esto se consiguió reutilizando la misma estructura de flujo de trabajo y modificando únicamente los parámetros específicos de cada modelo. El diseño modular de CPW permitió al equipo gestionar y adaptar eficazmente sus flujos de trabajo, lo que se tradujo en un importante ahorro de tiempo y un aumento de la productividad.
Distribuir las mejoras entre los equipos
Otro caso de éxito es el de un científico de datos que desarrolló código de evaluación y gráficos para su modelo. Gracias a CPW, pudo desplegar inmediatamente estas mejoras en todos los demás modelos de su equipo. Esto le ahorró semanas de esfuerzo y trabajo de ingeniería, ya que podían integrarse sin problemas en los flujos de trabajo existentes. La posibilidad de compartir y reutilizar componentes del flujo de trabajo entre distintos modelos y equipos pone de manifiesto el poder de CPW para fomentar la colaboración y la eficacia.
Estos casos prácticos demuestran las ventajas tangibles de utilizar CPW para gestionar los flujos de trabajo de ML. Al aprovechar la naturaleza modular y reutilizable de CPW, los equipos pueden mejorar significativamente la eficiencia de sus flujos de trabajo y reducir el tiempo y el esfuerzo necesarios para desarrollar y mantener modelos de ML.
Lecciones aprendidas
Durante el desarrollo y el uso de CPW, identificamos varias lecciones clave:
Estas lecciones han servido de base a nuestro plan de futuro, garantizando que CPW siga evolucionando y satisfaciendo las necesidades de nuestros usuarios, al tiempo que mantiene su flexibilidad y potencia.
Descubre las oportunidades