MLServer
多框架 ML 模型的推理服务器,REST/gRPC 接口,兼容 KFServing V2 协议,支持
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
多框架 ML 模型的推理服务器,REST/gRPC 接口,兼容 KFServing V2 协议,支持
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你花了三天时间调参,终于把准确率从 78% 提到了 91%。兴奋地点下 Commit,准备庆祝——然后发现代码库里没有一行推理服务代码。你的模型还躺在 .pkl 文件里,没有任何方式能让别人真正用到它。
这就是 MLServer 要解决的问题。它是 SeldonIO 团队开源的推理服务器,定位是"模型的生产交付层":无论你的模型是用 Scikit-learn、PyTorch、XGBoost 还是 HuggingFace 训练的,只需要几行配置,就能通过 REST/gRPC 接口对外提供推理服务——完全兼容 KFServing V2 协议。

图1:MLServer 项目介绍视频封面
MLServer 的诞生有清晰的行业背景。在机器学习工作流中,模型训练和模型推理是两个截然不同的场景:训练可以很慢、可以批量、可以用复杂框架;推理则要求快、准、稳、能并发、能水平扩展。传统做法是把推理逻辑写在应用代码里,但随着模型数量增多、框架多样化、多版本并存,这种方式的维护成本急剧上升。
SeldonIO 团队在维护 Seldon Core(Kubernetes 上的 ML 部署平台)时意识到,需要一个轻量、标准化、可扩展的推理运行时。MLServer 正是这个答案——它既可以作为独立推理服务器运行,也被深度集成进 Seldon Core 和 KServe(原 KFServing),作为这些平台在 Kubernetes 集群中的实际模型服务进程。
开源至今(2026年),MLServer 已有 889 个 GitHub Stars,1.4k+ commits,活跃维护中,被广泛应用于数据科学团队和 MLOps 平台中。
支持的主流 ML 框架一览:
| 框架 | 运行时包 | 说明 |
|---|---|---|
| Scikit-learn | mlserver-sklearn | 最常用,API 最简洁 |
| XGBoost / LightGBM | mlserver-xgboost / mlserver-lightgbm | 树模型推理 |
| CatBoost | mlserver-catboost | Yandex 开源梯度提升 |
| PyTorch / TensorFlow | via Triton | 通过 NVIDIA Triton 集成 |
| HuggingFace | mlserver-huggingface | LLM / NLP 模型推理 |
| MLflow | mlserver-mlflow | Mlflow 模型格式原生支持 |
| Spark MLlib | mlserver-mllib | 大数据场景 |
| Alibi-Detect / Alibi-Explain | 独立运行时 | 异常检测与可解释性 |
多模型服务(Multi-Model Serving): MLServer 允许在同一个进程内加载多个模型,通过 model-settings.json 配置每个模型的路径、版本和运行时。这在模型数量多但单个请求量有限的场景下,极大节省了资源。
自适应批处理(Adaptive Batching): MLServer 能够在运行时自动将多个推理请求聚合成批次,在不牺牲延迟的前提下提升吞吐量。这是推理服务中最重要的性能优化手段之一。
并行推理(Parallel Inference): 支持多 worker 进程池,垂直扩展单个模型的推理吞吐,适合计算密集型模型。
gRPC + REST 双协议: REST 接口便于调试和简单集成,gRPC 接口适合高并发、低延迟的生产环境,两者均完全兼容 KFServing V2 Dataplane 标准。
MLServer 的代码结构非常清晰,主模块位于 mlserver/ 目录下:
mlserver/
model.py # 核心模型抽象(MLModel 基类)
settings.py # Pydantic 配置管理(环境变量注入)
handlers/ # 请求处理(REST + gRPC)
codecs/ # 输入/输出编解码(request/response 转换)
batching/ # 自适应批处理逻辑
parallel/ # 多 worker 并行推理
kafka/ # Kafka 异步推理支持
grpc/ # gRPC 服务实现
cache/ # 推理结果缓存
registry.py # 模型注册表
metrics/ # Prometheus 指标暴露
middleware.py # OpenTelemetry 链路追踪
运行时插件机制: runtimes/ 目录下每个子目录对应一个框架运行时(如 sklearn/、xgboost/、huggingface/),每个运行时实现一个 MLModel 子类,注册到全局模型注册表。这种插件化设计使添加新框架支持完全独立,无需修改核心代码。
核心依赖栈: FastAPI(REST)、gRPC(高效通信)、Pydantic v2(配置验证)、Uvicorn(ASGI 服务器)、NumPy/Pandas(数据处理)、Triton Client(GPU 推理)。整体技术选型现代、性能优异。
本地 pip 安装(最简方式):
pip install mlserver mlserver-sklearn
然后在模型目录放置 model-settings.json 并启动:
mlserver start .
Docker 部署(推荐生产方式): 项目提供生产级多阶段 Dockerfile,基于 python:3.10-slim 构建 wheel,再打包到 ubi-minimal 镜像中,最终镜像包含 Conda + Miniforge3 环境,支持 GPU 加速场景。镜像大小适中,构建流程规范。
Kubernetes 部署(企业级): MLServer 被 Seldon Core 和 KServe 原生使用,通过 CRD 定义模型部署,平台自动管理副本数、资源限制和滚动更新。这是最推荐的企业级使用方式。
部署难度评估: 本地 pip 安装约 5 分钟,Docker 部署约 15 分钟,K8s 集成需要一定 Kubernetes 基础。整体难度中等,文档完善,遇到问题容易排查。
无开箱即用的 Web UI: MLServer 主要面向开发者,提供 REST/gRPC API,没有图形化管理界面,需要通过 curl 或 SDK 交互。
GPU 支持依赖外部运行时: 内置框架不支持直接 GPU 推理,需通过 NVIDIA Triton 集成间接支持。
Python 版本限制: 最低要求 Python 3.9,不再支持 Python 3.7/3.8,对于遗留项目有一定迁移成本。
Alibi 依赖商业许可证: Alibi-Detect 和 Alibi-Explain 虽然内置支持,但采用 BSL 1.1 许可证,商业使用需注意授权问题。
文档质量不均: 核心功能文档详尽,但高级场景(如自定义运行时、缓存策略)文档相对简略。
MLServer 代表了 ML 推理服务化的趋势: 将推理服务从应用代码中解耦,形成标准化的中间层。它的价值在于:
最合适的场景: 数据科学团队有多框架模型需要对外提供服务、企业需要标准化推理基础设施、已有 Seldon Core/KServe 平台需要推理运行时。
不太合适的场景: 单一模型、简单推理场景(直接 Flask 即可);对实时性要求极高且已有定制推理管线的场景。