蚂蚁金服在过去的十几年中用技术重塑金融服务,主要工作集中在金融级交易支付技术和金融级数据智能技术两个领域。
除了和传统大数据相同的需求之外,金融数据智能还有一些独特的需求:
- 实时性要求高:实时数据增长非常迅速,在线决策越来越多,数据时效性对业务发展非常重要。
- 计算场景复杂多样:从简单统计和决策规则发展到复杂图、AI模型以及复杂决策。
- 数据链路长,全链路研发调试:模型研发横跨18个系统,需要掌握多种研发模式,对研发团队提出了巨大挑战。
- 计算存储高可用:需要实现跨域容灾,高可靠的计算服务。
- 数据安全,监管合规,风险防控:严格的数据安全、等级体系,保护用户隐私,遵守监管合规,全面风险的防控。
为了应对金融数据智能的需求,蚂蚁金服的计算技术也经历了漫长的演进和发展过程。针对海量数据,需要使用像MapReduce/RDD这样的批处理计算引擎。时效性要求高,因此也需要做实时计算。数据分析的需求越来越多,于是也实现了交互式分析。同时,计算技术也会面临一些挑战,比如多种计算模式带来了研发效率问题,多套系统带来了多样存储需求,需要花费额外成本,并且还需要不同的容灾要求并保障数据安全,并带来了复杂度上升的问题。
开放计算架构
可能对于工程师们而言,想要解决上述问题最理想的方案就是构建一套统一的系统,但是难点在于系统是什么,如何确定系统的边界以及如何对系统进行抽象。首先,因为计算引擎本身与业务是强相关的,而在现阶段没有一个引擎能够满足蚂蚁金服所有的业务需求,并且业务仍在不停地进行创新,也在不停地提出新的需求。因此,蚂蚁金服希望能够拥有开放的计算架构,能够容纳各种各样的计算引擎。
在开放的计算架构之下,存储也需要统一起来。数据存储可以有各种各样的格式,可以有多个副本和复制,可以针对计算引擎进行各种各样的优化,但是在底层需要使用统一的存储,同时要有统一的全站式安全管控措施。
数据安全管控必须是全站的,金融数据智能体系需要提供全站统一的元数据管理、接入规范、安全等级以及隐私保护体系。只有在统一的数据安全规范之上,才可以将不同计算引擎接入进来。并且,针对每个引擎也需要能够提供不同的安全管控策略。
在开放架构、统一存储和统一数据安全规范的基础之上,蚂蚁金服还希望统一编程模型。蚂蚁现在的做法是统一基于一套标准SQL及扩展让用户直接面对底层数据来写自己的业务逻辑。可以想象为将引擎和存储抽象出来,对业务而言,不需要关注流计算与批计算,而只需要关注需要数据做什么以及数据的时效性即可,其他的部分则由引擎以及存储层自动优化和解决。此外,在统一编程模型中真正实现了面向数据的编程,业务同学面向抽象出来的数据编写业务逻辑,而不需要关注具体细节,这就是数据虚拟化的过程。统一编程模型是蚂蚁金服基于现有的计算模式和经验总结而成的,它能够为用户带来研发体验的巨大提升。
以上的这些就形成了蚂蚁金服所认为的能够支撑未来金融业务持续发展的一整套金融数据智能体系。而如今最为火热的话题就是人工智能技术,蚂蚁也需要考虑如何在金融智能业务中应用人工智能。
人工智能系统的现状基本上就是先有一个数据集,经过数据仓库清洗数据,然后将数据放在模型平台上进行训练并且输出训练好的模型,最终将模型推给线上的服务。在整个流程里面,肯定需要多套系统,并且数据也需要复制多份,这就有可能造成数据安全风险以及存储效率低下的问题。此外,因为模型本身的限制,这一过程很难做到实时,但是实时性在金融系统正在变得越来越重要。对于用户而言,需要做数据仓库,需要掌握机器学习平台,还需要将模型部署上线,整套过程非常复杂和烦琐。而蚂蚁金服在金融数据智能新体系里面直接插入了机器学习引擎。
蚂蚁金服SQLFlow的初衷是希望用SQL来表征和描述所要做的机器学习内容,使用SQL将数据和机器学习串联起来,可以让机器学习变得像SQL一样简单。用户只需要了解SQL就能够完成机器学习训练以及模型预测。
ElasticDL是蚂蚁金服开源的基于弹性调度的AI引擎,它完全基于开源的TensorFlow,但在TensorFlow的基础之上实现了容错以及弹性调度。同时,ElasticDL与SQLFlow进行了集成,使得用户训练模型更加简单。
金融级图计算
在蚂蚁金服业务中存在一些图计算的典型场景,比如实时反套现、社交分析以及营销圈人等。这些场景在蚂蚁金服的金融数据智能体系下实现起来也是非常简单的,相当于在体系中插入了一个图计算引擎。这样一来,不仅提供了离线和在线的图计算引擎,同时将流计算、批计算打通,实现了混合计算引擎。此外,蚂蚁还希望进一步优化金融数据智能体系,通过SQL + Gremlin这样的标准使得机器学习的过程更加简单。并且在底层还实现了强一致的在线图数据库,能够为用户提供海量的图数据存储服务。
蚂蚁金服的金融数据智能体系的思路就是提供一个开放架构,因此每当出现新的数据引擎和数据模式时,可以很容易地直接引入进来。如果业务存在新的需求,还可以接入深度定制化的引擎。无论接入了什么样的引擎,都可以直接处理海量的金融数据。而在这些计算引擎发展相对成熟的时候,可以在上层进行归纳,对研发效率等进行更进一步的优化。
金融数据融合计算
当完成了上述体系之后,还需要考虑很多业务往往需要面对非常复杂的计算场景。在复杂的金融场景下,需要同时使用多种计算引擎,因此需要融合计算模式,使得计算引擎之间的互通更加高效。因此,蚂蚁金服和伯克利合作打造了Ray融合计算引擎。在融合计算引擎之下,可以用一套研发流程和标准来描述多种多样的计算,底层计算的状态、数据以及中间结果都是共享的,并且用户可以选择任意的一种研发语言同时完成数据处理、机器学习以及图计算等工作。
融合计算Ray是一个开源框架。蚂蚁金服在Ray项目上也作出了很多贡献,也和伯克利大学一起推动Ray社区的发展。Ray可以将用户的简单本地逻辑转换成海量的分布式执行模型。基于Ray框架,蚂蚁实现了几个融合计算场景,如动态图推导,结合了流计算和图计算,能够实现一秒内完成6层迭代查询;金融在线决策,数据生产到分布式查询决策在一秒内完成;在线机器学习,实现数据样本到模型端到端秒级更新及数据推送。
融合计算引擎并不是为了取代前面提到的所有引擎,而是作为一个计算引擎插入到开放计算架构中,用于某些特殊的场景。当对所有计算引擎具有深入的了解之后,就可以在上面进行优化,构建一个SmartSQL层。
未来展望
最后分享一下蚂蚁对金融数据智能体系的展望,希望未来的金融数据智能平台的底层存储是统一的,中间的引擎是开放的、可插拔的和可混用的。在最上层,可以进行优化和统一,也可以直接开放给不同引擎,形成Big Data Base体系。既希望金融数据智能平台能够像使用数据库一样简单,也希望其能够成为开放计算架构的大数据平台,不仅能够处理数据,还能够扩展无限可能性。