Signed-off-by: Roger Wang <hey@rogerw.io> Signed-off-by: Gao Han <gaohan19@huawei.com> Co-authored-by: Gao Han <gaohan19@huawei.com>
4.0 KiB
API Design Documentation
This document contains comprehensive API design documentation for all core modules in vLLM-Omni. These templates provide a standardized structure for designing and implementing the core, engine, executor, and worker modules.
📋 Module API
Core Module API
Core module provides fundamental scheduling, caching, and resource management functionality.
Key Components:
- Request scheduling and prioritization
- DiT cache management for diffusion models
- Resource allocation and coordination
- Inter-module communication
Engine Module API
Engine module handles model loading, inference execution, and output processing.
Key Components:
- Model loading and initialization
- Inference execution for AR and diffusion models
- Input preprocessing for various modalities
- Output postprocessing and formatting
Executor Module API
Executor module coordinates and manages request execution across different engines and workers.
Key Components:
- Request routing and load balancing
- Execution pipeline coordination
- Worker management and task distribution
- Error handling and recovery
Worker Module API
Worker module provides the actual execution environment for model inference.
Key Components:
- Model execution and inference
- GPU resource management
- Request batching and processing
- Performance optimization
🔧 Implementation Guidelines
Code Standards
- Use type hints for all methods
- Include comprehensive docstrings
- Follow PEP 8 style guidelines
- Use async/await for I/O operations
Error Handling
- Define specific exception types
- Provide meaningful error messages
- Include error recovery strategies
- Log errors appropriately
Configuration
- Use dataclasses for configuration
- Provide sensible defaults
- Include validation methods
- Support environment variables
Testing
- Write unit tests for all public methods
- Include integration tests
- Test error conditions
- Validate configuration options
🚀 Getting Started
For Developers
-
Choose a Module
- Pick the module you want to work on
- Read the corresponding API documentation
- Understand the responsibilities and interfaces
-
Set Up Development Environment
# Clone the repository git clone https://github.com/vllm-project/vllm-omni.git cd vllm-omni # Install dependencies pip install -e ".[dev]" # Set up pre-commit hooks pre-commit install -
Start Implementation
- Create the module directory
- Implement base classes first
- Add concrete implementations
- Write tests as you go
For Contributors
-
Review API Documentation
- Read through all module APIs
- Understand the overall architecture
- Identify areas for improvement
-
Propose Changes
- Create issues for API changes
- Discuss in pull requests
- Update documentation accordingly
-
Submit Contributions
- Follow the coding standards
- Include tests for new features
- Update documentation
- Submit pull requests
🤝 Contributing
We welcome contributions to improve the API documentation and implementation. Please:
-
Follow the Template Structure
- Use the api template as a guide
- Maintain consistency across modules
- Include all required sections
-
Provide Working Examples
- Test all code examples
- Include both basic and advanced usage
- Show integration patterns
-
Keep Documentation Updated
- Update docs when APIs change
- Version control documentation changes
- Maintain backward compatibility notes
📝 Notes
- All API documentation should be kept up-to-date with implementation
- Code examples should be tested and working
- Configuration options should be validated
- Error handling should be comprehensive
- Performance considerations should be documented
For questions or suggestions about the API documentation, please open an issue or start a discussion in the repository.