综合介绍
LitServe 是 Lightning AI 推出的一款开源 AI 模型服务引擎,基于 FastAPI 构建,专注于快速部署通用 AI 模型的推理服务。它支持从大型语言模型(LLM)、视觉模型、音频模型到经典机器学习模型的广泛场景,提供批量处理、流式传输和 GPU 自动扩展等功能,性能比普通 FastAPI 提升至少 2 倍。LitServe 易于使用且高度灵活,用户可自托管或通过 Lightning Studios 实现完全托管,适用于研究人员、开发者和企业快速构建高效的模型推理 API。官方强调其企业级特性,如安全性、可扩展性和高可用性,确保生产环境开箱即用。
功能列表
- 快速部署推理服务:支持 PyTorch、JAX、TensorFlow 等框架的模型快速转为 API。
- 批量处理:合并多个推理请求成批次处理,提升吞吐量。
- 流式传输:支持实时推理结果流输出,适合连续响应场景。
- GPU 自动扩展:根据推理负载动态调整 GPU 资源,优化性能。
- 复合 AI 系统:允许多个模型协同推理,构建复杂服务。
- 自托管与云托管:支持本地部署或通过 Lightning Studios 云端管理。
- 与 vLLM 集成:优化大型语言模型的推理性能。
- OpenAPI 兼容:自动生成标准 API 文档,便于测试和集成。
- 全模型支持:覆盖 LLM、视觉、音频、嵌入等各种模型的推理需求。
- 服务器优化:提供多工作进程处理,推理速度比 FastAPI 快 2 倍以上。
使用帮助
安装流程
LitServe 的安装简单,通过 Python 的 pip
工具即可完成。以下是详细步骤:
1. 准备环境
确保系统安装了 Python 3.8 或以上版本,建议使用虚拟环境:
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
2. 安装 LitServe
运行以下命令安装稳定版:
pip install litserve
若需最新功能,可安装开发版:
pip install git+https://github.com/Lightning-AI/litserve.git@main
3. 检查安装
验证是否成功:
python -c "import litserve; print(litserve.__version__)"
成功输出版本号即完成安装。
4. 可选依赖
若需 GPU 支持,安装对应框架的 GPU 版本,例如:
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
如何使用 LitServe
LitServe 通过简洁代码将 AI 模型转为推理服务。以下是详细操作流程:
1. 创建简单推理服务
以下是一个复合推理服务示例,包含两个模型:
import litserve as ls
class SimpleLitAPI(ls.LitAPI):
def setup(self, device):
# 初始化,加载模型或数据
self.model1 = lambda x: x ** 2 # 平方模型
self.model2 = lambda x: x ** 3 # 立方模型
def decode_request(self, request):
# 解析请求数据
return request["input"]
def predict(self, x):
# 复合推理
squared = self.model1(x)
cubed = self.model2(x)
return squared + cubed
def encode_response(self, output):
# 格式化推理结果
return {"output": output}
if __name__ == "__main__":
server = ls.LitServer(SimpleLitAPI(), accelerator="auto")
server.run(port=8000)
- 运行:保存为
server.py
,执行python server.py
。 - 测试:用
curl
发送推理请求:curl -X POST "http://127.0.0.1:8000/predict" -H "Content-Type: application/json" -d '{"input": 4.0}'
输出:
{"output": 80.0}
(16 + 64)。
2. 启用批量推理
修改代码支持批量处理:
server = ls.LitServer(SimpleLitAPI(), max_batch_size=4, accelerator="auto")
- 操作说明:
max_batch_size=4
表示最多同时处理 4 个推理请求,自动合并提升效率。 - 测试方法:多次发送请求,观察吞吐量提升:
curl -X POST "http://127.0.0.1:8000/predict" -H "Content-Type: application/json" -d '{"input": 5.0}'
3. 配置流式推理
适用于实时推理场景:
class StreamLitAPI(ls.LitAPI):
def setup(self, device):
self.model = lambda x: [x * i for i in range(5)]
def decode_request(self, request):
return request["input"]
def predict(self, x):
for result in self.model(x):
yield result
def encode_response(self, output):
return {"output": output}
server = ls.LitServer(StreamLitAPI(), stream=True, accelerator="auto")
server.run(port=8000)
- 操作说明:
stream=True
启用流式推理,predict
使用yield
逐个返回结果。 - 测试方法:使用支持流式响应的客户端:
curl --no-buffer -X POST "http://127.0.0.1:8000/predict" -H "Content-Type: application/json" -d '{"input": 2}'
4. GPU 自动扩展
若有 GPU,LitServe 自动优化推理:
- 操作说明:
accelerator="auto"
检测并优先使用 GPU。 - 验证:运行后查看日志,确认 GPU 使用。
- 环境要求:确保安装 GPU 版本框架(如 PyTorch)。
5. 部署复杂模型推理(以 BERT 为例)
部署 Hugging Face 的 BERT 模型推理服务:
from transformers import BertTokenizer, BertModel
import litserve as ls
class BertLitAPI(ls.LitAPI):
def setup(self, device):
self.tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
self.model = BertModel.from_pretrained("bert-base-uncased").to(device)
def decode_request(self, request):
return request["text"]
def predict(self, text):
inputs = self.tokenizer(text, return_tensors="pt").to(self.model.device)
outputs = self.model(**inputs)
return outputs.last_hidden_state.mean(dim=1).tolist()
def encode_response(self, output):
return {"embedding": output}
server = ls.LitServer(BertLitAPI(), accelerator="auto")
server.run(port=8000)
- 运行:执行脚本后,访问
http://127.0.0.1:8000/predict
。 - 测试:
curl -X POST "http://127.0.0.1:8000/predict" -H "Content-Type: application/json" -d '{"text": "Hello, world!"}'
6. 集成 vLLM 部署 LLM 推理
为大型语言模型提供高效推理:
import litserve as ls
from vllm import LLM
class LLMLitAPI(ls.LitAPI):
def setup(self, device):
self.model = LLM(model="meta-llama/Llama-3.2-1B", dtype="float16")
def decode_request(self, request):
return request["prompt"]
def predict(self, prompt):
outputs = self.model.generate(prompt, max_tokens=50)
return outputs[0].outputs[0].text
def encode_response(self, output):
return {"response": output}
server = ls.LitServer(LLMLitAPI(), accelerator="auto")
server.run(port=8000)
- 安装 vLLM:
pip install vllm
。 - 测试:
curl -X POST "http://127.0.0.1:8000/predict" -H "Content-Type: application/json" -d '{"prompt": "What is AI?"}'
7. 查看 API 文档
- 操作说明:访问
http://127.0.0.1:8000/docs
,交互式测试推理服务。 - 功能提示:基于 OpenAPI 标准,包含所有端点详情。
8. 托管选项
- 自托管:本地或服务器运行代码。
- 云托管:通过 Lightning Studios 部署,需注册账户,提供负载均衡、自动扩展等功能。
操作小贴士
- 调试:设置
timeout=60
避免推理超时。 - 日志:启动时查看终端日志,排查问题。
- 优化:参考官方文档启用认证、Docker 部署等高级功能。
LitServe 通过快速部署和优化推理服务,支持从原型验证到企业级应用的全流程需求。