| Metadata-Version: 2.4 |
| Name: lmflow |
| Version: 0.0.9 |
| Summary: LMFlow: Large Model Flow. |
| Author: The LMFlow Team |
| Classifier: Intended Audience :: Science/Research/Engineering |
| Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence |
| Classifier: Programming Language :: Python :: 3.9 |
| Classifier: Programming Language :: Python :: 3.10 |
| Description-Content-Type: text/markdown |
| Requires-Dist: setuptools<81,>=64 |
| Requires-Dist: packaging |
| Requires-Dist: numpy |
| Requires-Dist: datasets==2.14.6 |
| Requires-Dist: tokenizers>=0.13.3 |
| Requires-Dist: peft>=0.10.0 |
| Requires-Dist: torch>=2.0.1 |
| Requires-Dist: wandb |
| Requires-Dist: deepspeed>=0.14.4 |
| Requires-Dist: sentencepiece |
| Requires-Dist: transformers==4.53.1 |
| Requires-Dist: cpm_kernels==1.0.11 |
| Requires-Dist: evaluate==0.4.0 |
| Requires-Dist: bitsandbytes>=0.40.0 |
| Requires-Dist: pydantic |
| Requires-Dist: accelerate>=0.27.2 |
| Requires-Dist: einops>=0.6.1 |
| Requires-Dist: pyarrow==18.0.0 |
| Provides-Extra: multimodal |
| Requires-Dist: Pillow; extra == "multimodal" |
| Provides-Extra: vllm |
| Requires-Dist: vllm>=0.4.3; extra == "vllm" |
| Provides-Extra: ray |
| Requires-Dist: ray>=2.22.0; extra == "ray" |
| Provides-Extra: gradio |
| Requires-Dist: gradio; extra == "gradio" |
| Provides-Extra: flask |
| Requires-Dist: flask; extra == "flask" |
| Requires-Dist: flask_cors; extra == "flask" |
| Provides-Extra: flash-attn |
| Requires-Dist: flash-attn>=2.0.2; extra == "flash-attn" |
| Provides-Extra: trl |
| Requires-Dist: trl==0.8.0; extra == "trl" |
| Dynamic: author |
| Dynamic: classifier |
| Dynamic: description |
| Dynamic: description-content-type |
| Dynamic: provides-extra |
| Dynamic: requires-dist |
| Dynamic: summary |
|
|
| |
|
|
| [](https://nvlabs.github.io/Fast-dLLM/v2) |
| [](https://arxiv.org/abs/2509.26328) |
| [](https://huggingface.co/Efficient-Large-Model/Fast_dLLM_v2_7B) |
|
|
| Fast-dLLM v2 is a carefully designed block diffusion language model (dLLM) that efficiently adapts pretrained autoregressive (AR) models into dLLMs for parallel text generation, requiring only approximately 1B tokens of fine-tuning. This represents a **500x reduction** in training data compared to full-attention diffusion LLMs while preserving the original model's performance. |
|
|
| |
| https://github.com/user-attachments/assets/f2e055f5-3a44-41ca-9ef8-c84cf3ac2951 |
|
|
| |
|
|
| |
| - Novel training recipe combining block diffusion with complementary attention masks |
| - Enables blockwise bidirectional context modeling |
| - Token shift mechanism to retain autoregressive characteristics |
|
|
| <div align="center"> |
| <img src="asset/training_recipe.png" alt="Training Recipe" width="700"/> |
| <p><em>Block-wise causal attention mask and complementary training strategy</em></p> |
| </div> |
|
|
| |
| - **Block-level cache**: Stores historical context representations across blocks |
| - **Sub-block cache**: Enables efficient parallel generation within partially decoded blocks |
|
|
| |
| - Achieves up to **2.5x speedup** over standard AR decoding |
| - Real-time visualization of the denoising process |
| - Maintains generation quality while delivering state-of-the-art efficiency |
|
|
| <div align="center"> |
| <img src="asset/visualization_animation.gif" alt="Generation Process Visualization" width="700"/> |
| <p><em>Block-level autoregressive generation with sub-block parallelization</em></p> |
| </div> |
|
|
| |
|
|
| |
| Fast-dLLM v2 significantly outperforms baselines in both efficiency and accuracy: |
| - **2.54× higher throughput** than Qwen2.5-7B-Instruct |
| - **5.2% accuracy improvement** over Fast-dLLM-LLaDA |
|
|
| <div align="center"> |
| <img src="asset/throughput.png" alt="Throughput Comparison" width="700"/> |
| <p><em>Throughput and accuracy comparison across different model variants</em></p> |
| </div> |
|
|
| |
| Comprehensive evaluation across diverse tasks: |
|
|
| | Model Size | Model | HumanEval-Base | HumanEval-Plus| MBPP-Base | MBPP-Plus | GSM8K | Math | IFEval | MMLU | GPQA | Average | |
| |------------|-------|-----------|--|---|---|-------|------|--------|------|------|---------| |
| | **1B-scale** | Fast-dLLM v2 (1.5B) | 43.9 | 40.2 | 50.0 | 41.3 | 62.0 | 38.1 | 47.0 | 55.1 | 27.7 | **45.0** | |
| | **7B+ scale** | Fast-dLLM v2 (7B) | 63.4 | 58.5 | 63.0 | 52.3 | 83.7 | 61.6 | 61.4 | 66.6 | 31.9 | **60.3** | |
|
|
| <div align="center"> |
| <img src="asset/benchmark_results.png" alt="Benchmark Results" width="800"/> |
| <p><em>Comprehensive benchmark comparison across diverse tasks</em></p> |
| </div> |
|
|
|
|
| |
|
|
| |
| First, create and activate a conda environment: |
|
|
| ```bash |
| conda create -n lmflow python=3.9 -y |
| conda activate lmflow |
| conda install mpi4py |
| ``` |
|
|
| |
| Install the package in development mode: |
|
|
| ```bash |
| pip install -e . |
| ``` |
|
|
| |
| Download the training data (e.g., Alpaca dataset): |
|
|
| ```bash |
| cd data |
| bash download.sh alpaca |
| ``` |
|
|
| |
| Run the fine-tuning script: |
|
|
| ```bash |
| bash train_scripts/finetune_alpaca.sh |
| ``` |
|
|
| This will start the training process using the Alpaca dataset with the optimized block diffusion training recipe. |
|
|
| |
|
|
| |
| Launch the Gradio-based web interface: |
|
|
| ```bash |
| python app.py |
| ``` |
|
|
| This will start a web server at `http://localhost:10086` with: |
| - Real-time conversation interface |
| - Live visualization of the denoising process |
| - Adjustable generation parameters (block size, temperature, threshold) |
| - Performance metrics display |
|
|
| |
| For a simple command-line interface: |
|
|
| ```bash |
| python run_chatbot.py |
| ``` |
|
|
| Commands: |
| - Type your message and press Enter |
| - `clear` - Clear conversation history |
| - `exit` - Quit the chatbot |
|
|
|
|
| |
|
|
| |
| Execute the evaluation script for comprehensive benchmarking: |
|
|
| ```bash |
| bash eval_script.sh |
| ``` |
|
|
| This script evaluates the model on: |
| - **MMLU**: Massive Multitask Language Understanding |
| - **GPQA**: Graduate-level Google-Proof Q&A |
| - **GSM8K**: Grade School Math 8K |
| - **Minerva Math**: Mathematical reasoning |
| - **IFEval**: Instruction following evaluation |
|
|
| |
| For custom evaluation with specific parameters: |
|
|
| ```bash |
| accelerate launch eval.py \ |
| --tasks gsm8k \ |
| --batch_size 32 \ |
| --num_fewshot 0 \ |
| --model fast_dllm_v2 \ |
| --model_args model_path=Efficient-Large-Model/Fast_dLLM_v2_7B,threshold=0.9 |
| ``` |
|
|
| |
|
|
| |
| - **Token Shift Mechanism**: Each masked token is predicted using the logit of its preceding token |
| - **Block-wise Causal Attention**: Access to all clean tokens from previous blocks and noisy tokens within current block |
| - **Complementary Masks**: Alternate masking patterns ensure every token position is learned |
|
|
| |
| 1. **Block-level Generation**: Autoregressive at the block level |
| 2. **Sub-block Parallelization**: Parallel decoding within blocks for efficiency |
| 3. **Hierarchical Caching**: Block and sub-block level caching for speed optimization |
|
|
| |
|
|
| ``` |
| v2/ |
| ├── app.py |
| ├── run_chatbot.py |
| ├── eval.py |
| ├── eval_script.sh |
| ├── generation_functions.py |
| ├── index.html |
| ├── asset/ |
| │ ├── demo.mp4 |
| │ ├── benchmark_results.png |
| │ ├── throughput.png |
| │ ├── training_recipe.png |
| │ └── visualization_animation.gif |
| └── README.md |
| ``` |
|
|
| |
|
|
| The web interface provides real-time visualization of: |
| - **Denoising Process**: Watch tokens being unmasked in real-time |
| - **Generation Progress**: Visual feedback of the generation pipeline |
| - **Performance Metrics**: Live throughput and timing information |
| - **Slow Motion Replay**: Detailed step-by-step visualization |
|
|
| |
|
|
| |
| - Based on Qwen2.5 architecture with block diffusion modifications |
| - 7B parameter model with efficient parallel decoding capabilities |
| - Custom attention mechanisms for block-wise processing |
|
|
| |
| - Block-level KV caching for reduced computation |
| - Sub-block parallel processing for improved throughput |
| - Confidence-aware token unmasking for quality preservation |
|
|
| |
|
|
| We welcome contributions! Please see our [Contributing Guidelines](../CONTRIBUTING.md) for details. |
|
|
| |
|
|
| This project is licensed under the Apache License 2.0. See the [LICENSE](../LICENSE) file for details. |
|
|
| |
|
|
| If you find this work useful, please cite our paper: |
|
|
| ```bibtex |
| @misc{wu2025fastdllmv2efficientblockdiffusion, |
| title={Fast-dLLM v2: Efficient Block-Diffusion LLM}, |
| author={Chengyue Wu and Hao Zhang and Shuchen Xue and Shizhe Diao and Yonggan Fu and Zhijian Liu and Pavlo Molchanov and Ping Luo and Song Han and Enze Xie}, |
| year={2025}, |
| eprint={2509.26328}, |
| archivePrefix={arXiv}, |
| primaryClass={cs.CL}, |
| url={https://arxiv.org/abs/2509.26328}, |
| } |
| ``` |
|
|
| |
|
|
| We thank [Qwen2.5](https://github.com/QwenLM/Qwen2.5) for the base model architecture |
|
|