Facundo Chavez

Proyectos whatMLmodel

¿Qué es whatMLmodel?

Esta es una aplicación impulsada por IA que permite obtener recomendaciones sobre modelos de machine learning a partir de la breve descripción de un dataset. El proyecto, que estoy desarrollando junto a colaboradores, se encuentra aún en su versión beta y es de código abierto. Si eres desarrollador o tienes conocimientos sobre machine learning, puedes sumarte y contribuir con tus ideas y experiencia.

whatMLmodel banner

¿Cómo surgió la idea?

Hace un tiempo, cuando las APIs de texto generativo eran una novedad, tuve una idea: ¿y si, en lugar de pedir un texto libre, pedía un JSON con un esquema definido? En otras palabras: usar la API no para sostener una conversación, sino para mover los hilos de una aplicación. Más adelante descubrí que eso ya existía, y que consistía simplemente en utilizar la API en “modo JSON”. Bastaba entonces con definir un buen esquema, diseñar un prompt adecuado y desarrollar una aplicación capaz de reaccionar a esa estructura.

Tiempo después, me adentré en el mundo del machine learning y me sorprendió la cantidad de criterios que había que tener en cuenta para elegir el modelo correcto y dar el tratamiento adecuado al conjunto de datos. Usé muchas veces ChatGPT para orientarme sobre qué modelo aplicar a qué problema, pero la línea del chat no era lo más práctico y tuve que hacer varios apuntes para asentar conocimientos y facilitar consultas rápidas.

Meses después, buscando inspiración para un nuevo proyecto, ambas ideas se fusionaron: se me ocurrió crear una plataforma que permitiera desarrollar criterios de selección de modelos de machine learning, con una interfaz accesible y alimentada dinámicamente por inteligencia artificial. Además, como en esos momentos estaba resolviendo problemas de procesamiento de datos para practicar, vi en esto la oportunidad de volcar mis casos resueltos en una base de conocimiento para que la IA hiciera sus recomendaciones.

Así funciona la app

El proceso es sencillo: el usuario comienza haciendo una breve descripción de su dataset y variable objetivo. Un ejemplo clásico sería: “Conociendo las características de las víctimas del Titanic (edad, sexo, ocupación, etc.), se busca predecir la probabilidad de supervivencia de una determinada persona.”

A partir de esa descripción, la aplicación genera una interpretación más detallada, que incluye el nombre de las features más importantes, el tamaño del dataset, etc. El usuario debe chequear esta información y corregirla antes de darle a Get models.

La IA genera así una serie de recomendaciones habiendo detectado el tipo de problema (regresión, clasificación o clustering) y sugiriendo adaptaciones a otros tipos si fuera posible. Por ejemplo, la probabilidad de supervivencia se puede determinar mediante una variable discreta (sí o no) y estaríamos hablando de un problema de clasificación, pero puede traducirse a uno de regresión si se define mediante una variable continua (un 70% de probabilidad de supervivencia).

El resultado es un análisis interactivo en el que el usuario puede explorar los modelos de machine learning más adecuados para su problema y ver cómo han rendido en datasets similares, pudiendo explorar el código utilizado en ellos. El objetivo es que la persona pueda aplicar su propio criterio para decidir qué modelo conviene utilizar, considerando opciones que tal vez no habría tenido en cuenta.

Desde un menú se puede volver a cualquier análisis realizado, marcarlos como favoritos y también editarlos. Aún no quise complicar el sistema con creación de cuentas, así que la aplicación utiliza la memoria del navegador para guardar los datos localmente.

Prompt engineering

La aplicación interactúa con la IA en dos ocasiones. En un primer momento, con la descripción inicial del usuario, la IA genera una interpretación más detallada. Este es el prompt que se utiliza en ese caso:

A continuación, el usuario corrige la información, y con ello se hace una segunda llamada a la IA, lo que da lugar a la recomendación de modelos con base en el siguiente prompt:

Adicionalmente, se probee de ejemplos (prototipos de respuestas) y la lista con los “similar datasets” que deben ser seleccionados. De esta manera, la IA tiene el contexto suficiente para devolver una respuesta efectiva. La misma es procesada por el backend, que reconoce las keys de los JSON para armar una consecusión de párrafos y tablas.

Features que se vienen

Tenemos en mente una serie de características que expanden la visión del proyecto y enriquecen tanto el aprendizaje como la colaboración:

  • Enciclopedia: Un componente dedicado a explorar las definiciones, fundamentos y contextos de aplicación de cada modelo, acompañado de explicaciones visuales y con el marco teórico detrás de las métricas de rendimiento.
  • Pipelines completos: Actualmente la aplicación incorpora pipelines de carácter ilustrativo, pensados para mostrar flujos de trabajo generales. El siguiente paso apunta a construir una biblioteca de tratamientos reales y casos aplicados, abierta a contribuciones de la comunidad y orientada al aprendizaje práctico.
  • Ramificación de pipelines: Poder visualizar estrategias para abordar un mismo problema desde múltiples perspectivas. Mediante un selector de enfoque, el usuario podrá recorrer alternativas basadas en regresión, clasificación o clustering, comparando caminos y resultados posibles.
  • Chat interactivo: Cada análisis contará con un espacio conversacional propio para continuar explorando el problema, profundizar hipótesis, interpretar resultados y discutir posibles estrategias de resolución.
  • Generación de código: La generación asistida de implementaciones permitirá traducir modelos sugeridos a código utilizable. Es una funcionalidad especialmente desafiante —por el riesgo de alucinaciones y la necesidad de criterio técnico para interpretar los resultados—, pero también una de las líneas con mayor potencial para transformar el proyecto en una herramienta práctica de trabajo y aprendizaje.
  • Comunidad colaborativa: Un entorno orientado al intercambio de datasets, experiencias y soluciones, donde los usuarios puedan colaborar, aprender entre sí y construir conocimiento aplicado alrededor de problemas reales.

Nuevamente: este es un proyecto open⁠–⁠source

Queremos que esta aplicación se convierta en la mejor plataforma para aprender sobre machine learging y explorar diversos modelos. Por eso, si te gustó la idea y eres developer o tienes conocimientos sobre aprendizaje automático, ¡estás más que invitado a participar!