yuyijiong's picture
Add metadata, paper/code links, and sample usage (#1)
4484ec8
---
license: apache-2.0
library_name: transformers
pipeline_tag: text-generation
tags:
- speculative-decoding
- pipeline-parallelism
- llm-acceleration
---
# Speculative Pipeline Decoding: Speculation Head Checkpoints
This repository contains pre-trained **pipeline speculation head** weights for the paper [Speculative Pipeline Decoding: Higher-Accruacy and Zero-Bubble Speculation via Pipeline Parallelism](https://huggingface.co/papers/2605.30852).
Speculative Pipeline Decoding (SPD) is a framework that unlocks the potential of pipeline parallelism for LLM decoding acceleration. By partitioning the target LLM into $n$ pipeline stages, SPD allows the model to process $n$ tokens in parallel, achieving higher acceptance rates and zero latency bubbles.
- **Paper:** [https://huggingface.co/papers/2605.30852](https://huggingface.co/papers/2605.30852)
- **Code:** [https://github.com/yuyijiong/speculative_pipeline_decoding](https://github.com/yuyijiong/speculative_pipeline_decoding)
## Quick Start (Inference)
To run inference using these checkpoints, clone the official repository and use the provided `pipeline_inference.py` script. You must pair the speculation head with the corresponding base model it was trained on.
```bash
python pipeline_inference.py \
--spec_head_ckpt /path/to/checkpoint.pt \
--base_model_path Qwen/Qwen3.5-4B \
--max_new_tokens 100 \
--temperature 0.0
```
## Checkpoint Information
Each `.pt` file is a single checkpoint produced by training. For more details on training and evaluation, see the [official repo](https://github.com/yuyijiong/speculative_pipeline_decoding).
### Filename format
Files are named:
`{model}_s{num_stages}_l{num_spec_layers}.pt`
| Part | Meaning |
|------|---------|
| `{model}` | Base model tag (e.g. `Qwen3.5-4B`, `Qwen3.5-9B`) |
| `s{...}` | `num_stages` — pipeline depth (number of target-model stages) |
| `l{...}` | `num_spec_layers` — number of Transformer layers in the speculation module |
Example: `Qwen3.5-9B_s16_l2.pt` → Qwen3.5-9B base, 16 stages, 2 spec layers.
### Checkpoint contents
Each file is a PyTorch archive with two top-level keys:
```python
{
"state_dict": ..., # weights of the speculation module
"config": { ... }, # hyperparameters and metadata
}
```
### `config` fields (always present)
| Field | Description |
|-------|-------------|
| `base_model_path` | Base model path recorded at training time (can be overridden via `--base_model_path` at load time) |
| `hidden_size` | Hidden size (matches base model) |
| `vocab_size` | Base model vocabulary size |
| `draft_vocab_size` | Draft head output size (full vocab or draft subset) |
| `num_stages` | Pipeline depth (same as `s` in filename) |
| `num_spec_layers` | Speculation module depth (same as `l` in filename) |
| `version` | Checkpoint format version (`10`) |
| `trained_with_use_deepest` | Whether training used deepest-layer features |
| `shallow_hidden_layer_indices` | Which base layers feed the speculation module |
## Citation
If you use this work, please cite our paper:
```bibtex
@misc{yu2026speculativepipelinedecodinghigheraccruacy,
title={Speculative Pipeline Decoding: Higher-Accruacy and Zero-Bubble Speculation via Pipeline Parallelism},
author={Yijiong Yu and Huazheng Wang and Shuai Yuan and Ruilong Ren and Ji Pei},
year={2026},
eprint={2605.30852},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2605.30852},
}
```