MLOPS—简单模型部署与GITHUB托管

2026-7-26 27 7/26

教程如何简单部署一个模型容器化并进行托管,个人计算机可实现

一,先弄一个简单的模型,用 sklearn 训练一个随机森林模型预测鸢尾花,模型保存为 pkl 文件

新建一个空文件夹,用于保存代码和模型

 

pip install scikit-learn pandas joblib 安装所需要的三个库

这是创造模型的代码,运行会得到rf_iris_model.pkl的模型文件

import pickle
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

iris = load_iris()
X, y = iris.data, iris.target

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

y_pred = model.predict(X_test)
acc = accuracy_score(y_test, y_pred)
print("Accuracy:", acc)

with open("rf_iris_model.pkl", "wb") as f:
    pickle.dump(model, f)

 

二,

写一个 FastAPI 接口,加载本地的 model.pkl,接收 JSON 特征并返回预测结果

1. 安装 FastAPI 和 Uvicorn
2. 编写 app.py,加载 model.pkl
3. 定义 /predict POST 接口
4. 访问 http://localhost:8000/docs 测试

pip install fastapi uvicorn scikit-learn numpy 安装依赖库

这是app.py:

from fastapi import FastAPI
from pydantic import BaseModel
import pickle
import numpy as np

class IrisFeatures(BaseModel):
    sepal_length: float
    sepal_width: float
    petal_length: float
    petal_width: float

app = FastAPI()

with open("rf_iris_model.pkl", "rb") as f:
    model = pickle.load(f)

@app.get("/")
def read_root():
    return {"message": "Iris Prediction API"}

@app.post("/predict")
def predict(features: IrisFeatures):
    data = np.array([[features.sepal_length, features.sepal_width, features.petal_length, features.petal_width]])
    prediction = int(model.predict(data)[0])
    probability = model.predict_proba(data).tolist()
    return {"prediction": prediction, "probability": probability}

@app.get("/health")
def health():
    return {"status": "ok"}

在当前文件夹写好app.py后

执行uvicorn app:app --host 0.0.0.0 --port 8000 --reload 加载网页,可实现局域网互通,http://<IP>:8000/docs  #IP替换为运行的主机的IP

运行后,可以访问并进行交互

MLOPS—简单模型部署与GITHUB托管

 

三,Docker容器化

安装Docker,自行安装不必多说

FastAPI 应用编写一个生产级别的 Dockerfile,使用 slim 镜像

创建名为Dockerfile的文件

FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir --upgrade pip && \
    pip install --no-cache-dir -r requirements.txt

COPY app.py rf_iris_model.pkl ./

ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

EXPOSE 8000

CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]

在当前目录创建requirements.txt

fastapi
uvicorn[standard]
scikit-learn
numpy

执行 docker build -t iris-api .

等待一段时间后,镜像创建完毕

docker run -d -p 8000:8000 --name iris-api-container iris-api  可后台运行

其余Docker操作自行学习

 

四,GitHub托管

本地文件夹推送到GITHUB即可

注册,上传,网络有教程

MLOPS—简单模型部署与GITHUB托管

- THE END -

sanoplluser

7月26日19:25

最后修改:2026年7月26日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论