資料類型合約
一個 Neat 模型路徑有兩種合約:
- 公開合約:您的應用程式透過
Tensor、Sample、InputOptions、模型規格和圖形端點看到。 - 模型路徑合約:Neat 從編譯後的模型封存檔和選定的預處理/後處理路徑中解析。
不要假設每個公開邊界都是 FP32。有些邊界攜帶圖像、編碼媒體、封裝的檢測有效負載、INT8 張量、BF16 張量或應用程式定義的張量語義。首先檢查規格;規格就是合約。
在路徑內部,當編譯後的模型合約需要時,Neat 會插入量化、鑲嵌、類型轉換、取消鑲嵌、反量化和後處理階段。
四種 MLA 輸入案例
模型封存檔會告訴 Neat 關於第一個 MLA 階段的兩個重要資訊:
- MLA 輸入資料類型,通常為 BF16 或 INT8;
- MLA 側鑲嵌是否已包含在編譯後的內核中。
這產生了四個預處理圖形族:
| MLA 資料類型 | MLA 鑲嵌 | 預處理圖形族 | Neat 在 MLA 之前插入的內容 |
|---|---|---|---|
| BF16 | 是 | Preproc | 調整大小、色彩轉換、正規化。MLA 階段內部進行鑲嵌。 |
| BF16 | 否 | Tess | 調整大小、色彩轉換、正規化、鑲嵌。 |
| INT8 | 是 | Quant | 調整大小、色彩轉換、正規化、量化。MLA 階段內部進行鑲嵌。 |
| INT8 | 否 | QuantTess | 調整大小、色彩轉換、正規化、量化、鑲嵌。 |
檢查 ResolvedPreprocessPlan 以查看規劃器選擇了什麼。
鑲嵌的含義
鑲嵌將張量位元組排列成 MLA 輸入暫存區預期的圖塊幾何形狀。這是一種佈局轉換:相同的邏輯張量,但記憶體順序不同。
匹配的取消鑲嵌在 MLA 輸出之後發生,當路徑需要將自然張量佈局傳回到下一個階段或應用程式時。
邊界升級
Neat 可以在四種案例的資料類型決策之上添加更高層級的路徑階段:
- 通用預處理:使用
PreprocessOptions在推理之前應用調整大小、色彩、佈局、正規化、量化、鑲嵌或明確的轉換意圖。 - 框解碼:為需要檢測後處理階段的模型解碼檢測頭。應用程式使用
BoxDecodeType選擇族,例如YoloV8,以及過濾欄位,例如score_threshold、nms_iou_threshold和top_k。
這些升級會改變執行的內核以及應用程式接收到的輸出合約。例如,原始模型輸出張量和解碼後的檢測張量不是相同的公開合約。