80 lines
2.5 KiB
Markdown
80 lines
2.5 KiB
Markdown
# vLLM-omni: Multi-modal Extension for vLLM
|
|
|
|
vLLM-omni is designed to extend vLLM capabilities to support multi-modality model inference and serving, particularly focusing on non-autoregressive structures and non-textual outputs.
|
|
|
|
## 🎯 Overview
|
|
|
|
Traditional vLLM systems are limited to text-based, autoregressive generation. vLLM-omni addresses this limitation by enabling support for:
|
|
|
|
- **Multi-modal Models**: Text, image, video, audio, and sensor data processing
|
|
- **Non-autoregressive Architectures**: Diffusion Transformers (DiT) and other parallel generation models
|
|
- **Heterogeneous Outputs**: Beyond traditional text generation to multimodal outputs
|
|
|
|
## 🏗️ Architecture
|
|
|
|
vLLM-omni is built on a modular architecture that extends vLLM's core functionality:
|
|
|
|
|
|
## 🚀 Key Features
|
|
|
|
### Multi-Engine Support
|
|
|
|
- **Autoregressive Engine**: Traditional text generation with enhanced KV-caching
|
|
- **Diffusion Engine**: Support for DiT models and iterative generation
|
|
- **Hybrid Engine**: Combined AR+DiT processing pipelines
|
|
|
|
### Modality Processing
|
|
|
|
- **Text**: Advanced tokenization and embedding generation
|
|
- **Image**: Vision encoder integration (CLIP, etc.)
|
|
- **Audio**: Speech processing and audio embedding
|
|
|
|
## 📋 Supported Models
|
|
|
|
### AR + Diffusion Transformer (DiT) Models
|
|
- Qwen-omni (Thinker-Talker-Codec structure)
|
|
- HunyunaImage 3.0 (Ongoing)
|
|
- Qwen-Image (Ongoing)
|
|
|
|
## 🛠️ Installation
|
|
|
|
Set up basic environments
|
|
```bash
|
|
uv venv --python 3.12 --seed
|
|
source .venv/bin/activate
|
|
```
|
|
Install certain version of vllm with commitid: 808a7b69df479b6b3a16181711cac7ca28a9b941
|
|
|
|
```bash
|
|
git clone https://github.com/vllm-project/vllm.git
|
|
cd vllm
|
|
git checkout 808a7b69df479b6b3a16181711cac7ca28a9b941
|
|
VLLM_USE_PRECOMPILED=1 uv pip install --editable .
|
|
```
|
|
Install additional requirements for vllm-omni
|
|
```bash
|
|
uv pip install -r requirements.txt
|
|
```
|
|
|
|
## Run examples (Qwen2.5-omni)
|
|
|
|
Get into the example folder
|
|
```bash
|
|
cd vllm_omni
|
|
cd examples/offline_inference/qwen2_5_omni
|
|
```
|
|
Modify PYTHONPATH in run.sh as your path of vllm_omni. Then run.
|
|
```bash
|
|
bash run.sh
|
|
```
|
|
The output audio is saved in ./output_audio
|
|
|
|
## To-do list
|
|
- [x] Offline inference example for Qwen2.5-omni with single request
|
|
- [ ] Adaptation from current vllm branch to stable vllm v0.11.0
|
|
- [ ] Offline inference example for Qwen2.5-omni with streaming multiple requests
|
|
- [ ] Online inference support
|
|
- [ ] Support for other models
|
|
|
|
For detailed model management, see [vllm_omni_design.md](docs/architecture/vllm_omni_design.md) and [high_level_arch_design.md](docs/architecture/high_level_arch_design.md).
|