--- license: mit library_name: pytorch language: - en datasets: - embedded-language-flows/openwebtext-t5 pipeline_tag: text-generation tags: - diffusion-language-model - flow-matching - parallel-decoding - arxiv:2610.12898 --- # Predictive-State Flows (PSF): checkpoints Checkpoints for **Rethinking the Roles of Diffusion and Decoding: Predictive-State Flows for Parallel Language Generation** ([paper](https://arxiv.org/abs/2610.12898), [code](https://github.com/jinjinhe2001/Predictive-State-Flows-for-Parallel-Language-Generation)). A predictive state sk summarizes only the blocks before block k. A rectified-flow prior generates the K predictive states of a 1024-token document jointly from noise; a block decoder then writes all K blocks in parallel, autoregressively only within each block. Unconditional generation, trained on OpenWebText with the T5 tokenizer. ## Files | File | Model | K | Gen. PPL @ entropy | MAUVE@512 | TFLOPs / doc | |---|---|---|---|---|---| | `psf_k64.pt` | PSF | 64 | 41.15 @ 5.183 | 0.87 | 0.80 | | `psf_k32.pt` | PSF | 32 | 33.56 @ 5.177 | 0.89 | 0.52 | | `psf_k16.pt` | PSF | 16 | 25.67 @ 5.173 | 0.90 | 0.38 | | `psf_k8.pt` | PSF | 8 | 22.75 @ 5.164 | 0.93 | 0.31 | | `psf_k8_states-only.pt` | PSF, states-only prior | 8 | 18.95 @ 5.158 | 0.85 | 0.31 | | `psf-l_k64.pt` | PSF-L | 64 | 42.2 @ 5.16 (interpolated) | | | | `psf-l_k32.pt` | PSF-L | 32 | 27.1 @ 5.16 (interpolated) | | | | `psf-l_k16.pt` | PSF-L | 16 | 21.22 @ 5.181 | 0.91 | 1.35 | | `psf-l_k8.pt` | PSF-L | 8 | 17.79 @ 5.146 | 0.90 | 1.10 | | `psf-l_k8_states-only.pt` | PSF-L, states-only prior | 8 | 15.98 @ 5.144 | 0.89 | 1.10 | | `ar-197m.pt` | same-data autoregressive baseline | - | 15.37 @ 5.151 | 0.95 | 0.43 | PSF: 197M generation parameters (block decoder 109M + prior 88M), 0.93 GB per file. PSF-L: 677M (369M + 308M), 3.15 GB per file. Both files also carry the encoder. AR: 197M, 0.79 GB. All fp32 EMA weights. Numbers are from Table 1 of the paper (K = 64 and 32 of PSF-L from its block-length table): 1000 samples, GPT-2 Large judge, with the sampling settings in `configs/.sampling.args`. ## Usage ```bash git clone https://github.com/jinjinhe2001/Predictive-State-Flows-for-Parallel-Language-Generation.git cd Predictive-State-Flows-for-Parallel-Language-Generation && pip install -r requirements.txt hf download jinjinhe2001/PSF-ParallelLM --include "psf_k8.pt" --local-dir checkpoints # or omit --include for all python -m scripts.eval_gen --ckpt checkpoints/psf_k8.pt $(cat configs/models/psf_k8.args) \ $(cat configs/sampling/psf_k8.args) --save-texts outputs/texts_psf_k8 ``` The architecture is not stored in the PSF checkpoints: `configs/.model.args` (also in the code repository) holds the flags that rebuild it. Each PSF file is `{"model": state_dict, "steps": int}`; the AR file stores its own architecture as `{"model": state_dict, "ar_config": dict, "step": int}`. All files load with `torch.load(path, weights_only=True)`. The AR baseline is sampled with `scripts.sample_ar` (see the code README). ## Citation ```bibtex @article{he2026psf, title = {Rethinking the Roles of Diffusion and Decoding: Predictive-State Flows for Parallel Language Generation}, author = {He, Jinjin and Feng, Xinsong and Fu, Lucheng and Wang, Sinan and Zhu, Bo and Wang, Jiayun}, journal = {arXiv preprint arXiv:2610.12898}, year = {2026} } ```