Cadenza es una herramienta Python que cierra el loop entre Weights & Biases y agentes LLM autónomos. Importa históricos de experimentos en una base de datos evolutiva, permite que agentes lean el estado y propongan nuevos parámetros, y reimporta resultados en un ciclo continuo. Lanzada por MyLuca AI en 2026, ya se usa para optimización de modelos y experimentos químicos autónomos.
En 30 segundos
- Cadenza conecta Weights & Biases con agentes LLM para cerrar el loop de investigación autónoma (retrieve estado → agent decide → run → reimport).
- Usa conceptos de algoritmos evolutivos: genotypes (individuos), islands (subpoblaciones aisladas), elites (top performers) para optimización distribuida.
- Es lightweight: solo 2 dependencias externas (httpx, pydantic). CLI + SDK Python disponibles en GitHub.
- Implementa el autoresearch de Karpathy a escala: en lugar de editar train.py manualmente, un agente LLM sugiere parámetros, ve los resultados y itera.
- W&B Sweeps hace búsqueda de hiperparámetros; Cadenza añade el agente que interpreta resultados y propone nuevos experimentos automáticamente.
¿Qué es Cadenza? Definición y propósito
Cadenza es una herramienta CLI/SDK Python que integra Weights & Biases con agentes autónomos basados en LLM para crear loops cerrados de investigación automatizada. Lo que hace es importar históricos de experimentos en una “evolutionary database” estructurada, servir esa información a un agente LLM, permitirle decidir cuáles son los próximos parámetros a probar, ejecutar nuevos experimentos y reimportar los resultados. Ciclo cerrado, sin intervención humana entre iteraciones.
Desarrollada por MyLuca AI, la herramienta está disponible en GitHub bajo mylucaai/cadenza. El diseño es minimalista: solo depende de httpx (para requests HTTP) y pydantic (validación de datos). La idea es que un ingeniero o investigador pueda armar en 30 minutos un loop donde un agente LLM propone experimentos, los ejecuta y aprende de los resultados, sin touchear código entre iteraciones (bueno, casi).
¿De dónde sale la idea? Andrej Karpathy (ex-Tesla, ahora en OpenAI) escribió hace un tiempo sobre cómo hacía “autoresearch” editando train.py a mano para probar variantes. Lo hacía 100 veces por noche. Cadenza automatiza exactamente eso, pero con un agente LLM en el loop en lugar de un humano.
Cómo Cadenza cierra el loop entre tracking y ejecución
El flujo es así: tenés un histórico de runs en Weights & Biases (parámetros, métricas, timestamps). Cadenza los importa con el comando cadenza import (o por SDK). Eso los estructura en una base de datos evolutiva JSON-friendly, donde el agente LLM puede leerlos sin fricciones.
El agente —usando CrewAI, OpenAI Agents SDK, o lo que vos quieras— recibe una instrucción tipo: “Mirá todos los experimentos que corrimos. Los 5 mejores. ¿Cuál es el patrón? ¿Qué hipótesis tenés? ¿Qué dos sets de parámetros nuevos probés?”. El agente responde, vos tomás esa respuesta, lanzás los experimentos (sea en tu máquina, un grid, o lo que sea) y una vez que finalizan, reimportás los resultados con cadenza reimport.
Eso sí, el agente no ejecuta el código. Es el humano (o un orquestador tipo Airflow o GitHub Actions) quien lo hace. Lo que Cadenza resuelve es la parte de “cómo le paso información del histórico de una forma que el agente entienda sin boludear con parsing manual”.
Comandos clave de Cadenza:
cadenza genotype— Define un conjunto de parámetros. Es un individuo en términos de algoritmos evolutivos.cadenza islands— Agrupa experimentos en subpoblaciones aisladas. Útil si querés búsqueda distribuida en paralelo sin que todas las islas converjan al mismo punto.cadenza elites— Listá los top performers. El agente usa esto para identificar qué funcionó.cadenza sample— Muestreá la población. Si tenés 1000 runs, podés muestrear 50 representativos para que el LLM no explote tokens.
Genotypes, Islands y Elites: conceptos de optimización evolutiva
Si vos conocés algoritmos genéticos, esto va a sonar familiar. Si no, básicamente es que Cadenza toma conceptos de la naturaleza y los usa para hacer búsqueda de hiperparámetros sin volverte loco.
Genotypes: un individuo, un set de parámetros. Si estás tunneando un modelo de diffusion (como Flux), un genotype sería algo como “learning_rate=1e-4, batch_size=32, guidance_scale=7.5”. Cada run en W&B es un genotype que ya ejecutaste y del cual tenés datos. Cadenza los importa y los estrucura como genotypes.
Islands: imaginate que querés probar learning rates entre 1e-3 y 1e-5, pero en paralelo, sin que la búsqueda de una rama interfiera con la otra. Creás dos islands: una converge hacia 1e-4, otra hacia 1e-5. Cada una mantiene sus propios elites, sus mejores individuos. Eso evita convergencia prematura a un óptimo local. Es útil cuando tenés múltiples máquinas o múltiples agentes trabajando simultáneamente.
Elites: los mejores individuos encontrados hasta ahora en una isla. Si tenés 100 experimentos, los 5 con mejor accuracy son tus elites. El agente LLM los mira y dice: “ah, esos cinco tienen en común que usan batch_size > 64”. Eso es insight que un humano encontraría después de 20 tazas de café, un agente LLM lo saca en milisegundos.
Integración con Weights & Biases: paso a paso
Primero, necesitás credenciales de W&B. Si no tenés cuenta, create una en wandb.ai (gratuita para proyectos de investigación).
Paso 1: Configurar credenciales. En tu `.env` o variables de entorno: WANDB_API_KEY=tu_api_key_aqui WANDB_ENTITY=tu_usuario_o_team WANDB_PROJECT=nombre_del_proyecto
Paso 2: Importar runs. Si ya tenés histórico de experimentos en W&B: cadenza import –project mi_proyecto –entity mi_usuario Eso baja todos los runs (parámetros, métricas, timestamps) y los estructur en una base de datos JSON. Cadenza la guarda localmente en `.cadenza/database.json` (o donde le digas).
Paso 3: Consultar como agente. El agente LLM puede leer esa base de datos. El output está optimizado: cada genotype tiene un JSON limpio con `{id, params, metrics, timestamp}`. Nada de ruido, nada que el LLM tenga que parsear con expresiones regulares (que es un infierno).
Paso 4: El agente decide. Basado en qué vio, genera instrucciones para nuevos parámetros. Vos las ejecutás (submits a tu pipeline, lanzás un job, lo que sea).
Paso 5: Reimportar. Cuando los nuevos experimentos están listos: cadenza reimport –project mi_proyecto Cadenza actualiza su base de datos local y la próxima vez que el agente pide datos, ya ve los nuevos resultados.
Casos de uso: del autoresearch de Karpathy a la investigación química autónoma
1. Autoresearch de Karpathy escalado: Karpathy tuneaba train.py a mano, 100 veces por noche. Con Cadenza, en lugar de editar archivos, un agente LLM lee el histórico de runs y sugiere: “probá learning_rate=3e-4, warmup_steps=500, dropout=0.1”. Vos ejecutás, Cadenza reimporta, el agente ve nuevos datos y propone lo siguiente. En dos semanas, descubrís configuraciones que habrían tomado dos meses de guessing manual.
2. Experimentos químicos autónomos: Hay laboratorios (caso de uso real documentado en la investigación en arxiv) donde usan Cadenza para sugerir síntesis químicas. El agente LLM: “el compuesto X funcionó bien con reactivo A. ¿Y si probamos reactivo B?”. El robot ejecuta, se re-importan resultados, el agente ve si mejoró. Sin un humano en el loop todo el día.
3. Tuneado de modelos multimodales: Trainear Flux.1 o DALL-E internos con hiperparámetros custom. Usualmente probás 20-30 configuraciones a mano. Con Cadenza + agent: probás 200 en el tiempo que habrías tardado 20. Islands para paralelizar búsqueda en distintos equipos.
4. Optimización de prompts para agentes: No es tuning de parámetros numéricos, pero funciona igual. Un agente LLM analiza qué prompts generaron mejores respuestas (medidas por un quality gate o benchmark), sugiere variaciones, vos las ejecutás, Cadenza reimporta métricas, y así.
Errores comunes y cómo evitarlos
1. No inicializar wandb.init() en tus scripts de training: Si no ponés wandb.init(project="...", entity="...") al inicio de tu script, W&B no va a loguear nada y Cadenza va a importar una base de datos vacía. Parece obvio, pero es el error #1. Verificá que tus runs aparezcan en wandb.ai antes de intentar importar.
2. Logging excesivo o mal estructurado: Cadenza espera que cada run tenga un set limpio de parámetros y métricas. Si logueas 500 cosas por step (loss por batch, gradients, activations de cada neurona), Cadenza va a importar un JSON gigante que el agente LLM no podrá procesar sin explotar el context window. Registrá: parámetros iniciales, algunas métricas clave cada N steps, resultado final. Eso basta.
3. Fitness function mal diseñada o sin sentido: Cadenza identifica elites basado en una métrica (accuracy, loss, validación custom). Si elegís la métrica equivocada, el agente va a optimizar en la dirección incorrecta. No optimices solo por accuracy si lo que importa es speed + accuracy. Define una función que combine ambas.
4. Cascada de errores en el agente: Si el agente LLM genera parámetros inválidos (valores fuera de rango, tipos incorrectos), tus scripts van a fallar. Validá antes de ejecutar. Mejor: usa Pydantic en Cadenza para validar el output del agente contra un schema esperado. Si falla, rechaza y pídele que reintente.
5. Scope no definido: “Tunneá este modelo” es ambiguo. ¿Learning rate? ¿Arquitectura? ¿Batch size? ¿Todo? Define explícitamente qué parámetros el agente puede variar y cuáles no. Eso hace la búsqueda más rápida y los resultados más interpretables.
Herramientas complementarias: W&B Sweeps y agent frameworks
W&B Sweeps: Hace búsqueda automática de hiperparámetros (grid search, random, bayesian optimization). Es la alternativa “tradicional” a Cadenza. Con Sweeps, W&B decide qué parámetros probar basado en distribuciones que vos especificás. Cadenza va un paso adelante: un agente LLM los decide. Sweeps es más predecible; Cadenza es más creativa (y arriesgado si el agente alucinea).
CrewAI y OpenAI Agents SDK: Frameworks para armar equipos de agentes LLM con roles específicos. Si usás Cadenza con CrewAI, podés tener: “researcher” que analiza el histórico de runs, “engineer” que propone parámetros, “validator” que verifica que sean sensatos. Cada agente una tarea, dividís el problema.
Optuna: Otro framework de tuning de hiperparámetros, muy usado en MLOps. Optuna puede sugerir parámetros basado en historia de runs (como Sweeps en bayesian mode). Cadenza y Optuna pueden convivir: usá Optuna para la búsqueda numérica, Cadenza para interpretar resultados con un agente.
| Herramienta | Qué hace | Agent LLM | Curva de aprendizaje | Mejor para |
|---|---|---|---|---|
| W&B Sweeps | Búsqueda automática de hiperparámetros (grid, random, bayesian) | No | Baja | Tuning tradicional, modelos tabular/CV, cuando sabés qué optimizar |
| Cadenza | Loop cerrado con agente LLM que interpreta histórico y propone parámetros | Sí | Media-Alta | Autoresearch, experimentos complejos, cuando querés interpretabilidad y creatividad |
| Optuna | Sampler pythónico con soporte para pruning y callbacks | No | Media | Integración tight con código Python, experimentos distribuidos |
| Ray Tune | Framework de tuning distribuido para paralelizar múltiples trials | No | Media | Entrenamientos distribuidos a escala (10+ máquinas), HPO paralelo |
| CrewAI | Framework para equipos de agentes LLM con roles y tareas | Sí | Media | Orquestación de múltiples agentes, tareas complejas multi-paso |

Preguntas Frecuentes
¿Cadenza corre código o solo sugiere parámetros?
Solo sugiere. El agente LLM analiza el histórico de runs y propone parámetros nuevos. Vos ejecutás los experimentos (sea submitting a una cola, lanzando un job en la nube, lo que sea). Luego reimportás resultados a Cadenza. Es un loop semi-automatizado, no fully automatizado (aunque podrías armarlo así con un orquestador tipo Airflow).
¿Necesito W&B para usar Cadenza?
Sí, actualmente Cadenza está diseñado para W&B. Importa de W&B, reimporta a W&B. Aunque la base de datos local es JSON, la integración primaria es con W&B. Si querés integrar con otra herramienta (MLflow, Neptune, Wandb), tendrías que extender Cadenza (open source, así que podés).
¿Cuántos experimentos puedo importar sin que explote?
Técnicamente, miles. Pero hay un límite práctico en cuántos el agente LLM puede procesar sin explotar el context window. Si tenés 10.000 runs, el comando cadenza sample es tu amigo: muestrá 100 representativos y pasale esos al agente. El JSON generado queda manejable (< 50KB para 100 runs típicos).
¿Cómo evito que el agente LLM alucine parámetros inválidos?
Validación con Pydantic. Definís un schema de qué valores son válidos para cada parámetro (rangos, tipos, restricciones). Antes de ejecutar cualquier parámetro que el agente sugiera, validás contra ese schema. Si no pasa validación, rechazás y pedís que el agente reintente. Es el mismo pattern que usarías con cualquier LLM en producción.
¿Qué diferencia hay entre usar Cadenza y simplemente tunear a mano con W&B?
Velocidad e interpretabilidad. A mano: probás 20 configuraciones, mirás W&B, decidís cuál fue mejor, proponés nueva config, repetís. Con Cadenza: probás 20, el agente analiza el patrón en milisegundos y propone no una, sino tres configuraciones que tengan chance de mejorar. Además, el agente documenta por qué las propuso, dándote insight que muchas veces no tenías.
Conclusión
Cadenza es una herramienta que resuelve un problema específico y lo hace bien: integrar Weights & Biases con agentes LLM para cerrar el loop de investigación automatizada. No es un reemplazo para W&B Sweeps o Optuna (que siguen siendo excelentes), sino un complemento para casos donde querés que un agente analice el histórico, entienda patrones y sugiera nuevas direcciones de búsqueda.
El concepto no es nuevo —Karpathy llevaba años haciendo autoresearch a mano—, pero Cadenza lo democratiza. Si tenés un experimento que típicamente requeriría dos meses de tuning manual, con Cadenza + un agente LLM razonable podés hacerlo en dos semanas. Y el costo es bajo: la herramienta es lightweight, W&B Sweeps es gratis para investigación, y un agente LLM decente cuesta lo que una pizza por mes.
La pregunta no es “¿debo usar Cadenza?”. Es “¿cuánto vale para mi equipo reducir el tiempo de experimentación a un tercio?”. Si la respuesta es “bastante”, probá Cadenza. Tiene curva de aprendizaje moderada, documentación clara, y el código es abierto si necesitás customizar algo.
Fuentes
- Cadenza en GitHub — repositorio oficial de MyLuca AI con documentación, ejemplos y CLI
- Weights & Biases Agents — framework para agentes en el ecosistema W&B
- W&B Sweeps documentation — búsqueda de hiperparámetros con grid, random y bayesian
- Investigación en arxiv sobre agentes autónomos en experimentación — caso de uso de aplicaciones químicas
- Autoresearch de Karpathy — referencia original del patrón que Cadenza implementa
![Cadenza: Transforma tu Investigación IA 1 [P] Cadenza: Connect Wandb logs to agents easily for autonomous research. - ilustracion](https://blog.donweb.com/wp-content/uploads/2026/04/cadenza-agentes-autonomos-investigacion-hero.jpg)