feat(worker): platform/operator pre-check(不支援 op 早期失敗) #4

Merged
jim800121 merged 1 commits from feat/platform-precheck into main 2026-07-02 18:51:27 +00:00
Collaborator

轉檔早期用 Kneron IP Evaluator 偵測 op@platform 不支援(如 Softmax@520)、快速失敗回清楚訊息、免白跑到 nef 撞 C++ backtrace。onnx 階段 pre-check + 既有 evaluate 共用一次呼叫。17 tests pass。fail-open 不誤擋。follow-up:docker 環境補 integration smoke。

轉檔早期用 Kneron IP Evaluator 偵測 op@platform 不支援(如 Softmax@520)、快速失敗回清楚訊息、免白跑到 nef 撞 C++ backtrace。onnx 階段 pre-check + 既有 evaluate 共用一次呼叫。17 tests pass。fail-open 不誤擋。follow-up:docker 環境補 integration smoke。
jim800121 added 1 commit 2026-07-02 18:51:25 +00:00
轉檔時若 op 在目標 platform 不支援(如 Softmax@520),原本會白跑完 onnx+bie
兩階段、最後在 nef 的 batch_compile 拋難懂的 C++ backtrace(undefined CPU op)。
本次在 onnx 階段(拿到 out.onnx 後、進 bie 前)用 Kneron IP Evaluator
(ktc ModelConfig.evaluate / ip_evaluator mode 0 會跑 compiler frontend)
早期偵測不支援 op,快速失敗並回清楚訊息。

- 新增 services/backends/precheck.py:run_precheck 掃 evaluate 的不支援訊號
  (HardwareNotSupport / UnimplementedFeature / undefined CPU op / EmptyNode)
  抽出 op 名、raise UnsupportedOperatorError;錯誤走既有 _push_done(fail) 回報
- services/workers/onnx/core.py:enable_precheck default-on;pre-check 與既有
  evaluate 共用同一次 evaluate() 呼叫(避免跑兩次 compiler frontend)
- error 訊息:「platform 520 不支援 operator Softmax,請改用支援的 platform
  (如 720/730)或將該 operator 移至 host 端後處理。」
- fail-open:只有明確訊號才擋、evaluate 環境問題無訊號則放行(不誤擋能跑的模型)
- 17 tests pass(含多 op / dedup)

follow-up(部署後、需 docker toolchain 環境):integration smoke 真觸發
Softmax@520 確認 onnx 階段就擋;依實測 frontend 耗時評估是否收窄 default-on 粒度。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
jim800121 merged commit cf4426bd6c into main 2026-07-02 18:51:27 +00:00
jim800121 deleted branch feat/platform-precheck 2026-07-02 18:51:28 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: warrenchen/kneron_model_converter#4
No description provided.