- Rebrand README from InferencePipeline to Cluster4NPU UI Visual Pipeline Designer - Focus documentation on PyQt5-based GUI and drag-and-drop workflow - Update PROJECT_SUMMARY with current capabilities and focused development priorities - Streamline DEVELOPMENT_ROADMAP with 4-phase implementation plan - Remove redundant Chinese technical summary files (STAGE_IMPROVEMENTS_SUMMARY.md, UI_FIXES_SUMMARY.md, STATUS_BAR_FIXES_SUMMARY.md) - Align all documentation with actual three-panel UI architecture and NodeGraphQt integration 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
259 lines
8.4 KiB
Markdown
259 lines
8.4 KiB
Markdown
# Cluster4NPU UI - Visual Pipeline Designer
|
|
|
|
A visual pipeline designer for creating parallel AI inference workflows using Kneron NPU dongles. Build complex multi-stage inference pipelines through an intuitive drag-and-drop interface without coding knowledge.
|
|
|
|
## Features
|
|
|
|
- **Visual Pipeline Design**: Drag-and-drop node-based interface using NodeGraphQt
|
|
- **Multi-Stage Pipelines**: Chain multiple AI models for complex workflows
|
|
- **Real-time Performance Monitoring**: Live FPS, latency, and throughput tracking
|
|
- **Hardware Integration**: Automatic Kneron NPU dongle detection and management
|
|
- **Professional UI**: Three-panel layout with integrated configuration and monitoring
|
|
- **Pipeline Validation**: Real-time pipeline structure analysis and error detection
|
|
|
|
## Installation
|
|
|
|
This project uses [uv](https://github.com/astral-sh/uv) for fast Python package management.
|
|
|
|
```bash
|
|
# Install uv if you haven't already
|
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
|
|
# Create and activate virtual environment
|
|
uv venv
|
|
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
|
|
|
# Install dependencies
|
|
uv pip install -r requirements.txt
|
|
```
|
|
|
|
### Requirements
|
|
|
|
**Python Dependencies:**
|
|
- PyQt5 (GUI framework)
|
|
- NodeGraphQt (visual node editor)
|
|
- OpenCV (image processing)
|
|
- NumPy (array operations)
|
|
- Kneron KP SDK (NPU communication)
|
|
|
|
**Hardware Requirements:**
|
|
- Kneron NPU dongles (KL520, KL720, KL1080)
|
|
- USB 3.0 ports for device connections
|
|
- Compatible firmware files (`fw_scpu.bin`, `fw_ncpu.bin`)
|
|
- Trained model files (`.nef` format)
|
|
|
|
## Quick Start
|
|
|
|
### Launching the Application
|
|
|
|
```bash
|
|
# Activate virtual environment
|
|
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
|
|
|
# Launch the visual pipeline designer
|
|
python main.py
|
|
```
|
|
|
|
### Creating Your First Pipeline
|
|
|
|
1. **Start the Application**: Launch `main.py` to open the login/project manager
|
|
2. **Create New Project**: Click "Create New Pipeline" or load an existing `.mflow` file
|
|
3. **Design Pipeline**: Use the 3-panel interface:
|
|
- **Left Panel**: Drag nodes from the template palette
|
|
- **Middle Panel**: Connect nodes to build your pipeline flow
|
|
- **Right Panel**: Configure node properties and monitor performance
|
|
|
|
### Basic Pipeline Structure
|
|
|
|
```
|
|
Input Node → Preprocess Node → Model Node → Postprocess Node → Output Node
|
|
```
|
|
|
|
**Node Types:**
|
|
- **Input Node**: Camera, video file, or image source
|
|
- **Preprocess Node**: Data transformation (resize, normalize, format conversion)
|
|
- **Model Node**: AI inference on Kneron NPU dongles
|
|
- **Postprocess Node**: Result processing (classification, detection formatting)
|
|
- **Output Node**: Display, file output, or network streaming
|
|
|
|
### Visual Pipeline Design Workflow
|
|
|
|
1. **Node Placement**: Drag nodes from the left template palette
|
|
2. **Connection**: Connect nodes by dragging from output to input ports
|
|
3. **Configuration**: Select nodes and configure properties in the right panel
|
|
4. **Validation**: Real-time pipeline validation with stage counting
|
|
5. **Deployment**: Export configured pipeline for execution
|
|
|
|
## User Interface
|
|
|
|
### Three-Panel Layout
|
|
|
|
The main dashboard provides an integrated development environment with three main panels:
|
|
|
|
**Left Panel (25% width):**
|
|
- **Node Templates**: Drag-and-drop node palette
|
|
- Input Node (camera, video, image sources)
|
|
- Model Node (AI inference on NPU dongles)
|
|
- Preprocess Node (data transformation)
|
|
- Postprocess Node (result processing)
|
|
- Output Node (display, file, stream output)
|
|
- **Pipeline Operations**: Validation and management tools
|
|
- **Instructions**: Context-sensitive help
|
|
|
|
**Middle Panel (50% width):**
|
|
- **Visual Pipeline Editor**: NodeGraphQt-based visual editor
|
|
- **Real-time Validation**: Instant pipeline structure analysis
|
|
- **Node Connection**: Drag from output to input ports to connect nodes
|
|
- **Global Status Bar**: Shows stage count and pipeline statistics
|
|
|
|
**Right Panel (25% width):**
|
|
- **Properties Tab**: Node-specific configuration panels
|
|
- **Performance Tab**: Real-time performance monitoring and estimation
|
|
- **Dongles Tab**: Hardware device management and allocation
|
|
|
|
### Project Management
|
|
|
|
**Login/Startup Window:**
|
|
- Recent projects list with quick access
|
|
- Create new pipeline projects
|
|
- Load existing `.mflow` pipeline files
|
|
- Project location management
|
|
|
|
### Real-time Feedback
|
|
|
|
- **Stage Counting**: Automatic detection of pipeline stages
|
|
- **Connection Analysis**: Real-time validation of node connections
|
|
- **Error Highlighting**: Visual indicators for configuration issues
|
|
- **Performance Metrics**: Live FPS, latency, and throughput display
|
|
|
|
## Architecture
|
|
|
|
### Core Components
|
|
|
|
**Pipeline Analysis Engine (`core/pipeline.py`):**
|
|
- Automatic stage detection and validation
|
|
- Connection path analysis between nodes
|
|
- Real-time pipeline structure summarization
|
|
- Configuration export for deployment
|
|
|
|
**Node System (`core/nodes/`):**
|
|
- Extensible node architecture with type-specific properties
|
|
- Business logic separation from UI presentation
|
|
- Dynamic property validation and configuration panels
|
|
|
|
**Inference Engine (`core/functions/InferencePipeline.py`):**
|
|
- Multi-stage pipeline orchestration with thread-based processing
|
|
- Real-time performance monitoring and FPS calculation
|
|
- Inter-stage data flow and result aggregation
|
|
|
|
**Hardware Abstraction (`core/functions/Multidongle.py`):**
|
|
- Kneron NPU dongle management and auto-detection
|
|
- Multi-device support with load balancing
|
|
- Async inference processing with result queuing
|
|
|
|
### Data Flow
|
|
|
|
1. **Design Phase**: Visual pipeline creation using drag-and-drop interface
|
|
2. **Validation Phase**: Real-time analysis of pipeline structure and configuration
|
|
3. **Export Phase**: Generate executable configuration from visual design
|
|
4. **Execution Phase**: Deploy pipeline to hardware with performance monitoring
|
|
|
|
## File Formats
|
|
|
|
### Pipeline Files (`.mflow`)
|
|
|
|
JSON-based format storing:
|
|
- Node definitions and properties
|
|
- Connection relationships
|
|
- Stage configurations
|
|
- Export settings
|
|
|
|
### Hardware Configuration
|
|
|
|
- Firmware files: `fw_scpu.bin`, `fw_ncpu.bin`
|
|
- Model files: `.nef` format for Kneron NPUs
|
|
- Device mapping: USB port assignment to pipeline stages
|
|
|
|
## Performance Monitoring
|
|
|
|
### Real-time Metrics
|
|
|
|
- **FPS (Frames Per Second)**: Processing throughput
|
|
- **Latency**: End-to-end processing time
|
|
- **Stage Performance**: Per-stage processing statistics
|
|
- **Device Utilization**: NPU dongle usage monitoring
|
|
|
|
### Statistics Collection
|
|
|
|
- Pipeline input/output counts
|
|
- Processing time distributions
|
|
- Error rates and failure analysis
|
|
- Resource utilization tracking
|
|
|
|
## Testing and Validation
|
|
|
|
Run the test suite to verify functionality:
|
|
|
|
```bash
|
|
# Test core pipeline functionality
|
|
python tests/test_pipeline_editor.py
|
|
|
|
# Test UI components
|
|
python tests/test_ui_fixes.py
|
|
|
|
# Test integration
|
|
python tests/test_integration.py
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
**Node creation fails:**
|
|
- Verify NodeGraphQt installation and compatibility
|
|
- Check node template definitions in `core/nodes/`
|
|
|
|
**Pipeline validation errors:**
|
|
- Ensure all model nodes are connected between input and output
|
|
- Verify node property configurations are complete
|
|
|
|
**Hardware detection issues:**
|
|
- Check USB connections and dongles power
|
|
- Verify firmware files are accessible
|
|
- Ensure proper Kneron SDK installation
|
|
|
|
**Performance issues:**
|
|
- Monitor device utilization in Dongles tab
|
|
- Adjust queue sizes for throughput vs. latency tradeoffs
|
|
- Check for processing bottlenecks in stage statistics
|
|
|
|
## Development
|
|
|
|
### Project Structure
|
|
|
|
```
|
|
cluster4npu_ui/
|
|
├── main.py # Application entry point
|
|
├── config/ # Configuration and theming
|
|
├── core/ # Core processing engine
|
|
│ ├── functions/ # Inference and hardware abstraction
|
|
│ ├── nodes/ # Node type definitions
|
|
│ └── pipeline.py # Pipeline analysis and validation
|
|
├── ui/ # User interface components
|
|
│ ├── windows/ # Main windows (login, dashboard)
|
|
│ ├── components/ # Reusable UI widgets
|
|
│ └── dialogs/ # Modal dialogs
|
|
├── tests/ # Test suite
|
|
└── resources/ # Assets and styling
|
|
```
|
|
|
|
### Contributing
|
|
|
|
1. Follow the TDD workflow defined in `CLAUDE.md`
|
|
2. Run tests before committing changes
|
|
3. Maintain the three-panel UI architecture
|
|
4. Document new node types and their properties
|
|
|
|
## License
|
|
|
|
This project is part of the Cluster4NPU ecosystem for parallel AI inference on Kneron NPU hardware. |