59 lines
2.3 KiB
Markdown
59 lines
2.3 KiB
Markdown
# Kneron Toolchain Convert Orchestrator
|
||
|
||
本專案實作「Crash 即 Reset」的 Kneron Toolchain 轉換流程:
|
||
ONNX → BIE → NEF。系統以 Scheduler 為控制面,搭配 Worker Pool 與 MinIO 交換產物。
|
||
架構以 docs/Design.md 為準。
|
||
|
||
## 核心設計(Crash Reset)
|
||
- Redis 與 Queue 都是易失性,重啟即清空。
|
||
- Scheduler / Worker 不做任務復原。
|
||
- Crash 後需重新送出任務。
|
||
|
||
## 元件(目標架構)
|
||
- Web UI:上傳 model/quant、查狀態、下載結果。
|
||
- Task Scheduler:建立 job、更新狀態、派發任務、接收完成事件。
|
||
- Worker Pools:ONNX / BIE / NEF Worker,無狀態、pull-based。
|
||
- Redis:暫存 job 狀態(不保證持久)。
|
||
- Queue:任務/完成事件(不保證持久)。
|
||
- MinIO:跨 Worker 的 input/output/log 存放。
|
||
|
||
## Job 流程
|
||
1) UI 建立 job,並上傳 input 到 MinIO
|
||
2) Scheduler 推入 queue:onnx
|
||
3) ONNX Worker 執行完成
|
||
4) Scheduler 推入 queue:bie
|
||
5) BIE Worker 執行完成
|
||
6) Scheduler 推入 queue:nef
|
||
7) NEF Worker 執行完成
|
||
8) Scheduler 標記 COMPLETED
|
||
|
||
## 非目標
|
||
- 不做任務持久化
|
||
- 不做 crash 後 resume
|
||
- 不做 exactly-once / at-least-once 保證
|
||
- 不做 Scheduler HA
|
||
- 不做自動 retry
|
||
|
||
## 備註
|
||
- docs/Design.md 為唯一真實設計文件。
|
||
- apps/ 與 infra 為實作中的目錄,後續可能變動。
|
||
- ktc 有本地 patch 紀錄,見 docs/KTC_PATCHES.md(若 ktc 更新需重新套用並測試)。
|
||
|
||
## 目錄結構(概要)
|
||
```
|
||
.
|
||
├── apps/ # 前端與 Scheduler(實作中)
|
||
├── infra/ # 基礎設施相關(實作中)
|
||
├── services/ # Worker 服務(ONNX/BIE/NEF)
|
||
├── ktc/ # Kneron Toolchain Python API 封裝
|
||
├── vendor/ # 上游/第三方模組(sys_flow, sys_flow_v2 等)
|
||
├── toolchain/ # 本地 toolchain/prebuild 與相關資源
|
||
├── libs/ # toolchain v1 相關資源(來源快照)
|
||
├── libs_V2/ # toolchain v2 相關資源(來源快照)
|
||
├── scripts/ # toolchain scripts / res / config
|
||
├── tests/ # 測試
|
||
├── docs/ # 設計文件
|
||
│ └── Design.md
|
||
└── requirements.txt # Python 依賴
|
||
```
|