本篇分享:一套完整、实战型的训练部署流程,从代码上传、训练、推理服务部署到 Flask/FastAPI 接入,打通 AI 模型在移动云平台上的落地全链路。

📁 项目结构规范:先把地基打好
bash
my_app/
├── app/ # 网页端应用(Flask/FastAPI 后端)
├── model/ # 模型训练与推理代码
│ ├── train.py # 通用训练脚本
│ ├── predict.py # 推理脚本
│ └── model_utils.py # 可选:数据处理、模型构建封装
├── data/ # 本地数据集(可上传至 OBS)
│ └── generate_dummy_data.py
├── test_infer.py # 本地推理测试脚本
├── requirements.txt # Python 依赖清单
├── Dockerfile # 自定义镜像(可选)
└── README.md
📦 代码上传方式:两种任选
✅ 方式一:上传压缩包
python
zip -r my_app.zip my_app/
- 登录平台 → 项目管理 → 上传 my_app.zip → 解压路径设为
/code/
✅ 方式二:拉取 Git 仓库
- 推送项目到 GitHub/Gitee
- 平台选择"代码来源:Git",填写仓库地址 + Token
- 适合多人协作和版本管理
⚙️ 配置训练任务:模型开训!
Step 1 - 镜像选择
- 使用平台提供的 PyTorch、TensorFlow 镜像(如
pytorch:2.0.1
) - 如需额外依赖,可自定义 Dockerfile,写法参考:
sql
FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime
COPY requirements.txt .
RUN pip install -r requirements.txt
Step 2 - 设置启动命令
css
python model/train.py \
--data_dir /mnt/data \
--output_dir /mnt/output \
--epochs 5 \
--lr 1e-4
- 可配置
batch_size
、log_path
等参数 - 支持日志持久化到
/mnt/logs/
,支持断点续训
Step 3 - 数据与模型挂载
- 上传训练数据、checkpoint 至对象存储 OBS
- 平台中挂载为
/mnt/data
、/mnt/checkpoints
- 代码中用
args.data_dir
调用即可
Step 4 - 选择算力资源
- GPU(如 A100)、昇腾910,支持包时/包月计费
- 设置最长运行时间,自动超时终止
- 支持 notebook 在线调试,调优效率高
🧠 推理服务部署:把模型托管成 API
训练完成后,平台可一键将 predict.py
部署为在线推理服务。
只需提供:
- 模型文件(如
model.pth
) - 推理脚本中的
infer()
接口
平台自动生成:
- RESTful API 地址
- Token 认证机制
- 可自定义 QPS、并发、CPU/GPU 资源
📜 代码实战篇:核心模块全公开!
✅ 1. 训练脚本 model/train.py
简洁通用,适配平台参数传入:
scss
# 省略 import ...
def train(args):
model = SimpleModel(...).to(device)
for epoch in range(args.epochs):
# forward、backward、loss
...
torch.save(model.state_dict(), os.path.join(args.output_dir, "model.pth"))
# 支持命令行参数
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--data_dir", type=str)
parser.add_argument("--output_dir", type=str)
...
args = parser.parse_args()
train(args)
✅ 2. 推理脚本 model/predict.py
模型加载 + 推理接口:
css
def infer(input_data):
model = load_model("model.pth")
input_tensor = torch.tensor(input_data, dtype=torch.float32)
with torch.no_grad():
logits = model(input_tensor)
probs = torch.softmax(logits, dim=1)
pred = torch.argmax(probs, dim=1)
return {"prediction": pred.tolist(), "confidence": probs.tolist()}
🌐 接入网页端服务:Flask / FastAPI 都支持
Flask 示例(app/server.py
)
less
@app.route("/infer", methods=["POST"])
def run_infer():
data = request.get_json()
result = infer(data["input"])
return jsonify(result)
FastAPI 示例(app/server_fastapi.py
)
python
@app.post("/infer")
async def run_infer(req: InferenceRequest):
return infer(req.input)
🔬 本地测试与数据生成
✅ 生成训练数据
bash
python data/generate_dummy_data.py
✅ 本地推理验证
bash
python test_infer.py
# 会输出推理结果 + 置信度
📦 requirements.txt 示例
shell
torch>=2.0.0
flask
fastapi
uvicorn
numpy
✨ 小结
这套流程对企业落地 AI 应用、或者在做大模型推理接入的人都非常实用。你可以:快速用平台资源跑自己的模型,不再被本地算力限制;通过平台 API 接入 MCP 系统或 Web 前端;按需使用 PyTorch、FastAPI、Flask 等生态组件;在训练、推理、部署三个阶段灵活切换。
分享如上,觉得有用就点个赞吧~你们的鼓励是我持续输出的续航电池🔋✨