01 ¿Qué es Genie? ¿Qué puede hacer?
Similar a Devin, Genie también puede completar de forma autónoma diversas tareas de codificación bajo la guía de ingenieros humanos, incluyendo corrección de errores, construcción de funcionalidades, refactorización de código y validación de código mediante pruebas exhaustivas.
Además de funcionar de forma autónoma, Genie también puede colaborar con los usuarios.
Actualmente Genie se encuentra en fase de prueba beta cerrada, y se puede solicitar una prueba registrándose en el sitio web oficial.
Cosine afirma que Genie puede simular el proceso cognitivo de los ingenieros humanos.
Pullen explica en una publicación de blog: "Mi idea era simple: hacer que observe cómo los ingenieros humanos completan el trabajo e imite ese proceso".
El código generado por Genie se almacena en el repositorio GitHub del usuario, lo que significa que Cosine no conserva copias y no hay riesgos de seguridad asociados.
Además, la plataforma de software de Cosine ya está integrada con Slack y las notificaciones del sistema, por lo que puede utilizar las notificaciones del sistema para alertar a los usuarios, hacer preguntas o marcar problemas, al igual que un colega humano.
"Genie también puede hacer preguntas aclaratorias a los usuarios y responder a comentarios/opiniones sobre las Pull Requests que genera".
Pullen afirma: "Estamos tratando de hacer que Genie se comporte como un colega, por lo que tiene sentido que el modelo utilice los mismos canales que un colega".
Colaboración con OpenAI, utilizando el último GPT-4o
A diferencia de muchos modelos que dependen de modelos base con algunas herramientas adicionales, Genie se desarrolló a través de un proceso propietario que incluye entrenamiento y ajuste fino de modelos de OpenAI.
Cuando Genie comenzó a desarrollarse, solo podía ajustarse en modelos con ventanas de contexto relativamente pequeñas, en el rango de 16-32k tokens.
En las primeras exploraciones, el equipo descubrió que incluso con conjuntos de datos de más de 100 millones de tokens, además de los beneficios del diseño arquitectónico y varios métodos de compresión/fragmentación, todavía estaban limitados por la cantidad de información que el modelo podía expresar en un momento dado. La única solución era utilizar modelos con ventanas de contexto más grandes.
Afortunadamente, poco después obtuvieron acceso a los modelos de contexto largo de OpenAI, lo que supuso un avance en las capacidades de Genie.
Pullen reveló a VentureBeat: "Genie (actualmente) es una variante no general de GPT-4o, OpenAI nos permitió acceder y utilizar sus modelos para entrenamiento como parte de un programa experimental".
"El modelo funcionó bien, y como resultado compartimos nuestros conocimientos con el equipo de ajuste fino de OpenAI y los líderes de ingeniería. Esto fue un verdadero punto de inflexión para nosotros, ya que los convenció de invertir recursos y atención en nuestra nueva tecnología".
Aunque Cosine no especificó el modelo exacto, OpenAI acaba de anunciar la disponibilidad limitada del modelo de contexto largo GPT-4o, con una longitud de salida de hasta 64k tokens, 16 veces más que los 4k iniciales.
Los datos de entrenamiento son clave
Pullen escribió en el informe técnico que en las ejecuciones de entrenamiento recientes, Genie fue entrenado con miles de millones de tokens de datos, cuya combinación fue elegida para que el modelo fuera lo más competente posible en los lenguajes que más interesan a los usuarios actuales.
El informe técnico de Genie enumera 15 lenguajes incluidos en los datos de entrenamiento, cubriendo lenguajes populares como Java, JS, C, C++, C#, Rust, Python, así como Scala, Kotlin, Swift, PHP y otros de uso común.
De estos, JavaScript, Python, TypeScript y TSX son los lenguajes con mayor representación en el conjunto de datos, mientras que el resto representa el 3% cada uno.
La publicación del blog de Cosine indica que el equipo pasó casi un año recopilando el conjunto de datos, que incluye una gran cantidad de actividades de desarrollo de software de ingenieros reales.
Obtener y utilizar eficazmente estos datos fue extremadamente difícil, ya que esencialmente estos datos no existían.
Su pipeline de datos comenzó rastreando las trayectorias de desarrollo de los ingenieros de software, recopilando datos de pull requests, commits e issues de repositorios OSS (con licencia MIT).
Luego ejecutaron estos datos a través del pipeline, exportando el proceso de razonamiento de manera forense para reconstruir cómo los humanos llegaron a sus conclusiones finales.
Este conjunto de datos propietario fue la base para el entrenamiento de la primera versión del modelo, y el resto del trabajo se completó mediante autojuego y automejora.
El ciclo de autonomía de Genie consta de cuatro procesos principales: planificación, recuperación, escritura de código y ejecución de código. Estos en sí mismos no son novedosos, pero se han mejorado significativamente ya que Genie está entrenado para ejecutar tareas como un humano.
"El impacto del etiquetado de datos no puede subestimarse, obtener datos de alta calidad de ingenieros de software competentes es muy difícil, pero el resultado vale la pena porque nos da una visión de las formas de pensar de los desarrolladores para resolver problemas que no son fácilmente observables".
Este conjunto de datos no solo refleja un flujo de información perfecto y un descubrimiento progresivo de conocimientos, sino que también captura el proceso de toma de decisiones paso a paso de los ingenieros humanos.
Pullen afirma: "Al usar realmente este conjunto de datos para entrenar nuestros modelos, en lugar de simplemente indicar modelos base (que es lo que otros están haciendo), descubrimos que ya no estábamos generando código aleatoriamente, sino abordando problemas como lo haría un humano".
Resultados de la evaluación comparativa
Durante el proceso de desarrollo del modelo, el equipo utilizó principalmente dos puntos de referencia para la evaluación: SWE-Bench y HumanEval.
El primero cubre problemas más completos, incluyendo la descomposición de problemas, la búsqueda de código relevante, la clasificación del código y la implementación de soluciones viables; el segundo se centra más en la escritura de código, sin contenido de recuperación y con menos énfasis en la comprensión del problema.
Sin embargo, el blog oficial solo reveló las puntuaciones de SWE-Bench, donde Genie obtuvo un 30.08%, y un 50.67% en SWE-Lite.
El rendimiento de Genie en SWE-Bench fue particularmente destacado: es la puntuación más alta hasta la fecha, con un aumento de más del 10% respecto al segundo lugar de 19.27%.
Además, el equipo probó por separado la capacidad de recuperación de información del modelo, especialmente la capacidad de recuperar las partes correctas de los archivos de código necesarios.
Esta es una de las componentes centrales de un ingeniero de IA: si el modelo no puede encontrar de manera confiable y competente el código correcto para editar, entonces la capacidad de editar código no puede aprovecharse plenamente.
Asumiendo que el modelo siempre puede encontrar el código correcto, se puede medir simplemente la capacidad de recuperación observando cuántas líneas de código buscó el modelo para completar la tarea y cuántas líneas de código encontró realmente.
En las pruebas, Genie recuperó con éxito 91,475 líneas de código necesarias de 142,338, obteniendo una puntuación del 64.27%. Claramente hay mucho margen de mejora aquí, y la capacidad de recuperación es un aspecto menos atendido en comparación con la capacidad de descomposición de problemas.
02 Respaldado por YC, liderado por un graduado chino de Oxford
Cosine se fundó a través de la famosa aceleradora de startups Y Combinator de Silicon Valley.
La empresa es un laboratorio de razonamiento humano centrado en investigar y documentar cómo los humanos realizan tareas, con el objetivo de enseñar a los modelos de IA a imitar, sobresalir y ampliar estas tareas.
En 2022, Alistair Pullen, Sam Stenner y Yang Li cofundaron Cosine, posicionándola como un laboratorio de razonamiento humano.
Esperan comenzar en el campo de la ingeniería de software, investigando y documentando cómo los humanos realizan tareas, para así enseñar a la IA a imitar, sobresalir y ampliar estas tareas, impulsando el desarrollo de la inteligencia.
Cosine ya ha