查看原文
其他

实战 | MLOps在中小银行中的应用实践——以地址标准化模型建设为例

金融电子化 金融电子化 2023-01-22

欢迎金融科技工作者积极投稿!

投稿邮箱:newmedia@fcmag.com.cn

                                          ——金融电子化



      

文 / 成都农商银行科技信息部总经理 李黎明

在银行数字化转型的大背景下,各行都在提高“数据应用”能力,建设数据驱动的决策体系。中国人民银行发布的《金融科技发展规划(2022-2025年)》中提出,要提升银行数智化营销能力,合法合规运用大数据、跨媒体分析推理等技术盘活企业数据资产,洞察客户行为偏好和真实金融需求。中国银保监会发布《关于银行业保险业数字化转型的指导意见》中对数据应用的能力也提出了新的要求,包括:激活数据要素潜能,降低数据应用门槛,深挖业务场景,提高决策支撑,加强全流程的效果评价。


机器学习模型是落地“数据应用”,实现“数据决策”的关键要素,是“数据驱动”体系的关键一环。作为数据加速业务发展的引擎,已被广泛应用于银行的风控、营销与运营等业务场景。


当前机器学习模型必须部署到真实的生产环境中,与软件系统集成,才能充分发挥其价值。然而弥合模型训练与部署之间的差距是一项具有挑战的任务。因此需要对机器学习模型的设计、构建、部署等环节建立一套有效的流程与机制,统称为MLOps(Machine Learning Operations)。


随着机器学习模型的规模化应用,对模型标准的统一管理,模型能力的共享共建,模型服务的可持续迭代运营已成为一个挑战。中国人民银行发布《人工智能算法金融应用评价规范》,从安全性、可解释性、精准性和性能方面开展对AI算法和模型的评价,帮助银行建立自身的模型管控体系。MLOps(Machine Learning Operations)作为工业界在机器学习模型实践中总结沉淀的一系列经验与技术,涉及模型全生命周期的各个环节,可用于应对上述挑战。



MLops介绍

使用机器学习技术与传统软件工程技术来设计和构建复杂计算系统,包括从数据收集到模型部署的所有阶段。作为DevOps的补充,MLOps将机器学习模型的开发与交付分离,提高了整个系统的可靠性、可扩展性与可维护性。


构成一个机器学习系统的三要素:数据、模型、代码。任一要素的变化都会触发模型服务的重新交付与发布。

图    MLops流程图


1.从机器学习的角度出发,MLOps包括以下几个关键环节



(1)数据工程

该环节是一个迭代和敏捷的过程,用于探索、组合、清理和将原始数据转换为用于数据集成、数据科学、数据发现和分析/商业智能 (BI) 用例的样本数据集。包括:数据摄入、数据探索、数据清洗、数据标记、数据拆分。


(2)模型工程

该环节的核心是使用机器学习算法构建模型,包括:模型训练、模型评估、模型测试、模型打包。


(3)模型部署

最后环节是将模型集成到软件系统中,包括:模型服务、模型性能监控、模型日志,操作系统。


2.从软件工程的角度出发,结合机器学习,MLOps包括以下几个关键环节



(1)版本管理

在MLOps中利用版本管理对机器学习工作流中各环节进行追踪,通过版本号将各环节串联起来,方便统一管理与迭代更新。


(2)测试

测试流程保证了模型发布的质量,同时也满足模型规范与监管要求,分为3个部分。


● 对原始数据集与特征数据集的测试:特征计算准确性,数据验证。

● 模型可靠性测试:模型性能测试,集成测试,非功能测试(安全性、公平性、可解释性)。

● 基础设施测试:单元测试,端到端的集成测试。


(3)自动化

机器学习工作流的自动化程度决定了模型训练,部署的效率,而MLOps的核心目标是将模型自动部署到核心软件系统,这意味着机器学习工作流一旦被触发,中间环节无需人工干预,整个流程即可自动完成。


(4)可复现性

工作流的稳定可复现是决定模型稳定性的关键。在实践中,模型产出稳定的预期结果是很重要的,对机器学习工作流的输入物料、中间结果、输出结果都需要被记录与存档,结合版本管理工具,保证系统稳定,状态可控。


(5)持续部署

将经过验证的模型持续部署发布到线上环境。这里参考DevOps定义的关键指标,来捕捉模型开发和部署的有效性:部署频率、变更提前期、平均恢复时间和变更失败率。


(6)监控

涉及业务监控与系统监控。业务监控是确保模型按照预期执行,保证模型性能;系统监控是确保模型服务的稳定,能持续对外提供服务。


实践案例

案例简介:用户的地址信息在行内的多个系统有采集与存储,由于地址的来源不统一,且格式不规范,导致数据处理的难度较大,不能有效利用这些文本地址开展监测和分析。地址标准化后,可释放数据要素潜能,沉淀高质量数据,可用于风险监测和营销统计分析。

接下来对该案例分步骤进行分析与拆解。


1.数据探索

用户输入的地址数据在早期是没有经过强校验的,因此数据的结构不一致,可能缺少街道信息,乡镇信息不统一,同时一个实体地址的名称可能有多个,门牌号与道路的编号不准确,楼栋号与单元号缺失等等问题。


我们按地区(城市,乡村)的不同,抽取了部分数据样本。根据数据的情况,将地址标准化定义为一个复合任务,包括3个子任务:地址纠偏、地址补全、地址结构化。地址纠偏是将用户输入的地址名称统一成国家行政区划命名以及有关部门的命名;地址补全是设定一个模板,包含省、市、区(县)、镇(街道)、村(道路)、居住地的数据字段,将除居住地之外,缺失的部分进行填充;地址结构化是将地址字符串解析成多个字符串,格式化数据结构。行政区划,道路信息有固定的规范,但居住地是地址中粒度最细的一个层级,没有统一规范格式,识别与标注的难度较大,需要模型来识别,比如:小区名、楼栋号、单元号、门牌号。


2.数据工程

3个子任务的目标并不相同,因此在数据工程阶段可以解决前2个问题。针对地址纠偏,这里采用词典结合规则的方式,对除居住地外的部分进行逻辑校验,比如成都市与宜宾市的区县是相互独立的,成都市不存在翠屏区;针对地址补全任务,使用外部地图服务,补录缺失的地址信息,比如“成都市春熙路IFS”,会被补全为“成都市锦江区锦官驿街道春熙路IFS”。


针对地址结构化这一子任务,我们会用深度学习模型来处理。从数据平台抽取部分数据,选择具有代表性的数据作为训练与测试样本数据集。同时统一管理该数据集,与数据加工流程的版本。


3.模型工程

我们将地址结构化定义成一个序列标注任务,使用NLP中的预训练模型(BERT)加一个线性分类器对每一个词进行分类及NER命名体识别。模型的效果是将居住地的字段拆开,比如“XX小区6-1-1903”,会被标记成:cellno:XX小区;buildno:6栋;unitno:1单元;floorno:1903号。


中文无法被计算机识别,需对原始字符串进行编码,转换成计算机能识别的形式。通常做法是将其转换成张量进行处理。神经网络结构选用BERT中文预训练模型,用交叉熵作为损失函数,并使用Adam算法进行模型训练。每轮模型训练都对模型进行测试与评估,记录模型的性能。


4.模型部署

模型部署涉及‍大量软件工程相关的内容。根据MLOps的理论,持续部署的内容不仅包含代码,同时包含数据与模型。我们的模型使用容器技术部署,并且将数据流与数据平台打通,充分利用我行已有基础设施。


当模型投产上线运行后,需要验证结果,并持续监控模型,基于实时或离线的数据观察机器学习模型性能。如果模型的预测结果或训练样本集的分布与真实数据有偏差,模型可被标记,同时系统自动触发模型的迭代流程,重新训练模型。


未来展望

本文介绍了MLOps的理念与流程,并在行内进行初步的实践与探索。通过一个完整案例,将整个建模流程进行拆分,使流程标准化,规范化。同时利用行内相关工具,实现模型开发与模型交付的分离,闭环管理整个流程。未来,我们将进一步细化数据工程、模型工程、模型部署这三个环节的流程规范,通过引入相关工具与平台,提高整个流程的自动化程度,更好地践行MLOps理念,从MLOps到MLOpsA(Automation),让机器学习模型能高效服务于实际业务。






往期精选:

(点击查看精彩内容)


● 实战 | 中小城商行湖仓一体数据服务架构建设实践

● 实战 | 湖仓一体助力平安产险数字化转型

● 实战 | 深化“湖仓一体”, 夯实数据应用基础

● 实战 | 立足技术创新,湖仓一体共生实践

● 实战 | 夯实基础,积厚成势——工商银行大数据服务平台建设实践







新媒体中心:主任 / 邝源  编辑 / 傅甜甜  张珺  邰思琪

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存