- Add comprehensive PRD, architecture design, and test design documents - Implement core modules: OmniLLM, AsyncOmniLLM, stage configurations - Add DiT scheduler and cache manager for diffusion models - Implement CLI integration with --omni flag support - Add API server and plugin system for vLLM integration - Create comprehensive test suite with fixtures - Update dependencies to vLLM 0.10.2 and PyTorch 2.8.0 - Add conda environment setup and package installation - Implement stage-based processing architecture - Add multimodal output processing capabilities This commit establishes the foundation for multi-modality models inference and serving with non-autoregressive structures.
6.2 KiB
6.2 KiB
vLLM-omni Product Requirements Document (PRD)
1. Product Overview
1.1 Product Name
vLLM-omni: Multi-modality models inference and serving with non-autoregressive structures
1.2 Product Vision
Extend vLLM beyond traditional text-based, autoregressive generation to support multi-modality models with non-autoregressive structures and non-textual outputs while maintaining vLLM's proven architecture and performance.
1.3 Target Users
- AI researchers working with multimodal models
- ML engineers building production inference systems
- Developers integrating DiT (Diffusion Transformer) models
- Organizations requiring efficient multimodal model serving
2. Core Requirements
2.1 Functional Requirements
2.1.1 Multi-Stage Processing
- REQ-001: Support stage-based model processing where each stage can use different engine types (AR/DiT)
- REQ-002: Enable sequential processing through multiple stages with data flow between stages
- REQ-003: Support both autoregressive (AR) and diffusion (DiT) model stages
2.1.2 vLLM Compatibility
- REQ-004: Maintain full compatibility with vLLM V1 architecture (AsyncLLM and EngineCore patterns)
- REQ-005: Support existing vLLM CLI commands with
--omniflag extension - REQ-006: Reuse vLLM's multiprocess worker architecture for scalability
2.1.3 Multimodal Support
- REQ-007: Support text, image, and latent space inputs/outputs
- REQ-008: Enable image-to-image, text-to-image, and text-to-text generation
- REQ-009: Support hidden state passing between AR and DiT stages
2.1.4 CLI and API
- REQ-010: Provide CLI command:
vllm serve Qwen/Qwen2.5-Omni-7B --omni --port 8000 - REQ-011: Support both online (AsyncOmniLLM) and offline (OmniLLM) inference modes
- REQ-012: Maintain vLLM's existing API compatibility
2.2 Non-Functional Requirements
2.2.1 Performance
- REQ-013: Maintain vLLM's inference performance for AR stages
- REQ-014: Optimize DiT stage processing with caching mechanisms
- REQ-015: Support distributed inference across multiple GPUs
2.2.2 Scalability
- REQ-016: Support horizontal scaling through vLLM's worker process pattern
- REQ-017: Enable efficient memory management for large multimodal models
- REQ-018: Support batch processing for multiple requests
2.2.3 Extensibility
- REQ-019: Easy integration of new modalities and model architectures
- REQ-020: Pluggable scheduler and executor components
- REQ-021: Support for future non-autoregressive model types
3. Technical Architecture
3.1 Core Components
3.1.1 Entry Points
- OmniServeCommand: CLI wrapper that intercepts vLLM commands with
--omniflag - OmniLLM: Offline inference class supporting multi-stage processing
- AsyncOmniLLM: Online inference class with asynchronous processing
3.1.2 Stage Management
- OmniStageConfig: Configuration for each processing stage
- Stage Engine List: Multiple AsyncLLM instances for each stage
- Stage I/O Management: Data flow between stages
3.1.3 Engine Components
- EngineCore: Reused from vLLM (no changes needed)
- OmniDiffusionScheduler: New scheduler for DiT models
- DiTCacheManager: Caching system for DiT optimization
- MultiprocExecutor: Reused from vLLM for DiT without diffusers
- DiffusersPipelineExecutor: New executor for diffusers integration
3.1.4 Model Runners
- OmniDiffusionModelRunner: Handles DiT model execution
- OmniARModelRunner: Handles AR model execution with hidden state output
- ModelRunnerOutput: Extended to support multimodal outputs via pooler_output
3.1.5 Output Processing
- MultimodalOutputProcessor: Handles final multimodal output processing
- RequestState: Extended to support pooling outputs
- Output Handlers: Type-specific output processing
3.2 Data Flow
API Server → OmniLLM/AsyncOmniLLM → LLMEngine/AsyncLLM → Engine Core
→ Scheduler (AR/DiT) → Executor (AR/DiT) → Worker (AR/DiT)
→ ModelRunner (AR/DiT) → RequestState → OutputProcessor → Final Output
4. Implementation Phases
Phase 1: Foundation (Weeks 1-2)
- Package structure and dependencies
- Basic OmniLLM and AsyncOmniLLM classes
- Stage configuration system
- CLI integration
Phase 2: Core Components (Weeks 3-4)
- DiT scheduler implementation
- Model runners for AR and DiT
- Basic output processing
Phase 3: Advanced Features (Weeks 5-6)
- Caching system implementation
- Multimodal output processing
- Request state management
Phase 4: Integration & Testing (Weeks 7-8)
- End-to-end integration
- Comprehensive testing
- Performance optimization
- Documentation
5. Success Criteria
5.1 Functional Success
- Successfully run
vllm serve model --omnicommand - Process multi-stage AR→DiT pipelines
- Generate multimodal outputs (text + image)
- Maintain vLLM API compatibility
5.2 Performance Success
- AR stage performance within 5% of native vLLM
- DiT stage processing with reasonable latency
- Memory usage comparable to vLLM for equivalent models
5.3 Quality Success
- 90%+ test coverage
- All integration tests passing
- Documentation complete and accurate
6. Risk Assessment
6.1 Technical Risks
- High: vLLM API changes breaking compatibility
- Medium: DiT model integration complexity
- Low: Performance overhead from multi-stage processing
6.2 Mitigation Strategies
- Regular vLLM compatibility testing
- Incremental DiT integration with fallback options
- Performance benchmarking at each stage
7. Dependencies
7.1 External Dependencies
- vLLM >= 0.10.2
- PyTorch >= 2.7
- Transformers >= 4.30.0
- FastAPI, Uvicorn for API serving
- Ray for distributed computing
7.2 Optional Dependencies
- xDiT for DiT acceleration
- Cache-DiT for advanced caching
- Diffusers for pipeline-based DiT models
8. Future Roadmap
8.1 Short-term (3 months)
- Additional DiT model support
- Performance optimizations
- Enhanced caching strategies
8.2 Medium-term (6 months)
- Support for video generation models
- Advanced scheduling strategies
- Multi-GPU DiT optimization
8.3 Long-term (12 months)
- Custom model architecture support
- Advanced multimodal fusion
- Production deployment tools