code europe
Gema Parreño Senior Data Scientist

Code Europe: explorando el Aprendizaje Automático dentro del Open Source

En los bulliciosos salones de la conferencia Code Europe, tuvimos el privilegio de subir al escenario como ponentes. Más allá del honor y la emoción de compartir nuestros conocimientos, la verdadera magia de esta experiencia se desarrolló durante los momentos de conexión y colaboración que tuvieron lugar fuera del escenario. En esta entrada de blog, le invitamos a acompañarnos en un cautivador viaje a través del poder del aprendizaje y la creación de redes en la conferencia, donde las mentes se encontraron, las ideas se fusionaron y nacieron nuevas oportunidades. 

Las conversaciones reflexivas y perspicaces sobre el aprendizaje automático en la producción, el pirateo informático, los modelos empresariales orientados al código abierto y la creación de ecosistemas de desarrolladores surgieron de forma natural. Además, compartimos nuestra experiencia contribuyendo a la herramienta de experimentación de la extensión DVC VSCode. 

Proyecto TEMPA. Hackear Teslas por diversión y sin Profifigure1 

Proyecto TEMPA

Fig 1. Logotipo del proyecto TEMPA. Una de las presentaciones aquí. Proyecto Github aquí  

Una de las sesiones más interesantes a las que asistimos fue una ponencia que desveló el fascinante mundo del hackeo de Tesla, a cargo de Martin Herfurt. El ponente, experto en ciberseguridad, compartió sus conocimientos sobre las vulnerabilidades de los sistemas de Tesla y demostró cómo el hacking ético desempeña un papel vital en la mejora de la seguridad del automóvil. Fue revelador ser testigo de las intrincadas técnicas utilizadas para descubrir posibles vulnerabilidades y ver cómo ha contribuido al panorama general de la seguridad compartiendo sus conocimientos con la comunidad OpenSource. 

Durante nuestra conversación con Martin descubrimos que su motivación procedía de un profundo sentido de la curiosidad y de su experiencia en tecnología Bluetooth -de hecho, algunas personas incluso apagaban su Bluetooth cuando él estaba cerca-. Estaba especialmente interesado en explorar la interfaz que ofrecía Tesla. 

Aunque poner en marcha el proyecto fue relativamente fácil, aún quedaban retos por superar. A Martin le resultó sencillo acceder a las definiciones de proto-buff y extraerlas. Sin embargo, el código estaba a menudo ofuscado, lo que exigía un afinado sentido de discernimiento para identificar las referencias y comprender su contexto. Además, deduciendo de la firma algunos de los entresijos.  

El proyecto TEMPA va más allá de la inspiración, y conocer a Martin en esta conferencia ha sido una de las cosas que nos llevaremos siempre en el corazón. Más allá de su fascinante proyecto, tuvimos la oportunidad de compartir lo importante que sigue siendo llevar la exploración y la mentalidad maker a las conferencias.  

→ Grandes modelos lingüísticos en sus propios datos 

La misión de Deepset.ai es reducir el tiempo de lanzamiento al mercado para acelerar la creación de productos basados en PNL. Ayuda a los desarrolladores proporcionándoles herramientas para desplegar sus problemas empresariales orientados al lenguaje. Cubre la última milla utilizando documentos ad hoc para tareas principalmente de preguntas y respuestas, integrándose con otras herramientas de búsqueda semántica como QDrant.  

El enfoque que utilizan para ello es bastante interesante: modelos LLM pre-entrenados que sacan a relucir el razonamiento y el conocimiento del dominio que se extrae de la búsqueda semántica a partir de un conjunto de documentos que puedes proporcionar para crear el producto de preguntas y respuestas. Están viviendo un crecimiento debido al gran escenario de explosión de los modelos lingüísticos. Además, su compromiso con el Open Source es bastante tangible con su HayStack de código abierto.  

La misión de Deepset.ai es reducir el tiempo de lanzamiento al mercado para acelerar la creación de productos basados en PNL

Dimitry dio una buena charla y exploró este escenario de preguntas y respuestas con una Demo que mostraba un escenario antes/después de la quiebra del Banco de Silicon Valley. Tuvimos la oportunidad de lanzarnos juntos y compartir algunas reflexiones sobre el papel de los colaboradores en el espacio del código abierto y los actores del ecosistema.  

→ CI/CD de nueva generación con Gitops y entrega progresiva  

Vivimos una charla perspicaz, cálida y entretenida a la vez que didáctica con Kevin, explorando GitOps con RedHat. Para nosotros, una de las mejores herramientas presentadas fue OpenShift Pipelines, un sistema de CI/CD sin servidor que ejecuta pipelines con todas las dependencias necesarias en contenedores aislados para automatizar despliegues en múltiples plataformas abstrayendo los detalles de implementación subyacentes, lo que me recordó al esquema de pipelines que utilizamos en Machine Learning dentro de las prácticas de MLops.  Los asistentes a la charla estaban jugando a un juego de carreras juntos divididos en 2 equipos, y más tarde Kevin desplegó una nueva característica en Openshift ¡para que pudiéramos jugar al juego con una mecánica transformada! Nos guio hacia el código y los archivos de configuración .yaml.  

Fig 2. GitOps utiliza repositorios git como única fuente de información para ofrecer infraestructura como código. El código enviado se comprueba en el proceso de CI, mientras que el proceso de CD comprueba y aplica los requisitos para aspectos como la seguridad, la infraestructura como código o cualquier otro límite establecido para el marco de la aplicación.  Más información sobre cómo ve Red Hat las GitOps aquí 

También exploramos juntos los entresijos de la Entrega Progresiva, que implica un proceso de lanzamiento incremental en tiempo y/o porcentaje que permite a los desarrolladores medir lo bien que va un lanzamiento a través de diferentes métricas. Kevin expuso las razones por las que esto realmente podría valer la pena: desde el despliegue y la liberación a la producción más rápida a la disminución del tiempo de inactividad y también la limitación de algunas "tragedias", además de menos burlas o la creación de servicios "falsos" poco fiables.  

En un escenario no progresivo, que podría acercarse a las versiones con un esquema de botón verde-azul en el que nos enfrentamos a un escenario de todo o nada (A), y lo que hacemos cuando las cosas no salen como esperábamos es tener un retroceso rápido. En el escenario progresivo, un pequeño porcentaje puede estar expuesto a la liberación, y podemos aumentar en base a decisiones basadas en datos, lo que llamamos las liberaciones(B) Canarias. Aquí se abren algunos enfoques diferentes con este modelo mental: podemos hacer tráfico espejo, en el que sin que se utilice la nueva versión, podemos derivar tráfico para medir el rendimiento. También podemos utilizar el enfoque Dark Canary, en el que sub-seleccionamos un conjunto de usuarios en función de algunos criterios (usuarios nuevos, o pesados) y probamos cómo va el lanzamiento. Otro enfoque progresivo consiste en orientarse por banderas de características con respecto a una condición determinada.  

Fig3  Esquemas procedentes de las diapositivas de Kevin Dubois. La figura A explica el despliegue Blue Green, y la figura B explora Canary Releases con sus diferentes variantes.  

Cuando pensamos en cómo podríamos aplicar esto en Machine Learning en un escenario de producción, podríamos pensar en lanzar un modelo recién entrenado basado en nuevos datos, y cómo podríamos utilizar Progressive Delivery para medir cosas más allá del rendimiento de la inferencia, como la deriva de los datos o la deriva del modelo sin poner en riesgo o reducir el posible impacto negativo de las decisiones derivadas. 

Compartir algo de tiempo con Kevin más allá de la charla fue estupendo y tuvimos la oportunidad de hacerle algunas preguntas sobre la mentalidad sostenible de los colaboradores en el espacio del código abierto y hablar también de DevRelism. Me alegro de que encontremos puntos en común en una lectura fantástica como esta.  

El Señor de las Palabras: El regreso de los experimentos con DVC 

Fig4 Los Transformers Arquitectura a varios niveles. Primero visto como una caja negra, con sus principales submódulos, y los mecanismos de autoatención.  (Autora Gema Parreño) 

La charla sobre El Señor de las Palabras tenía como objetivo principal explicar la arquitectura de los Transformadores de la Red Neuronal dentro del contexto de la traducción y compartir la exploración Open-Source con DVC Extension para VSCode, con algo de narrativa basada en El Señor de los Anillos. 

Con su innovador mecanismo de atención dentro de su arquitectura, los Transformadores han surgido como un avance crítico en este campo. Desde el atención es todo lo que necesitas hasta nuestros días, esta arquitectura ha envejecido bien y, junto con la explosión de datos y los avances del hardware, nos ha proporcionado avances que han superado el estado del arte en términos de velocidad y precisión en varias tareas. 

De forma directa, el mecanismo de Atención podría verse como una transformación dependiente de los datos de una secuencia con una operación de producto de escala-punto que nos permite ver y procesar el contexto en una secuencia de forma innovadora. En el contexto de la Traducción Automática Neuronal, la derivada produce lo que llamamos cabezas de atención, que mapean con una puntuación la relación entre los elementos de las dos secuencias. Con la atención multi-cabezal, escalamos la atención y repetimos esa operación muchas veces encontrando esas relaciones entre las frases. La autoatención va un paso más allá y mapea la relación entre los elementos de una única secuencia, encontrando nuevas relaciones, dependientes del contexto, dentro de esa secuencia.  Con estos tres conceptos, bastante conceptuales, podemos entender mejor la diferencia entre Transformadores y otras arquitecturas como el enfoque de los modelos seq-to-seq. 

modelo seq to seq

Fig5 La autoatención permite que el modelo de aprendizaje automático comprenda que una misma palabra puede significar cosas distintas en función de su contexto. Aquí, la palabra "correcto" se refiere tanto a la corrección como a la dirección, dependiendo de su contexto.   

El moonshot del proyecto tiene como principal objetivo explorar si existe una arquitectura de Transformadores entrenada con sus correspondientes parámetros que traduzca razonablemente bien varios idiomas. Para ello, exploramos DVC Open Source VS Code que básicamente transforma el IDE en una plataforma de experimentación de aprendizaje automático. 

DVC le permite estructurar agnósticamente su código y lanzar experimentos sin cambios menores: además, puede realizar un seguimiento de los experimentos con git, lo que le permite persistir experimentos o crear ramas a partir de ellos. La interfaz de usuario ofrece una tabla y secciones de gráficos que realizan un seguimiento y nos permite seleccionar los mejores experimentos y persistir en ellos y lanzar otros viendo el entrenamiento en vivo desde allí.  Para que esto funcione, necesitamos definir un pipeline con un archivo dvc.yaml que encapsule las diferentes etapas y un archivo parmas.yaml que nos permita lanzar diferentes experimentos, separando aquí los principios de definición de instanciación.  

Durante el desarrollo de la charla tuvimos la oportunidad de aportar comentarios sobre la experiencia de incorporación, encontrar un error e indexar un obstáculo, ¡lo cual fue genial! Más información sobre el proyecto aquí.  

A partir de la charla surgieron muchas conversaciones con los participantes y otros ponentes sobre el escenario de rápido crecimiento del Aprendizaje Automático en Abierto, incluyendo principios y modelos mentales explorados en algunas lecturas. 

La conferencia estuvo muy bien organizada y se aprendió mucho. Muchas felicidades a todo el equipo, y ojalá podamos vernos en otra ocasión.