Sostingut Lab: medir antes de entrenar
Sostingut Lab es nuestra herramienta interna para evaluar y entrenar modelos de IA. Con ella decidimos, con números, si a una empresa le basta un modelo abierto con sus documentos o si merece la pena entrenar uno para su tarea.
¿Tu negocio necesita un modelo como estos, o basta con una regla bien puesta? Lo vemos en el diagnóstico gratuito.
Pedir diagnósticoPor qué un laboratorio propio
Cuando una empresa pregunta si le conviene entrenar un modelo, la respuesta honesta casi siempre es «depende». Sostingut Lab existe para convertir ese «depende» en una medida: con qué modelo, con qué datos y con qué resultado.
Lo construimos para nosotros, y es la base de nuestro servicio de modelos locales: el método que usamos para decidir es el mismo que entregamos al cliente, con sus números.
El método, en siete pasos
Definimos la tarea y el criterio de éxito. Medimos una referencia: una regla sencilla o el sistema actual. Montamos un banco de preguntas con el origen de cada respuesta, validado por una persona.
Calibramos al juez: si un modelo puntúa las respuestas, antes comprobamos con una muestra a ciegas que coincide con una persona. Y comparamos opciones: modelos abiertos en local y comerciales, con y sin documentos.
Solo entrenamos si la comparativa muestra una diferencia que los documentos no cierran. Al final, un informe y una ficha técnica al estilo del Reglamento europeo de IA, con una nueva evaluación cada mes.
Sin una referencia medida no hay entrenamiento.
El primer caso: preguntas en catalán sobre normativa pública
Para probar el método sin datos de nadie, trabajamos con las ordenanzas y los reglamentos públicos de Tortosa, que cualquiera puede descargar: 75 documentos, 528 páginas y 1,5 millones de caracteres, guardados con su origen y su huella.
Las preguntas solo se pueden responder citando un pasaje concreto, y una de cada nueve no tiene respuesta en los documentos. Así medimos también si el modelo sabe decir «no lo sé».
La comparativa enfrenta modelos abiertos que funcionan en local, como Qwen y Salamandra, con un modelo comercial, cada uno con y sin búsqueda en los documentos. Gana quien acierta y sabe callar cuando no tiene la respuesta, no quien suena más convincente.
Quién juzga al juez
Puntuar cientos de respuestas a mano no escala, así que un modelo hace de juez. Pero un juez sin calibrar solo añade ruido con apariencia de rigor.
Por eso el juez nunca compite, y su acuerdo con una persona se mide con una muestra etiquetada dos veces a ciegas antes de fiarnos de sus notas.
Por dónde viajan los datos
Los datos públicos pueden pasar por cualquier modelo. Los internos, preferiblemente por modelos locales. Los de clientes o personales, solo por modelos locales o por proveedores con servidores en la UE y contrato de encargo.
Cada respuesta de referencia guarda su origen, quién la validó, cuándo y con qué confianza. Lo que redacta un modelo queda marcado como sintético y nunca entra en un conjunto de entrenamiento.
Cuándo entrenamos, y cómo
La escalera es siempre la misma: primero una regla, después la búsqueda en documentos, después un modelo de lenguaje y, solo si los números lo justifican, un modelo entrenado.
Para entrenar usamos QLoRA sobre modelos abiertos como Salamandra en una GPU propia, y una GPU alquilada para modelos más grandes cuando la comparativa muestra una diferencia que cerrar, siempre dentro de un tope de gasto. Para clasificar con pocos datos, SetFit; para datos tabulares, árboles de decisión potenciados.
Qué sale del laboratorio
Cada comparativa produce un informe que no se edita a mano: tasa de acierto con intervalos de confianza por bootstrap, contrastes pareados con la prueba de McNemar, latencia y coste de cada ejecución.
Con el informe va una ficha técnica con los datos usados, cómo se evaluó y dónde falla el modelo, pensada para el inventario de sistemas de IA del cliente.
Los informes dicen también lo que no se puede concluir: con pocas preguntas los intervalos son anchos, y lo decimos.
Tecnologías
- Python y FastAPI para la API del laboratorio
- PostgreSQL con pgvector
- React para el panel
- Ollama y llama.cpp para los modelos locales
- Unsloth para QLoRA
- Bootstrap y McNemar para la estadística