在开源大模型推理服务的实践中,Flask作为一个轻量级Web框架,提供了快速构建推理API的解决方案。本文将对比使用Flask与FastAPI在部署大模型推理服务时的差异,并提供可复现的实现步骤。
Flask vs FastAPI:推理服务选型
Flask的优势在于其简单易用,适合快速原型开发。而FastAPI则因内置数据验证和自动文档生成,在生产环境中更受青睐。在大模型推理场景下,两者都支持异步处理,但FastAPI的性能优化更胜一筹。
Flask构建推理服务的实现步骤
- 安装依赖包:
pip install flask torch transformers
- 创建Flask应用并加载模型:
from flask import Flask, request, jsonify
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
app = Flask(__name__)
model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased")
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
- 定义推理接口:
@app.route('/predict', methods=['POST'])
def predict():
data = request.get_json()
inputs = tokenizer(data['text'], return_tensors="pt", truncation=True, padding=True)
with torch.no_grad():
outputs = model(**inputs)
predictions = outputs.logits
return jsonify({'predictions': predictions.tolist()})
- 启动服务:
flask run --host=0.0.0.0 --port=5000
通过以上步骤,一个基于Flask的推理服务即可运行。虽然性能不如FastAPI,但其开发效率和学习成本使其成为初学者的理想选择。
性能优化建议
为提升Flask服务的并发处理能力,可结合Gunicorn进行部署,或使用多线程/多进程模式提高吞吐量。

讨论