---
datasets:
- zwhe99/DeepMath-103K
base_model:
- Qwen/Qwen3-235B-A22B-Thinking-2507
---
# AutoDeco
Official Implementation of "[The End of Manual Decoding: Towards Truly End-to-End Language Models](https://arxiv.org/abs/2510.26697)"
**AutoDeco** is a framework that adds token-level adaptive decoding parameter prediction capabilities to Large Language Models (LLMs). By adding lightweight prediction heads on top of pre-trained models, AutoDeco can dynamically predict optimal temperature and top-p parameters for each token during decoding.
## 🎯 Key Features
- **Token-Level Decoding Parameter Prediction**: Dynamically predict decoding parameters (temperature and top-p) for each generated token
- **Lightweight Design**: Only adds two small MLP prediction heads (~5MB), without modifying the base model
- **Universal Architecture**: Supports multiple mainstream LLM architectures (Llama, Qwen2/2.5, Qwen3, MoE models, etc.)
- **End-to-End Training**: Complete training with implicit gradient backpropagation through cross-entropy loss only
- **Flexible Training**: Supports independent training of temperature head, top-p head, or joint training
- **Efficient Deployment**: Only saves AutoDeco prediction head weights during training, merges with base model during decoding.
## 🏗️ Architecture
The AutoDeco framework consists of two core components:

### Model Workflow
```
Input Tokens
↓
Base LLM (frozen during head training)
↓
Hidden States
├──→ LM Head → Logits
├──→ TempHead → Temperature
└──→ TopPHead → Top-P
```
During training, the base LLM parameters are frozen, and only the two prediction heads are trained.
## 🤖 Supported Models
AutoDeco supports all current autoregressive LLMs, and we unified them with the following model architectures `AutoDecoModelForCausalLM` interface.
| **Base Model** | **#Base Params** | **#AutoDeco Params** | **Download** |
| :------------: | :------------: | :------------: | :------------: |
| Llama-3.1-Nemotron-Nano-8B-v1 | 8B | 2.1M | [🤗 HuggingFace](https://huggingface.co/Jadeislaw/AutoDeco-Llama-Nemotron-8B) |
| DeepSeek-R1-Distill-Qwen-7B | 7B | 1.84M | [🤗 HuggingFace](https://huggingface.co/Jadeislaw/AutoDeco-R1-Distill-Qwen-7B) |
| Qwen3-30B-A3B-Instruct-2507 | 30B | 1.05M | [🤗 HuggingFace](https://huggingface.co/Jadeislaw/AutoDeco-Qwen3-30B-A3B-Instruct-2507) |
| OpenAI-GPT-OSS-20B | 20B | 1.48M | [🤗 HuggingFace](https://huggingface.co/Jadeislaw/AutoDeco-GPT-Oss-20B) |
| OpenAI-GPT-OSS-120B | 120B | 1.48M | [🤗 HuggingFace](https://huggingface.co/Jadeislaw/AutoDeco-GPT-Oss-120B) |
| Qwen3-235B-A22B-Thinking | 235B | 2.1M | [🤗 HuggingFace](https://huggingface.co/zacks917/AutoDeco-Qwen3-235B-A22B-Thinking-2507) |
| DeepSeek-V3.1-Terminus | 671B | - | Comming Soon |
## 🚀 Installation
### Recommended Requirements
- Python >= 3.10
- PyTorch >= 2.0
- CUDA >= 12.0 (recommended for training)
### Install Dependencies
```bash
# Clone repository
cd AutoDeco
# Install core dependencies
pip install -r requirements.txt
# Optional: for training monitoring
pip install wandb
```
## 💡 Quick Start
### Initialize AutoDeco Model
```python
python script/construct_autodeco.py \
--base_model_name_or_path path_to_your_base_LLM \
--output_dir path_to_your_AutoDeco_model
```
## 🔥 Training
### Prepare Training Data
Training data should be in JSONL format, with one sample per line. AutoDeco supports standard conversation format:
```bash
{
"prompt": "formatted prompt text",
"completion": "expected completion"
}
# example
{
"prompt": "<|im_start|>user\nEvaluate the limit:$$\\lim_{(x, y) \\to (1, 2)} \\frac{(x-1)(y-2)-x+3}{x^2-2x+y^2-4}$$\nMake sure you output the final answer within \\boxed{}<|im_end|>\n< im_start>assistant\n",
"completion": "......### ✅ Final Answer:\n$$\n\\boxed{-1}\n$$""
}
```
### Train AutoDeco Heads
Use the provided training script:
```bash
# Edit script/trl_train.sh to configure parameters
# Key parameters:
# - MODEL_NAME_OR_PATH: Your initialized AutoDeco Model Path
# - DATA_NAME: Training data filename (in data directory)
# - MAX_LENGTH: Maximum sequence length
# - train_temp: Whether to train temperature head
# - train_top_p: Whether to train top-p head
bash script/trl_train.sh
```
Training configuration examples:
```bash
# Train only temperature head
accelerate launch trl_train.py \
--model_name_or_path AutoDeco-Llama-3.1-8B \
--dataset_name train_data.jsonl \
--train_temp true \
--train_top_p false \
--learning_rate 5e-6 \
--num_train_epochs 1 \
--output_dir ckpt/llama3_temp_head
```
## 📊 Inference
### Batch Evaluation with vLLM
```bash
# Single evaluation
python llm_eval.py \
--model_name_or_path ckpt/autodeco_model \
--dataset aime24 \
--temp 1.0 \
--top_p 1.0 \
--k 16 \
--seed 42
# Batch evaluation with script (automatically generates multiple random seeds)
bash script/test_generation.sh aime24 1.0 1.0 -1 1.0 path/to/model
```
Evaluation results are saved in the `generation_log/` directory, including:
- Pass@K metrics
- Average accuracy
- Detailed generation results for each sample
### Deploy with vLLM
```bash
# example
vllm serve
```
## 📁 Project Structure
```
AutoDeco/
├── model/ # Model definitions
│ ├── templlm_auto.py # Unified AutoDeco model (recommended)
definitions
│
├── trainer/ # Trainers
│ └── trl_Temp.py # AutoDeco trainer
│
├── script/ # Scripts
│ ├── trl_train.sh # Training launch script
│ ├── test_generation.sh # Batch evaluation script
│ └── merge_autodeco.py # Merge or split heads
│
├── config/ # Configuration files
│ └── deepspeed/ # DeepSpeed configuration
│ └── deepspeed_zero3_gradaccu4.yaml
│
├── trl_train.py # Training main program
├── llm_eval.py # Evaluation main program (vLLM)
├── boxed_extract.py # Answer extraction tool
├── requirements.txt # requirements
└── README.md # This document
```
## 🔧 Advanced Usage
### 1. Extract AutoDeco Heads from AutoDeco Model
```python
python merge_autodeco.py split \
--full-checkpoint path_to_your_full_model \
--output path_to_split_head
```
This generates a lightweight checkpoint (~5MB) containing:
- `config.json`: AutoDeco configuration (including base_model_name_or_path)
- `autodeco_heads.safetensors`: Heads weights
### 2. Merge AutoDeco Heads to Base Model (for vLLM Deployment)
If you need to create a complete model file with heads for inference engines like vLLM:
```python
python merge_autodeco.py merge \
--autodeco-path path_to_autodeco_heads \
--base-model-path path_to_base_LLM \
--output path_to_your_full_model
```
## 📝 Citation
If you use AutoDeco in your research, please cite:
```bibtex
@misc{wang2025endmanualdecodingtruly,
title={The End of Manual Decoding: Towards Truly End-to-End Language Models},
author={Zhichao Wang and Dongyang Ma and Xinting Huang and Deng Cai and Tian Lan and Jiahao Xu and Haitao Mi and Xiaoying Tang and Yan Wang},
year={2025},
eprint={2510.26697},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2510.26697},
}
```