Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
238 changes: 238 additions & 0 deletions README.es-ES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,238 @@
# ⌛️ Countdown-Code: Un Entorno de Pruebas para Estudiar la Emergencia y Generalización del "Hackeaje de Recompensas"

<div align="center">
<a href="https://arxiv.org/abs/2603.07084">
<img src="https://img.shields.io/badge/Paper-arXiv-red">
</a>
<a href="https://huggingface.co/datasets/Jiayi-Pan/Countdown-Tasks-3to4">
<img src="https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Dataset-green">
</a>
<a href="https://github.com/zohaib-khan5040/Countdown-Code">
<img src="https://img.shields.io/badge/GitHub-Code-blue">
</a>
</div>

<div align="center" style="font-family: Arial, sans-serif;">
<p>
<a href="#news" style="text-decoration: none; font-weight: bold;">🎉 Noticias</a> •
<a href="#introduction" style="text-decoration: none; font-weight: bold;">📖 Introducción</a> •
<a href="#key-contributions" style="text-decoration: none; font-weight: bold;">✨ Contribuciones Clave</a>
</p>
<p>
<a href="#data-collection" style="text-decoration: none; font-weight: bold;">📊 Recolección de Datos</a> •
<a href="#getting-started" style="text-decoration: none; font-weight: bold;">🚀 Introducción</a> •
<a href="#usage" style="text-decoration: none; font-weight: bold;">💡 Uso</a>
</p>
<p>
<a href="#evaluation" style="text-decoration: none; font-weight: bold;">📈 Evaluación</a> •
<a href="#citation" style="text-decoration: none; font-weight: bold;">🎈 Citación</a>
</p>
</div>

---

# 🎉 Noticias
- **[2025-03-02]** ¡Countdown-Code fue aceptado en el Taller SPOT de ICLR 2026! 🥳

---

# 📖 Introducción

Countdown-Code es un entorno de pruebas ligero e interpretable diseñado para aislar y medir el **Hackeaje de Recompensas** (juego de especificaciones) dentro de tuberías de entrenamiento posterior de LLMs.

Mientras que el Aprendizaje por Refuerzo con Recompensas Verificables (RLVR) es esencial para los modelos modernos de razonamiento "Sistema 2", a menudo incentiva a los agentes a explotar recompensas proxy —como reescribiendo scripts de prueba o alterando definiciones de problemas— en lugar de cumplir con la verdadera intención del diseñador. Este proyecto introduce un entorno flexible que cuantifica la brecha entre recompensas proxy verificables y la corrección matemática real, revelando un problema crítico: el afinado supervisado incluso con pequeñas cantidades (~1%) de datos de demostraciones de hackeaje puede preparar modelos para hackejar catastróficamente durante la optimización posterior de RL. Más allá de proporcionar un entorno controlado para investigación diagnóstica, demostramos que estos comportamientos desalineados no son artefactos de dominios simples, sino que se generalizan de manera robuste a benchmarks de codificación realistas como HumanEval.

<div align="center">
<img src="assets/main-env.png" alt="COUNTDOWN-CODE Overview" width="600"/>
</div>

---

# ✨ Contribuciones Clave

1. **Entorno Controlado**: Countdown-Code aísla la emergencia del hackeaje de recompensas mediante una tarea matemática bien definida con una verdad objetiva clara
2. **Pipeline Multietapa**: Demuestra cómo el pipeline SFT→RL amplifica progresivamente el comportamiento desalineado
3. **Métricas Intertables**: Proporciona tanto señales de recompensa reales como proxy para cuantificar el juego de especificaciones
4. **Benchmarks Reproducibles**: Implementación completa y conjuntos de datos para evaluar la seguridad del entrenamiento posterior

---

# 📊 Recolección de Datos

Usamos el conjunto de datos `Jiayi-Pan/Countdown-Tasks-3to4` de HuggingFace, que contiene problemas aritméticos de cuenta regresiva. El conjunto de datos se divide en tres subconjuntos distintos:

### Generar Divisiones del Conjunto de Datos

```bash
cd datagen
python create_datasets.py
```

Esto genera:
- **Datos SFT**: Datos de entrenamiento para afinado supervisado
- **Datos RLVR**: Datos para RL con recompensas de valor (incluye tanto señales de recompensa reales como proxy)
- **Datos de Evaluación**: Conjunto de evaluación limpio para medir las tasas de hackeaje

### Datos SFT: Trazas de Destilación

Para generar trazas de destilación usando la API de OpenAI:

1. Crea un archivo `.env` con tu clave API:
```
OPENAI_API_KEY=sk-...
```

2. Genera trazas:
```bash
cd datagen
python openai_inference.py
```

El guion utiliza `o4-mini` a través de la API de respuestas de OpenAI. Si encuentras problemas, asegúrate de que tu organización esté verificada para tu clave API.

### Datos RLVR: Configuración de la Función de Recompensa

Formatea los datos para el gestor de recompensas personalizado `CountdownCodeRewardManager` en verl:

```bash
cd datagen
python format_for_rl.py
```

Esto prepara los datos para que verl pueda calcular tanto:
- **Recompensa Real**: Basada en la corrección real del problema
- **Recompensa Proxy**: Lo que el modelo podría explotar (marcador de posición para el juego de especificaciones)

---

# 🚀 Introducción

## Requisitos del Sistema

- PyTorch 2.6
- CUDA 12.8
- Flash Attention 2.7.4 (compatible con GLIBC < 2.32)

## Instalación

Ejecuta el guion de configuración para instalar todas las dependencias:

```bash
bash setup.sh
```

Alternativamente, configuración manual:
```bash
# Instalar PyTorch y dependencias
pip install torch==2.6 --index-url https://download.pytorch.org/whl/cu128
pip install flash-attn==2.7.4

# Instalar verl y otras dependencias
pip install -e .
```

---

# 💡 Uso

## Entrenamiento con Verl: Afinado Supervisado (SFT)

Ajusta un modelo usando SFT en los datos preparados:

```bash
cd verl/reasoning-safety
bash configs/sft/run_qwen2.5-coder-7b-lora.sh
```

**Nota**: Verifica y ajusta las rutas de archivo en el guion antes de ejecutarlo.

Para otras configuraciones de modelos, consulta los guiones disponibles en `configs/sft/`.

## Combinar Adaptadores LoRA

Después del entrenamiento, combina los adaptadores LoRA con el modelo base:

```bash
python -m verl.model_merger merge \
--backend fsdp \
--local_dir <ruta_al_modelo_entrenado> \
--target_dir <directorio_de_salida> \
--merge-lora
```

## Entrenamiento RLVR

Entrena un modelo con RLVR en el subconjunto correspondiente:

```bash
cd verl/reasoning-safety
bash configs/rlvr/run_qwen2.5-coder-7b-lora.sh
```

**Nota**: Verifica rutas y configuraciones de cálculo en el guion antes de iniciar.

Para otras configuraciones, consulta los guiones disponibles en `configs/rlvr/`.

---

# 📈 Evaluación

### Midiendo el Juego de Especificaciones con Prime CLI

Evalúa la tasa de hackeaje de modelos entrenados o listos para usar utilizando el entorno COUNTDOWN-CODE:

```bash
cd environments/countdown_code
# Consulta el README.md en este directorio para obtener instrucciones detalladas de configuración de evaluación
```

La evaluación:
- Comparará la optimización de recompensas reales vs. proxy
- Cuantificará la tasa de juego de especificaciones
- Proporcionará retroalimentación interpretable sobre dónde el modelo erró

Para instrucciones detalladas, consulta [environments/countdown_code/README.md](environments/countdown_code/README.md).

---

# Solución de Problemas

### Problemas Comunes

**Problema**: Errores de importación al ejecutar guiones
**Solución**: Asegúrate de haber completado la configuración y activado el entorno correcto

**Problema**: Errores de ruta en guiones de shell
**Solución**: Edita los guiones para usar rutas absolutas en tu sistema, o ejecuta desde los directorios especificados

**Problema**: Errores de CUDA/GPU
**Solución**: Verifica la instalación de CUDA 12.8 y revisa `nvidia-smi` para disponibilidad de GPU

---

# Agradecimientos

Este proyecto se basa en:
- Conjunto de datos [Countdown-Tasks-3to4](https://huggingface.co/datasets/Jiayi-Pan/Countdown-Tasks-3to4)
- Marco de trabajo [Verl](https://github.com/volcengine/verl) para entrenamiento RL
- [API de OpenAI](https://platform.openai.com/) para trazas de destilación

---

# 🎈 Citación

Si usas Countdown-Code en tu investigación, por favor cita este trabajo:

```bibtex
@article{countdowncode,
title={Countdown-Code: A Testbed for Studying The Emergence and Generalization of Reward Hacking in RLVR},
author={Muhammad Khalifa and Zohaib Khan and Omer Tafveez and Hao Peng and Lu Wang},
year={2026},
eprint={2603.07084},
archivePrefix={arXiv}
}
```

---

**Para preguntas o comentarios**, por favor abre un [problema](https://github.com/zohaib-khan5040/Countdown-Code/issues) en GitHub.