在跨區租用 Mac mini M4上跑 Core ML,mlmodelc 批量編譯、批推理工作階段與統一記憶體、NVMe I/O 會同時施壓。下文以對照表收斂並發編譯、批次 B、佇列逾時與日租/月租成本提示(定性),並附可執行指令占位。算力與節點讀法請對齊《跨區算力選型:ProRes 與記憶體決策》;延伸《MPS/MLX 批推理矩陣》的雙重逾時與《DLQ 摘要》。公開頁免登入:首頁、購買、方案、說明中心。
前提:ANE 驗證、mlmodelc、批推理
ANE 與精度行為仍以實機驗證最快;資料面與控制面請與目標區域對齊,避免長 RTT 吃掉互動 SLA。持續整合路徑上,建議以 coremlcompiler 產出 mlmodelc,並以鎖或全域佇列避免多租戶彼此踩編譯峰值;執行期則以 MLModel 搭配批次維度 B 調節延遲與吞吐。統一記憶體上,編譯與推理不宜無上限疊加,否則互動任務易被擠壓。若同節點還跑 Ollama、轉檔或其他 GPU/ANE 工作,請預留配額並參考《跨區延遲與買租成本》評估節點檔位與租期。
決策對照表(並發編譯、批次、I/O、外接碟、佇列逾時、成本提示)
下列為出發點;實際請依模型體積、輸入解析度、macOS 版本與工具鏈再掃參。符號:Wq 為佇列等待逾時,Wc 為單次推理計算逾時。
| 情境輪廓 | 並發編譯數 | 批次(B) | I/O(內建 NVMe) | 外接碟 | 佇列逾時(Wq/Wc) | 日租/月租成本提示(定性) |
|---|---|---|---|---|---|---|
夜間 CI mlmodelc 產線 |
16GB:1(+淺佇列)/24GB:1~2(信號量) | 推理 B 之外,以編譯佇列深度為槓桿 | 順序寫入、中繼檔;同時 >2 易競爭 | 輸出、日誌改外接暫存 | Wq 短/Wc≈p95×2+α | 日租較符合尖峰編譯 |
| 線上批推理(模型已暖機) | 0~1(僅部署後短窗) | 中~大;ANE/GPU 依模型剖析而定 | 讀取與預取;批次間保留暖機 | 可選;大型快取可掛外接唯讀 | Wq 中/Wc 含暖機餘裕 | 月租固定較易攤提 |
| 多租戶共用節點 | ≤1(建議全域鎖) | 租戶別小批次+並發上限 | I/O 公平排程 | 租戶別 scratch 目錄 | Wq 長+降級/Wc 對齊 SLA | 分拆時月費中~高;隔離後有時更省 |
可執行指令與參數占位
請將占位符替換為實際路徑、最低系統版本與鎖定的工具鏈版本;在 CI 中一併寫入 artifact 摘要與雜湊以便回溯。
編譯範例(輸出 macOS 用 mlmodelc)
xcrun coremlcompiler compile \
"<PATH_INPUT.mlpackage|PATH_INPUT.mlmodel>" \
"<PATH_OUTPUT_DIR>" \
--platform macos \
--deployment-target "<MACOS_MIN_VERSION>"
以 pip 釘選 coremltools 版本(占位)
python3 -m pip install "coremltools==VER_PLACEHOLDER"
執行期若以 MLModelConfiguration 調整 compute units,建議僅在預備環境比對 ANE/GPU/CPU 行為,再凍結設定上線。細節請以 Apple 官方文件為準。
佇列逾時與降級
請將網路/API 等待與裝置上計算分開計時:遠端 SSH 或閘道轉發會吃掉 Wq 預算,若與計算混欄容易誤判逾時。降級順序可採縮小 B → 改走較小模型或子圖 → 部分結果搭配死信再試;與《DLQ 與摘要 Webhook》併用時,請為重試設有界次數與抖動。多區部署時,資料盡量節點本機化,控制面再跨區,可降低 RTT 對佇列配置的干擾。
常見問題
是否應把 mlmodelc 納入 Git? 多數團隊改以構件庫或物件儲存保存,儲存庫保留規格、版本與雜湊即可。
只有 CLI 是否足夠? 需 Xcode CLT 與對應 coremlcompiler;映像與權限請見 說明中心。