OceanBase开发者大会实录-陈文光:AI时代需要怎样的数据处理技术?

 本文来自2024 OceanBase开发者大会,清华大学教授、蚂蚁技术研究院院长陈文光的演讲实录—《AI 时代的数据处理技术》。完整视频回看,请点击这里>>

1714119496

大家好,我是清华大学、蚂蚁技术研究院陈文光,今天为大家带来《AI 时代的数据处理技术》主题分享。

我们身处一个以信息技术为核心驱动力的大数据时代。从下面这张图,我们可以看出,数据量和数据生成的速度在飞速增长。与此同时,新的产生数据的形式在产生,数据模态也在不断增长,不仅包括自然语言,还有声音、图像、视频等等多种形式。最近非常流行的多模态大模型包括具身智能、触觉等新的数据形态。

1714119653

丰富的数据形态要求我们要对数据做有效处理。模仿“马斯洛需求层次理论”,数据处理也有一个层次,从最底下的收集数据、存储数据到做一般的数据查询处理,更上面的层次是现在越来越接近于用 AI 方式处理数据,甚至最后还能生成很多内容。

1714119677

一、AI 时代数据处理新需求

这样的大模型崛起的时代也引发了对数据处理的新需求。最近,Meta 出了一个新模型 LLaMA-3,效果非常好,它实现了在十几万亿的 Token 上面做的训练,而我们之前很多模型可能只是在 4T 的或者几个 T 的 Token上面做训练。

那么,如何获得增加的这部分 Token?实际上,这需要从很多网上低质量的数据中做大量的数据处理,清洗出来可用的高质量数据,如果想让大模型的能力进一步增长,实际上需要数据处理做很多的工作。

另一方面,大模型直接应用在生产服务场景下,本身还存在很多缺陷,比如幻觉问题、上下文长度的问题。目前的多数超长上下文大模型并不能完整记录真正领域的知识。为了满足需求,向量数据库和大语言模型结合起来,提供高质量的服务。 

1714119739

从数据服务的角度来讲,向量数据库是一种使用嵌入的方式表达知识,再用另外索引的方式快速找到相应知识的方式,它和大模型配合才能获得很好的效果。所以大模型的发展和崛起,对数据库领域也提出了很多新需求。

二、AI 时代数据库发展趋势

在这样的趋势下,我今天想分享三个观点,也是未来的数据库面临的三个比较重要的发展趋势:

(一)在线离线一体化

这张图是企业常见的在线、离线两个链路。

1714119795

○   上面是在线链路,一个数据请求会先经过预处理,再通过训练好的模型做推理,比如风控、分类等等,再把结果反馈到 KV 里,直接服务用户的请求。

○   下面是离线链路,收到数据请求后,我们要想办法处理,去更新模型。经过一段时间后再把模型更新到在线链路上。

在线、离线两个链路分开,在生产中会遇到一些比较严重的问题,主要就是在线、离线不一致。

比如在离线链路上做了各种仿真模拟,但是当把策略、模型上传到在线链路时,会出现与离线链路仿真效果不一样的情况。造成这种现象的根本原因,就是我们通过不同的数据链路把新数据接入进来,离线链路处理的数据与在线链路不一致。

怎么解决这个问题?最好的解决方案,就是只有一套数据。如果能够做到一个系统既能够做事务处理,可以支持事务在数据上面原子化地做更新,同时还可以在这一批数据上做后续分析型的业务。也就是说用一份数据给在线离线链路的一致性打下基础。

1714119837

这里面也有非常多的技术问题。一般来说,事务处理行存会比较好,分析一般是列存比较好,当一套系统需要同时支持行存和列存的时候,需要什么样的存储结构?另外,事务处理对于优先级、延迟/尾延迟、吞吐率要求比较高。那么在系统里如何调度不同优先级的请求,这里涉及到很多相关技术。

在蚂蚁的图风控中,也有另外一个场景。刚才我们讲到,可以通过数据库本身的 HTAP 引擎解决在线/离线一致性的问题,如果没有这样的混合系统,应该如何实现两份数据达到在线离线一致性?下面以图风控方案中的在线离线一体化为例,给大家介绍。

1714119849

TuGraph DB(分布式图数据库),是一个支持 事物处理 的图数据库。TuGraph Dataflow (流图计算系统),可以看作是一个支持图语义的 Flink。

在我们原来的方案中,这两个系统采用不同的查询语言,一个是我们自定义的 GQuery 语言,另外一个是基于 Java 的支持 Gremlin 语言。这两个系统的数据通过 TuGraph Dataflow 处理完成后,一条线通过 TuGraph DB 去做在线链路,另外一个经过存储去完成后续的离线分析,这时就会出现数据不一致的情况。

这个问题如何解决呢?首先需要让数据保持一致性。数据虽然是两份,但是在TuGraph DB 和存储之间新增了一条数据同步链路,就是通过从 Binlog 中读取数据,保证两份数据的一致性,防止出现两边写,一边写成功、一边写失败,而导致的数据不一致。当把在线数据里已经处理完成的数据同步至离线数据,这时数据的一致性是有保证的。

1714119865

另外,我们把这两个系统的查询语言和语义都统一起来,都使用国际标准图查询语言 ISO-GQL,同样一套查询语言在两个系统上用同一个语义支持,在进行后续的策略分析时,数据和查询语言的语义是一致的,可以达到更好的一致性。

这里也存在非常复杂的情况。图数据库的基本功能是从一个点扩出去很多点,但是有些点的邻居非常多,可能有几十万、上百万个,所以我们会限制每个点扩展的点数,比如只扩两百个。但同时还需要在两个系统中保证不仅只扩两百个点,这两百个点都是一样的,才能保证数据一致性。所以想要在两个系统中要保证数据一致性,需要花费相当大的精力。

(二)向量数据库和关系型数据库一体化

向量数据库和大语言模型的结合有非常重要的作用,如果一个企业要用大语言模型做服务,既要部署语言模型又要部署向量数据库,同时企业的很多数据又保存在关系型数据库中。

这样一个多系统复杂混合的部署,开发、部署、维护非常困难。因为涉及到多个系统之间的依赖性,软件版本、系统之间的交互也会存在很多的问题。如果能够把这些功能做到一起,就能够实现一致性的管理。

1714119913

在关系型数据库中,可以通过一些插件支持向量数据库的语义,同时在调用查询引擎的时候,将数据分到不同的链路上执行,从用户的角度就可以实现只部署一个系统,使用一套语言,完成相关工作。

蚂蚁集团有一套内部的 VSAG 的向量库,实现了主流向量数据库的相关功能,而且在实际生产中已经得到应用。向量数据库最有名的是 FaceBook 开源的 FAISS 系统。

VSAG 和 FAISS 之间有什么区别?FAISS 功能非常强大、性能非常好,对 GPU 也做了很多优化,但是相对来说提供了很多底层功能,这就需要通过调整各种参数、配置,从中得到一个对应用比较合适的配置。

而蚂蚁集团的 VSAG 库更多从开发者和产品应用性的角度出发,默认把很多基础配置的事情都做好了,而且在 CPU 上也实现了很多优化,提供了近似于开箱即用的功能。

1714119934

在 OceanBase 里,以插件的方式集成了 VSAG 功能,可以在 OceanBase 里使用 VSAG 向量化的功能,用一套系统达到这样的效果。

1714119961

(三)数据处理与 AI 计算一体化

有人可能会问,数据处理不就是 SQL 吗?AI 是神经网络层面的东西,AI 与 SQL 为什么会结合到一起?我举一个例子。大家知道世界上有很多的网页,网页上面有很多内容,内容量非常大,远超几十 T、几百 T。但是在这些海量内容中,很多内容质量很低,如何从中提取出高质量的内容?FaceBook 提出了一套 CCNet 的流程,下图的 CCNet 流程展示了数据处理和 AI 的模型在这一过程中的融合试用。

1714120103

第一步, CCNet 对网页的原始数据进行解析,在 HTML 的网页中抓取内容,这里涉及到解析等工作。

第二步是删冗,删冗也可以被认为是一个 JOIN,因为抓取网页内容中可能用到了别的网页内容,语料里面有冗余不利于最后的训练,即对每段话都做一个哈希,和过去已有的内容对比,是相同还是不相同。解析与删冗是非常典型的数据处理过程。

第三步,做语言分类,需要经过神经网络模型判断网页的语言。

接下来,通过一些 AI 模型对数据做分词、质量评估,后面的过滤、分桶工作,又回到数据处理。

在这个应用里,数据处理和 AI 计算处于交叠的状态,不是一次数据处理之后都交给AI 完成后续的处理,这是一个复杂的来回交互的链路。

那这种情况下,什么样的系统可以支撑这样复杂交互的服务?现在的 AI 和大数据生态基本是割裂的生态:

○   AI 用 Python,主要用 GPU ;

○   大数据基本上是用 CPU ,用基于 Java 的 Spark 实现。

另一方面,在很多小数据的处理上,Python 已经展现出非常强大的性能,像 Pandas 这样的系统,在单机数据的处理上提供了非常方便的接口。

当 AI 逐渐成为主流计算形态的时候,数据应该如何与 AI 融合?

由于 Spark 是基于 Java 的生态,当我们如果把大模型处理交给 Spark 去做,它产出的结果要通过文件系统、或者其他传输方式交给 AI 的 Python 程序,Python 处理完之后可能还有一些后续处理。在刚才的例子里面,数据处理和 AI 计算之间会有多次的交互,对整个系统的开发、调试、部署、维护带来非常大的问题。

1714120167

有人尝试把数据处理和 AI 结合起来。2019 年,英特尔出了一个系统“BigDL”,在 Spark 里面把神经网络的描述、优化器、训练方式把这些东西加进去。当时只支持了 CPU,而且是基于 Java 的。我们可以认为,这种方式是试图把 AI 融入到大数据的生态里面。

我们反过来看,如何把大数据的生态往 AI 的方向牵引?这其实是 Spark 的 Python 化。

1714120190

上图是 2022 年在DataBricks Summit上讲的。这是一个分布式的 PySpark,就是 Python 接口的 Spark系统。当时 PySpark 的使用率已经达到了整个 Spark 使用率的近 50%,很多人已经愿意用 PySpark 了。但是 PySpark 还存在一个问题:它的性能很差。

Python 是一个动态语言,在编译时不知道它的类型,动态时才知道,所以它的性能很差,比 Java 的 Spark 还要慢一半。所以虽然 PySpark 对编程非常友好,很多人也习惯用,但是性能不太好。因此我们在处理大量数据的时候,希望能够避免这一问题。

所以,我们提出一个愿景,融合数据处理和 AI 生态

1714120210

我认为还是要基于 Python,因为 AI 是主要的计算形式,所以整个数据处理应该围绕 AI 建设。从编译优化的角度来讲,我们希望把 PySpark 做很多的优化。这件事是可以做的,我们最近也有了一些成果。在删冗部分,通过把 PySpark 做相关优化,基本上性能可以提升一倍多,可以达到我们的性能预期。

未来,这个生态不只是编程要融合,底层的硬件也要融合,数据和 AI 结合以后,底层的硬件生态也要支持 GPU、弹性任务调度,最后可以达到“一次编写到处执行”的效果。

更多2024开发者大会的资料回顾,请访问这里>>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/5901.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】atoi和atof函数的使用

人生应该树立目标,否则你的精力会白白浪费。💓💓💓 目录 •🌙知识回顾 🍋知识点一:atoi函数的使用和实现 • 🌰1.函数介绍 • 🌰2.代码演示 • 🌰3.atoi函数的…

Flask框架进阶-Flask流式输出和受访配置--纯净详解版

Flask流式输出🚀 在工作的项目当中遇到了一种情况,当前端页面需要对某个展示信息进行批量更新,如果直接将全部的数据算完之后,再返回更新,则会导致,前端点击刷新之后等待时间过长,开始考虑到用进…

liceo靶机复现

liceo-hackmyvm 靶机地址:https://hackmyvm.eu/machines/machine.php?vmLiceo 本机环境:NAT模式下,使用VirtualBox 信息收集: 首先局域网内探测靶机IP 发现IP为10.0.2.4 开启nmap扫描一下看看开了什么端口 扫描期间看一下web页…

[蓝桥杯2024]-PWN:fd解析(命令符转义,标准输出重定向,利用system(‘$0‘)获取shell权限)

查看保护 查看ida 这里有一次栈溢出,并且题目给了我们system函数。 这里的知识点没有那么复杂 方法一(命令转义): 完整exp: from pwn import* pprocess(./pwn) pop_rdi0x400933 info0x601090 system0x400778payloa…

78、贪心-跳跃游戏

思路 方法1: canJump01 - 使用递归(回溯法) 这个方法是通过递归实现的,它从数组的第一个位置开始,尝试所有可能的跳跃步数,直到达到数组的最后一个位置或遍历完所有的可能性。 思路: 如果数组为空或者长…

【docker】docker compose 搭建私服

安装 Docker Registry 创建目录 mkdir -pv /usr/local/docker/registrymkdir -pv /usr/local/docker/data 创建 docker-compose.yml文件 进入目录创建docker-compose.yml cd /usr/local/docker/registrytouch docker-compose.yml 编辑docker-compose.yml vim docker-compo…

2024年【起重机械安全管理】考试内容及起重机械安全管理操作证考试

题库来源:安全生产模拟考试一点通公众号小程序 起重机械安全管理考试内容根据新起重机械安全管理考试大纲要求,安全生产模拟考试一点通将起重机械安全管理模拟考试试题进行汇编,组成一套起重机械安全管理全真模拟考试试题,学员可…

52.HarmonyOS鸿蒙系统 App(ArkTS)配置文件添加多个权限方法

52.HarmonyOS鸿蒙系统 App(ArkTS)配置文件添加多个权限方法 module.json5

VS2022 嘿嘿

还是大二的时候就开始用这个,但居然是为了用PB,-_-|| 用了段时间换成了C#,依稀还记得大佬们纠正我的读法,别读C井,应该读C夏普。。。 安装过程其实也没啥,就是关键Key得花时间找,我好不容易搞…

Concise CoT(CCoT)提示词工程

原文地址:concise-chain-of-thought-ccot-prompting 2024 年 1 月 24 日 传统的 CoT 是以增加输出令牌使用为代价的,CCoT 提示是一种提示工程技术,旨在减少 LLM 响应的冗长和推理时间。 基于LLMs的生成式人工智能应用程序必须使用多管齐下的方…

php使用Canal监听msyql

canal需要java8 去官网下载java8 安装JAVA #创建目录 mkdir -p /usr/local/java/ #解压到目录 tar zxvf jdk-8u411-linux-x64.tar.gz -C /usr/local/java/配置环境变量在 /etc/profile 最后加入 export JAVA_HOME/usr/local/java/jdk1.8.0_411 export CLASSPATH.:$JAVA_HOM…

牛客NC320 装箱问题【中等 动态规划,背包问题 C++/Java/Go/PHP】

题目 题目链接: https://www.nowcoder.com/practice/d195a735f05b46cf8f210c4ad250681c 几乎完全相同的题目: https://www.lintcode.com/problem/92/description 思路 动态规划都是递归递推而来。php答案是动态规划版本,递归版本有 测试用…

基于Java+SpringBoot+Mybaties-plus+Vue+elememt+hadoop + redis 医院就诊系统 设计与实现

一.项目介绍 前端:患者注册 、登录、查看首页、医生排班、药品信息、预约挂号、就诊记录、电子病历、处方开药、我的收藏 后端分为: 医生登录:查看当前排班信息、查看患者的挂号情况、设置患者就诊记录、电子病历、给患者开药和个人信息维护 …

公共交通无障碍设施:科技翅膀助力盲人出行新飞跃

在城市的脉络中,公共交通扮演着连接每一个角落的重要角色。然而,对于视力受限的盲人朋友而言,这幅繁忙而复杂的交通网络往往隐藏着诸多不易察觉的障碍。值得庆幸的是,随着公共交通无障碍设施的不断完善,以及高科技辅助…

20240502给NanoPi的NEO core开发板编译移远的4G模块的上网程序quectel-CM

20240502给NanoPi的NEO core开发板编译移远的4G模块的上网程序quectel-CM 2024/5/2 16:29 1、默认编译为AMD64/INTEL的x64架构的可执行文件: rootrootrootroot-ThinkBook-16-G5-IRH:~$ rootrootrootroot-ThinkBook-16-G5-IRH:~$ unzip Quectel_QConnectManager_Lin…

CSS-复合选择器

作用&#xff1a; 后代选择器&#xff1a; 子代选择器 并集选择器 用逗号隔开&#xff0c;在style里面写的时候&#xff0c;每一个标签空一行。 <title>Document</title><style>p,div,span{color: aqua;}</style> </head> <body><p>…

C语言——队列的实现

队列按照先进先出&#xff08;FIFO&#xff0c;First In First Out&#xff09;的原则管理数据。这意味着最先进入队列的元素会被最先移出&#xff0c;类似于排队等候服务的情况。队列通常有两个主要操作&#xff1a;入队&#xff08;enqueue&#xff09;&#xff0c;将元素添加…

python - 3D图表绘制

Pyecharts 和 3D 图表绘制 Pyecharts 是一个用于生成各种图表的 Python 库&#xff0c;它基于 Echarts&#xff0c;支持大量的图表类型&#xff0c;非常适合用于数据分析和可视化。Pyecharts 主要优点是易于使用&#xff0c;可以直接在 Python 环境中绘制富有交互性的图表&…

ES练习项目-酒店搜索

目录 1 需求分析2 酒店搜索和分页2.1 请求和响应分析2.2 定义实体类&#xff0c;接收请求参数的JSON对象2.3 编写controller&#xff0c;接收页面的请求2.4 编写业务实现&#xff0c;利用RestHighLevelClient实现搜索、分页 3. 酒店结果过滤3.1 请求和响应分析3.2 修改请求参数…

结合创新!频域+时间序列,预测误差降低64.7%

频域时间序列不仅能提供更丰富的信息&#xff0c;还能提高模型性能和预测准确性。对于论文er来说&#xff0c;是个可发挥空间大、可挖掘创新点多的研究方向。 具体来说&#xff1a; 通过将复杂的时间序列数据转换成简单的频率成分&#xff0c;我们可以更容易地捕捉到数据的周期…