Chuyển đến nội dung chính

第 22 課:使用 FastAPI + Docker 進行模型服務

打包模型、建立推理 API、對模型進行版本控制並部署緊湊的 ML 服務。

🧠 人工智慧與機器學習 — 第 21 課 第 22 課:使用 FastAPI + Docker 進行模型服務

機器學習:從基礎到高級

第 4 部分:生產、可解釋性和頂點

亞洲開發網

簡介

訓練模型但未投入使用後,該值仍保留在筆記本中。本文可協助您使用 FastAPI 和 Docker 將模型打包成簡單的服務,足以用於內部演示或作為實際部署的基礎。

課程目標

  • 正確序列化模型。
  • 建立一個接收輸入並傳回預測的 API。
  • 使用 Docker 打包服務。

所需的最低輸出

  • 儲存的模型文件,例如使用 joblib。
  • 檔案應用程式FastAPI。
  • 文件要求或同等文件。
  • Dockerfile 穩定運行服務。

提議的程序

  1. 訓練模型並儲存工件。
  2. 定義輸入或輸出模式。
  3. 寫入終點/預測。
  4. 根據樣品請求進行本地測試。
  5. 使用 Docker 進行容器化。

FastAPI框架程式碼

從 fastapi 匯入 FastAPI
從 pydantic 匯入 BaseModel
導入作業庫
將 pandas 導入為 pd

進入真實環境時要考慮的事情

  • 在適當的層級記錄請求和回應。
  • 管理模型版本。
  • 更仔細地驗證輸入。
  • 逾時、重試和監控。

常見錯誤

  • 儲存模型但忘記預處理管道。
  • API 架構與訓練資料不符。
  • 用漂亮的數據進行測試,不要測試錯誤輸入。

練習練習

  • 將客戶流失或住房模式打包到 API 中。
  • 建立 3 個範例請求:有效、缺少欄位、錯誤的資料類型。
  • 撰寫一個簡短的自述文件,描述如何使用 Docker 在本地運行。

完成標準

  • 有一個可以在本地運行的預測 API。
  • Docker 建置並成功運行。
  • Schema 輸入足夠清晰,以便於其他人呼叫 API。

逐步練習(進階)

  1. 使用 Pydantic 標準化輸入/輸出模式。
  2. 將模型+預處理打包到版本化工件中。
  3. 撰寫端點預測和健康檢查。
  4. 新增基本日誌記錄和明確的錯誤處理。 5.建置Docker映像並使用curl執行冒煙測試。

應提交工件

  • API原始碼和Dockerfile可以運行。
  • 3 種情況的請求/回應範例。
  • 最低本地部署自述文件。

自測題

  • 為什麼需要對模型工件進行版本控制?
  • 如果輸入模式發生變化,向後相容性將如何處理?
  • 哪些運行時指標需要從一開始就進行監控?