部署:註冊、預測、服務、匯出(P6)¶
訓練好的模型有四種用法:
- 直接用 CLI 預測
- 開 REST API 給程式呼叫
- 變成 MCP 工具給其他 AI 呼叫
- 匯出到別的地方使用
1. 註冊成模型¶
autoforge model register <run_id> --name churn --description "客戶流失機率"
autoforge model list
autoforge model info churn # churn = 最新版本;也可以寫 churn:v1
- 每次註冊會產生新版本(v1、v2…)。
- 模型會連同訓練它的程式碼一起保存:每次訓練開始時,會把方法包的程式碼複製進這次訓練的資料夾,註冊時再一併複製。之後就算方法包升級,舊模型的預測結果也不會改變。
- 模型卡(
card.json)記錄: - 來源訓練、方法、參數、指標
- 輸入欄位和型別,類別欄位會附上訓練時出現過的值
- 分類模型會附上可能的預測結果(labels)
- 訓練資料標記為 sensitive 時,模型卡不會記錄類別欄位出現過的值和 labels,避免資料內容外流。
- 只有成功的訓練能註冊。方法有提供預測程式(predictor)時,模型才能用來預測。
2. 預測¶
autoforge model predict churn --rows '[{"tenure_months": 2, "monthly_fee": 110, "contract": "month-to-month", "support_calls": 5}]'
autoforge model predict churn --file new_customers.csv
{"model": "churn:v1", "predictions": [{"prediction": 1, "probabilities": {"0": 0.025, "1": 0.975}}], "warnings": []}
送進來的每一列都會先檢查:
| 情況 | 處理方式 |
|---|---|
| 缺少欄位 | 回傳 INVALID_INPUT 錯誤,並列出所有需要的欄位 |
| 數字欄位不是數字 | 回傳 INVALID_INPUT 錯誤 |
| 類別值在訓練時沒出現過 | 照樣預測,但附上警告 |
| 多送了模型不認得的欄位 | 照樣預測,但附上警告 |
3. REST API¶
autoforge serve # 所有模型,http://127.0.0.1:8000
autoforge serve -m churn -p 9000 # 只開放 churn
MY_KEY=… autoforge serve --host 0.0.0.0 --api-key-env MY_KEY # 開放給其他機器,需要 API key
| 方法 | 路徑 | 說明 |
|---|---|---|
| GET | /health |
健康檢查 |
| GET | /v1/models |
模型清單 |
| GET | /v1/models/{name} |
模型卡 |
| POST | /v1/models/{name}/predict |
傳入 {"rows": [...]},回傳 {"ok": true, "data": {"predictions": [...]}} |
curl -s localhost:8000/v1/models/churn/predict -H 'content-type: application/json' \
-d '{"rows":[{"tenure_months":2,"monthly_fee":110,"contract":"month-to-month","support_calls":5}]}'
- 預設只綁定 127.0.0.1,同一台電腦以外連不進來。
- 綁定其他網路介面又沒設 API key 時,啟動會顯示警告。
- 錯誤格式和 CLI、MCP 一樣,HTTP 狀態碼:404(找不到模型)、422(輸入錯誤)、401(API key 錯誤)。
4. 讓其他 AI 呼叫模型(MCP)¶
autoforge serve-mcp # 所有可預測的模型
autoforge serve-mcp -m churn # 只開放 churn
- 每個模型會變成一個工具
predict_<模型名稱>。 - 工具的輸入格式由模型卡自動產生:欄位名稱、型別、類別值。
- 工具說明會寫明模型預測什麼、可能的結果,以及驗證分數。
- 這個伺服器只能預測,沒有訓練、讀資料或安裝方法包的功能,適合交給只需要「使用」模型的 AI。
Claude Desktop 的設定:
{
"mcpServers": {
"my-models": { "command": "/完整路徑/autoforge", "args": ["serve-mcp"] }
}
}
Claude Code 的設定:
claude mcp add my-models -- autoforge serve-mcp
之後直接問 AI,例如「這位客戶會不會流失:簽約 2 個月、月費 110、月繳、客服來電 5 次」,AI 就會呼叫 predict_churn。
主要的 autoforge mcp 伺服器也有 model_register、model_predict、model_info、model_list、model_export,所以 AI 訓練完可以直接註冊模型並試著預測。
5. 匯出與匯入¶
autoforge model export churn # bundle:zip(模型 + 程式碼 + 模型卡)
autoforge model export churn --format onnx # ONNX(需要 pip install "autoforge-trainer[onnx]")
autoforge model import churn-v1.zip --name churn # 在另一台電腦匯入,成為新版本
- 匯出結果會附上 SHA-256,可以用來確認檔案完整。
- 匯入時會檢查 zip 裡的路徑,拒絕會寫到目標資料夾外面的檔案(zip slip)。
tabular-classic0.3.0 可以匯出 ONNX。測試中確認過,ONNX 的預測結果和 sklearn 完全一致。
方法包作者:預測與匯出介面¶
在 recipe 裡宣告:
predictor: trainers/my_trainer.py # 必須定義 load_model(model_dir) 和 predict(model, rows)
exporters:
onnx: trainers/my_trainer.py:export_onnx # export_onnx(model_dir, out_path, features) -> path
predict收到[{欄位: 值}],回傳每一列的{"prediction": …, "probabilities": {…}},數值要轉成 JSON 可序列化的型別。- AI 自己寫的訓練程式只要也定義了
load_model和predict,註冊後一樣能用來預測。