AI 第24天:AI 模型部署基礎
今天,我們將學習如何將 AI 模型部署到實際應用中。模型部署是 AI 開發流程中至關重要的一環,能夠讓開發的模型被應用於實際產品或服務中,例如網頁應用、行動應用或後端 API。
課程目標
- 瞭解模型部署的基本流程與挑戰。
- 學習如何使用常見工具將模型部署到伺服器。
- 透過 Flask 架設一個簡單的模型 API。
課程內容
1. 模型部署流程
1.1 模型部署的基本步驟
- 模型訓練:在本地環境中完成模型的開發與訓練。
- 模型保存:將訓練好的模型存儲為文件(如
.h5
、.pkl
、.pt
)。 - 選擇部署環境:例如雲端伺服器(AWS、Google Cloud)、容器化工具(Docker)。
- 架設服務接口:透過 REST API 或 WebSocket,提供模型服務。
- 監控與更新:監控模型表現,並根據需求進行更新。
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 應用。
- 確保將環境變數與模型文件正確配置到伺服器。
課後作業
- 使用自己的模型實作一個 REST API 並測試其功能。
- 將模型部署到 Docker 容器中,並嘗試在本地測試其性能。
- 研究更多部署工具,例如 FastAPI 或 Streamlit,並比較它們的差異。
本文章以 CC BY 4.0 授權