2、在线推理链路概念
在信用评分系统中,在线推理是指当用户发起贷款申请、信用卡审批或额度调整等实时请求时,系统在毫秒至秒级时间内完成特征计算、模型打分并输出决策结果的过程。与之相对的是离线批处理,两者在时效性、数据范围和计算模式上存在本质差异。
2.1 什么是在线推理
在线推理(Online Inference)是模型在生产环境中接收单条或小批量实时请求,经过特征工程和模型计算后立即返回预测结果的过程。在信用评分场景下,在线推理的典型输入包括用户身份信息、征信报告、交易流水等,输出为违约概率、信用分数或拒绝/通过/人工审核等决策。
核心特征:低延迟(通常 < 200ms)、高并发(数千 QPS)、强一致性(同一用户多次请求结果一致)、高可用(99.9%+ SLA)。
2.2 离线批处理与在线推理的区别
离线批处理通常用于模型训练、特征回溯、批量用户评分(如贷后监控、存量客户分层)。下表从多个维度对比两种模式:
| 对比维度 | 离线批处理 | 在线推理 |
|---|---|---|
| 触发方式 | 定时调度(每日/每小时) | 实时请求(API 调用) |
| 数据范围 | 全量用户或大批量分片 | 单条用户请求 |
| 延迟要求 | 分钟级 ~ 小时级 | 毫秒级 ~ 秒级 |
| 计算引擎 | Spark / Hive / Flink | 模型服务容器 / 推理网关 |
| 特征来源 | 离线数仓(HDFS / Hive 表) | 在线 KV 存储 / 实时特征平台 |
| 模型部署 | 模型文件 + 批处理脚本 | 模型服务化(Triton / TorchServe / PMML) |
| 容错策略 | 任务重跑 + 断点续传 | 超时重试 + 降级策略 + 熔断 |
| 典型场景 | 模型训练、特征回溯、批量评分 | 实时审批、反欺诈拦截、额度试算 |
实践建议:在线推理链路中,特征工程的计算逻辑必须与离线训练时完全一致,否则会导致训练-推理偏差(Training-Serving Skew)。建议将特征计算代码封装为共享库,在离线和在线两端复用。
2.3 在线推理链路的典型架构
一条完整的信用评分在线推理链路通常包含四个核心阶段:请求入口 → 特征工程 → 模型推理 → 决策输出。下图展示了各阶段的组件与数据流:
2.4 各阶段详解
2.4.1 请求入口
请求入口是推理链路的第一道关卡,负责接收客户端(如 H5 页面、APP、第三方渠道)发起的评分请求。主要职责包括:
- 协议转换:将 HTTP/gRPC 请求转换为内部 RPC 调用。
- 鉴权与限流:校验 API Key、Token,按用户/渠道维度进行 QPS 限流。
- 参数校验:检查必填字段(如身份证号、手机号)是否完整、格式是否正确。
- 路由分发:根据请求类型(如申请评分、行为评分)路由到对应的推理服务。
2.4.2 特征工程
特征工程是在线推理链路中最复杂、最容易出错的环节。它通常包含三个子步骤:
- 特征获取:从在线存储(Redis、HBase)或外部接口(征信机构、第三方数据源)拉取原始数据。
- 特征计算:执行与离线训练完全一致的衍生逻辑,如 WOE 编码、分箱映射、聚合统计(近 30 天借款次数、最大逾期天数等)。
- 特征拼接:将多个来源的特征按用户 ID 对齐,组装成模型输入向量。
常见陷阱:特征工程中若使用实时计算(如滑动窗口统计),需注意窗口边界与离线一致。例如离线使用自然月统计,在线也应使用自然月,而非滚动 30 天,否则会导致分数偏差。
2.4.3 模型推理
模型推理阶段将特征向量输入已部署的模型,输出预测结果。常见的模型服务化方案包括:
| 方案 | 适用模型类型 | 延迟 | 特点 |
|---|---|---|---|
| Triton Inference Server | TensorFlow / PyTorch / ONNX | 低(~10ms) | 支持多模型、动态批处理、GPU 加速 |
| TorchServe | PyTorch | 中(~20ms) | 与 PyTorch 生态深度集成 |
| PMML / PFA | 传统 ML(LR / GBDT / RF) | 低(~5ms) | 跨语言部署,无需重写模型逻辑 |
| 自研推理引擎 | 自定义规则 + 轻量模型 | 极低(< 2ms) | 高度定制,适合简单评分卡 |
2.4.4 决策输出
模型推理输出的原始分数(如违约概率 0.12)通常不能直接用于业务决策,需要经过决策引擎进行后处理:
- 分数映射:将模型输出映射为业务可理解的信用分数(如 300~850 分)。
- 规则叠加:在模型分数基础上叠加硬性规则(如黑名单直接拒绝、多头借贷超限降额)。
- 决策矩阵:根据分数 + 规则组合,输出最终决策(通过 / 拒绝 / 人工审核)及额度、利率建议。
- 结果回写:将决策结果写入数据库或消息队列,供后续贷后监控、报表分析使用。
架构要点:决策输出阶段应设计为可配置化,通过规则引擎(如 Drools、EasyRules)或决策表管理,避免每次业务策略调整都修改代码重新部署。
2.5 在线推理链路的非功能性要求
除了功能流程外,生产级在线推理链路还需满足以下非功能性要求:
- 高可用:服务多副本部署,单节点故障不影响整体链路。
- 可观测性:全链路埋点(Trace ID),监控每个阶段的延迟、成功率、特征缺失率。
- 灰度发布:新模型上线时支持 A/B 测试或金丝雀发布,逐步切换流量。
- 降级与熔断:当特征存储或模型服务超时时,启用降级策略(如使用缓存特征、返回默认分数)。
- 数据一致性:同一用户重复请求应返回相同结果(幂等性),避免因重试导致分数波动。
下图展示了在线推理链路中非功能性能力的支撑关系:
工程落地建议:在搭建在线推理链路初期,优先保证高可用和可观测性,这两项是排查线上问题的基础。灰度发布和降级熔断可在链路稳定后逐步完善。