依 autoflow-agent workspace v2 設計把 PRD / 設計 / 架構 / 交付類 共享文件從個人層 .autoflow/(ignored)搬到 docs/autoflow/(進 git), 讓團隊可共享產品與架構文件,個人層只留 progress / review / testing 等 per-branch 筆記。 - 02-prd/ 21 個檔(PRD、features、market-analysis 等) - 03-design/ 18 個檔(design-spec、wireframes、flows 等) - 04-architecture/ 31 個檔(TDD、design-doc、ADR×14、API 規格等) - 07-delivery/ 3 個檔(project-summary、phase-0.6-handover、stage-deployment-setup) 合計 73 檔。原檔已從 .autoflow/ 移除(migration 工具執行 git mv, 但因 .autoflow/ 在 .gitignore 中、git 將此操作視為新增、無 rename history)。
103 lines
3.0 KiB
Markdown
103 lines
3.0 KiB
Markdown
# Feature:叢集推論(P1)
|
||
|
||
> 父文件:[PRD.md](../PRD.md) | 對應 User Stories:US-16、US-17
|
||
>
|
||
> **Phase 0 不實作**。Phase 0 只留模組目錄(`internal/cluster/`),從 POC 搬過來但不接入 API。Phase 1 正式產品化。
|
||
|
||
---
|
||
|
||
## 概述
|
||
|
||
叢集推論是 edge-ai-platform POC 驗證過的功能:把多台 Kneron 裝置組成叢集,按**加權 Round-Robin** 分派推論任務。
|
||
|
||
這是 visionA Cloud 相對於 local-tool 的**核心差異化功能**。
|
||
|
||
---
|
||
|
||
## 使用者行為(Phase 1)
|
||
|
||
### 叢集列表頁(`/clusters`)
|
||
|
||
- 使用者能看到自己建立的叢集
|
||
- 每個叢集顯示:名稱、裝置數、活躍狀態、最近推論量
|
||
- 能建立新叢集、刪除叢集、編輯叢集
|
||
|
||
### 建立叢集流程
|
||
|
||
1. 點「新建叢集」
|
||
2. 輸入叢集名稱
|
||
3. 從已配對裝置挑選 2+ 台裝置加入
|
||
4. 為每台裝置設權重(1-10)
|
||
5. 確認建立
|
||
|
||
### 叢集推論操作
|
||
|
||
- 進入某叢集的 workspace:`/clusters/[id]/workspace`
|
||
- 選模型(必須叢集內所有裝置都相容)
|
||
- 選來源(Camera / Image / Video / Batch)
|
||
- 啟動後,dispatcher 按加權 RR 分派任務到各裝置
|
||
- UI 顯示:
|
||
- 每台裝置的即時負載(%)
|
||
- 每台裝置的推論 FPS
|
||
- 整體吞吐量
|
||
- Bounding box overlay 仍然顯示(但標注是哪台裝置推論的)
|
||
|
||
### 故障降級
|
||
|
||
- 某台裝置 tunnel 斷線 → 自動從 dispatcher 移除
|
||
- 叢集內剩餘裝置繼續服務
|
||
- 裝置重新上線 → 自動回加入叢集
|
||
|
||
---
|
||
|
||
## 技術細節(從 POC 搬)
|
||
|
||
從 POC `cluster/` 模組搬:
|
||
|
||
- `Dispatcher`:加權 RR 邏輯
|
||
- `Manager`:叢集 CRUD
|
||
- `Pipeline`:單幀 `RunInference` 或連續 `StartContinuous`
|
||
|
||
**要做的產品化改造**:
|
||
|
||
- 加 user_id 隔離(POC 只有一個用戶)
|
||
- 叢集 metadata 存 DB(Phase 1 接 DB 後)
|
||
- MaxClusterSize 可配置
|
||
- 健康度監控與告警
|
||
|
||
---
|
||
|
||
## 驗收條件(Phase 1,不在 Phase 0 範圍)
|
||
|
||
- [ ] 能建立、編輯、刪除叢集
|
||
- [ ] 叢集內至少能加 5 台裝置(上限可配置)
|
||
- [ ] 加權 RR 分派正確(實測權重 3:1 的裝置,流量比約 3:1)
|
||
- [ ] 某裝置離線時,叢集自動降級,剩餘裝置繼續服務
|
||
- [ ] 裝置重新上線自動加回
|
||
- [ ] 每台裝置的即時負載 UI 更新
|
||
- [ ] 不同使用者的叢集互相隔離
|
||
|
||
---
|
||
|
||
## Phase 0 要做的準備
|
||
|
||
- [ ] `internal/cluster/` 模組從 POC 搬到 visionA-backend,但**不接入 API handlers**
|
||
- [ ] Phase 0 的前端 `/clusters` 頁面:可留空白或顯示「即將推出」
|
||
- [ ] 介面層面預留:API Server router 保留 `/api/clusters/...` 路徑的預定義,先回 501 Not Implemented
|
||
|
||
---
|
||
|
||
## Phase 2 的 TODO
|
||
|
||
- **TODO 1**:跨使用者的叢集共享(多租戶團隊功能)
|
||
- **TODO 2**:動態權重調整(根據實測效能自動調)
|
||
- **TODO 3**:叢集級別的 Model A/B Testing
|
||
- **TODO 4**:叢集級別的 fallback policy(不只 RR,還能 failover)
|
||
|
||
---
|
||
|
||
## 連結
|
||
|
||
- 回:[PRD 索引](../PRD.md)
|
||
- 相關:[推論操作](feature-inference.md)
|