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

news2024/11/23 4:00:06

 本文来自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.coloradmin.cn/o/1639208.html

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

相关文章

MathType如何使用LaTex代码编辑公式?MathType使用LaTex代码编辑公式教程 mathtype高仿latex

MathType专为解决数学公式输入问题打造,内置有自定义函数识别、国际性字符输入、拖放表达式、标签命名等丰富的功能,下面就来看看如何使用LaTex代码编辑公式吧。 MathType使用LaTex代码编辑公式教程 第一步:首先打开软件,并准备…

WebStorm2024版 将项目上传到gitee

目录 一、准备 WebStorm gitee 二、上传代码到Gitee 三、过程中遇到的问题 报错:You may want to first integrate the remote changes (e.g., git pull ...) before pushing again. 报错:fatal: refusing to merge unrelated histories 报错&a…

鲲鹏华为云--OBS

文章目录 1.创建桶2.上传对象3.下载对象4.分享对象5. 删除对象6.删除桶 1.创建桶 创建桶 2.上传对象 点击创建的桶–“上传对象” 拖拽本地文件或文件夹至“上传对象”区域框内添加待上传的文件。 也可以通过单击“上传对象”区域框内的“添加文件”,选择本地…

【SQL每日一练】统计复旦用户8月练题情况

文章目录 题目一、分析二、题解1.使用case...when..then2.使用if 题目 现在运营想要了解复旦大学的每个用户在8月份练习的总题目数和回答正确的题目数情况,请取出相应明细数据,对于在8月份没有练习过的用户,答题数结果返回0. 示例代码&am…

手撕C语言题典——合并两个有序数组(顺序表)

搭配食用更佳哦~~ 数据结构之顺顺顺——顺序表-CSDN博客 数据结构之顺序表的基本操作-CSDN博客 继续来做一下关于顺序表的经典算法题叭~ 前言 88. 合并两个有序数组 - 力扣(LeetCode) 合并数组也是力扣上关于顺序表的一道简单题,继续来加深…

由于找不到mfc140u.dll,无法继续执行的多种解决方法

在我们日常与计算机的密切互动中,或许不少用户都曾遇到过这样一个棘手的问题:系统突然弹出一个提示窗口,告知我们“找不到mfc140u.dll文件”。这个文件是Microsoft Foundation Class(MFC)库的一部分,用于支…

ASP.NET实验室预约系统的设计

摘 要 实验室预约系统的设计主要是基于B/S模型,在Windows系统下,运用ASP.NET平台和SQLServer2000数据库实现实验室预约功能。该设计主要实现了实验室的预约和管理功能。预约功能包括老师对实验室信息、实验项目和实验预约情况的查询以及对实验室的预约…

『MySQL 实战 45 讲』18 - 为什么这些SQL语句逻辑相同,性能却差异巨大

为什么这些SQL语句逻辑相同,性能却差异巨大 条件字段函数操作 创建一个 sql 表。该表为交易记录表,包含交易流水号(tradeid)、交易员 id(operator)、交易时间(t_modified)等字段 …

Python版本管理工具-pyenv

Pyenv是一个Python版本管理工具。 Pyenv允许用户在同一台机器上安装多个版本的Python,并能够轻松切换使用这些版本。 一、安装 Mac下直接使用Homebrew安装 # 更新 Homebrew 的软件列表 brew update # 安装pyenv brew install pyenv# 验证是否安装成功 pyenv -v# …

【水文】LLM 成文测试|Agent AI智能体的未来:技术进步与创新

参与活动:#Agent AI智能体的未来# Agent AI智能体的未来征文活动介绍 随着Agent AI智能体的智能化水平不断提高,它们在未来社会中的角色、发展路径以及可能带来的挑战也引起了广泛关注。快来分享一下你的看法吧~ 活动时间 4月29日-5月13日 内容要求 1、文…

《深入解析Windows操作系统》第5章节学习笔记

1、每个Windows进程都是由一个执行体进程EPROCESS结构来表示的,EPROCESS和相关数据结构位于系统空间,但是进程环境控制块PEB是个例外,它位于进程空间地址中(因为它包含了一些需要由用户模式代码来修改的信息)。对于每一…

jvm面试题30问

什么是JVM的跨平台? 什么是JVM的语言无关性? 什么是JVM的解释执行 什么是JIT? JIT:在Java编程语言和环境中,即时编译器(JIT compiler,just-in-time compiler)是一个把Java的字节码(…

基于springboot实现英语知识应用网站系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现英语知识应用网站系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了英语知识应用网站的开发全过程。通过分析英语知识应用网站管理的不足,创建了一个计算机管理英语知识应…

Mysql中索引的概念

索引相关概念 基础概念: 在MySQL中,索引是一种数据结构,用于加快数据库查询的速度和性能。索引可以帮助MySQL快速定位和访问表中的特定数据,就像书籍的索引一样,通过存储指向数据行的指针,可以快速…

cmake的使用方法: 编译生成库文件

一. 简介 前面文章学习了针对单个 .c文件,cmake 工具是如何编译的? 针对包含多个 .c文件,cmake工具又是如何编译的?文章如下: cmake的使用方法: 单个源文件的编译-CSDN博客 cmake的使用方法: 多个源文件的编译-CS…

Allegro如何删除死铜

Allegro如何删除死铜 敷铜说明 敷铜后铜皮会避让与自己不同的信号,避让后有的铜皮就会变成很小一块,这个最小形状的设置如下, 首先点击: 然后选中对应的铜皮: 在鼠标右键,选择“Parameters…” 改变上图红色框中的数值就能设置最小死铜的大小。 删除死铜的方法 1、首…

设计模式之装饰者模式DecoratorPattern(四)

一、概述 装饰者模式(Decorator Pattern)是一种用于动态地给一个对象添加一些额外的职责的设计模式。就增加功能来说,装饰者模式相比生成子类更为灵活。装饰者模式是一种对象结构型模式。 装饰者模式可以在不改变一个对象本身功能的基础上增…

前端开发报错:Extension context invalidated

这个错误一般是由浏览器的插件导致的 直接卸载 就没有问题了 注意检查 可能不是你自己的代码问题哦~

【如何使用SSH密钥验证提升服务器安全性及操作效率】(优雅的连接到自己的linux服务器)

文章目录 一、理论基础(不喜欢这部分的可直接看具体操作)1.为什么要看本文(为了zhuangbility)2.为什么要用密钥验证(更安全不易被攻破)3.密码验证与密钥验证的区别 二、具体操作1.生成密钥对1.1抉择&#x…

DataTrove:一款针对大规模文本数据的处理、过滤和消除重复数据工具

关于DataTrove DataTrove是一款针对大规模文本数据的处理、过滤和消除重复数据工具,该工具可以通过提供一组平台无关的可定制管道处理块,帮助广大研究人员从各种复杂脚本中解放出来,同时还允许我们轻松添加自定义功能。 DataTrove所实现的数…