PYNQ 視覺運算子部署
目標是讓軟體陣列、硬體介面與驗證結果相互對應。先確定使用者要完成的是新運算子部署、既有故障定位還是效能最佳化,沿用已有授權和工程狀態;不要把每種任務都擴成完整重訓練或重構。
最小輸入
需要演算法/預處理、至少一組黃金輸入輸出、bit/HWH 或 HLS 頂層、實際板卡與 PYNQ 環境。缺少某項時先做已有資料能支援的離線檢查,指出哪項結論仍依賴缺失資料。
讀取 遷移說明,填寫 張量契約。範例是通用灰階張量,不是可直接載入到任意板卡的硬體組態。新模型必須重新確定 shape、dtype、layout、顏色、縮放/填充、量化尺度、捨入、飽和、輸出解碼和傳輸位元組數。打包 INT4 等位元級格式需另寫 packing 規則,現有契約檢查器只接收未打包數字陣列。
選擇驗證路徑
- 首次接線:契約檢查 → 固定輸入整數參考 → 單幀 PL 原始輸出 → 連續幀 → 應用精度 → 分段計時。
- 結果不一致:逐級儲存預處理、量化節點及 PL 原始張量,定位第一個出現差異的位置;先不要修改後處理閾值掩蓋前級錯誤。
- 吞吐或延遲異常:固定輸入條件,記錄同一時脈域下的幀號及時間戳;用 計時腳本 區分排隊、PL/DMA 與後處理。
- 更換板卡:重新識別 DMA、位址寬度、快取一致性、時脈復位及中斷;保留黃金參考和比對方法。
可複製的完整提示詞見 工作流,只讀取目前任務對應一項。
硬體與緩衝
先區分標準 AXI DMA 和自訂 HLS IODMA。標準簡單模式可參考 配接範本;自訂介面必須按暫存器和固定長度/TLAST 契約實現。不要將 Python API 名稱當作硬體協定。
連續緩衝需要明確所有權:CPU 寫入後同步到裝置;硬體完成且不再存取後,再同步到 CPU。異常時保留在途緩衝,不在 finally 中無條件 free。細節見 DMA 生命週期。
HWH 是介面描述,不證明磁碟 bit 已經載入。綁定已載入硬體時,核對載入身份、位址和參考輸出。LCD 與推理共用 PL 時,不能透過依次載入兩個完整 Overlay 獲得組合硬體。
驗證與最佳化
整數硬體原始輸出原則上逐元素精確一致;浮點演算法使用事先規定的絕對容差,記錄 dtype 與非有限值。使用 比對腳本,不能用放大容差替代介面修復。量化模型準確度與實現一致性分別評價。
同時檢查 LUT、Slice、FF、BRAM、DSP、時序與流反壓。FIFO 對照固定權重、輸入、頻率與並行度;模型改變後的結果另列。吞吐按有效完成幀數除真實量測視窗,延遲按同一幀兩端時間計算,不相加各階段中位數。
交付契約、原始輸出、來源碼/bit/HWH 身份、檢查結果及量測範圍。常見錯誤與方法失效條件見 排錯清單。專案效果與可遷移邊界見 驗證說明。