AI 應用 / 分佈式系統
Hachimi Music Studio
分佈式音樂處理任務排程平台 — 轉錄、拆軌、樂譜識別、OCR 任務自動調度 GPU 運算。
使用的技術
Docker ComposePostgreSQLNode.js ExpressReact + ViteWebSocketCUDA GPU 排程
這是什麼項目
Hachimi Music Studio 是一個音樂處理任務排程平台: 用戶在網頁上提交任務(音樂轉錄 MIDI、音源分離/拆軌、樂譜識別、文檔 OCR 等), 排程器按照工作時間、GPU 顯存(VRAM)與積分規則自動調度,由 GPU 執行器實際運算, 完成後自動回傳結果。前端為 React + Vite 雙版本構建(公開用戶端 + 僅內網的管理端), 後端為 Node.js Express,資料庫 PostgreSQL 16,全部容器化於 Docker Compose。
雙機分工架構
互聯網用戶 → music.hachimi.qzz.io → NPM (SSL) → 常開機「大腦」
├─ scheduler_app (用戶端 / 管理端)
├─ scheduler_postgres (資料庫)
└─ output/ (用戶文件永久存放)
│ 內網 HTTP 通道:執行命令 + 文件中轉
▼
GPU 機「工人」(可彈性關機)
├─ host-executor (conda + CUDA)
└─ pandocr OCR為什麼需要「執行器橋接」?
Docker 容器是 Linux 環境,跑不了 Windows 的 .bat 腳本, 也無法直接使用宿主機的 conda/CUDA 環境。因此 GPU 任務由容器內的 taskRunner 攔截, 透過 HTTP 發給宿主機上的 host-executor(小型 Express 服務,帶 Token 驗證)實際執行, 輸入輸出文件經上傳/下載端點中轉。執行器絕不對公網暴露。
七種任務類型
| A | 音樂轉錄 MIDI(muscriptor + CUDA) |
| B | 音源分離/拆軌(roformer + CUDA) |
| C | 紙面/PDF 樂譜識別(homr) |
| H | 實書掃描(人工任務) |
| I | 人工修軌(人工任務) |
| J | 人工 OCR 編輯(人工任務) |
| P | 文檔解析(pandocr 容器群) |
離線容忍設計
排程器定期健康檢查 GPU 執行器與 OCR 服務。GPU 主機關機時,依賴它的任務留在隊列排隊,不失敗、不扣重試,前端顯示「GPU 主機離線」橫幅; 主機開機後自動發現,積壓任務按 VRAM 規則自動開跑。這讓昂貴的 GPU 機可以彈性開關。
對外訪問鏈路
music.hachimi.qzz.io → Cloudflare DNS → 公網 → 路由器轉發 Web 端口 → NPM (Let's Encrypt SSL, 自動續期) → Proxy Host → scheduler_app(開 Websockets Support) 管理端不對外,僅限內網訪問
📦 相關文章
這個項目從 Windows 測試機搬遷到 Linux VM 的完整過程(PVE 磁碟直通、分區整理、Docker 遷移要點)寫在另一篇:《拔碟搬家實戰 — PVE 直通硬碟與專案跨平台遷移》