El aprendizaje automático (ML) se está convirtiendo en una parte cada vez más importante de la pila de aplicaciones modernas. Ya sean modelos públicos de lenguaje grande (LLM) a gran escala como GPT o modelos privados de pequeña escala entrenados en el contenido de la empresa, los desarrolladores necesitan encontrar formas de incluir esos modelos en su código. Eso significa encontrar formas de probar ese código, sin enviándolo a los servidores de producción. Podemos basarnos en algunos de los conceptos de MLOps utilizados para gestionar los modelos subyacentes, fusionándolos con técnicas familiares de Devops. Sin embargo, gran parte de ese trabajo es a medida, y los desarrolladores construyen sus propias cadenas de herramientas y sus propios arneses de prueba. A medida que los equipos cambian, la rueda se reinventa una y otra vez. Como resultado, los proyectos tardan más en entregarse y las lecciones clave no se transmiten de un equipo a otro. No existe un marco común para determinar el rendimiento real y los costos de inferencia resultantes, lo que dificulta la presentación de argumentos comerciales para aplicaciones específicas de aprendizaje automático, aunque es posible que puedan ofrecer un valor significativo a una empresa. Uso de Flyte para la orquestación de aprendizaje automático en KubernetesOne El camino hacia un futuro de “ML devops” es utilizar herramientas de orquestación de flujo de trabajo, como Flyte, para crear y ejecutar aplicaciones de ML, aprovechando las plataformas y contenedores nativos de la nube para ejecutarlas a escala. Este enfoque tiene mucho valor, ya que le brinda una plataforma única para ejecutar inferencias, utilizando tecnologías como Kubernetes para escalar según sea necesario. Pero solo admite el lado operativo de las cosas, al tiempo que requiere que los desarrolladores trabajen con datos de prueba inadecuados y su propia infraestructura básica en la nube. Flyte aprovecha el soporte de Kubernetes para el acceso a GPU desde contenedores, emparejando la encapsulación de modelos en contenedores y el código de soporte con Python. canalización de orquestación. El motor de orquestación subyacente está escrito en Go, lo que le brinda compatibilidad con Kubernetes y el alto rendimiento necesario para las operaciones de aprendizaje automático en tiempo de ejecución. Sin embargo, desde el primer momento, Flyte todavía tiene muchos de los mismos problemas que otras herramientas de canalización, ya que requiere desarrolladores. para completar el desarrollo antes de que la aplicación pueda probarse con datos reales, incluso cuando solo esté realizando un ligero cambio. Como resultado, las pruebas locales a menudo se llevan a cabo en un conjunto de datos artificiales curados, uno que a menudo es mucho más pequeño que los conjuntos de datos de producción. Los modelos también están obligados a ejecutarse en computadoras portátiles u otros sistemas de desarrollo, lo que dificulta determinar los niveles de cuantificación apropiados sin múltiples pasadas. Muchas empresas utilizan Flyte para alojar sus canales de aprendizaje automático, incluida la filial LinkedIn de Microsoft. LinkedIn pasó a utilizar Flyte hace un año y pronto creó herramientas interorganizacionales sobre el marco. Esto eliminó algunos de los cuellos de botella, particularmente al brindar a los desarrolladores un conjunto común de componentes que redujo la necesidad de herramientas personalizadas. Sin embargo, el equipo de LinkedIn aún no pudo solucionar todos los problemas que surgen al integrar el aprendizaje automático en un entorno devops. Una brecha importante fue la falta de herramientas de desarrollo interactivas. Una experiencia de desarrollador interactiva para Flyte El equipo de ML de LinkedIn comenzó a trabajar en una herramienta basada en el servidor de códigos Visual Studio Code para llenar esa brecha. FlyteInteractive, ahora disponible como un proyecto de código abierto, aleja el desarrollo de ML de los procesos actuales de desarrollo por lotes hacia un enfoque mucho más cercano al desarrollo de aplicaciones modernas. FlyteInteractive es, como su nombre indica, un modo de desarrollo interactivo para tuberías Flyte. FlyteInteractive permite a los desarrolladores examinar las operaciones del modelo y probar diferentes parámetros mientras trabajan en un entorno cercano a la producción, aprovechando el aislamiento proporcionado por los contenedores Kubernetes de Flyte y las capacidades de depuración del servidor remoto de Visual Studio Code. Si está utilizando Flyte y Después de instalar los componentes FlyteInteractive, usar FlyteInteractive es tan fácil como agregar una sola línea a la tarea de Python que ejecuta su trabajo de aprendizaje automático. Esta línea, un decorador @vscode simple, cambia su canalización del modo por lotes al modo interactivo, implementando un contenedor con un Visual Studio Code Server listo para usar. Luego puede conectarse al tiempo de ejecución del contenedor con VS Code, lo que le brinda acceso a un trabajo de aprendizaje automático en ejecución utilizando las herramientas de depuración familiares en VS Code. La ventaja de este enfoque es que los desarrolladores pueden obtener acceso a entornos de nivel de producción y datos reales. Incluso existe la opción de trabajar con modelos a escala. FlyteInteractive le permite tener una mejor idea del rendimiento y la precisión del modelo y reducir el riesgo de error. Al mismo tiempo, puede trabajar para ajustar y cuantificar sus modelos, de modo que hagan un uso eficiente de los recursos y mantengan los costos operativos al mínimo. Además, Visual Studio Code le brinda acceso a depuradores de Python y otras herramientas específicas del lenguaje que puede ayudarle a examinar el modelo en ejecución con más detalle. En lugar de esperar los resultados de un trabajo por lotes, puede establecer puntos de interrupción y utilizar el depurador para inspeccionar las operaciones, avanzando y realizando cambios a medida que avanza. FlyteInteractive también le brinda acceso a los cuadernos Jupyter que contienen su modelo y su código. Esto le brinda acceso a las herramientas de visualización y análisis numérico de Python para explorar los datos de su prueba y comprender qué tan preciso es su modelo y si los resultados que obtiene son estadísticamente significativos. Comenzar con FlyteInteractive Instalar FlyteInteractive es bastante simple, ya que está disponible a través del conocido Instalador de pips de Python. Una vez que haya instalado FlyteInteractive y haya agregado el decorador @vscode a su tarea, puede conectarse a él desde Visual Studio Code a través de una URL en la consola Flyte o usando la línea de comando de Kubernetes para abrir un puerto en su módulo de prueba. Luego, todo Lo que debe hacer es usar la opción ejecutar y depurar en VS Code, aprovechando su depurador interactivo incorporado. Una ejecución de depuración hereda las entradas de la tarea que creó. Puede utilizar esto para realizar cambios en su modelo sobre la marcha. Debe asegurarse de que se copien en su propio entorno de desarrollo, por ejemplo, como confirmaciones en Git, ya que se perderán cuando se cierre la sesión interactiva. Una de las características más útiles de FlyteInteractive es un recolector de basura integrado. Esto garantiza que su entorno no consuma recursos sin ofrecer resultados. Una opción establece un tiempo máximo de vida, mientras que la otra establece límites al tiempo de inactividad. Si se excede cualquiera de los límites, el contenedor de prueba se cierra y se elimina. De esta manera puede asegurarse de que los experimentos fallidos no cuesten más de lo necesario. Las versiones futuras de FlyteInteractive bien podrían proporcionar ganchos de observabilidad en modelos que proporcionen datos sobre el uso de recursos a las herramientas finops, permitiendo a los equipos cuantificar modelos para que puedan adaptarse no solo en términos de rendimiento y precisión, sino también de costo. Agregar funciones de observabilidad podría ayudar a ajustar el rendimiento y depurar una canalización de aprendizaje automático como parte de una aplicación más grande. LinkedIn estima una mejora del 96% en la búsqueda de errores y la ejecución de experimentos desde que comenzó a usar FlyteInteractive. Antes de FlyteInteractive, el ciclo de construcción y prueba en sistemas activos podía tardar hasta 15 minutos para probar un flujo de trabajo, con una tasa de éxito de apenas el 20% para encontrar errores. Si está utilizando modelos de Hugging Face, especialmente la nueva generación de modelos de lenguaje pequeño , FlyteInteractive debería ser de gran ayuda para obtener el nivel de cuantificación correcto y la precisión adecuada para sus aplicaciones, y ya no tendrá que sentarse esperando para ver si un trabajo por lotes terminará como se espera. Herramientas como FlyteInteractive serán una parte esencial de la cadena de herramientas de ML. Copyright © 2024 IDG Communications, Inc.

Source link