CONCUR: Benchmarking LLMs for Concurrent Code Generation

Este trabajo presenta CONCUR, un nuevo benchmark diseñado para evaluar la capacidad de los Modelos de Lenguaje Grandes (LLMs) para generar código concurrente, abordando la falta de herramientas existentes que consideren la complejidad y los errores específicos de la concurrencia mediante un conjunto de 115 problemas derivados de un libro de texto estándar.

Jue Huang, Tarek Mahmud, Corina Pasareanu, Guowei Yang

Publicado 2026-03-05
📖 4 min de lectura☕ Lectura para el café

Each language version is independently generated for its own context, not a direct translation.

Imagina que los Modelos de Lenguaje Grandes (LLMs), como los que usan para escribir correos o generar código, son como chefs de cocina muy talentosos. Han leído millones de recetas (código) y pueden cocinar platos deliciosos (programas) muy rápido.

Hasta ahora, los expertos han estado probando a estos chefs con recetas simples: hacer una tostada, hervir agua o freír un huevo. Estas recetas son secuenciales: haces un paso, luego otro, y listo. No hay mucho que pueda salir mal.

Pero en el mundo real de la informática, a veces necesitamos cocinar múltiples platos a la vez en la misma cocina. Esto es lo que se llama código concurrente. Imagina que tienes que preparar una cena donde tres cocineros (hilos o threads) deben trabajar juntos: uno corta verduras, otro saltea carne y otro hornea pan. Si no se coordinan perfectamente, pueden chocar, quemar la comida o quedarse esperando eternamente que el otro termine.

Aquí es donde entra el problema: nadie había puesto a prueba a estos chefs en una cocina caótica y llena de gente.

¿Qué es CONCUR?

Los autores de este paper crearon CONCUR, que es como un examen de "caos controlado" para estos chefs de IA.

  1. El Reto (El Dataset): En lugar de pedirles que hagan una sola tostada, les dieron 115 problemas complejos. Algunos son clásicos (como "evitar que dos personas intenten usar el mismo baño al mismo tiempo" o "asegurar que nadie se quede sin comida en una fila").
  2. Los Mutantes: Para que los chefs no se aprendan las respuestas de memoria, tomaron esos 43 problemas originales y crearon 72 variaciones locas (como cambiar "baño" por "ascensor" o "comida" por "coche"). Así, el examen prueba si realmente entienden la lógica o si solo están copiando.
  3. El Juez (La Evaluación): Aquí está la parte genial. Normalmente, para ver si un código funciona, lo ejecutas una vez. Pero en la cocina concurrente, si ejecutas el código una vez, puede que tengas suerte y todo salga bien. Pero si lo ejecutas 1,000 veces, quizás en la 999ª vez dos cocineros chocan.
    • CONCUR no solo ejecuta el código una vez. Usa una herramienta mágica llamada Model Checking (como un simulador de realidad virtual). Este simulador prueba todas las formas posibles en que los cocineros podrían moverse y chocar. Si el código falla en cualquier escenario posible, el simulador lo detecta y dice: "¡Fallo!".

¿Qué descubrieron?

Pusieron a prueba a 23 chefs famosos (modelos de IA como GPT-4, Claude, Llama, etc.) en este examen de cocina caótica.

  • El resultado es preocupante: Aunque muchos chefs podían escribir código que parecía correcto y se compilaba (se podía abrir en el ordenador), la mayoría fallaba estrepitosamente cuando el simulador probaba todas las combinaciones posibles.
    • Muchos creaban bloqueos (deadlocks): Imagina que el cocinero A espera al B, y el B espera al A. Se quedan parados para siempre. La IA a menudo olvida cómo desbloquear esta situación.
    • Muchos creaban carreras (race conditions): Dos cocineros intentan poner el último ingrediente en el mismo plato al mismo tiempo, arruinándolo.
    • El truco más curioso: Muchos chefs escribían código que parecía concurrente (usaban palabras técnicas de cocina múltiple), pero en realidad, solo usaban a un solo cocinero. Hacían todo el trabajo en una sola línea de tiempo. El código era "seguro" pero no cumplía la regla de "trabajar en equipo".

La lección sobre las métricas (CodeBLEU)

Antes, para ver si un código era bueno, se usaba una regla llamada CodeBLEU. Básicamente, comparaba si el código de la IA se parecía mucho al código de un humano experto (como comparar si dos recetas tienen las mismas palabras).

El paper demuestra que CodeBLEU es una trampa para el código concurrente.

  • Analogía: Imagina que dos cocineros escriben recetas. Una receta es perfecta y coordina a 10 personas. La otra receta es un desastre donde las personas chocan, pero usa las mismas palabras técnicas y la misma estructura. CodeBLEU diría que ambas recetas son "iguales" y buenas. Pero en la realidad, la segunda cocina se incendiaría.
  • Conclusión: No puedes medir la seguridad de un código concurrente solo mirando si las palabras coinciden. Tienes que ejecutarlo y ver si explota en todas las situaciones posibles.

En resumen

Este paper nos dice: "¡Ojo! Las IAs son geniales escribiendo código simple, pero cuando se trata de coordinar múltiples tareas a la vez, suelen meter la pata de formas muy sutiles y peligrosas."

CONCUR es la primera herramienta que nos permite ver realmente si estas IAs son capaces de dirigir una orquesta sin que los músicos choquen entre sí, en lugar de solo saber si tocan la nota correcta en un solo instrumento. Y por ahora, la mayoría de las IAs aún necesitan mucha ayuda para no crear el caos en la cocina.