GitHub Repo
Npunlock 驗證 Intel NPU 自訂 C 核心,同圖執行獨立混合精度分支
專案沿用 Intel 驅動編譯計算圖,再替換 SHAVE 核心,讓自訂 C 程式接入 NPU。新測試涵蓋兩種精度的獨立分支,尚未支援任意混合精度管線。

開源專案 Npunlock 在 9 月 23 日公開的進展中,於同一張 Intel NPU 原生計算圖內,執行彼此獨立的 FP32 單輸入與 FP16 雙輸入自訂分支。作者提供可執行範例,並記錄兩個分支均符合主機端參考結果。這項更新擴大了自訂核心的組合方式,但尚未證明不同精度串接成管線也能運作。[實驗紀錄](https://github.com/hsfzxjy/npunlock/blob/master/wiki/REVERSE_ENGINEERING.md)
其方法是讓既有 Intel 驅動先完成計算圖編譯:以編譯器認得的運算子暫代自訂節點,取得張量配置、排程、資料搬移與同步結構;另一條流程則用 MoviTools 將 C 原始碼編成 SHAVE 機器碼。工具核對呼叫介面與張量條件後,替換指定運算的程式碼,同時保留周邊執行結構。它使用 OpenVINO 格式的中介表示,但執行時不要求安裝 OpenVINO 套件。[架構說明](https://github.com/hsfzxjy/npunlock/blob/master/wiki/HOW_NPUNLOCK_WORKS.md)
混合精度範例也揭露編譯器重排的影響:原生圖中的分支順序與前端遍歷順序不同,自動對應因而拒絕處理。作者先編譯檢查,再依輸入數量與元素寬度指定目標,才成功安裝兩個核心。另一個相連的精度轉換實驗,則因輸入、輸出位元組範圍不同而遭驗證器拒絕。這些負面結果界定了目前可重現的範圍。[驗證細節](https://github.com/hsfzxjy/npunlock/blob/master/wiki/REVERSE_ENGINEERING.md)
作者在 Hacker News 說明,預期用途包括補上少見神經網路運算子、提供精度敏感運算,以及將多個小核心融合以減少呼叫。這些方向具有端側推論價值,但融合能否提高效能仍屬待驗證假設,目前材料未提供完整模型的吞吐量或功耗比較。[作者討論](https://news.ycombinator.com/item?id=49800513)
部署限制相當具體:已驗證環境僅有 Windows x64 與 Meteor Lake 的 NPU3720,支援集中在靜態形狀和已知張量配置;Linux、新世代 NPU 與任意計算圖仍待測試。專案採 Apache-2.0,但外部 MoviTools 是專有依賴,須另從舊版驅動封裝擷取;專案要求只取工具鏈,不要安裝或降級到該驅動。工程師下一步應固定驅動版本、逐核心比對主機結果,再量測資料搬移與整體延遲,避免把成功載入計算圖當成數值正確的證明。[專案文件](https://github.com/hsfzxjy/npunlock)