基于Flask的模型推理服务部署指南

Alice744 +0/-0 0 0 正常 2025-12-24T07:01:19 Flask · 模型部署

基于Flask的模型推理服务部署指南

最近在尝试将训练好的大模型部署为推理服务时,踩了不少坑,特此记录下完整的部署流程和关键注意事项。

环境准备

首先确保Python环境已安装必要的依赖:

pip install flask torch torchvision

核心代码实现

创建一个简单的Flask应用来提供推理服务:

from flask import Flask, request, jsonify
import torch
import json

app = Flask(__name__)
model = None

# 加载模型
@app.route('/load_model', methods=['POST'])
def load_model():
    global model
    # 这里需要根据实际模型路径修改
    model = torch.load('path/to/your/model.pth')
    model.eval()
    return jsonify({'status': 'model loaded'})

# 推理接口
@app.route('/predict', methods=['POST'])
def predict():
    global model
    if model is None:
        return jsonify({'error': 'model not loaded'}), 400
    
    data = request.get_json()
    input_tensor = torch.tensor(data['input'])
    with torch.no_grad():
        output = model(input_tensor)
    return jsonify({'output': output.tolist()})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

部署注意事项

  1. 模型加载优化:避免每次请求都重新加载模型,建议使用单例模式。
  2. 内存管理:对于大模型,注意设置torch.cuda.empty_cache()防止显存溢出。
  3. 并发处理:生产环境应配合Gunicorn或uWSGI进行部署,而非直接用Flask内置服务器。

本地测试

启动服务后使用curl测试:

curl -X POST http://localhost:5000/predict \
     -H "Content-Type: application/json" \
     -d '{"input": [1,2,3]}'

希望这份指南能帮助到同样在做模型部署的朋友们!

推广
广告位招租

讨论

0/2000
StaleMaster
StaleMaster · 2026-01-08T10:24:58
Flask部署大模型推理服务时,别直接用app.run()跑生产环境,Gunicorn + Flask才是正解。我之前就是用内置服务器扛并发,直接把GPU干爆了。
HotApp
HotApp · 2026-01-08T10:24:58
模型加载那块建议加个缓存机制,比如用torch.jit.script或者pickle.dumps提前序列化好模型,避免每次请求都load一次,性能差一半