导读 本文将分享中原银行在 AI 平台建设过程中的一些实践和思考。
主要从以下几方面展开:
1. AI 平台建设目标
2. AI 平台建设实践
3. AI 平台建设思考
4. ModelOps 建设实践
分享嘉宾|刘顺华 中原银行 AI 平台负责人
编辑整理|霍傲 九江银行
出品社区|DataFun
01
AI平台建设目标
首先是需要对业务需求进行分析,然后确定一个业务目标,并根据确立的目标来搜集所需要的数据,而后面对数据进行清洗标注等一些的处理; 数据准备好之后就可以进行特征工程和模型训练,模型训练完成并通过评估之后就可以部署到生产环境; 最后对部署到生产环境的模型进行监控,等到模型性能衰减到一定程度之后,就需要对模型进行及时的更新迭代,这是开发一个 AI 模型比较规范的流程。
在技术层面,由于计算资源即服务器是各自申请使用,会导致总体上的资源分配不均衡,互相隔离的服务器也会导致数据、资源共享复用困难,还会导致模型训练环境不一致,对后续维护或者是工作交接造成困扰; 在数据存储同步方面,由于每个人所需要的数据各自都会去同步存储管理,会加大存储和数据管理的开销,也增大了负责数据 pipeline 开发和运维工作人员的工作压力; 在模型构建方面,传统的开发工具较为简陋,对于模型开发和评估的全流程都需要手动实现; 对于代码和模型管理方面,传统的 AI 模型开发流程对于代码和模型的版本管理基本是缺失的; 对于模型部署上线方面,一方面是传统数据科学家对于模型的实时服务的发布上线和模型的批量定时调度存在一定的困难,这会导致模型的持续集成、持续部署、持续训练的流程不畅;另一方面是模型开发上线是一个工程问题,它涉及到数据处理、模型构建、模型部署以及模型上线等多个角色之间的相互配合。而由于缺少一个协同的工作平台,会导致各个角色之间工作协同的困难。
首先是对于模型开发训练所需要的基础环境,基础资源,比如算力资源、存储资源、算法框架进行统一的管理,并且对普通用户屏蔽具体的细节,真正做到资源的共享复用和开箱即用。 对于模型开发训练所需要的开发环境进行集成,提供应用的代码开发调试的集成开发环境,并且提供智能化的版本管理工具。 对于建模所需要的数据,平台需要提供统一的数据接入、存储、管理和治理服务,并且同时加强对于公共数据和私有数据的权限管理以及生命周期的管理,从而提高数据的共享复用。 最后对于模型的开发训练,平台也需要提供一站式的工程化能力,从而提高模型的训练和评估的效率,同时降低模型的部署上线和监控的难度。
缩短模型开发部署的迭代周期,曾有报告显示很大一部分的公司需要 30~90 天才能上线一个模型,更有甚者需要 90 天以上才能上线一个模型。 由于一些算法工程师花在模型部署方面的时间比例明显偏多,所以 MLOps 希望通过更标准化、自动化的流程与基础设施来提升模型交付的整体效率。 另一个核心问题是 MLOps 希望通过提供一个协作平台,让业务、数据、算法、运维等角色既能专注自己更擅长的工作,又能进行高效协作,从而提高业务的价值产出。
自动化,从数据接入到模型训练到最后的部署上线,能自动化的都要自动化; 持续性,既持续集成、持续部署、持续训练,以保证生产上的模型能够及时的更新迭代; 版本化,对于数据代码、模型都应该有版本管理的功能; 测试,需要对数据、模型和应用的 pipeline 都进行测试,以保证输出结果与预期的业务目标相符合; 监控,需要对数据和模型进行监控,以保证能够及时发现模型的异常情况,并触发预警。 再现性,应该保证整个建模过程以及结果的可复现性。
2019.08 产品第一次上线; 2020.10 对计算集群进行了扩容,对版本进行了升级; 2022.09 将训练集群和推理集群进行了拆分; 目前正在搭建容灾环境。
在进行数据探索之前需要创建数据探索任务,创建任务的同时平台会对所需要的计算资源和存储资源进行管理和分配; 平台可以通过预置的一些数据处理和特征工程相关的算子,支持用户在 web 页面或者通过拖拉拽的方式,实现对数据进行清洗、转换、统计以及特征转换和衍生、特征选择等; 平台可以通过预置的可视化处理算子,实现对数据处理过程的可视化,帮助用户能够及时的了解每一步处理之后数据集的变化情况; 可以保存数据处理和特征工程过程,方便后续重新执行,或者是对新进来的数据执行相同的数据处理过程。
在模型开发方面,平台提供了三种建模方式分别是:面向数据科学家的自编码建模,面向IT工程师的工作流建模(即拖拉拽建模),以及面向业务人员的自动建模。通过这三种建模方式,可以使不同角色和不同能力的人都可以参与到 AI 模型的构建过程中,降低智能化应用的获得门槛。 在模型训练方面,平台提供了模型超参数的调优、训练所需资源的申请和配置,以及训练所依赖环境的自定义安装、训练过程实时的可视化监控、以及训练日志的查看等功能。
首先,AI 是一个高资源消耗和强计算的技术,算力的强弱直接关系到 AI 模型训练的精度与实时推理的结果。对于开发一个模型的原始的做法,可能是每个项目组或者数据科学家都会申请自己的高性能服务器,这种方式的明显缺点是不能充分利用昂贵的服务器资源。 另外根据不同的业务场景,AI 应用所需要的资源类型也可能会不同。比如有些场景需要 CPU,有些场景就需要 GPU,而且每批服务器的型号和架构可能也不同,这就会给数据科学家对这些资源的使用和管理带来很大的挑战。
使用 K8S 对物理服务器的计算资源与存储空间进行统一的管理和调度,为每个租户创建自己的 namespace,并且对计算资源和存储存储空间进行隔离。 用户在进行模型开发之前,可以在 web 页面中申请所需要的资源类型和资源配额,同时平台通过提供多种资源调度方式,使得用户自己可以根据实际的模型开发训练过程对资源分配和占用情况进行调整。 AI 平台也对接了 CDH 的大数据集群,对于大数据量的处理任务,可以通过大数据技术提高处理效率。
集成常用的开源算法,方便数据科学家在平台上直接使用。 提供常用的数据处理和模型训练相关的算法封装,即平台里的算子,这样能够方便用户直接通过拖拉拽的方式进行模型开发,并且允许用户自定义算子。 提供一些自动建模的工具,针对一些特定的业务场景,普通用户也能够开发自己的 AI 模型,并且也能够取得不错的模型效果。
集成了主流的开源机器学习算法库和深度学习框架,比如 Scikit-learn、Pytorch、XGBoost、TensorFlow 等; 提供丰富的算子库,内置了200多种常用的数据处理、特征工程、机器学习、模型预测与评估等相关的一些算子,并且也提供这些算子的相应源代码,允许用户直接组建工作流与模型构建,进行快速的 AI 模型的构建; 通过提供集成的开发环境,支持用户使用 Python、R 等语言,对算子进行编辑,或者是开发自己的算子; 基于 Docker 技术实现对算子的封装集成,支持用户将自定义算子发布到算子库中,从而方便共享复用,能帮助成为公司的重要的智力资产; 在自动建模方面,集成一些常见的自动建模框架和自研的自动机器学习算法提供了自动建模的功能,实现了在图像识别、反欺诈、自然语言处理、产品推荐、时序预测场景的自动机器学习。
数据来源多样,如银行的数据不仅会涉及到交易数据,还会涉及到运营数据、用户行为数据,而且还涉及到众多外部数据,如征信、工商、司法等; 数据类型多种多样,不仅有结构化数据,还有文本图片、视频、音频等半结构化和非结构化数据; 数据开发缺少统一的标准,数据中隐藏的有价值的信息难以挖掘出来; 对于海量的数据,不仅清晰标注加工处理存在困难,如何存储也是一个较大的挑战; AI 建模的数据需求,有些方面与传统需求不同,如在数据的采集方面,AI 需求可能需要采集的数据范围更广,数据类型更多样,在数据的加工衍生方面也更具有针对性,且对于离线数据和实时数据的消费方式也有别于传统的应用。
模型有风险; 监管有要求; 行内有痛点。
在流程管理方面,以项目的视角看待模型工作,将模型生命周期进一步扩展,拉通模型需求管理流程、开发训练流程、上线流程,以及资产管理流程,无缝对接行内 OA 等管理系统,实现模型全生命周期流程的管理; 在敏捷部署方面,通过加强模型相关人员的协同,来降低模型开发训练门槛、实现模型的自动化部署。 在资产管理方面,通过构建资产库和相关的制度,对模型资产进行集中管理和治理。 在监控预警方面,打造产品级的监控预警,实现了模型监控的标准化、配置化、可视化。