abin 5aa374625f docs: add autoflow project docs and test infrastructure
- Add .autoflow/ with health check, PRD, Design Doc, TDD, progress tracking
- Add tests/conftest.py with PyQt5/KP SDK stubs for unit testing
- Add pytest config to pyproject.toml (pythonpath, import-mode, test naming)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 19:31:52 +08:00

14 KiB
Raw Blame History

PRD — Cluster4NPU UI

此 PRD 為從既有程式碼與文件反向整理,反映截至 2026-04-05 的實際狀況。
版本v0.0.3developer 分支)


1. 產品概覽

1.1 產品願景

Cluster4NPU UI 的目標是讓任何人(不需要寫程式)都能夠透過直覺的視覺化拖拽介面,設計並執行平行 AI 推論 Pipeline充分發揮 Kneron NPU Dongle 的硬體效能,並清楚看見平行處理帶來的效能提升。

一句話描述:「用拖拽的方式設計 AI Pipeline不需要一行程式碼就能讓多個 NPU Dongle 平行加速你的 AI 推論工作。」

1.2 目標用戶

主要用戶AI 應用整合工程師 / 系統整合商

  • 具備 AI 模型使用知識,但未必熟悉底層 NPU 程式設計
  • 需要快速驗證多模型串接 Pipeline 的效能
  • 希望在不修改程式碼的情況下調整 Pipeline 設定與硬體分配

次要用戶AI 研究員 / 技術評估人員

  • 需要比較不同 Pipeline 配置下的效能表現
  • 希望有可視化的數據佐證平行處理的效益(用於提案或報告)

潛在用戶Kneron 硬體銷售團隊

  • 需要 Demo 工具,向潛在客戶展示 Kneron NPU 的效能優勢

1.3 核心價值主張

  1. 無程式碼 Pipeline 設計:拖拽介面即可建立複雜多模型 AI Pipeline
  2. 平行效能可視化:清楚顯示平行 vs 循序處理的效能差異2x、3x、4x 加速)
  3. 硬體自動管理:自動偵測並最佳化 NPU Dongle 分配,降低使用門檻
  4. 專業監控工具:即時 FPS、延遲、吞吐量監控滿足工程師級的分析需求

2. 市場背景

2.1 問題陳述

隨著 Edge AI 應用普及,使用者面臨以下問題:

  1. 設定複雜:在多個 NPU Dongle 上執行平行 AI 推論需要撰寫大量底層程式碼
  2. 效能不透明:難以量化平行處理帶來的效能增益,缺乏說服力
  3. Pipeline 設計困難:多模型串接(如 偵測 → 追蹤 → 分類)需要手動處理資料流
  4. 硬體管理負擔:多個 NPU Dongle 的分配、監控、除錯缺乏統一工具

2.2 目標市場

  • 主要市場:使用 Kneron NPU 硬體KL520、KL720、KL1080的系統整合商與企業用戶
  • 市場範圍Edge AI 推論領域,偏向工業視覺、安全監控、智慧零售等應用場景
  • 地理範圍:目前以繁體中文、英文環境為主(台灣、亞太地區)

3. 用戶故事

以下用戶故事基於現有功能與規劃功能:

已實現的用戶故事:

  • As a system integrator, I want to design an AI inference pipeline by dragging and dropping nodes, so that I can build complex multi-model workflows without writing code.
  • As a developer, I want to see real-time pipeline validation errors, so that I can fix configuration issues before deployment.
  • As a user, I want to save my pipeline configuration to a file (.mflow), so that I can reuse and share it with teammates.
  • As an engineer, I want to see live FPS and latency metrics during inference, so that I can monitor pipeline performance in real time.
  • As a hardware manager, I want the application to automatically detect available NPU dongles, so that I don't need to manually configure device connections.
  • As a user, I want to load video files, camera streams, or images as pipeline inputs, so that I can test my pipeline with different data sources.

待開發的用戶故事:

  • As a user, I want to compare parallel vs sequential inference performance side by side, so that I can clearly see the speedup benefit of using multiple NPU dongles.
  • As an engineer, I want to run automated benchmarks with one click, so that I can measure performance without manual testing.
  • As a hardware manager, I want to visually assign NPU dongles to specific pipeline stages, so that I have fine-grained control over device allocation.
  • As a user, I want to see live performance graphs (FPS, latency over time), so that I can identify bottlenecks during pipeline execution.
  • As an engineer, I want to receive automated optimization suggestions, so that I can improve pipeline performance without deep NPU expertise.
  • As a sales engineer, I want to generate a performance report showing speedup metrics, so that I can present the ROI of parallel NPU processing to clients.

4. 功能需求

4.1 已完成功能(現有)

以下功能已在 v0.0.3 中實作完成(資料來源:健檢報告):

功能 描述 狀態
視覺化 Pipeline 編輯器 基於 NodeGraphQt 的拖拽節點介面 完成
5 種節點類型 Input / Preprocess / Model / Postprocess / Output 完成
Pipeline 即時驗證 即時 Stage 偵測與錯誤標示 完成
.mflow 檔案格式 Pipeline 儲存與載入JSON 格式) 完成
三面板 UI 佈局 左:節點面板、中:編輯器、右:設定與監控 完成
多 NPU Dongle 支援 KL520 / KL720 / KL1080 自動偵測 完成
多 Stage 推論引擎 基於多執行緒的平行 Pipeline 執行 完成
效能基礎監控 FPS、延遲即時顯示有已知 Bug 完成(有瑕疵)
多種輸入來源 相機USB、影片MP4/AVI/MOV、圖片JPG/PNG/BMP、RTSP 串流(基本) 完成
專案管理 登入畫面、最近專案清單、新增 / 載入 Pipeline 完成
YOLOv5 後處理 偵測結果格式化與邊界框處理 完成
ByteTrack 追蹤 物件追蹤後處理example_utils 完成
固件上傳支援 upload_fw 選項與推論流程整合 完成v0.0.2
PyInstaller 打包 獨立執行檔打包支援main.spec 完成

已知 Bugv0.0.2 記錄):

  • 節點屬性顯示問題
  • 輸出視覺化(含後處理結果)異常

4.2 待開發功能(依優先級)

Phase 1效能視覺化第 1-2 週優先級P0

功能 1平行 vs 循序效能比較

  • 描述:提供並行處理與循序處理的效能對照,視覺化顯示加速倍數(如 "3.2x FASTER"
  • 驗收標準
    • 可選擇「單裝置 / 多裝置」模式執行同一 Pipeline
    • 顯示兩種模式的 FPS 與延遲數值
    • 以視覺指標(進度條、倍數文字)呈現加速結果
    • 比較結果可在 UI 中保留供查閱
  • 優先級P0
  • 所屬 PhasePhase 1

功能 2自動化效能 Benchmark 系統PerformanceBenchmarker

  • 描述:一鍵啟動效能測試,自動執行單裝置與多裝置比較並記錄結果
  • 驗收標準
    • 提供「執行 Benchmark」按鈕
    • 自動完成測試並呈現結果圖表
    • 結果可歷史保存(追蹤效能變化)
    • 支援回歸測試(比較不同版本的效能)
  • 優先級P0
  • 所屬 PhasePhase 1

功能 3即時效能儀表板PerformanceDashboard

  • 描述:在推論執行期間顯示即時 FPS、延遲、吞吐量折線圖
  • 驗收標準
    • 以圖表形式顯示 FPS 隨時間變化
    • 以圖表形式顯示延遲分佈
    • 更新頻率 >= 1 Hz
    • 不影響推論效能CPU 使用率增加 < 5%
  • 優先級P0
  • 所屬 PhasePhase 1

Phase 2裝置管理第 3-4 週優先級P1

功能 4視覺化裝置管理面板DeviceManagementPanel

  • 描述:提供 NPU Dongle 狀態總覽,包含裝置健康度、型號、當前分配狀態
  • 驗收標準
    • 列出所有已偵測的 NPU Dongle 及其狀態(線上/離線/繁忙)
    • 顯示每個裝置的型號KL520/KL720/KL1080
    • 顯示每個裝置當前分配至哪個 Pipeline Stage
  • 優先級P1
  • 所屬 PhasePhase 2

功能 5手動裝置分配介面

  • 描述:允許用戶手動將特定 NPU Dongle 指定給特定 Pipeline Stage
  • 驗收標準
    • 可透過下拉選單或拖拽方式指定裝置
    • 指定後立即反映在 Pipeline 執行設定中
    • 無效的分配(如指定離線裝置)會有錯誤提示
  • 優先級P1
  • 所屬 PhasePhase 2

功能 6裝置效能分析DeviceManager 強化)

  • 描述:追蹤個別 NPU Dongle 的效能指標與歷史記錄
  • 驗收標準
    • 顯示每個裝置的推論吞吐量Inference/sec
    • 顯示裝置使用率百分比
    • 提供自動負載平衡建議
  • 優先級P1
  • 所屬 PhasePhase 2

功能 7瓶頸偵測與警告系統

  • 描述:自動識別 Pipeline 中的效能瓶頸並發出警告
  • 驗收標準
    • 當某 Stage 的佇列持續積壓時觸發警告
    • 在 UI 中以視覺提示標示瓶頸 Stage
    • 提供基本的改善建議(如增加裝置數量)
  • 優先級P1
  • 所屬 PhasePhase 2

Phase 3進階功能第 5-6 週優先級P2

功能 8自動化優化引擎OptimizationEngine

  • 描述:分析當前 Pipeline 配置,自動產生效能優化建議
  • 驗收標準
    • 分析 Stage 效能差異,建議最佳裝置分配方式
    • 識別不必要的前後處理步驟並提出建議
    • 建議以卡片形式呈現,用戶可選擇採納或忽略
  • 優先級P2
  • 所屬 PhasePhase 3

功能 9Pipeline 設定範本

  • 描述:提供常見使用情境的預設 Pipeline 範本(如 YOLOv5 偵測、物件追蹤)
  • 驗收標準
    • 提供至少 3 種常見範本
    • 範本可直接載入並修改
    • 現有 Pipeline 可儲存為自訂範本
  • 優先級P2
  • 所屬 PhasePhase 3

功能 10效能預測執行前估算

  • 描述:在執行 Pipeline 之前,根據硬體設定預估效能表現
  • 驗收標準
    • 顯示預估 FPS 與延遲範圍
    • 預估值與實際值誤差 <= 20%(基於歷史資料)
  • 優先級P2
  • 所屬 PhasePhase 3

Phase 4專業潤色第 7-8 週優先級P2

功能 11效能報告匯出

  • 描述:將 Benchmark 結果匯出為可分享的報告格式
  • 驗收標準
    • 支援匯出為 PDF 或 CSV
    • 報告包含Pipeline 設定、裝置配置、效能指標、加速倍數
  • 優先級P2
  • 所屬 PhasePhase 4

功能 12進階分析與趨勢圖

  • 描述:追蹤效能指標的歷史趨勢,識別長期的效能退化
  • 驗收標準
    • 顯示多次執行的效能趨勢圖
    • 支援篩選特定時間範圍
  • 優先級P2
  • 所屬 PhasePhase 4

5. 非功能需求

5.1 效能需求

  • UI 互動回應時間 < 200ms節點拖拽、屬性切換
  • Pipeline 即時驗證延遲 < 100ms
  • 效能儀表板更新不得對推論 FPS 造成超過 5% 的影響
  • 應用程式啟動時間(含硬體偵測)< 10 秒

5.2 相容性需求

  • 作業系統Windows 10/11主要Linux次要
  • Python 版本3.9 以上、3.12 以下
  • 硬體Kneron NPU DongleKL520、KL720、KL1080USB 3.0 連接
  • PyQt5 版本>= 5.15.11

5.3 可用性需求

  • 首次使用者應能在 5 分鐘內完成基本 Pipeline 設計(拖拽 5 個節點並連接)
  • 節點設定面板需防止水平滾動條出現(已在 v0.0.2 修正)
  • 所有錯誤訊息應具有可讀性,避免技術術語

5.4 可靠性需求

  • 重複執行推論不得出現錯誤(已在 v0.0.2 修正)
  • Pipeline 儲存(.mflow需能完整還原節點設定與連接關係
  • 應用程式異常關閉後,下次啟動應能顯示最近專案清單

5.5 可維護性需求

  • 新增節點類型需有對應的單元測試
  • 核心模組InferencePipeline、Multidongle需有 pytest 格式的測試覆蓋
  • 根目錄的 debug/cleanup 腳本應整理並移至 tools/tests/ 目錄

6. 成功指標

6.1 核心使用目標(依產品階段)

Phase 1 完成標準(效能視覺化):

  • 用戶可在 3 步以內啟動 Benchmark 並看到加速倍數比較結果
  • 儀表板更新流暢(無明顯卡頓)

Phase 2 完成標準(裝置管理):

  • 用戶可在不修改程式碼的情況下手動調整裝置分配
  • 瓶頸偵測正確識別率 > 80%(在測試情境下)

Phase 3 完成標準(進階功能):

  • OptimizationEngine 建議的裝置分配方案,實際效能提升 > 10%
  • 提供至少 3 種可直接使用的 Pipeline 範本

整體產品品質標準:

  • 已知 Bug節點屬性顯示、輸出視覺化全數修復
  • 完整的 pytest 測試覆蓋核心模組

6.2 使用者體驗指標

  • Pipeline 設計完成時間(目標:首次使用 < 5 分鐘,熟悉後 < 2 分鐘)
  • Benchmark 一鍵啟動到結果呈現(目標:< 30 秒完成)

7. 超出範圍

以下事項明確不在 v0.0.3 至 Phase 4 的開發範圍內:

  1. 雲端功能:無雲端儲存、遠端執行、或 SaaS 服務
  2. 非 Kneron 硬體支援:不支援其他廠商的 NPU如 Hailo、Coral
  3. 模型訓練本工具僅處理推論Inference不包含模型訓練功能
  4. 行動端 App僅為桌面應用Windows / Linux
  5. 多人協作:不支援多人同時編輯同一 Pipeline
  6. 付費 / 授權系統:目前無商業授權機制
  7. 自動語言切換 / 完整多語系:目前以英文 UI 為主,無正式多語系支援
  8. RTSP 串流完整支援RTSP 目前僅為基本支援,完整串流管理不在當前範圍

附錄

A. 版本歷史摘要

版本 日期 主要變更
v0.0.1 初始版本(確切日期不明)
v0.0.2 2025-07-31 自動資料清理、固件上傳支援、修復多次推論錯誤、FPS 修正
v0.0.3 進行中 YOLOv5 後處理改善、測試腳本整理developer 分支)

B. 相關文件

  • 健檢報告:C:\Users\sungs\Documents\abin\temp\cluster4npu\.autoflow\00-onboarding\health-check.md
  • 開發路線圖:C:\Users\sungs\Documents\abin\temp\cluster4npu\DEVELOPMENT_ROADMAP.md
  • 專案摘要:C:\Users\sungs\Documents\abin\temp\cluster4npu\PROJECT_SUMMARY.md
  • READMEC:\Users\sungs\Documents\abin\temp\cluster4npu\README.md

C. 技術限制說明

  • 本工具強依賴 Kneron KP SDKSDK 版本更新可能影響硬體相容性
  • NodeGraphQt 的視覺編輯器版本(>= 0.6.40)限制了某些 UI 客製化能力
  • Python 版本限制3.93.11)源自 PyQt5 與 Kneron SDK 的相容性需求