文章

AI 第24天:AI 模型部署基礎

今天,我們將學習如何將 AI 模型部署到實際應用中。模型部署是 AI 開發流程中至關重要的一環,能夠讓開發的模型被應用於實際產品或服務中,例如網頁應用、行動應用或後端 API。


課程目標

  1. 瞭解模型部署的基本流程與挑戰。
  2. 學習如何使用常見工具將模型部署到伺服器。
  3. 透過 Flask 架設一個簡單的模型 API。

課程內容

1. 模型部署流程

1.1 模型部署的基本步驟

  1. 模型訓練:在本地環境中完成模型的開發與訓練。
  2. 模型保存:將訓練好的模型存儲為文件(如 .h5.pkl.pt)。
  3. 選擇部署環境:例如雲端伺服器(AWS、Google Cloud)、容器化工具(Docker)。
  4. 架設服務接口:透過 REST API 或 WebSocket,提供模型服務。
  5. 監控與更新:監控模型表現,並根據需求進行更新。

1.2 模型部署的挑戰

  • 性能問題:如何確保模型在實際使用中的推論速度。
  • 可擴展性:如何處理大量的請求。
  • 安全性:如何防止未授權的訪問或數據洩露。

2. 保存與加載模型

2.1 保存模型

使用 Python 中常見的機器學習框架(如 TensorFlow 或 Scikit-learn)保存模型:

1
2
3
4
5
6
7
8
9
10
11
12
from sklearn.linear_model import LinearRegression
import joblib

# 訓練簡單模型
model = LinearRegression()
X = [[1], [2], [3], [4]]
y = [2, 4, 6, 8]
model.fit(X, y)

# 保存模型
joblib.dump(model, "linear_regression_model.pkl")
print("模型已保存!")

2.2 加載模型

1
2
3
# 加載模型
loaded_model = joblib.load("linear_regression_model.pkl")
print(loaded_model.predict([[5]]))  # 輸出 [10]

3. 使用 Flask 部署模型

3.1 安裝 Flask

在終端中執行:

1
pip install flask

3.2 架設簡單的模型 API

以下是使用 Flask 將模型部署為 REST API 的範例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from flask import Flask, request, jsonify
import joblib

# 初始化 Flask 應用
app = Flask(__name__)

# 加載模型
model = joblib.load("linear_regression_model.pkl")

@app.route('/predict', methods=['POST'])
def predict():
    # 從請求中獲取數據
    data = request.get_json()
    X = data['input']
    
    # 模型預測
    prediction = model.predict([X])
    
    # 返回結果
    return jsonify({'prediction': prediction.tolist()})

if __name__ == '__main__':
    app.run(debug=True)

3.3 測試模型 API

使用 Postman 或命令列工具 curl 測試:

1
curl -X POST -H "Content-Type: application/json" -d '{"input": [5]}' http://127.0.0.1:5000/predict

預期返回:

1
2
3
{
    "prediction": [10.0]
}

4. 容器化與雲端部署

4.1 Docker 基本應用

Docker 是模型部署中非常常見的工具,可用於創建輕量級、可移植的部署環境。
簡單的 Dockerfile 範例:

1
2
3
4
5
6
7
8
9
10
11
12
# 基礎映像檔
FROM python:3.9-slim

# 複製應用程式文件
WORKDIR /app
COPY . .

# 安裝依賴
RUN pip install -r requirements.txt

# 啟動 Flask 應用
CMD ["python", "app.py"]

構建與啟動容器:

1
2
docker build -t flask_model_api .
docker run -p 5000:5000 flask_model_api

4.2 部署至雲端

  • 使用 Heroku、AWS Elastic Beanstalk 或 Google Cloud Run 部署 Flask 應用。
  • 確保將環境變數與模型文件正確配置到伺服器。

課後作業

  1. 使用自己的模型實作一個 REST API 並測試其功能。
  2. 將模型部署到 Docker 容器中,並嘗試在本地測試其性能。
  3. 研究更多部署工具,例如 FastAPI 或 Streamlit,並比較它們的差異。

本文章以 CC BY 4.0 授權