TensorFlow 与 PyTorch
Keras、PyTorch 训练循环、RL 概览。
TensorFlow 与 PyTorch
这一课你将能做到
- 一张表说清 PyTorch / TensorFlow / JAX / XGBoost / scikit-learn 各守哪块阵地
- 用 FastAPI + pydantic 把上一课保存的 pipeline 部署成一个 HTTP 预测服务
- 用 uvicorn 启动服务并用命令行验证接口
- 说清训练/推理分离、版本管理、特征漂移监控、灰度发布这些上线工程题
为什么要学
「模型在 notebook 里准确率 0.9」和「模型在服务器上稳定服务 10 万用户」之间隔着一条工程鸿沟。面试官问深度学习框架,多半不是考 API,而是考你知不知道模型从实验到上线要经过什么。
本课先给框架地图定方位,再把上一课保存的 mastery_pipe.joblib 真正变成一个可调用的 HTTP 服务——这一步做完,你的项目才算闭环。
先建立图像
训练侧(离线,可以慢) 服务侧(在线,必须快而稳)
notebook / 脚本 FastAPI 进程
│ 交叉验证调参 │ 启动时加载 joblib 工件
▼ │ 收到 JSON → DataFrame
joblib.dump(pipeline) ────工件───► ▼
pipeline.predict_proba → JSON 返回
跟着做
步骤 1:框架地图
| 框架 | 定位 | 什么场景选它 |
|---|---|---|
| PyTorch | 研究与工业主流,动态图调试友好 | 深度模型、论文复现、团队从零起步 |
| TensorFlow / Keras | 部署生态完善(Serving / TFLite) | 移动端、嵌入式、存量 TF 团队 |
| JAX | 函数式 + 编译加速 | 前沿研究、TPU 大规模训练 |
| XGBoost / LightGBM | 表格数据之王 | 特征清晰的中小规模结构化数据 |
| scikit-learn | 常规机器学习标准件 | 基线模型、快速验证想法 |
结论:先跑通 sklearn/XGBoost 基线,再决定要不要上 PyTorch,顺序别反。
步骤 2:写预测服务(main.py)
# pip install fastapi uvicorn joblib pandas scikit-learn
import joblib
import pandas as pd
from fastapi import FastAPI
from pydantic import BaseModel, Field
class Answer(BaseModel):
accuracy: float = Field(..., ge=0, le=1) # pydantic 做入参校验
attempts: float | None = None
topic: str
app = FastAPI(title="掌握度预测服务")
pipe = joblib.load("mastery_pipe.joblib") # 启动时加载一次
@app.post("/predict")
def predict(a: Answer):
X = pd.DataFrame([a.model_dump()]).astype({"attempts": "float64"})
proba = float(pipe.predict_proba(X)[0, 1])
return {"mastery_probability": round(proba, 3),
"mastery": proba >= 0.6}
两个细节:None 经 astype("float64") 转成 NaN 交给 Imputer 兜底;接口返回,阈值 0.6 留在业务层可随时改。