在租用遠端 Mac上做離線批推理,常見矛盾是:既要統一入口與稽核,又要避免並發頂滿記憶體導致整機假死。本文給出OpenClaw 閘道與本機 Ollama的分工、可複現安裝清單、佇列腳本骨架、並發封頂與指數退避重試。延伸閱讀:OpenClaw Docker 與加固、跨區批處理選型。免登入入口:首頁、定價、購買、說明中心。
本文解決什麼問題
把控制面(誰可呼叫、走哪條鏈路)與資料面(模型載入與產生)拆開:閘道負責鑑權、路由與觀測;模型行程只接受受控轉發,批任務由佇列腳本以有限並發推進,失敗時降級而不是無限重試。
三類痛點(編號)
- 路由混亂:公網直暴露產生埠,難以輪換金鑰與限流,稽核缺口大。
- 並發失控:多路平行觸發統一記憶體壓縮,推理延遲尖刺連帶拖垮閘道健康檢查。
- 重試風暴:腳本層見錯即重試,五○三與逾時在高峰疊加,磁碟與日誌暴漲。
API 路由方案對比(決策矩陣)
下表用於選型:團隊已有 OpenClaw 工作流優先第一行;純離線腳本且無需稽核可走第三行。
| 方案 | 適用 | 路由方式 | 並發建議 | 風險 |
|---|---|---|---|---|
| OpenClaw 前置 | 要與 Agent、批任務編排共用入口 | 外網只到閘道;內網轉發到本機模型埠 | 與閘道工作執行緒取小;推理側一至二路起測 | 閘道升級窗口需維護停機順序 |
| 反代加權杖 | 僅需 HTTPS 與簡單限流 | 反代路徑對應到產生介面 | 依連線數與本文大小雙限 | 需自行做請求體稽核與配額 |
| 本機回環直調 | 單使用者 SSH 工作階段內批跑 | 僅本機介面,不經公網 | 單行程串列最穩,必要時二路 | 無集中鑑權,誤配易擴大暴露面 |
OpenClaw 閘道與本機 Ollama 安裝要點(清單)
- 閘道:參考站內 Docker 與加固文,確認控制埠與健康探針;生產環境綁定與權杖策略依官方安全章節執行。
- 模型服務:以官方安裝套件或套件管理器安裝 Ollama,首次拉模選擇與工作集匹配的體量;預設監聽建議維持本機可達即可。
- 銜接:在閘道或反代層設定上游位址為模型服務基底,路徑與相容標頭與用戶端函式庫一致,避免雙寫鑑權標頭。
- 遠端工作階段:長時任務搭配 SSH 穩定連線,斷線重連不丟佇列靠磁碟狀態檔。
佇列腳本、並發上限與降級重試(骨架)
思路:pending 目錄放待處理,done 與 failed 分流;消費端用有限平行(如 xargs -P2 或自建號誌);失敗依 2^n 秒退避,超過最大次數記入死信並人工複核。
#!/usr/bin/env bash
set -euo pipefail
QDIR="${1:?queue dir}"
MAX_JOBS="${2:-2}"
OLLAMA_URL="${OLLAMA_URL:-http://127.0.0.1:11434}"
export OLLAMA_NUM_PARALLEL="${OLLAMA_NUM_PARALLEL:-2}"
run_one() {
local f="$1" n=0 max=5
until curl -fsS --max-time 600 "$OLLAMA_URL/api/generate" \
-H "Content-Type: application/json" \
-d @"$f" -o "${f%.json}.out.json"; do
n=$((n+1)); [[ "$n" -ge "$max" ]] && { mv "$f" "$QDIR/failed/"; return 1; }
sleep $((2**n + RANDOM % 3))
done
mv "$f" "$QDIR/done/"
}
export -f run_one
find "$QDIR/pending" -name '*.json' -print0 | xargs -0 -P"$MAX_JOBS" -I{} bash -c 'run_one "{}"'
資源限額:在 launchd 或包裝腳本裡設定活動記憶體上限與開啟檔案數;推理側以環境變數限制平行與最大上下文,批任務輸出目錄放到獨立卷,系統碟保留至少百分之十五可用空間。
可複現落地步驟(不少於五步)
- SSH 登入遠端機,完成閘道與模型服務安裝自檢,確認健康介面回傳正常。
- 將模型服務綁定在回環或內網位址,閘道或反代僅轉發允許的路徑與方法。
- 設定平行與環境變數封頂,用單條樣本壓測觀察記憶體曲線再定批大小。
- 部署佇列目錄結構,先用串列驗證正確性,再打開有限平行。
- 開啟指數退避與最大重試,失敗樣本進死信目錄並打標籤。
- 將日誌與產物路徑納入備份或物件儲存策略,避免磁碟寫滿拖垮服務。
可引用資訊(不少於三條)
- 平行起步:16GB 統一記憶體機型上,生產批推理常從一至二路平行起測,再依延遲分位階梯調整。
- 退避:重試間隔建議二的冪次秒加抖動,避免多機同相位放大高峰。
- 磁碟:輸出與暫存與系統分割區分離;合併寫高峰前預留百分之二十以上餘量較穩。
- 觀測:同時盯閘道延遲、模型行程常駐集與交換用量,任一持續抬升先降並發而非加路數。
常見問題(FAQ)
- 批推理一定要經過 OpenClaw 閘道嗎?
- 不強制。僅需本機腳本時可直接回環呼叫;要與 Agent、統一鑑權或稽核串接時,閘道前置較清晰。
- 並發上限設多少比較穩?
- 以記憶體與模型體積為硬約束,從低平行起測;觀察活動監視器與交換後再上調,忌一步到位拉滿。
- 降級具體指什麼?
- 例如縮短上下文、換更小參數量模型、或把任務拆成更短片段;與無限重試相比更能保護整機穩定性。