Spaces:
Paused
Paused
| # Training (GRPO) | |
| This environment’s training signal is the **same composite reward** as evaluation: DuckDB execution (speedup + correctness), issue keywords, and light structure checks. There is no separate “training reward” that could diverge from deployment. | |
| ## Scripts | |
| | Entry | Purpose | | |
| |-------|---------| | |
| | [`train.py`](../train.py) | Custom GRPO-style loop: sample task → generate a **group** of completions → score each with `env.step` / `grade` → advantage normalize → policy update | | |
| | [`train.py`](../train.py) `--use-trl` | Optional path using Hugging Face **TRL** `GRPOTrainer` (requires `trl`, proper KL handling) | | |
| | [Kaggle notebook](https://www.kaggle.com/code/officialabhinavsingh/train-kaggle) | Full 100-episode run with plots (linked from README) | | |
| ## Default hyperparameters (`TrainConfig` in `train.py`) | |
| | Field | Default | Notes | | |
| |-------|---------|-------| | |
| | `model_name` | `Qwen/Qwen2.5-0.5B-Instruct` | Small model for free-tier GPUs | | |
| | `num_episodes` | 200 | Full runs; reduce for smoke tests | | |
| | `group_size` | 4 | GRPO group size \(G\) | | |
| | `max_new_tokens` | 1024 | JSON action payload | | |
| | `temperature` | 0.8 | Sampling during rollout | | |
| | `learning_rate` | 1e-5 | AdamW | | |
| | `output_dir` | `./checkpoints` | Model + `training_history.json` + optional `training_curves.png` | | |
| Override by editing `TrainConfig` in [`train.py`](../train.py) or extending the script (no CLI flags on the simple trainer today). | |
| ## Hardware | |
| - **CUDA**: Recommended; `device_map="auto"` when available. | |
| - **CPU**: Supported but slow; DuckDB warm-up + many forward passes dominate. | |
| ## Reproducibility | |
| - **Tasks**: Fixed set in [`tasks.py`](../tasks.py); each episode samples uniformly unless you change `train.py`. | |
| - **Randomness**: `random.choice` for task id; `model.generate` uses sampling — set seeds in PyTorch / CUDA / NumPy at the top of `train.py` if you need bitwise reproducibility for a paper run. | |
| ## Published artifact | |
| Fine-tuned weights referenced in the README: [laterabhi/grpo-sql-optimizer](https://huggingface.co/laterabhi/grpo-sql-optimizer). | |
| ## Quick sanity check (no weight updates) | |
| ```bash | |
| python training/eval_before_after.py --save-dir results | |
| ``` | |
| Shows how much reward comes from **actually running** optimized SQL vs analysis-only (see [results.md](results.md)). | |