1. 课程导入
在金融业务中,模型从来不是孤立存在的。一个典型的智能风控或智能投顾系统,往往同时运行着反欺诈模型、信用评分模型、额度定价模型、营销响应模型、舆情情绪模型,甚至还有大语言模型驱动的智能客服与投研问答。这些模型可能由不同团队用不同框架训练:XGBoost、LightGBM、PyTorch、TensorFlow、Hugging Face Transformers,甚至还有规则引擎和传统评分卡。把它们统一部署、统一扩缩容、统一监控,并保证毫秒级响应与合规审计,就是“多模型 Serving”要解决的核心问题。
一、金融多模型 Serving 的四大挑战
与互联网推荐场景相比,金融场景对 Serving 的要求更苛刻。我们可以把挑战归纳为四类:
- 异构性:模型格式、运行时、依赖库、GPU/CPU 资源需求差异巨大。一个 BERT 模型可能需要 GPU,而一个评分卡只需要几毫秒的 CPU 计算。
- 低延迟与高并发:支付反欺诈要求 P99 延迟在 50ms 以内,而营销模型可以容忍秒级。同一套 Serving 平台必须能按模型 SLA 差异化调度。
- 合规与可审计:每一次推理请求都要可追溯:谁调的、用了哪个模型版本、输入输出是什么、是否命中拒绝规则。金融监管要求模型可解释、可回滚。
- 弹性与成本:白天客服大模型流量高,夜间批量评分任务重。资源要能动态伸缩,同时避免 GPU 长期空转造成浪费。
二、Ray Serve 的定位:分布式 Python 原生 Serving 框架
Ray Serve 是 Ray 生态中的在线推理服务框架。它的关键定位可以概括为三点:Python 原生、组合式部署、与 Ray 分布式运行时无缝集成。与 TorchServe、Triton 等偏“单模型高性能”的方案不同,Ray Serve 更擅长把多个模型、多个业务逻辑组合成一个可编排的推理图。
在 Ray Serve 中,最核心的抽象是 Deployment。一个 Deployment 就是一个可独立扩缩容的服务单元,内部封装了模型加载与推理逻辑。多个 Deployment 可以通过 bind() 组合成 Application,形成有向无环的调用关系。例如:
from ray import serve
import requests
@serve.deployment(num_replicas=2, ray_actor_options={"num_gpus": 0.5})
class FraudModel:
def __init__(self):
self.model = load_fraud_model()
async def __call__(self, request):
data = await request.json()
score = self.model.predict(data)
return {"fraud_score": score}
@serve.deployment(num_replicas=1)
class CreditModel:
def __init__(self):
self.model = load_credit_model()
async def __call__(self, request):
data = await request.json()
return {"credit_score": self.model.predict(data)}
@serve.deployment
class RiskGateway:
def __init__(self, fraud, credit):
self.fraud = fraud
self.credit = credit
async def __call__(self, request):
data = await request.json()
fraud_result = await self.fraud.remote(data)
credit_result = await self.credit.remote(data)
return {"fraud": fraud_result, "credit": credit_result}
app = RiskGateway.bind(FraudModel.bind(), CreditModel.bind())
这段代码展示了 Ray Serve 的典型用法:每个模型是一个 Deployment,网关负责编排。扩缩容、副本调度、请求路由由 Ray Serve 自动完成,开发者只需关注业务逻辑。
三、核心原理:从请求到推理的完整链路
理解 Ray Serve 的关键,是理解一次请求在系统中的流转路径。下图展示了金融多模型 Serving 中,请求从入口到多个模型副本的完整数据流与资源分配关系。
从图中可以看到,Ray Serve 的请求链路包含几个关键环节:入口网关接收请求后,根据 Deployment 的绑定关系将请求分发到下游模型副本;每个副本独立运行在 Ray Actor 中,拥有自己的资源配额;Ray 的 Autoscaler 根据队列长度和延迟指标动态调整副本数。这种架构让“一个网关编排多个异构模型”成为可能。
四、典型金融场景与常见误区
在真实项目中,Ray Serve 常被用于以下场景:
| 场景 | 模型组合 | 关键诉求 | Ray Serve 价值 |
|---|---|---|---|
| 实时反欺诈 | XGBoost + 规则引擎 + 图模型 | P99 < 50ms,高并发 | 多副本并行、低延迟路由 |
| 智能投顾 | LLM + 风险评分 + 组合优化 | 多模型编排、GPU 共享 | 组合式 Deployment、GPU 分片 |
| 信贷审批 | 评分卡 + LightGBM + 反欺诈 | 可审计、版本可回滚 | 版本化部署、请求日志 |
| 舆情监控 | BERT + 情感分类 + 摘要 | 批量与实时混合 | 弹性扩缩容、队列调度 |
ray_actor_options 中的 CPU/GPU 配额,可能出现某个模型副本抢占资源,导致关键业务延迟飙升。金融场景务必为每个 Deployment 明确资源边界。
五、学习目标与整体框架
本课程围绕“金融多模型 Serving 实战”展开,学习目标如下:
- 理解 Ray Serve 的核心抽象:Deployment、Application、Bind、Replica。
- 掌握多模型编排、请求路由、资源配额与自动扩缩容的配置方法。
- 能够为金融场景设计低延迟、高可用、可审计的 Serving 架构。
- 学会使用 Ray Dashboard、日志、指标进行排障与性能调优。
- 完成一个包含反欺诈、信用评分和 LLM 客服的端到端实战项目。
整体课程分为五个模块:基础篇(Ray Serve 核心概念与环境搭建)、部署篇(单模型与多模型部署、版本管理)、性能篇(批处理、GPU 共享、Autoscaler、延迟优化)、金融实战篇(反欺诈、信贷、投顾场景落地)、运维篇(监控、日志、灰度发布与故障恢复)。每一章都会围绕一个可运行的最小示例展开,确保你不仅能理解原理,还能直接动手实践。
接下来,我们将从 Ray Serve 的环境搭建与第一个 Deployment 开始,逐步构建属于你自己的金融多模型 Serving 平台。