#EVE-7B-HD-v1.0

抛弃视觉编码器,这个「原生版」多模态大模型也能媲美主流方法

一作刁海文,是大连理工大学博士生,导师是卢湖川教授。目前在北京智源人工智能研究院实习,指导老师是王鑫龙博士。他的研究兴趣是视觉与语言,大模型高效迁移,多模态大模型等。共同一作崔玉峰,毕业于北京航空航天大学,是北京智源人工智能研究院视觉中心算法研究员。他的研究兴趣是多模态模型、生成模型和计算机视觉,主要工作有 Emu 系列。

近期,关于多模态大模型的研究如火如荼,工业界对此的投入也越来越多。国外相继推出了炙手可热的模型,例如 GPT-4o (OpenAI)、Gemini(Google)、Phi-3V (Microsoft)、Claude-3V(Anthropic),以及 Grok-1.5V(xAI)等。与此同时,国内的 GLM-4V(智谱 AI)、Step-1.5V(阶跃星辰)、Emu2(北京智源)、Intern-VL(上海 AI 实验室)、Qwen-VL(阿里巴巴)等模型百花齐放。

当前的视觉语言模型(VLM)通常依赖视觉编码器(Vision Encoder, VE)来提取视觉特征,再结合用户指令传入大语言模型(LLM)进行处理和回答,主要挑战在于视觉编码器和大语言模型的训练分离。这种分离导致视觉编码器在与大语言模型对接时引入了视觉归纳偏置问题,例如受限的图像分辨率和纵横比,以及强烈的视觉语义先验。随着视觉编码器容量的不断扩大,多模态大模型在处理视觉信号时的部署效率也受到极大限制。此外,如何找到视觉编码器和大语言模型的最佳容量配置,也变得越来越具有复杂性和挑战性。

51c大模型~合集1_数据

在此背景下,一些更加前沿的构想迅速浮现:

  • 能否去除视觉编码器,即直接构建无视觉编码器的原生多模态大模型?
  • 如何高效且丝滑地将大语言模型演变为无视觉编码器的原生多模态大模型?
  • 如何弥合无编码器的原生多模态框架和基于编码器的主流多模态范式的性能差距?

Adept AI 在 2023 年末发布了 Fuyu 系列模型并做出了一些相关尝试,但在训练策略、数据资源和设备信息方面没有任何披露。同时,Fuyu 模型在公开的视觉文本评测指标上与主流算法存在显著的性能差距。同期,我们进行的一些先导试验显示,即使大规模拉升预训练数据规模,无编码器的原生多模态大模型仍面临收敛速度慢和性能表现差等棘手问题。

针对这些挑战,智源研究院视觉团队联合大连理工大学、北京大学等国内高校,推出了新一代无编码器的视觉语言模型 EVE。通过精细化的训练策略和额外的视觉监督,EVE 将视觉 - 语言表征、对齐和推理整合到统一的纯解码器架构中。使用公开数据,EVE 在多个视觉 - 语言基准测试中表现出色,与类似容量的基于编码器的主流多模态方法相媲美,并显著优于同类型 Fuyu-8B。EVE 的提出旨在为纯解码器的原生多模态架构发展提供一条透明且高效的路径。

  • 论文地址:  https://arxiv.org/abs/2406.11832
  • 项目代码:  https://github.com/baaivision/EVE
  • 模型地址:  https://huggingface.co/BAAI/EVE-7B-HD-v1.0

1. 技术亮点 

  • 原生视觉语言模型:打破了主流的多模态模型的固定范式,去除视觉编码器,可处理任意图像长宽比。在多个视觉语言基准测试中显著优于同类型的 Fuyu-8B 模型,并接近主流的基于视觉编码器的视觉语言架构。
  • 数据和训练代价少:  EVE 模型的预训练仅筛选了来自 OpenImages、SAM 和 LAION 的公开数据,并利用了 66.5 万条 LLaVA 指令数据和额外的 120 万条视觉对话数据,分别构建了常规版本和高分辨版本的 EVE-7B。训练在两个 8-A100 (40G) 节点上约需 9 天完成,或者在四个 8-A100 节点上约需 5 天完成。
  • 透明和高效的探索: EVE 尝试探索一条高效、透明且实用的路径通往原生视觉语言模型,为开发新一代纯解码器的视觉语言模型架构提供全新的思路和宝贵的经验,为未来多模态模型的发展开辟新的探索方向。

2. 模型结构

51c大模型~合集1_编码器_02

首先,通过 Vicuna-7B 语言模型进行初始化,使其具备丰富的语言知识和强大的指令跟随能力。在此基础上,去除深度视觉编码器,构建轻量级视觉编码层,高效无损地编码图像输入,并将其与用户语言命令输入到统一的解码器中。此外,通过视觉对齐层与通用的视觉编码器进行特征对齐,强化细粒度的视觉信息编码和表征。

51c大模型~合集1_编码器_03

2.1 Patch Embedding Layer

  • 首先使用单层卷积层来获取图像的 2D 特征图,然后通过平均池化层进行下采样;
  • 使用交叉注意力模块(CA1)在限定感受野中交互,增强每个 patch 的局部特征;
  • 使用 < CLS> token 并结合交叉注意力模块(CA2),为后续每个 patch 特征提供全局信息;
  • 在每个 patch 特征行的末尾插入了一个可学习的 < SPL> token,帮助网络理解图像的二维空间结构。

2.2 Patch Aligning Layer

  • 记录有效 patch 的二维形状;丢弃 < CLS>/<PAD> tokens,并利用自适应池化层还原到原始的二维形状;
  • 通过层级交叉注意力模块(CA3),整合多层网络视觉特征,从而实现与视觉编码器输出的细粒度对齐。

3. 训练策略

51c大模型~合集1_编码器_04

  • 大语言模型引导的预训练阶段:建立视觉和语言之间的初步联系,为后续稳定高效的大规模预训练打下基础;
  • 生成式预训练阶段:进一步提高模型对视觉 - 语言内容的理解能力,实现纯语言模型到多模态模型的丝滑转变;
  • 监督式的微调阶段:进一步规范模型遵循语言指令和学习对话模式的能力,满足各种视觉语言基准测试的要求。

51c大模型~合集1_模态_05

  • 在预训练阶段,筛选了来自 SA-1B、OpenImages 和 LAION 等 3300 万公开数据,仅保留分辨率高于 448×448 的图像样本。特别地,针对 LAION 图像冗余度高的问题,通过在 EVA-CLIP 提取的图像特征上应用 K-means 聚类,生成 50,000 个聚类,并从中挑选出最接近每个聚类中心的 300 张图像,最终选出 1500 万张 LAION 图像样本。随后,利用 Emu2 (17B)和 LLaVA-1.5 (13B)重新生成高质量图像描述。
  • 在监督微调阶段,使用 LLaVA-mix-665K 微调数据集来训练得到标准版的 EVE-7B,并整合 AI2D、Synthdog、DVQA、ChartQA、DocVQA、Vision-Flan 和 Bunny-695K 等混合数据集来训练得到高分辨率版本的 EVE-7B。

4. 定量分析

51c大模型~合集1_数据_06

EVE 模型在多个视觉语言基准测试中明显优于同类型的 Fuyu-8B 模型,并且与多种主流的基于编码器的视觉语言模型表现相当。然而,由于使用大量视觉语言数据训练,其在准确响应特定指令方面存在挑战,在部分基准测试中表现有待提高。令人兴奋的是,通过高效的训练策略,可以实现无编码器的 EVE 与带编码器基础的视觉语言模型取得相当的性能,从根本上解决主流模型在输入尺寸灵活性、部署效率和模态容量匹配方面的问题。

51c大模型~合集1_编码器_07

相较于带编码器的模型易受到语言结构简化和丰富知识丢失等问题困扰,EVE 表现出随着数据规模的增加而逐步稳定地提升性能,逐渐逼近基于编码器模型的性能水平。这可能是因为在统一网络中编码和对齐视觉和语言模态更具挑战性,使得无编码器模型相对于带编码器的模型更不容易过拟合。

5. 同行怎么看?

英伟达高级研究员 Ali Hatamizadeh 表示,EVE 令人耳目一新,尝试提出全新的叙事,区别于构建繁杂的评测标准和渐进式的视觉语言模型改进。

苹果机器学习工程师 Prince Canuma 表示,EVE 架构非常有趣,对 MLX VLM 项目集是一个很好的补充。

6.未来展望

作为无编码器的原生视觉语言模型,目前 EVE 取得了令人鼓舞的结果。沿着这条路径,未来还有一些有趣的方向值得探索尝试:

  • 进一步的性能提升:实验发现,仅使用视觉 - 语言数据进行预训练显著地降低了模型的语言能力(SQA 得分从 65.3% 降至 63.0%),但逐步提升了模型的多模态性能。这表明在大语言模型更新时,内部存在语言知识的灾难性遗忘。建议适当融合纯语言的预训练数据,或采用专家混合(MoE)策略来减少视觉与语言模态间干扰。
  • 无编码器架构的畅想:通过恰当策略和高质量数据的训练,无编码器视觉语言模型可以与带编码器的模型相匹敌。那么在相同的模型容量和海量的训练数据下,二者性能如何?我们推定通过扩大模型容量和训练数据量,无编码器架构是能够达到甚至超越基于编码器架构,因为前者几乎无损地输入图像,避开了视觉编码器的先验偏置。
  • 原生多模态的构建: EVE 完整地展现了如何高效稳定地构建原生多模态模型,这为之后整合更多模态(如音频、视频、热成像、深度等)开辟了透明和切实可行的道路。核心思想是在引入大规模统一训练之前,先通过冻结的大语言模型对这些模态进行预对齐,并利用相应的单模态编码器和语言概念对齐进行监督。


#机器人在现实中碰过的壁,AI也会碰

「机器学习一直生活在一个令机器人专家、化学家、生物学家和神经科学家羡慕不已的泡沫中,随着它真正开始发挥作用,我们所有人都将遇到其他人多年来一直在应对的同样的现实壁垒。」

有人说,机器人领域进展缓慢,甚至和机器学习的其他子领域相比显得毫无进展。

谷歌 DeepMind 机器人科学家,SayCan、RT-1、RT-2 等具身智能项目参与者 Alex Irpan 同意这一说法。但他认为,这是因为机器人学是一个和现实紧密连接的领域,现实的复杂性决定了他们不免碰壁。他还指出,这些问题不是机器人技术所独有的。同样的问题也适用于大语言模型(LLM)等技术。这些模型在面对现实世界时,会遇到与机器人学类似的复杂性问题。

最近,他写了一篇题为「The Tragedies of Reality Are Coming for You(现实的悲剧正在向你袭来)」的博客来阐述这一观点。

现实的悲剧正在向你袭来

2023 年,我参加了一次 ML 会议。夜未央,酒酣耳热,话题转到了一个问题上:「如果你能把任何一个机器学习子领域的资源都给另一个子领域,你会砍掉哪个,把资源给谁?」

我不记得别人是怎么说的,但有一个人说他们会砍掉机器人。当我进一步追问时,他们说机器人技术进展太慢,相对于其他领域来说,什么都没有发生。

他们说机器人技术比纯软件的机器学习子领域进展缓慢,我认为他们说得没错,但我还想补充两点:

  • 机器人学习进展较慢的原因是:如果不解决难题,就很难有所作为。
  • 机器人技术的难题并非机器人独有。

在机器人技术领域,人们常说的一句话是「现实是混乱的」。相对于代码而言,我会将其延伸为「现实是复杂的」。在机器人技术中,你往往要将混乱的现实推向一个足够好的抽象层,以便代码能够在其上发挥作用。作为一个领域,计算机科学花了数十年时间在硬件和软件之间创建了良好的抽象层。代码描述了如何将电力输送到硬盘、处理器和显示器,它足够可靠,我甚至不需要考虑它。

这样做有很多好处。一旦你完成了这项艰巨的工作,并将你的工作进展转移到抽象的逻辑空间中,一切都会变得更容易。代码和数据的可复制性令人难以置信。我在 3 台设备上同步了代表这篇博文草稿的文件副本,甚至不用花费任何精力思考。

不过,就像 Joel Spolsky 所说,所有抽象在某种程度上都有漏洞,而我发现机器人技术中的漏洞往往更大。有很多出错的方式与代码的正确性无关。

这和这个学科的一些基本原理有关吗?有一点。很多机器人硬件比笔记本电脑或 Linux 服务器更具实验性。消费类机器人还不是一大产业。「实验性」往往意味着「奇怪的、更容易出现故障的状态」。

但是,我不认为硬件是造成问题的主要原因。现实才是问题的根源。Benjamin Holson 在他的「Mythical Non-Roboticist(神话般的非机器人学家)」一文中说得非常好:

第一个难点在于,机器人要处理的是现实世界中不完美的感知和不完美的执行。全局可变状态是一种糟糕的编程风格,因为它真的很难处理,但对于机器人软件来说,整个物理世界都是全局可变状态,你只能不可靠地观察它,并希望你的行动能接近你想要实现的目标。

机器人研究依赖于在现实与软件之间搭建新的桥梁,但这也发生在机器人研究之外。任何与现实对接的软件,对现实的了解都是不完美的。任何试图影响现实世界变化的软件,都必须应对现实的全局可变状态。任何软件,如果其行为依赖于现实中发生的事情,就会招致对抗性的噪声和复杂性。

游戏 AI 就是一个很好的例子。国际象棋 AI 是可靠的超人。然而,如果你以特定方式下棋,一些超人围棋 AI 是可以击败的,正如 Tony T. Wang 等人在 ICML 2023 论文「Adversarial Policies Beat Superhuman Go AIs」中发现的那样。对抗性技术找到了足够清晰以至于人类可以复制的策略。

在附录 G.2 中,我们的一位作者,一位围棋专家,能够在没有任何算法帮助的情况下,通过学习对手的对局记录来实现这种 [cyclic] 攻击。他们在 KGS 在线围棋服务器上以标准人类条件对局,在与作者无关的顶级 KataGo 机器人对局中取得了超过 90% 的胜率。

作者甚至在给机器人 9 个让子的情况下获胜,这是一个巨大的优势:拥有这些让子的人类职业棋手在面对任何对手(无论是人类还是人工智能)时,胜率几乎都是 100%。他们还击败了 KataGo 和 Leela Zero,二者每局棋的搜索次数都达到了 10 万次,这通常远远超出了人类的能力范围。此后,其他人类也利用 cyclic 攻击击败了其他各种顶级围棋 AI。

与此同时,几年前,OpenAI 创建了一个系统,该系统击败了 Dota 2 的卫冕世界冠军。在向公众开放该系统以测试其稳健性后,一个团队设计了一套策略,取得了 10 场连胜。

基于这一点,你可能会持一种悲观的观点,认为即使是连接 19 x 19 围棋棋盘或 Dota 2 这样一个简单的「现实」,其额外复杂性就足以使稳健行为具有挑战性。我认为这种观点有失公允,因为这两个系统都没有将稳健性作为最高目标,但我确实认为它们是一个有趣的案例研究。

最近,围绕 LLM 的炒作浪潮一浪高过一浪 —— 他们能做什么,他们能在哪里应用。这其中隐含的一个信念是,LLM 可以极大地改变人们在工作和休闲中与技术交互的方式。换句话说,LLM 将改变我们与现实交互的方式。事实上,我也加入了这股炒作浪潮,具体来说,我怀疑基础模型短期炒作过度,长期炒作不足。然而,这也意味着,对于一个历来不善于考虑现实的领域来说,现实的一切混乱都将到来。

就在这个人说机器人技术是浪费资源的同一个 ML 会议上,我提到我们正在用真实机器人进行基础模型实验。有人说这似乎有点吓人,我向他们保证这只是一个研究原型。但我也觉得 LLM 生成和执行软件有点吓人,我觉得他们隐隐担心一个却不担心另一个很有意思。硅谷的人有点自相矛盾。他们既相信软件能推动初创企业实现惊人的变革,又相信他们的软件不值得深思或反省。我认为,比特世界与原子世界一样,都是现实的一部分。它们在不同的层面上运行,但都是现实的一部分。

我注意到(有些幸灾乐祸),LLM 从业者也开始遭遇之前机器人技术碰到过的痛点。比如「我们无法复制这些训练,因为这太耗费资金了」。是啊,这个问题在机器人领域已经讨论了至少十年。再比如,「我没法让必应告诉我《阿凡达 2》的上映日期,因为它一直在调出关于自己的新闻报道,并在生成前进行自我修正。」

我们现在所处的世界,任何公开的互联网文本都会不可逆转地影响检索增强生成。欢迎来到全局可变状态。每当我看到有人声称 ChatGPT 的行为出现了倒退,我就会想起我和其他人为了解释机器人性能突然莫名下降而想出的各种「阴谋论」,以及问题究竟是出在模型、环境,还是我们的过度推断。

俗话说「所有的机器人 demo 都在撒谎」,人们发现所有的 LLM demo 也都在撒谎。我认为,从根本上说,这是无法避免的,因为人类的注意力是有限的。重要的是评估谎言的类型、大小和重要性。他们是否展示了模型 / 机器人如何泛化?他们有没有提到这些例子是如何精挑细选的?一旦将现实联系起来,这些问题就会变得更加复杂。梅西目前看起来是个不错的球员,但「他能在斯托克城寒冷的雨夜做到这一点吗」?

让问题变得复杂的是,这些问题的答案并不总是「否」。梅西可以在斯托克城的寒冷雨夜做到这一点。他足够优秀。这让问题变得困难,因为正确地回答一个「是」比正确地回答一个「否」要重要得多。随着 LLM 越来越优秀,随着 AI 在日常生活中越来越常见,作为一个社会,我们需要越来越善于判断模型是否已经证明了自己。我对未来的主要担忧之一,就是我们不善于评估模型是否已经证明了自己。

但是,我期望机器人学家会走在曲线的前面。在 LLM 操纵通用基准测试的说法出现之前,我们就在抱怨评估问题。早在「我们需要更好的数据覆盖率」成为基础模型预训练团队的口号之前,我们就在努力获取足够的数据,以捕捉自动驾驶的长尾效应。机器学习一直生活在一个令机器人专家、化学家、生物学家和神经科学家羡慕不已的泡沫中,随着它真正开始发挥作用,我们所有人都将遇到其他人多年来一直在应对的同样的现实壁垒。这些挑战是可以克服的,但会很艰难。欢迎来到现实世界。欢迎来到痛苦的世界。

原文链接:https://www.alexirpan.com/2024/07/08/tragedies-of-reality.html


#Teaching Transformers Causal Reasoning through Axiomatic Training

公理训练让LLM学会因果推理:6700万参数模型比肩万亿参数级GPT-4

把因果链展示给 LLM,它就能学会公理。

AI 已经在帮助数学家和科学家做研究了,比如著名数学家陶哲轩就曾多次分享自己借助 GPT 等 AI 工具研究探索的经历。AI 要在这些领域大战拳脚,强大可靠的因果推理能力是必不可少的。

本文要介绍的这项研究发现:在小图谱的因果传递性公理演示上训练的 Transformer 模型可以泛化用于大图谱的传递性公理。

也就是说,如果让 Transformer 学会执行简单的因果推理,就可能将其用于更为复杂的因果推理。该团队提出的公理训练框架是一种基于被动数据来学习因果推理的新范式,只有演示足够就能用于学习任意公理。

引言

因果推理(causal reasoning)可以定义成一组推理流程并且这组推理流程要符合专门针对因果性的预定义公理或规则。举个例子,d-separation(有向分离)和 do-calculus 规则可被视为公理,而 collider set 或 backdoor set 的规范则可被看作是由公理推导出的规则。

通常来说,因果推理使用的数据对应于一个系统中的变量。通过正则化、模型架构或特定的变量选择,可以归纳偏置的形式将公理或规则集成到机器学习模型中。

根据可用数据种类的差异(观察数据、干预数据、反事实数据),Judea Pearl 提出的「因果阶梯」定义了因果推理的可能类型。

由于公理是因果性的基石,因此我们不禁会想是否可以直接使用机器学习模型来学习公理。也就是说,如果学习公理的方式不是学习通过某个数据生成流程得到的数据,而是直接学习公理的符号演示(并由此学习因果推理),哪又会如何呢?

相较于使用特定的数据分布构建的针对特定任务的因果模型,这样的模型有一个优势:其可在多种不同的下游场景中实现因果推理。随着语言模型具备了学习以自然语言表达的符号数据的能力,这个问题也就变得非常重要了。

事实上,近期已有一些研究通过创建以自然语言编码因果推理问题的基准,评估了大型语言模型(LLM)是否能够执行因果推理。

微软、MIT 和印度理工学院海得拉巴分校(IIT Hyderabad)的研究团队也朝这个方向迈出了重要一步:提出了一种通过公理训练(axiomatic training)学习因果推理的方法

  • 论文标题:Teaching Transformers Causal Reasoning through Axiomatic Training
  • 论文地址:https://arxiv.org/pdf/2407.07612

公理训练

将因果公理表示成以下符号元组 ⟨premise, hypothesis, result⟩。其中 hypothesis 是指假设,即因果陈述;premise 是前提,是指用于确定该陈述是否为「真」的任意相关信息;result 自然就是结果了。结果可以是简单的「是」或「否」。

基于这个模板,可通过修改变量名称、变量数量和变量顺序等来生成大量合成元组。

为了用 Transformer 学习因果公理,实现公理训练,该团队采用了以下方法构建数据集、损失函数和位置嵌入。

公理训练:数据集、损失函数和位置编制

训练数据

基于一个特定公理,可根据「前提」将「假设」映射成合适的标签(Yes 或 No)。要创建训练数据集,该团队的做法是在特定的变量设置 X、Y、Z、A 下枚举所有可能的元组 {(P, H, L)}_N,其中 P 是前提,H 是假设,L 是标签(Yes 或 No)。

给定一个基于某个因果图谱的前提 P,如果可通过使用特定的公理(一次或多次)推导出假设 P,那么标签 L 就为 Yes;否则为 No。

举个例子,假设一个系统的底层真实因果图谱具有链式的拓扑结构:X_1 → X_2 → X_3 →・・・→ X_n。那么,可能的前提是 X_1 → X_2 ∧ X_2 → X_3,那么假设 X_1 → X_3 有标签 Yes,而另一个假设 X_3 → X_1 有标签 No。上述公理可被归纳式地多次用于生成更复杂的训练元组。

对于训练设置,使用传递性公理生成的 N 个公理实例构建一个合成数据集 D。D 中的每个实例都构建成了 (P_i, H_ij, L_ij) 的形式,

51c大模型~合集1_模态_08

,其中 n 是每第 i 个前提中的节点数量。P 是前提,即某种因果结构的自然语言表达(如 X 导致 Y,Y 导致 Z);之后是问题 H(如 X 导致 Y 吗?);L 为标签(Yes 或 No)。该形式能有效覆盖给定因果图谱中每条独特链的所有成对节点。

损失函数

给定一个数据集,损失函数的定义基于每个元组的基本真值标签,表示为:

51c大模型~合集1_编码器_09

分析表明,相比于下一 token 预测,使用该损失能得到很有希望的结果。

位置编码

除了训练和损失函数,位置编码的选择也是另一个重要因素。位置编码能提供 token 在序列中绝对和相对位置的关键信息。

著名论文《Attention is all you need》中提出了一种使用周期函数(正弦或余弦函数)来初始化这些编码的绝对位置编码策略。

绝对位置编码能为任何序列长度的所有位置提供确定的值。但是,有研究表明绝对位置编码难以应对 Transformer 的长度泛化任务。在可学习的 APE 变体中,每个位置嵌入都是随机初始化的,并使用该模型完成了训练。该方法难以应对比训练时的序列更长的序列,因为新的位置嵌入依然未被训练和初始化。

有趣的是,近期有发现表明移除自回归模型中的位置嵌入可以提升模型的长度泛化能力,而自回归解码期间的注意力机制足以编码位置信息。该团队使用了不同的位置编码来理解其对因果任务中的泛化的影响,包括可学习位置编码(LPE)、正弦位置编码(SPE)、无位置编码(NoPE)。

为了提升模型的泛化能力,该团队也采用了数据扰动,其中包括长度、节点名称、链顺序和分支情况的扰动。

实验

下面问题又来了:如果使用这些数据训练一个模型,那么该模型能否学会将该公理应用于新场景?

为了解答这个问题,该团队使用这个因果无关型公理的符号演示从头开始训练了一个 Transformer 模型。

为了评估其泛化性能,他们在简单的大小为 3-6 个节点的因果无关公理链上进行了训练,然后测试了泛化性能的多个不同方面,包括长度泛化性能(大小 7-15 的链)、名称泛化性能(更长的变量名)、顺序泛化性能(带有反向的边或混洗节点的链)、结构泛化性能(带有分支的图谱)。图 1 给出了评估 Transformer 的结构泛化的方式。

51c大模型~合集1_模态_10

具体来说,他们基于 GPT-2 架构训练了一个基于解码器的有 6700 万参数的模型。该模型有 12 个注意力层、8 个注意力头和 512 嵌入维度。他们在每个训练数据集上从头开始训练了该模型。为了理解位置嵌入的影响,他们还研究了三种位置嵌入设置:正弦位置编码(SPE)、可学习位置编码(LPE)和无位置编码(NoPE)。

结果如表 1、图 3 和图 4 所示。

51c大模型~合集1_模态_11

表 1 给出了在训练时未曾见过的更大因果链上评估时不同模型的准确度。可以看到,新模型 TS2 (NoPE) 的表现能与万亿参数规模的 GPT-4 相媲美。

图 3 是在有更长节点名称(长于训练集的)的因果序列上的泛化能力评估结果以及不同位置嵌入的影响。

51c大模型~合集1_编码器_12

图 4 评估的是在更长的未见过的因果序列上的泛化能力。

51c大模型~合集1_数据_13

他们发现,在简单链上训练的模型可以泛化到在更大的链上多次应用公理,但却无法泛化到顺序或结构泛化等更复杂的场景。但是,如果在简单链以及带有随机逆向边的链组成的混合数据集上训练模型,则模型可以很好地泛化到各种评估场景。

通过扩展在 NLP 任务上的长度泛化研究结果,他们发现了位置嵌入在确保在长度和其它方面实现因果泛化的重要性。他们表现最佳的模型没有位置编码,但他们也发现正弦编码在某些情况下也很好用。

这种公理训练方法还能泛化用于一个更困难的问题,如图 5 所示。即以包含统计独立性陈述的前提为基础,任务目标是根据因果关系分辨相关性。解决该任务需要多个公理的知识,包括 d-separation 和马尔可夫性质。

51c大模型~合集1_模态_14

该团队使用与上面一样的方法生成了合成训练数据,然后训练了一个模型,结果发现在包含 3-4 个变量的任务演示上训练得到的 Transformer 能学会解决包含 5 个变量的图谱任务。并且在该任务上,该模型的准确度高于 GPT-4 和 Gemini Pro 等更大型的 LLM。

51c大模型~合集1_模态_15

该团队表示:「我们的研究提供了一种通过公理的符号演示教模型学习因果推理的新范式,我们称之为公理训练(axiomatic training)。」该方法的数据生成和训练流程是普适的:只要一个公理能被表示成符号元组的格式,就可使用此方法学习它。



#iPhone、iPad、MacBook老旧设备组成异构集群,能跑Llama 3

假如你有闲置的设备,或许可以试一试。

这次,你手里的硬件设备也能在 AI 领域大展拳脚了。

将 iPhone、iPad、Macbook 进行组合,就能组装成「异构集群推理方案」, 然后顺畅的运行 Llama3 模型。

值得一提的是,这个异构集群可以是 Windows 系统,也可以是Linux、iOS 系统,并且对 Android 的支持很快到来。

异构集群正在运行中。

根据项目作者 @evilsocket 的介绍,这个异构集群包括 iPhone 15 Pro Max、iPad Pro、MacBook Pro (M1 Max)、NVIDIA GeForce 3080、2x NVIDIA Titan X Pascal。所有代码都已经上传到 GitHub。

看到这,网友纷纷表示,这位老哥确实不简单。

不过也有网友开始担心能耗问题,暂且不管速度,电费都耗不起。来回搬数据,损耗太大了。

项目介绍

上述功能的实现,离不开一个名为 Cake 的 Rust 框架。Cake 可以完成大模型(例如 Llama3)的分布式推理,旨在将消费级硬件组合成异构集群,其中消费级硬件采用多种操作系统,包括:iOS、Android、macOS、Linux 和 Windows,从而使 AI 更易于访问。

项目地址:https://github.com/evilsocket/cake

Cake 的主要思路是将 transformer 块分片到多个设备,以便能够让通常不适合单个设备 GPU 内存的模型运行推理。对同一工作线程上的连续 transformer 块的推理是分批进行的,以便最大限度地减少数据传输造成的延迟。

Cake 目前支持的系统和设备如下:

编译

安装 Rust 后,运行下列代码:

cargo build --release

假如用户想要在应用程序中生成 iOS 绑定,可以进行下述操作:

make ios

使用

运行 worker 节点:

cake-cli --model /path/to/Meta-Llama-3-8B \ # model path, read below on how to optimize model size for workers
         --mode worker \                    # run as worker
         --name worker0 \                   # worker name in topology file
         --topology topology.yml \          # topology
         --address 0.0.0.0:10128            # bind address

运行 master 节点:

cake-cli --model /path/to/Meta-Llama-3-8B \
         --topology topology.yml

其中 topology.yml 确定哪些层由哪个 worker 提供服务:

linux_server_1:
  host: 'linux_server.host:10128'
description: 'NVIDIA Titan X Pascal (12GB)'
layers:
    - 'model.layers.0-5'
linux_server_2:
  host: 'linux_server2.host:10128'
description: 'NVIDIA GeForce 3080 (10GB)'
layers:
    - 'model.layers.6-16'
iphone:
  host: 'iphone.host:10128'
description: 'iPhone 15 Pro Max'
layers:
    - 'model.layers.17'
ipad:
  host: 'ipad.host:10128'
description: 'iPad'
layers:
    - 'model.layers.18-19'
macbook:
  host: 'macbook.host:10128'
description: 'M1 Max'
layers:
    - 'model.layers.20-31'

关于内存和磁盘空间优化问题,用户可能希望只向 worker 提供模型中实际需要的数据,而不是整个文件夹,在这种情况下,可以使用 cake-split-model 。例如,要生成较小版本的 llama3 safetensors,可以采用如下代码:

cake-split-model --model-path path/to/Meta-Llama-3-8B \ # source model to split
                 --topology path/to/topology.yml \      # topology file
                 --output output-folder-name

参考链接:https://x.com/tuturetom/status/1812654489972973643