牛津剑桥等发现:AI 训 AI 惨遭投毒 9 次大崩溃

news2024/11/27 17:49:58

【新智元导读】9 次迭代后,模型开始出现诡异乱码,直接原地崩溃!牛津、剑桥等机构的一篇论文登上了 Nature 封面,称合成数据就像近亲繁殖,效果无异于投毒。有无破解之法?那就是 —— 更多使用人类数据!

用 AI 生成的数据训练 AI,模型会崩溃?

牛津、剑桥、帝国理工、多伦多大学等机构的这篇论文,25 日登上了 Nature 封面。

图片

如今,LLM 已经强势入侵了人类的互联网,极大地改变了在线文本和图像的生态系统。

如果网络上的大部分文本都是 AI 生成的,我们用网络数据训练出的 GPT-n,会发生什么?

图片

论文地址:https://www.nature.com/articles/s41586-024-07566-y

研究者发现,如果在训练中不加区别地使用 AI 产生的内容,模型就会出现不可逆转的缺陷 —— 原始内容分布的尾部(低概率事件)会消失!

这种效应,被称为「模型崩溃」。

换句话说,合成数据就像是近亲繁殖,会产生质量低劣的后代。

图片

模型崩溃在 LLM、变分自编码器 VAE 和高斯混合模型 GMM 中,都可能会发生。

有网友认为,是时候敲响警钟了!

「如果大模型真的在 AI 生内容的重压下崩溃,这对它们的可信度来说就是末日了。如果它们吃的是机器人的反刍的内容,我们真的能相信 LLM 的输出吗」?

图片

真实数据,价值连城

我们都知道,如今全球已陷入高质量数据荒。

图片

EpochAI 预测,全球在今年就会陷入高质量数据荒

当前的大模型(包括 GPT-3)还是主要基于人类生成的文本进行训练的,但是未来可就不一定了!

图片

Meta 研究员 Thomas Scialom 表示,Llama 3 在后训练阶段没有使用任何人类编写的答案,全是 Llama 2 合成的数据

如果未来,大多数模型的训练数据也是从网上抓取的,那它们不可避免地会用上前辈模型生成的数据。

当某个版本的 GPT 生成的大部分文本,成为了后续模型的训练数据集,随着版本号的增加,GPT-{n} 会发生什么变化?

图片

LLM 迭代至第 9 代,完全胡言乱语

简单讲,LLM 生成的数据最终污染了下一代模型的训练集,就会出现「模型崩溃」(model collapse)的现象。

由于在被污染的数据上进行训练,LLM 随后会错误地感知现实。

这样一来,会导致多代 AI 生成模型的退化。

也就是那句经典名言 —— 垃圾进,垃圾出。

图片

合成数据,无异于给数据集「投毒」。

研究中,作者们使用维基百科文章先训练了模型 OPT-125m,并在前一代模型生成的文本上,训练了多代模型。

模型们被要求续写一段来自 wiki 的关于「萨默塞特(Somerset)一级登录建筑」条目的文本。

图片

输入的提示如下所示,这是关于设计 14 世纪教堂塔楼主题的文本:

图片

输入:据 Poyntz Wright 所说,一些教堂塔楼在 1360 年之前就开始建造了,通常是由一位大师石匠和一小队流动石匠完成,辅以当地教区的工人。但其他作者不同意这种观点,他们认为主要是由著名建筑师根据早期的垂直风格设计了这些教区教堂的塔楼。

在第 0 代模型中,输入同样的提示,得到的输出是:

可以看到,Gen0 的续写已经开始有点前言不搭后语了,而且还出现了诡异的符号「@-@」。

奇怪的事实错误是,圣约翰大教堂位于纽约,不在伦敦。

图片

第 0 代:复兴建筑的典型例子包括伦敦的圣约翰大教堂。最早的垂直复兴建筑实例可以在 18@-@世纪的根西岛圣母教堂中找到,该教堂实际建于 19 世纪晚期。垂直教堂有两种类型:那些。

在 Gen1 中,虽没有奇怪符号的输出,但同样出现了事实错误 ——

圣彼得大教堂(St. Peter’s Basilica)真正位于梵蒂冈,而不是什么罗马、布宜诺斯艾利斯。

而且建造于公元 1506 和 1626 年之间,由教皇朱利奥二世开始建造,直至教皇奥本八世。

图片

第 1 代:像罗马的圣彼得大教堂或布宜诺斯艾利斯的圣彼得大教堂这样的建筑。虽然没有证据表明这些建筑是在教皇英诺森三世统治期间建造的,但它们有可能是在他的继任者教皇英诺森统治期间建造的。

图片

接下来,到了第五代模型,输出的结果完全是胡言乱语了。

以 ism 起句,讲了一大堆语种,根本不是续写的相关素材。

图片

第 5 代:ism,已被翻译成 100 多种语言,包括英语、法语、德语、意大利语、西班牙语、葡萄牙语、荷兰语、瑞典语、挪威语、波兰语、匈牙利语、斯洛伐克语、立陶宛语、爱沙尼亚语、芬兰语、罗马尼亚语、保加利亚语、土耳其语、克罗地亚语、塞尔维亚语、乌克兰语、俄语、哈萨克语、吉尔吉斯语。

再到第 9 代,奇怪的 @-@符号又出现了,而且还输出了更加无关的内容 ——tailed jackrabbits。

图片

第 9 代:建筑。除了拥有世界上最大数量的黑 @-@尾兔、白 @-@尾兔、蓝 @-@尾兔、红 @-@尾兔、黄 @-。

以下是所有迭代模型,完整输出的过程。每一代新的模型都是在前一代生成的数据上进行训练的。

图片

看得出,模型在每一代次迭代中退化。研究人员发现,所有递归训练后的模型,皆会输出重复的短语。

另一个案例是,今天杜克大学助理教授 Emily Wenger,发表在 Nature 上一篇社论文章中指出:

AI 基于自身数据训练,生成的图像扭曲了狗的品种。

图片

数据集中,不仅有金毛、柯基,还有法国斗牛犬、小体巴塞特雪橇犬等。

基于真实数据训练后的模型,输出的图像中,常见品种如金毛寻回犬占大多数,而不太常见的品种斑点狗会消失。

然后,基于 AI 生成的数据训练模型,生成的品种全是金毛了。

最终,经过多次迭代,金毛的图像就完全出现混乱,脸不是脸鼻子不是鼻子,LLM 就此完全崩溃了。

图片

此外,2023 年来自斯坦福和 UC 伯克利的一项研究中,作者同样发现了,LLM 在少量自己生成数据内容重新训练时,就会输出高度扭曲的图像。

图片

论文地址:https://arxiv.org/pdf/2311.12202

他们还在实验中展示了,一旦数据集受到污染,即便 LLM 仅在真实图像上重新训练,模型崩溃现象无法逆转。

作者警示道,为了模型不再被自己「降级」,AI 需要能够区分真实和虚假内容。

图片

这一观点,与 Wenger 不谋而合。

她认为,缓减 LLM 崩溃并不简单,不过科技公司已经部署了嵌入「水印」的技术,进而可以把标记 AI 生成内容,从数据集中剔除。

此外,模型崩溃的另一个关键寓意是,那些早已构建的 AI 模型,有着先发优势。

因为,从 AI 时代互联网获取训练数据的公司,可能拥有更能代表真实世界的模型。

什么是模型崩溃?

最新研究中,作者表示,模型崩溃包含了两种特殊的情况:早期模型崩溃、晚期模型崩溃。

在早期模型崩溃中,模型开始丢失关于数据分布尾部的信息;在晚期模型崩溃中,模型收敛到一个与原始分布几乎没有相似性的分布,通常方差显著降低。

图片

这一过程的发生,是由于三种特定误差源,在多代模型中逐渐累积,最终导致模型偏离原始模型:

- 统计近似误差

这是主要的误差类型,由于样本数量有限而产生,并且在样本数量趋向无限时会消失。这是因为在每一步重采样过程中,信息丢失的概率总是存在。

- 函数表达误差

这是次要误差类型,由于函数近似器(function approximator)的表达能力有限而产生。

特别是,神经网络只有在其规模无限大时,才能成为通用近似器。

因此,神经网络可能会在原始分布的支撑集(support)之外,引入「非零概率」,或在原始分布的支撑集内引入「零概率」。

一个简单的例子是,如果我们用单个高斯分布,来拟合两个高斯分布的混合。即使有完美的数据分布信息(即无限数量的样本),模型产生误差也是不可避免的。

然而,在没有其他两种类型误差的情况下,这种误差只会在第一代发生。

图片

- 函数近似误差

这也是次要的误差类型,主要由于学习过程的限制而产生,例如随机梯度下降的结构偏差或目标函数选择的影响。

这种误差可以看作,即便在理想条件下,即拥有无限数据且完美表达能力,仍在每一代模型中产生。

综上所述,每种误差都可能会导致模型崩溃变得愈加严重,或得到一些改善。

更强的近似能力甚至可能是一把「双刃剑」。

因为更好的表达能力可能抵消统计噪声,从而更好地逼近真实分布,但同样也可能放大噪声。

更常见的情况下,我们会得到一种级联效应(cascading effect),其中个别的不准确性会结合起来,导致整体误差的增长。

例如,过拟合密度模型会导致模型错误地外推,并将高密度区域分配给训练集中未覆盖的低密度区域。

这些错误分配的区域,随后会被频繁采样。

值得注意的是,除上述内容之外,还存在其他类型的误差。比如,在实际操作中,计算机精度是有限的。

接下来,研究人员将通过「数学直觉」来解释上述误差是如何产生的,不同误差来源如何复合(compound),以及我们如何量化平均模型偏差。

理论直觉

在所有基于前几代生成数据进行递归训练的生成模型,这种现象都是普遍存在的。

所以,到底是什么原因,导致了模型崩溃?

图片

研究者提供了几种理论解释。

通过研究两个数学模型,研究者量化了前一部分讨论的误差来源。

这两个模型分别是一个在没有函数表达能力和近似误差情况下的离散分布模型,以及一个描绘联合函数表达能力和统计误差的多维高斯近似模型。

它们既足够简单,可以提供感兴趣量的解析表达式,同时也能描绘模型崩溃的现象 ——

考虑的总体随机过程,作者称之为「代际数据学习」。

第 i 代的数据集 D_i 由具有分布 p_i 的独立同分布随机变量图片 组成。

其中,数据集的大小 j∈{1,…, M_i}。

从第 i 代到第 i+1 代,我们需要估计样本在新数据集 D_i 中的分布,近似为图片

这一步称之为函数近似,图片

然后通过从图片 中采样,生成数据集图片

其中,非负参数 α_i, β_i, γ_i 的和为 1,即它们表示来自不同代的数据的比例。

它们对应的混合数据,分别来自原始分布(γ_i)、上一代使用的数据(β_i)和新模型生成的数据(α_i)。

这一步,称为采样步骤。

对于即将讨论的数学模型,我们考虑 α_i=γ_i=0,即仅使用单步的数据,而数值实验则在更现实的参数选择上进行。

图片

离散分布的精确近似

在本小节中,我们讨论一种没有函数近似和表达误差的离散概率分布,即图片

在这种情况下,模型崩溃的原因仅仅是采样步骤中的统计误差。

首先,由于低概率事件被采样到的概率很低,它们的尾部(低概率事件)会逐渐消失,随着时间的推移,分布的支持范围也会缩小。

假设样本量为 M,如果我们考虑一个概率为 q≤1/M 的状态 i,那么来自这些事件的 i 值样本的期望数量将小于 1。

也就是说,我们会失去关于这些事件的信息。

如果更一般地考虑一个概率为 q 的状态 i,使用标准条件概率,我们可以证明失去信息的概率(即在某些代中没有采样到数据)等于 1−q。

这也就意味着,分布最终会收敛到某个状态处的 δ 函数,最终落在某个状态的概率等于从原始分布中采样该状态的概率。

图片 这个过程看作一个马尔可夫链,我们就可以直接证明上述结论,因为 X^(i+1) 仅依赖于 X^i。

此外,如果所有 图片 的值都相同,那么在下一代,近似分布将完全是一个 δ 函数。因此所有
图片
的值也将相同。

这就意味着,马尔可夫链至少包含一个吸收态,因此它会以概率 1 收敛到其中一个吸收态。

对于这个链,唯一的吸收态是那些对应于 δ 函数的状态。

因此,随着我们跟踪的模型逐渐崩溃,我们必然会陷入一个常数状态;当这条链被完全吸收时,原始分布的所有信息就都丧失了。

在一般情况下,这个论点也是成立的,因为浮点表征是离散的,因此使得模型参数的马尔可夫链也是离散的。

因此,只要模型参数化允许使用 δ 函数,我们一定会到达这个结论,因为由于采样误差的原因,唯一可能的吸收态就是 δ 函数。

基于上述讨论,我们可以看到,无论是早期模型崩溃(仅低概率事件被切断)还是后期模型崩溃(过程开始收敛到单一模式)的现象,只要是在具有完美函数近似的离散分布下,都必然会出现。

多维高斯分布

在讨论了离散分布之后,我们就可以提出一个更通用的结果,它可以在高斯近似的背景下得到证明。

在这种情况下,每一代的数据都是通过上一代的均值和方差的无偏估计来近似的。

高斯模型崩溃

假设原始数据是从分布D_0(不一定是高斯分布)中采样的,且样本方差不为零。假设X^n是递归地使用上一代的无偏样本均值和方差估计来拟合的,其中

图片

且样本量是固定的。

此时就可以得到

图片

其中,W_2 表示第 n 代的真实分布和其近似之间的 Wasserstein-2 距离。

换句话说,这意味着不仅第 n 代的近似值会任意远地偏离原始分布,而且随着代数的增加,它也会以概率 1 收敛到零方差,从而发生崩溃。

这个定理展示了后期模型崩溃的效果,即过程开始收敛到零方差。这个过程,与离散情况非常相似。

语言模型中的模型崩溃

当模型发生崩溃,会对语言模型产生哪些影响?

模型崩溃在各种机器学习模型中都是普遍现象,然而像变分自编码器(VAE)和高斯混合模型(GMM)这样的小模型通常是从头开始训练的,而 LLM 则有所不同。

图片

图片

从头训练的成本非常高,因此通常使用预训练模型(如 BERT、RoBERTa 或 GPT-2)进行初始化,然后再对预训练模型进行微调以适应各种下游任务。

那么,当 LLM 使用其他模型生成的数据进行微调会发生什么呢?

实验评估了训练大语言模型最常见的微调设置,其中每个训练周期(epoch)都从一个预训练模型开始,并使用最新数据。

这里的数据来自另一个已经微调过的预训练模型。

由于训练范围限制在生成接近原始预训练模型的模型,由于这些模型生成的数据点通常只会产生非常小的梯度,因此实验的预期是模型在微调后只会发生适度的变化。

实验微调了 Meta 通过 Hugging Face 提供的 OPT-125m 因果语言模型,在 wikitext2 数据集上对模型进行微调。

图片

为了生成训练模型所需的数据,实验使用五向集束搜索(beam search)。

将训练序列限制为 64 个 token,然后对于训练集中的每个 token 序列,让模型预测接下来的 64 个 token。

用上面的方法调整所有原始训练数据集,并生成一个大小相同的人工数据集。

由于范围涉及所有原始数据集并预测了所有块 (Block),如果模型的误差为 0,它将生成原始的 wikitext2 数据集。

每一代的训练都从原始训练数据的生成开始,每个实验运行五次,结果显示为五次独立运行,使用不同的随机种子。

用 wikitext2 数据微调的原始模型,平均困惑度(perplexity)从零样本基线的 115 下降到 34,说明它成功地学习了任务。

最后,为了尽可能接近现实情况,实验使用了在原始任务上表现最好的模型,使用原始 wikitext2 验证集进行评估,作为后续几代的基础模型。

这意味着,实际上观察到的模型崩溃可能更加明显。

实验还考虑了考虑两种不同的设置:

- 5 个 epoch,不保留原始训练数据。

在这种情况下,模型在原始数据集上训练五个周期,但在后续的训练中不再使用原始数据。

整体的原始任务表现如图所示。

图片

实验发现,使用生成的数据进行训练虽然能适应基本任务,但性能有所下降,困惑度从 20 增加到 28。

- 10 个 epoch,保留 10% 的原始训练数据。

在这种情况下,模型在原始数据集上训练十个周期,并且每次新的训练时,随机保留 10% 的原始数据点。

整体的原始任务表现如图所示。

图片

实验发现,保留部分原始数据可以更好地进行模型微调,并且仅导致性能的轻微下降。

虽然两种训练方式都导致了模型性能下降,但实验发现使用生成数据进行学习是可行的,模型也能成功地学习一些基础任务。

特别是,从图下及其 3D 版本中可以看到,模型崩溃现象确实发生了,因为低困惑度样本的密度随着训练代次的增加而开始累积。

这意味着,在多个训练代次中,采样数据可能会逐渐趋向于一个 δ 函数。

图片

图片

到这里,结论就和「理论直觉」中的一般直觉一致了。

可以看到,生成的数据有更长的尾部,这就表明某些数据是原始模型永远不会生成的。而这些错误,就是来自代际数据学习的积累。

图片

这也给我们敲响了警钟 ——

如果没有大规模采用 AI 泛滥之前从网上抓取的数据,或者直接使用人类生成的大规模数据,训练新版本的 LLM,恐怕会变得越来越困难!

有什么办法吗?

研究团队认为,AI 生成数据并非完全不可取,但一定要对数据进行严格过滤。

比如,在每一代模型的训练数据中,保持 10% 或 20% 的原始数据;使用多样化数据,如人类产生的数据;或者研究更鲁棒的训练算法。

没想到吧,人类创造的数据,居然有一天会如此价值连城。

图片

参考资料:

  • AI models fed AI-generated data quickly spew nonsense

    https://www.nature.com/articles/d41586-024-02420-7

  • AI models collapse when trained on recursively generated data

    https://www.nature.com/articles/s41586-024-07566-y


via:

  • AI 训 AI 惨遭投毒 9 次大崩溃,牛津剑桥等惊天发现登 Nature 封面!新智元 2024 年 07 月 25 日 13:03 北京

    https://mp.weixin.qq.com/s/1kUNJDqW6R5lSDH_2dM-sA

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

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

相关文章

护眼灯有没有护眼的效果?一文揭秘用护眼灯到底好不好

护眼灯有没有护眼的效果?在现在这个时代,无论是在学习还是办公,都很难离开一款好用的台灯,所以,为了避免会挑选到质量不好的台灯,我们应该要先避开一些网红小品牌,优先选择有专业技术支持的&…

ClickHouse 24.6 版本发布说明

本文字数:14127;估计阅读时间:36 分钟 作者:ClickHouse team 本文在公众号【ClickHouseInc】首发 又到了发布新版本的时间! 发布概要 本次ClickHouse 24.6 版本包含了23个新功能🎁、24项性能优化&#x1f6…

maven介绍 搭建Nexus3(maven私服搭建)

Maven是一个强大的项目管理工具,它基于项目对象模型(POM:Project Object Model)的概念,通过XML格式的配置文件(pom.xml)来管理项目的构建 Maven确实可以被视为一种工程管理工具或项目自动化构…

使用flutter做圆形进度条 (桌面端)

前言 最近收到一个需求,需要使用flutter 来做一个圆形进度条,这可难倒我了,毕竟我是做前端的,flutter 之前接触的也少,但没办法,既然需求有了,也得硬着头皮上了,先来看看做的效果。…

简过网:大学生考公,一定要先好好看看这篇文章!

大家好,我是简过网,今天这篇文章我们来聊聊关于大学生考公的那些事儿,希望能给大学生们一点点的帮助! 首先,可能有朋友会问了,大学生一般从什么时候开始备考公务员呢,在这里小编建议大家从大三…

《昇思25天学习打卡营第24天|基于MindSpore通过GPT实现情感分类》

基于MindSpore通过GPT实现情感分类 %%capture captured_output # 实验环境已经预装了mindspore2.2.14,如需更换mindspore版本,可更改下面mindspore的版本号 !pip uninstall mindspore -y !pip install -i https://pypi.mirrors.ustc.edu.cn/simple mind…

yolov5-7环境搭建训练自己的模型

1.下载代码 git clone https://github.com/ultralytics/yolov5 # clone可以切到5-7版本,也可以去github选标签下载 2.配置好conda环境,网上教程比较多,不做讲解,python3.8即可。 3.在环境里安装pyrtorch 按自己的需求选取&am…

每日一练,java05

目录 题目知识点:1.12.13.1 题目 选自牛客网 1.下列表述错误的是?() A.int是基本类型,直接存数值,Integer是对象,用一个引用指向这个对象。 B.在子类构造方法中使用super()显示调用父类的构造…

第T6周:使用TensorFlow实现好莱坞明星识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 文章目录 一、前期工作1.设置GPU(如果使用的是CPU可以忽略这步)2. 导入数据3. 查看数据 二、数据预处理1、加载数据2、数据可视化3、再…

【论文速读】| LLMCloudHunter:利用大语言模型(LLMs)从基于云的网络威胁情报(CTI)中自动提取检测规则

本次分享论文:LLMCloudHunter: Harnessing LLMs for Automated Extraction of Detection Rules from Cloud-Based CTI 基本信息 原文作者:Yuval Schwartz, Lavi Benshimol, Dudu Mimran, Yuval Elovici, Asaf Shabtai 作者单位:Ben-Gurion…

mfc100u.dll 文件缺失?两种方法快速修复丢失mfc100u.dll 文件难题

您的电脑是否遭遇了 mfc100u.dll 文件缺失的问题?这种情况通常由多种原因引起。在本文中,我们将介绍两种修复 mfc100u.dll 文件丢失问题的策略——一种是手动方法,另一种是自动修复的使用。我们将探讨如何有效地解决 mfc100u.dll 文件缺失的几…

Linux下git入门操作

0.创建仓库 可以按这个配置来,.gitignore中存放了上传时忽略的文件类型后缀。 1.clone仓库 在gitee上创建好仓库,点击克隆/下载, 复制地址fyehong/Linux_notes 。 在所需的文件夹中放置仓库。比如我在文件夹lesson9下存储仓库。就在less…

Python爬虫技术 第18节 数据存储

Python 爬虫技术常用于从网页上抓取数据,并将这些数据存储起来以供进一步分析或使用。数据的存储方式多种多样,常见的包括文件存储和数据库存储。下面我将通过一个简单的示例来介绍如何使用 Python 爬取数据,并将其存储为 CSV 和 JSON 文件格…

【数据结构】二叉树链式结构——感受递归的暴力美学

前言: 在上篇文章【数据结构】二叉树——顺序结构——堆及其实现中,实现了二叉树的顺序结构,使用堆来实现了二叉树这样一个数据结构;现在就来实现而二叉树的链式结构。 一、链式结构 链式结构,使用链表来表示一颗二叉树…

【机器学习】解开反向传播算法的奥秘

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 解开反向传播算法的奥秘反向传播算法的概述反向传播算法的数学推导1. 前向传播2…

3.k8s:服务发布:service,ingress;配置管理:configMap,secret,热更新;持久化存储:volumes,nfs,pv,pvc

目录​​​​​​​ 一、服务发布 1.service (1)service和pod之间的关系 (2) service内部服务创建访问 (3)service访问外部服务 (4)基于域名访问外部 (5&#xff…

Prometheus各类监控及监控指标和告警规则

目录 linux docker监控 linux 系统进程监控 linux 系统os监控 windows 系统os监控 配置文件&告警规则 Prometheus配置文件 node_alert.rules docker_container.rules mysql_alert.rules vmware.rules Alertmanager告警规则 consoul注册服务 Dashboard JSON…

并发编程--volatile

1.什么是volatile volatile是 轻 量 级 的 synchronized,它在多 处 理器开 发 中保 证 了共享 变 量的 “ 可 见 性 ” 。可 见 性的意思是当一个 线 程 修改一个共享变 量 时 ,另外一个 线 程能 读 到 这 个修改的 值 。如果 volatile 变 量修 饰 符使用…

车载录像机:移动安全领域的科技新星

随着科技的飞速发展,人类社会的各个领域都在不断经历技术革新。其中,车载录像机作为安防行业与汽车技术结合的产物,日益受到人们的关注。它不仅体现了人类科技发展的成果,更在安防领域发挥了重要作用。本文将详细介绍车载录像机的…

Spring Boot集成canal快速入门demo

1.什么是canal? canal 是阿里开源的一款 MySQL 数据库增量日志解析工具,提供增量数据订阅和消费。 工作原理 MySQL主备复制原理 MySQL master 将数据变更写入二进制日志(binary log), 日志中的记录叫做二进制日志事件&#xff…