从现在起,GitHub上超1亿开发者可直接访问全球顶级大模型,构建AI应用

GitHub 推出的全新功能「GitHub Models」将有望加快 AI 工程师时代的到来。 什么?大家熟悉的代码托管平台 GitHub 又进化了!该平台也开始提供 AI 大模型的 Playgroud 了。   所有你能叫得上名字的业界流行大模型,包括微软的 Phi-3、OpenAI 的 GPT-4o、Meta 的 Llama 3.1、Cohere 的 Command R+、Mistral AI 的 Mistral Large,都可以在一个交互式沙盒中试用。   在未来几个月,Github 也将添加更多语言、视觉以及其他类型的模型。   也就是说,这张图上的模型都可以「白嫖」到了!相当于又多了一个可以免费测试各家大模型的新途径!   不仅如此,开发者还可以轻松地将合适的模型导入到自己的 AI 项目中。Github 创建了一条能直接把模型放在 Codespaces 和 VS Code 开发环境中的快速通道,一下把部署 AI 模型的门槛打下来了。   这就是 GitHub 今天推出的「GitHub Models」功能! 对于开发者来说,只要有合适的工具并训练,每个人都可以成为 AI 工程师。开发者选择模型,在 GitHub 代码空间(Codespaces)中进行编码,然后通过 Azure 进行生产部署,提供了「一条龙」服务。   具体来说,你可以调用 GitHub CLI 中的 GitHub Models 命令,通过一系列 JSON 文件在 GitHub Actions 用,还可以用 GitHub Models 构建 GitHub Copilot 扩展,覆盖应用开发的全周期。   当项目迈入上线阶段时,Github 还提供了与 Azure AI 的无缝集成,Github 的身份验证可以通过 Azure 订阅,AI 应用部署到生产环境的门槛就这么被打下来了。   现在,你可以通过 Github 在全球 25 个以上的 Azure 区域部署 AI 应用,并获取 Azure 的企业级安全保护。   与 GitHub 和 Microsoft 对隐私和安全的持续承诺一致,GitHub 模型中的任何提示或输出都不会共享给模型提供者,也不会用于训练或改进模型。   当然,试玩「GitHub Models」也不是完全不受限制。个人用户每天限制访问次数 150 次,每分钟不能超过 15 次,每次请求最多可以处理 8000 个 token,最多输出 4000 个 token。     对此,GitHub CEO Thomas Dohmke 表示,该功能的推出标志着 GitHub 的又一次转型,从通过开源协作创建 AI 到借助 AI 的力量创建软件,再到如今利用 GitHub Models 推动 AI 工程师的崛起。 并且基于 OSS 存储库、Copilot Extensions 和 GitHub Models 功能,GitHub 希望将尽可能多的合作伙伴引入到自己的平台。   有开发者展示了在 GitHub 的代码空间中直接运行模型的案例,不需要安装什么东西,几秒内就可以启动。   图源:https://x.com/DanWahlin/status/1819113874689610133

Machine Unlearning 会是未来 LLM 的必需品吗?

—- 本周为您解读 ③ 个值得细品的 AI & Robotics 业内要事 —- 1. Machine Unlearning 会是未来 LLM 的必需品吗? 为什么需要关注 Machine Unlearning?LLM 做 Unlearning会更难吗?LLM 公司能用 Unlearning 解决数据纠纷吗?Machine Unlearning 现在存在哪些局限?… 2. AI 搜索想要颠覆传统搜索,必须迈过哪些坎儿? 「AI 搜索赛道」近期涌进了哪些关键玩家?谷歌占据的九成搜索引擎市场份额是否会受到影响?国内外 AI 大厂、创企都是如何做「AI + 搜索」应用的?三种不同的路线有哪些差异?AI 搜索对比传统搜索在技术上有何不同?… 3. ICML 2024 透露了哪些技术趋势? ICML 2024 与往年有何区别?ICML 今年的热度如何?ICML 今年论文热词有哪些?今年哪些研究领域备受关注?哪些 AI 研究者今年最为活跃?大会获奖论文有哪些?… 日期:8 月 2 日 事件:在人工智能疾速发展,LLM 应用开始被广泛应用的当下,全球各国政府对 AI 治理投入了越来越多的精力。在近期多国政府出台的 AI 治理法案中,政府对数据安全、伦理、隐私保护,以及 AI 技术与版权、用户权益等方面的约束条款愈发清晰。在此趋势下,可以用于保护用户隐私数据的 Machine Unlearning 技术也在引起越来越多的关注。 为什么需要关注 Unlearning?[1] 1、在过去的十年中,数据量的大幅增加和硬件性能的快速提升推动了机器学习技术的快速发展。伴随近几年 LLM 模型的发展则进一步带来了对各类数据的需求和消耗。 2、伴随人工智能技术所需的数据量不断增加,许多国家最近立法实施「被遗忘的权利(Right to Forgotten)」。 ① 」被遗忘的权利「中显著的例子是欧盟的通用数据保护条例(GDPR)、加拿大的个人信息保护与电子文件法(PIPEDA)隐私立法和美国的加州消费者隐私法案(CCPA)。 ② 根据这些法律,公司必须采取合理措施保证在请求时删除个人数据。 ③ 截至近期,联合国即将进入执行的《人工智能法案》和美国多个州政府最近的立法行动也对人工智能在用户隐私、版权等方面的提出规范。 4、在此趋势下,Machine Unlearning 技术受到越来越多的关注。 ① 由于企业会利用用户数据训练模型。当用户行使「被遗忘的权利」,要求公司停止使用其数据,如果每次都要重新训练模型以响应用户的要求,将对企业造成巨大的开销和损失。 ② 从技术层面看,Machine Unlearning 领域的研究不仅限于隐私保护,还包括分析不同数据对模型收敛时所贡献的梯度。这种分析有助于实现更精准的去学习,同时也能增强模型对噪声数据的检测能力(Noisy Data Detection)。 LLM 要如何用 Unlearning 进行数字遗忘? 罗维拉-伊-维尔吉利大学、CYBERCAT 和华为等机构的研究者在综述《Digital Forgetting in Large Language Models: A Survey of Unlearning Methods》讨论了在 LLM 中的数字遗忘问题,并梳理了 LLM 中所涉及的 Unlearning 方法进行梳理和对比。这些方法与广义 Machine Unlearning 的方法既有交叉,也有区别。 1、该工作围绕自 2022 年 11 月 ChatGPT 发布以来,LLM 的广泛应用和引发的问题,以数字遗忘为核心解决方案,阐述了包含 Machine Unlearning 在解决 LLM 对市场、隐私、版权等方面的影响。 ① 该工作指出,LLM 的普及引发了有关模型与社会价值观和法治的一致性许多问题。 ② 这些问题包括各类 LLM 对劳动力市场的影响、对个人隐私权的影响、对版权法的影响、对加剧偏见和歧视的影响,以及可能生成有害内容,包括可能被用来造成伤害的内容。 2、该工主要围绕数字遗忘技术展开讨论,其目标是给定一个具有不期望知识或行为的模型,经过数字遗忘处理后获得一个新模型,在该模型中不再存在检测到的问题。 ② 有效的数字遗忘机制必须满足潜在冲突的要求包含:遗忘的有效性,即新模型遗忘不期望知识/行为的效果(无论是通过正式保证还是通过经验评估);模型在期望任务上的保留性能;以及遗忘过程的时效性和可扩展性。 3、该工作讨论了 LLM 的背景,描述了数字遗忘的动机、类型和期望属性,并介绍了 LLMs 中数字遗忘的方法,其中 Unlearning 的方法盘点核心。 4、该工作将适用于 LLM 的 Unlearning 方法分为四个大类,分别是全局权重修改、局部权重修改、架构修改和输入/输出修改方法。 ① 全局权重修改(Global Weight Modification)指修改模型的所有参数以实现遗忘,其代表性方法包含数据分片(Data sharding)、梯度上升(Gradient ascent)、知识蒸馏(KD)、Generic alternatives 和强化学习。 ② 局部权重修改(Local Weight Modification)指今修改模型中与遗忘目标相关的特定参数,其代表性方法为局部重训练(local retraining)、任务向量调整(task vector)和直接修改(Direct modification) ③ 架构修改(Architectur Modification)指在模型结构中添加新的层或应用线性变换,其代表性方法涉及额外的课学习层和线性变换。 ④ 输入/输出修改(Input/output Modification)指在 LLM 的输入或输出层面上进行修改,但不改变模型内部参数,其代表性方法包含输入操纵和信息检索。 5、研究者对适用于 LLM 的 Unlearning 方法展开了一系列评估,包括所使用的数据集、模型和度量标准。 ① 其分析的度量标准含三方面:模型是否有效地遗忘了目标知识;模型是否保留了其余的能力;遗忘过程的计算成本。 表 :LLM Unlearning 方法对比,L、M 和 H 分别表示低、中和高,Sgnf 表示极高。 LLM 中的 Unlearning 方法还有哪些难题亟待解决? Machine Unlearning 作为一项新技术,在人工智能与大模型领域正在逐渐收到重视。然而,大多数现有方法仍存在不同层面的局限,而仍在发展中的 LLM 的部分特性则为 Machine Unlearning 带来了更多挑战。在。2023 年 10 月发布的综述《Large Language Model Unlearning》、2024 年的综述《《Digital Forgetting in Large Language Models: A Survey of Unlearning Methods》以及近期的工作中均指出了 Unlearning 方法当前面临的问题。 1、在 2023 年 10 月发布的综述《Large Language Model Unlearning》中,研究者重点关注了如何在 LLM 中进行 Unlearning。对比传统的分类模型,Unlearning 在 LLM 中面临着一些不同的挑战[7] : ① LLMs 的输出空间远大于标签类别,其带来的可能的结果数量远超传统分类模型。 ② LLMs 的规模巨大,任何昂贵的 Unlearning 方法在 LLMs 上都不切实际。 ③ LLMs 的训练语料库庞大且通常无法访问,难以获取训练数据的真实模型和行为,使得评估也变得困难。 ④ 现有的 Unlearning 方法大多几种于分类模型上,但它们在计算成本和适用性的局限性使其无法直接应用于 LLMs。即便是流行的 RLHF 业存在极大的资源消耗,需要收集大量高质量的人类编写的样本。 2、《数字遗忘》的研究者指出,LLM 中,Machine Unlearning 是一个新的热点,但尚未成熟的研究领域。[6] ① 现有的许多 Unlearning 方法计算成本过高。其中,数据分片和梯度上升等涉及全局权重修改的方法需要大量的计算资源,这种 Unlearning 方式这不仅延长了遗忘过程的时间,还增加了实现遗忘所需的硬件成本。 ② 由于在训练和推理过程中,模型需要占用大量的内存,LLM 尤为明显。因此,的 Unlearning 方法在处理大规模模型时可能会遇到内存限制。 ③ 现有的 Unlearning 方法往往无法完全删除模型中的不期望知识。一些方法可能只是减少了这些知识的影响,而不是完全消除。这可能导致模型在某些情况下仍然表现出不期望的行为。 ④ 泛化能力不足:一些 Unlearning 方法在处理特定任务或领域时表现良好,但在其他任务或领域上效果不佳。这意味着这些方法可能缺乏足够的泛化能力,无法在所有情况下都有效。 ⑤ 某些 Unlearning 方法可能只适用于特定的数据类型或模型架构。同样的,一些 Unlearning 方法在处理特定任务或领域时表现良好,但在其他任务或领域上效果不佳。 ⑥ 由于 LLM 的输出空间巨大,评估 Unlearning 方法的成功与否非常困难。现有的评估指标和方法可能无法充分捕捉到 Unlearning 方法的实际效果。 3、华盛顿大学、普林斯顿大学和南加州大学等机构的研究者在近期发布的《MUSE》论文中提出了面向 LLM 中 Unlearning 方法的综合评估基准。他们评估发现绝大多数 Unlearning 算法会降低模型的一般效用,且不能持续地适应连续的遗忘请求或大规模内容删除。[8]

阿里「轨迹可控版Sora」,告别「抽卡」,让视频生成更符合物理规律

你规定路线,Tora 来生成相应轨迹的视频。   目前,扩散模型能够生成多样化且高质量的图像或视频。此前,视频扩散模型采用 U-Net 架构 ,主要侧重于合成有限时长(通常约为两秒)的视频,并且分辨率和纵横比受到固定限制。 Sora 的出现打破了这一限制,其采用 Diffusion Transformer(DiT)架构,不仅擅长制作 10 到 60 秒的高质量视频,而且还因其生成不同分辨率、各种纵横比、且遵守实际物理定律的能力而脱颖而出。 可以说 Sora 是 DiT 架构最有利的证明,然而,基于 Transformer 的扩散模型在有效生成可控动作视频方面还未被充分探索。 针对这一问题,来自阿里的研究者提出了 Tora,这是第一个面向轨迹的 DiT 架构,它将文本、视觉和轨迹条件同时集成在一起以生成视频。   Tora 的设计与 DiT 的可扩展性无缝契合,允许精确控制具有不同持续时间、宽高比和分辨率的视频内容。大量实验证明,Tora 在实现高运动保真度方面表现出色,同时还能细致模拟物理世界的运动。     论文地址:https://arxiv.org/pdf/2407.21705 论文主页:https://ali-videoai.github.io/tora_video/ 论文标题:Tora: Trajectory-oriented Diffusion Transformer for Video Generation 一艘老式的木制帆船沿着规定好的路线在迷雾笼罩的河流上平稳地滑行,周围是茂密的绿色森林。 一条鲫鱼优雅地游过火星的红色岩石表面,鱼的轨迹向左,火星的轨迹向右。 热气球沿着不同的轨迹升入夜空,一个沿着规定的斜线,另一个沿着有弯度的轨迹。 两只可爱的小猫并排走在宁静的金色沙滩上。 气泡沿着轨迹轻轻地漂浮在盛开的野花中。 枫叶在清澈的湖面上颤动,映照着秋天的森林。   山间的瀑布倾泻而下,主题、背景的运动都可以按照不同的路线运动。 在 Tora 与其他方法的比较中,可以看出 Tora 生成的视频流畅度更高,更遵循轨迹,且物体不会存在变形的问题,保真度更好。 方法介绍 Tora 采用 OpenSora 作为其 DiT 架构的基础模型,包含一个轨迹提取器 (TE,Trajectory Extractor)、时空 DiT(Spatial-Temporal DiT )和一个运动引导融合器 (MGF,Motion-guidance Fuser) 。TE 使用 3D 视频压缩网络将任意轨迹编码为分层时空运动 patch。MGF 将运动 patch 集成到 DiT 块中,以生成遵循轨迹的一致视频。图 3 概述了 Tora 的工作流程。     时空 DiT(ST-DiT) ST-DiT 架构包含两种不同的块类型:空间 DiT 块 (S-DiT-B) 和时间 DiT 块 (T-DiT-B),它们交替排列。S-DiT-B 包含两个注意力层,每个层按顺序执行空间自注意力 (SSA) 和交叉注意力,后面跟着一个逐点前馈层,用于连接相邻的 T-DiT-B 块。T-DiT-B 仅通过用时间自注意力 (TSA) 替换 SSA 来修改此架构,从而保持架构一致性。在每个块中,输入在经过规范化后,通过跳跃连接连接回块的输出。通过利用处理可变长度序列的能力,去噪 ST-DiT 可以处理可变持续时间的视频。 轨迹提取器 轨迹已被证明是一种更加用户友好的方法来控制生成视频的运动。然而,DiT 模型采用视频自编码器和 patch 化过程将视频转换为视频 patch。在这里,每个 patch 都是跨多个帧导出,因此直接采用帧间偏移是不合适的。为了解决这个问题,本文提出的 TE 将轨迹转换为运动 patch,运动 patch 与视频 patch 位于相同的潜在空间。 运动引导融合器 为了将基于 DiT 的视频生成与轨迹结合起来,本文探索了三种融合架构变体,将运动 patch 注入每个 ST-DiT 块。这些设计如图 4 所示。 实验结果 在实现细节上,研究者基于 OpenSora v1.2 权重来训练 Tora。训练视频的分辨率由 144p 到 720p 不等。为了平衡训练 FLOP 以及每次迭代不同分辨率和帧数所需的内存,研究者相应地将批大小从 1 调整到 25。 至于训练基础设施,研究者使用了 4 块英伟达 A100 和 Adam 优化器,学习率为 2 × 10^−5。 研究者将 Tora 与流行的运动指导视频生成方法进行了比较。评估中使用了三种设置,分别为 16、64 和 128 帧,所有设置都是 512×512 的分辨率。   结果如下表 1 所示,在 U-Net 方法常用的 16 帧设置下,MotionCtrl 和 DragNUWA 能够更好地与所提供的轨迹实现对齐,但仍弱于 Tora。随着帧数增加,U-Net 方法在某些帧中出现明显偏差,并且错位误差传播会导致后续序列中出现变形、运动模糊或物体消失。   相比之下,得益于集成了 Transformer 的缩放能力,Tora 对帧数变化表现出很高的稳健性。Tora 产生的运动更加流畅,且更符合物理世界。对于 128 帧测试设置下的评估,Tora 的轨迹精度达到其他方法的 3 到 5 倍,展现出了卓越的运动控制能力。 在下图 5 中,研究者对不同分辨率和持续时长的轨迹误差进行分析。结果显示,不同于 U-Net 随时间推移出现明显的轨迹误差,Tora 的轨迹误差随时间推移出现渐进增加。这与 DiT 模型中视频质量随时间增加而下降相一致。Tora 在更长的时间下保持了有效的轨迹控制。   下图 6 展示了 Tora 与主流运动控制方法的比较分析,在包含两人共同运动的场景中,所有方法都能生成相对准确的运动轨迹。不过,Tora 的视觉质量更好,这要归功于更长序列帧的使用,有助于实现更平滑的运动轨迹和更逼真的背景渲染。 可以看到,在 Tora 生成的自行车场景中,人的双腿表现出逼真的踩踏动作,而 DragNUWA 的双腿几乎水平漂浮,违反了物理真实性。此外,DragNUWA 和 MotionCtrl 在视频结尾处都出现了严重的运动模糊。 在另一个生成灯笼的场景中,DragNUWA 随着所提供轨迹的持续升降出现了严重的变形。MotionCtrl 的轨迹虽然相对准确,但生成的视频与两个灯笼的描述不相符。Tora 不仅严格地遵循了轨迹,而且最大程度地减少了物体变形,确保了更高保真度的动作表示。  

小技巧大功效,「仅阅读两次提示」让循环语言模型超越Transformer++

在当前 AI 领域,大语言模型采用的主流架构是 Transformer。不过,随着 RWKV、Mamba 等架构的陆续问世,出现了一个很明显的趋势:在语言建模困惑度方面与 Transformer 较量的循环大语言模型正在快速进入人们的视线。   令人兴奋的是,这些架构在推理期间使用了恒定量的内存。不过,受制于有限的内存,循环语言模型(LM)无法记忆并使用长上下文中的所有信息,这导致了上下文学习(in-context learning,ICL)质量的不佳。因此,获得高效大语言模型的关键挑战在于选择存储或者丢弃哪些信息。 在最近的论文《Just read twice: closing the recall gap for recurrent language models》中,来自斯坦福大学、布法罗大学的研究者通过简单观察发现,数据在推理期间涌入循环语言模型的排序极大地影响了在有限内存中预测存储哪些信息的难度。   我们假设根据文档 D(比如伽利略・伽利莱的详细维基百科)来提问:伽利略是什么时候搬到的佛罗伦萨?这时,如果提示遵循了 [Q, D] 的排序,则模型只需要记住文档 D 中的一个事实即可。相反,如果提示遵循了 [D, Q] 的排序,则模型需要记住所有事实。如下图 1(左)所示。   因此,本文首先从理论上形式化了数据排序如何影响内存需求,然后提出两种方法来减轻对数据排序的依赖,分别是 Just-read-twice(JRT)提示策略和 JRT 循环架构。本文主要分为以下几个部分展开: 理解数据排序的作用。研究者得出的第一个洞见是:记忆问题的 hardness 要降低到与设置剥离(set disjointness,SD)相同,这是通信复杂度理论中持续数十年的最典型问题。SD 要求一种流算法(比如循环模型)来决定上下文中提供的输入集是否剥离:     理论分析和实验结果表明,第一个集 | A | 掌控了求解 SD 所需的内存。因果模型需要存储 A 中的所有元素以与 B 中的元素进行比较。这表明了,使用上下文中的「正确数据排序」(如将最小 min (|A|, |B|) 的集放在首位)将有助于内存受限的模型。更进一步,观察到上下文非因果逻辑的模型可在空间最小的 (|A|, |B|) 中求解 SD,而无需考虑数据排序。 其次是利用「正确的」排序。本文提出了一种非常简单的 JRT-Prompt 策略,在模型生成答案之前在上下文中将信息重复多次(如上图 1 右所示)。在第二以及更多轮次中,语言模型在决定存储哪些信息时要以完整的上下文为条件,从而有效避免了将数据排序「归正」的问题。   结果表明,JRT-Prompt 在 16 个已有循环语言模型和 6 项 ICL 任务上,实现了平均 11.0 ± 1.3 百分点的提升,而吞吐量是 FlashAttention-2(长度 32k、批大小 16)的 11.9 倍。JRT-Prompt 虽然增加了上下文长度,但渐进来看仍然比注意力更加地计算和内存高效。 超越因果模型。本文提出了 JRT-RNN,它的灵感来源于简单的 Prefix-LM 编码器解码器架构设计。大多数的上下文学习输入包含两部分内容,分别是输入的提示(上下文、指令)和作为输出的模型生成文本。在 Prefix-LM 架构中,LM 并没有遵循因果逻辑地处理提示区域,而对输出进行了因果解码,其中在因果区域仅使用了标准的下一个 token 预测损失,以及非因果区域上的损失。 不过遗憾的是,此前 Prefix-LM 模型的训练方法取得的成功有限,并使用了低效的 Transformer 主干。因此本文通过一些简单的改变来提高质量和效率,包括改进训练损失并使用称之为「Prefix Linear Attention,PLA」 的线性注意力公式。研究者发现,使用他们的 IO 感知实现,JRT-RNN 在 360m 和 1.3b 参数设置下,分别可以提供 13.7 和 6.9 百分点的平均质量改进,吞吐量是 FA2 的 19.2 倍。   论文地址:https://arxiv.org/pdf/2407.05483 项目主页:https://github.com/HazyResearch/prefix-linear-attention JRT-Prompt 方法概览 上下文学习任务以 (C, Q, Y) 作为输入,其中 C 为一些上下文来源(如文档或代码存储库),Q 为给定上下文时对模型的一些问题或请求,Y 为答案。对于使用自回归 LM A 的标准上下文学习,研究者输入 C 和 Q,并根据正确的完成情况 Y 来评估生成的输出 Yˆ = A (C, Q)。 JRT-Prompt 是一种极其简单的方法,在提示模型输出答案之前会在上下文中重复提示中的信息(如问题和文档),例如下图 1 右的 Yˆ = A (C, Q, C, Q)。因此,在上下文第二次出现时,模型根据完整的上下文来决定存储哪些信息。   此外,JRT-Prompt 可以与现成的 LLM 一起使用。研究者在零样本提示下,在一系列记忆密集型上下文任务上评估了以下 LM: Based 预训练 LM,参数规模为 1.3B,在 Pile 的 10 − 50B 个 token 上进行训练; Mamba 预训练的 LM,参数规模为 130M、370M、1.4B 和 2.8B,在 Pile 的 300B 个 token 上进行训练; Gated Linear Attention 预训练的 LM,参数规模为 1.3B 和 2.7B,在 SlimPajama 数据集的 100B 个 token 上进行训练; Mamba-2 预训练的 LM,参数规模为 130M、370M、1.3B 和 2.7B,在 Pile 的 300B 个 token 上进行训练。   结果如下表 1 所示,通过增加状态(state)大小,研究者发现 JRT-Prompt 方法在各个模型和任务上平均带来了 11.0 ± 1.3 百分点的性能提升,利用该方法的 Based 模型平均优于利用标准提示的 Transformer 模型。   他们还发现,JRT-Prompt 可以使 Transformer 模型受益,并且该方法在一些任务上(附录 2)比少样本学习更加有效。值得注意的是,Springer 等人在论文《Repetition improves language model embeddings》中提出使用自回归 Transformer 模型来重复上下文以实现生成嵌入的目的,本文的研究结果也类似。研究者专注于亚二次架构和上下文学习任务。   JRT-Prompt 虽然由于重复而增加了上下文长度,但是其使用的亚二次循环架构仍比使用二次 Transformer 模型更高效。研究者发现,在序列长度 N = 32768、批大小为 16 时,使用 JRT-Prompt(序列长度 2N)在英伟达 H100 上提供的吞吐量是 FlashAttention-2(序列长度 N)的 11.9 倍。 JRT-RNN:编码器 – 解码器循环架构 JRT-RNN 的灵感来自于 Prefix-LMs,但侧重于扩展质量 – 效率权衡空间的帕累托边界(Pareto frontier)。为了提高质量,JRT-RNN 在编码器端使用了单独的 k_e 和 v_e 映射,在解码器端使用了 k_d 和 v_d 映射。虽然 Prefix LM 模型对编码器和解码器区域使用了共享映射权重,但研究者发现使用两组映射可以提高质量。   为了提高效率,JRT-RNN 为编码器使用了非因果线性注意力,而为解码器使用标准因果线性注意力。研究者称为 Prefix Linear Attention(PLA)(图 1 右),公式如下:     JRT-RNN 训练目标。Prefix LMs 通常不计算非因果区域的损失,而 JRT-RNN 将下一个 token 预测与掩码语言建模(MLM)目标进行了结合。并且对于添加的 MLM 目标,研究者用一个 [MASK] token 替换了来自编码器区域 {u_1, …, u_M} 的比例为 P 的 tokens,并在预测原始 token 时测量了交叉熵损失。 损失如下:   实验结果 在实验中,研究者评估了 JRT-RNN 在以下三个指标上的质量和效率:   上下文学习质量 整体语言建模 生成   上下文学习质量 如下表 2 所示,研究者发现,JRT-RNN 在参数为 360M(30B tokens)时比仅解码器的基线(Based)平均高出 13.7 个百分点,在参数为 1.3B(50B tokens)时平均高出 6.9 个百分点。   同时,JRT-RNN 在参数为 360M 和 1.3B 时与 Transformer++ 的差距分别缩小到了 0.5 个百分点和 1.9 个百分点之内。 在下表 3 中,研究者比较了当 prefill 长度 l 小于编码器长度 M 时,JRT-RNN 与同类推理策略的表现。     整体自然语言理解 根据以往研究,研究者进一步将困惑度分为了两组:联想记忆「AR slice」包括了被称为「AR hits」的 tokens,它们需要模型按照顺序执行记忆以正确地预测下一个 token;而「Other slice」包含剩余的 tokens(如记忆的知识)。 对于记忆频率,JRT-RNN 在「AR slice」表现出色。对于训练期间不常见的二元组(即不太可能在模型参数中被记住的),JRT-RNN 的困惑度相对于 Based 和 Mamba 这两个强大的因果循环基线有所改善。   对于记忆距离,在「AR slice」中,JRT-RNN 与仅解码器基线之间的差距随着上下文中重复二元组的增加而扩大。这也进一步证明了 JRT-RNN 可以帮助完成更长的上下文记忆任务。   非记忆频率。对于训练期间很少见到的二元组的非记忆「Other slice」,JRT-RNN 的困惑度比仅解码器的 LM 更差。这是意料之中的结果,因为 JRT-RNN 计算了仅解码器 LM 的 65% tokens 的损失。   我们预计这一差距会随着规模和训练时间的延长而缩小(随着二元语法频率的增加而增加)(图 3,左上角)。   生成吞吐量 生成可以分解为提示「prefill 处理」和解码「下一个 token 预测」两步。相较于标准的仅解码器循环模型,JRT-RNN 不会修改解码步骤,因此讨论重点在 prefill 阶段。 使用 Simran Arora 等人论文《Simple linear attention language models balance the recall-throughput tradeof》中提出的 Based CUDAn 内核,JRT-Prompt 在处理 prefill 时吞吐量分别是 FlashAttention-2 和 FLA Triton 内核的 11.9 和 13.7 倍,如下表 5 所示。   当研究者将批大小增加到 64 时,JRT-Prompt 吞吐量分别是 FlashAttention-2 和 FLA Triton 内核的 6.1 倍和 7.2 倍。   接下来他们扩展了 Based 内核以支持 JRT-RNN,并且证明了当将序列长度增加到 32768 时,吞吐量分别是 FlashAttention-2 和 FLA 的 19.2 倍和 22.0 倍。当将批大小增加到 64 时,JRT-RNN 分别又提供了 9.7 倍和 11.5 倍的吞吐量提升。JRT-RNN 所需的时间是 Based prefill 的 1.24 倍,比 JRT-Prompt 更加高效。     更多技术细节和实验结果请参阅原论文。

70倍极致压缩!大模型的检查点再多也不怕

大模型作为当下 AI 工业界和学术界当之无愧的「流量之王」,吸引了大批学者和企业投入资源去研究与训练。随着规模越做越大,系统和工程问题已经成了大模型训练中绕不开的难题。例如在 Llama3.1 54 天的训练里,系统会崩溃 466 次,平均 2.78 小时一次! 那么,频繁存储检查点就显得十分必要。但存储检查点本身也是一个大工程。   Meta 做了很多努力来加速存储检查点时间和增加存储频率,来对抗频繁出现的系统失效。但频繁存储也意味着大量的存储资源开销,其训练集群配备了 240PB 的 SSD 来应对这一挑战,光存储这一项的耗费就要亿元!   华为诺亚的 ExCP 方法也就应运而生,为了应对存储带来的巨大开销,他们提出了极致压缩检查点技术,能够无损压缩模型 70 倍,大幅降低训练中的存储开销。 代码目前已经开源,在 Apache 2.0 框架下发布,issue 中已经有小伙伴成功复现了结果。 文章地址:https://arxiv.org/abs/2406.11257 仓库地址:https://github.com/Gaffey/ExCP 方法也很有创新性,文章中提到了两个重要的概念,一个是利用训练中检查点的残差信息,通过时间序列上信息的稀疏性实现更高的剪枝比例;另一个是将优化器和权重联合起来进行压缩,实现整体的高压缩率。 具体方法   1. 检查点残差   在训练过程中,当前的参数可以看作上一个检查点存储的权重加上逐次迭代时梯度更新的总和,这部分是相对稀疏的,包含的信息量较少,因此对这一残差进行压缩,可以获得更好的压缩比例。而与此相反的,优化器中存储的动量是梯度一阶矩和二阶矩的滑动平均值,对于一阶矩来说,它的滑动平均默认的参数是 0.9,在数百到数千个迭代之后与上一次检查点存储的内容已经没有太大的关联,所以对于优化器直接压缩其本身的值而非残差。最终待压缩的检查点表示为   2. 权重 – 优化器动量联合压缩 目前已有的模型压缩相关的工作一般只关注于模型的推理性能,或者是模型最终存储检查点的大小,而不关注模型在整个训练过程中对储存空间的开销。因而已有工作只对权重进行压缩,而忽略了 Adam 等常见优化器中实际上存储了两倍于权重数量的动量。这一工作一方面将两者一起进行了压缩,显著提升了整体的压缩比例;另一方面也利用了权重和优化器动量的关联性,进一步提升彼此的压缩比例。   权重剪枝:由于剪枝的权重是残差值,优化器动量的二阶矩可以大致表示在过去一段时间内权重残差值的变化幅度,所以可以使用优化器动量的二阶矩作为指标来确定不同层的剪枝比例。剪枝策略如下文公式所示 式中,W 和分别表示权重和二阶矩。   优化器动量剪枝:对于动量剪枝,可以使用一阶矩作为指示器来进行剪枝,论文中有关于可收敛性的一个简要证明。同时,如果一个位置的权重已经被剪枝,那么对应位置的优化器动量也应该同步被处理,所以剪枝策略如下文公式所示 式中, 表示一阶矩。 3. 整体压缩流程   整体压缩流程如 Algorithm 1 所示,依次进行计算权重残差 / 联合压缩 / 非均匀量化 / 编码压缩等步骤,得到最终的压缩结果。 而恢复出检查点完整文件的流程则如 Algorithm 2 所示,进行解压缩之后,首先从非均匀量化后存储的码本和下标中恢复出浮点结果,然后再与基准权重(上一个检查点的原始权重或恢复出的重建权重)相加,得到检查点完整文件。而恢复出整个训练流程中的检查点文件的流程如 Algorithm 3 所示,在完成训练后只保存初始化权重的随机种子和每个检查点存储的压缩结果,然后依次对检查点进行恢复以得到完整的检查点序列,以供从其中选择某个或多个检查点恢复训练 / 进行测试等。   实验结果   文章中不仅对于大语言模型做了评估,在 ViT-L32 这样较大的视觉模型上这一方法也能取得很好的效果。 从消融实验里也可以看出,采用残差剪枝的方法大大减少了剪枝带来的损失。 文章中还提供了大语言模型压缩前后问答的样例,可以看到压缩本身对于模型的问答能力也没有造成损害。

LLM可解释性的未来希望?稀疏自编码器是如何工作的,这里有一份直观说明

简而言之:矩阵 → ReLU 激活 → 矩阵 在解释机器学习模型方面,稀疏自编码器(SAE)是一种越来越常用的工具(虽然 SAE 在 1997 年左右就已经问世了)。 机器学习模型和 LLM 正变得越来越强大、越来越有用,但它们仍旧是黑箱,我们并不理解它们完成任务的方式。理解它们的工作方式应当大有助益。 SAE 可帮助我们将模型的计算分解成可以理解的组件。近日,LLM 可解释性研究者 Adam Karvonen 发布了一篇博客文章,直观地解释了 SAE 的工作方式。 可解释性的难题 神经网络最自然的组件是各个神经元。不幸的是,单个神经元并不能便捷地与单个概念相对应,比如学术引用、英语对话、HTTP 请求和韩语文本。在神经网络中,概念是通过神经元的组合表示的,这被称为叠加(superposition)。 之所以会这样,是因为世界上很多变量天然就是稀疏的。 举个例子,某位名人的出生地可能出现在不到十亿分之一的训练 token 中,但现代 LLM 依然能学到这一事实以及有关这个世界的大量其它知识。训练数据中单个事实和概念的数量多于模型中神经元的数量,这可能就是叠加出现的原因。 近段时间,稀疏自编码器(SAE)技术越来越常被用于将神经网络分解成可理解的组件。SAE 的设计灵感来自神经科学领域的稀疏编码假设。现在,SAE 已成为解读人工神经网络方面最有潜力的工具之一。SAE 与标准自编码器类似。 常规自编码器是一种用于压缩并重建输入数据的神经网络。 举个例子,如果输入是一个 100 维的向量(包含 100 个数值的列表);自编码器首先会让该输入通过一个编码器层,让其被压缩成一个 50 维的向量,然后将这个压缩后的编码表示馈送给解码器,得到 100 维的输出向量。其重建过程通常并不完美,因为压缩过程会让重建任务变得非常困难。 一个标准自编码器的示意图,其有 1×4 的输入向量、1×2 的中间状态向量和 1×4 的输出向量。单元格的颜色表示激活值。输出是输入的不完美重建结果。 解释稀疏自编码器 稀疏自编码器的工作方式 稀疏自编码器会将输入向量转换成中间向量,该中间向量的维度可能高于、等于或低于输入的维度。在用于 LLM 时,中间向量的维度通常高于输入。在这种情况下,如果不加额外的约束条件,那么该任务就很简单,SAE 可以使用单位矩阵来完美地重建出输入,不会出现任何意料之外的东西。但我们会添加约束条件,其中之一是为训练损失添加稀疏度惩罚,这会促使 SAE 创建稀疏的中间向量。 举个例子,我们可以将 100 维的输入扩展成 200 维的已编码表征向量,并且我们可以训练 SAE 使其在已编码表征中仅有大约 20 个非零元素。 稀疏自编码器示意图。请注意,中间激活是稀疏的,仅有 2 个非零值。 我们将 SAE 用于神经网络内的中间激活,而神经网络可能包含许多层。在前向通过过程中,每一层中和每一层之间都有中间激活。 举个例子,GPT-3 有 96 层。在前向通过过程中,输入中的每个 token 都有一个 12,288 维向量(一个包含 12,288 个数值的列表)。此向量会累积模型在每一层处理时用于预测下一 token 的所有信息,但它并不透明,让人难以理解其中究竟包含什么信息。 我们可以使用 SAE 来理解这种中间激活。SAE 基本上就是「矩阵 → ReLU 激活 → 矩阵」。 举个例子,如果 GPT-3 SAE 的扩展因子为 4,其输入激活有 12,288 维,则其 SAE 编码的表征有 49,512 维(12,288 x 4)。第一个矩阵是形状为 (12,288, 49,512) 的编码器矩阵,第二个矩阵是形状为 (49,512, 12,288) 的解码器矩阵。通过让 GPT 的激活与编码器相乘并使用 ReLU,可以得到 49,512 维的 SAE 编码的稀疏表征,因为 SAE 的损失函数会促使实现稀疏性。 通常来说,我们的目标让 SAE 的表征中非零值的数量少于 100 个。通过将 SAE 的表征与解码器相乘,可得到一个 12,288 维的重建的模型激活。这个重建结果并不能与原始的 GPT 激活完美匹配,因为稀疏性约束条件会让完美匹配难以实现。 一般来说,一个 SAE 仅用于模型中的一个位置举个例子,我们可以在 26 和 27 层之间的中间激活上训练一个 SAE。为了分析 GPT-3 的全部 96 层的输出中包含的信息,可以训练 96 个分立的 SAE—— 每层的输出都有一个。如果我们也想分析每一层内各种不同的中间激活,那就需要数百个 SAE。为了获取这些 SAE 的训练数据,需要向这个 GPT 模型输入大量不同的文本,然后收集每个选定位置的中间激活。 下面提供了一个 SAE 的 PyTorch 参考实现。其中的变量带有形状注释,这个点子来自 Noam Shazeer,参见:https://medium.com/@NoamShazeer/shape-suffixes-good-coding-style-f836e72e24fd 。请注意,为了尽可能地提升性能,不同的 SAE 实现往往会有不同的偏置项、归一化方案或初始化方案。最常见的一种附加项是某种对解码器向量范数的约束。更多细节请访问以下实现: OpenAI:https://github.com/openai/sparse_autoencoder/blob/main/sparse_autoencoder/model.py#L16 SAELens:https://github.com/jbloomAus/SAELens/blob/main/sae_lens/sae.py#L97 dictionary_learning:https://github.com/saprmarks/dictionary_learning/blob/main/dictionary.py#L30 import torchimport torch.nn as nn# D = d_model, F = dictionary_size# e.g. if d_model = 12288 and dictionary_size = 49152# then model_activations_D.shape = (12288,) and encoder_DF.weight.shape = (12288, 49152)class SparseAutoEncoder (nn.Module): """ A one-layer autoencoder. """ def __init__(self, activation_dim: int, dict_size: int): super ().__init__() self.activation_dim = activation_dim self.dict_size = dict_size self.encoder_DF = nn.Linear (activation_dim, dict_size, bias=True) self.decoder_FD = nn.Linear (dict_size, activation_dim, bias=True) def encode (self, model_activations_D: torch.Tensor) -> torch.Tensor: return nn.ReLU ()(self.encoder_DF (model_activations_D)) def decode (self, encoded_representation_F: torch.Tensor) -> torch.Tensor: return self.decoder_FD (encoded_representation_F) def forward_pass (self, model_activations_D: torch.Tensor) -> tuple [torch.Tensor, torch.Tensor]: encoded_representation_F = self.encode (model_activations_D) reconstructed_model_activations_D = self.decode (encoded_representation_F) return reconstructed_model_activations_D, encoded_representation_F 标准自编码器的损失函数基于输入重建结果的准确度。为了引入稀疏性,最直接的方法是向 SAE 的损失函数添加一个稀疏度惩罚项。对于这个惩罚项,最常见的计算方式是取这个 SAE 的已编码表征(而非 SAE 权重)的 L1 损失并将其乘以一个 L1 系数。这个 L1 系数是 SAE 训练中的一个关键超参数,因为它可确定实现稀疏度与维持重建准确度之间的权衡。 请注意,这里并没有针对可解释性进行优化。相反,可解释的 SAE 特征是优化稀疏度和重建的一个附带效果。下面是一个参考损失函数。 # B = batch size, D = d_model, F = dictionary_sizedef calculate_loss (autoencoder: SparseAutoEncoder, model_activations_BD: torch.Tensor, l1_coeffient: float) -> torch.Tensor: reconstructed_model_activations_BD, encoded_representation_BF = autoencoder.forward_pass (model_activations_BD) reconstruction_error_BD = (reconstructed_model_activations_BD - model_activations_BD).pow (2) reconstruction_error_B = einops.reduce (reconstruction_error_BD, 'B D -> B', 'sum') l2_loss = reconstruction_error_B.mean () l1_loss = l1_coefficient * encoded_representation_BF.sum () loss = l2_loss + l1_loss return loss   稀疏自编码器的前向通过示意图。 这是稀疏自编码器的单次前向通过过程。首先是 1×4 大小的模型向量。然后将其乘以一个 4×8 的编码器矩阵,得到一个 1×8 的已编码向量,然后应用 ReLU 将负值变成零。这个编码后的向量就是稀疏的。之后,再让其乘以一个 8×4 的解码器矩阵,得到一个 1×4 的不完美重建的模型激活。 假想的 SAE 特征演示 理想情况下,SAE 表征中的每个有效数值都对应于某个可理解的组件。 这里假设一个案例进行说明。假设一个 12,288 维向量 [1.5, 0.2, -1.2, …] 在 GPT-3 看来是表示「Golden Retriever」(金毛犬)。SAE 是一个形状为 (49,512, 12,288) 的矩阵,但我们也可以将其看作是 49,512 个向量的集合,其中每个向量的形状都是 (1, 12,288)。如果该 SAE 解码器的 317 向量学习到了与 GPT-3 那一样的「Golden Retriever」概念,那么该解码器向量大致也等于 [1.5, 0.2, -1.2, …]。 无论何时 SAE 的激活的 317 元素是非零的,那么对应于「Golden Retriever」的向量(并根据 317 元素的幅度)会被添加到重建激活中。用机械可解释性的术语来说,这可以简洁地描述为「解码器向量对应于残差流空间中特征的线性表征」。 也可以说有 49,512 维的已编码表征的 SAE 有 49,512 个特征。特征由对应的编码器和解码器向量构成。编码器向量的作用是检测模型的内部概念,同时最小化其它概念的干扰,尽管解码器向量的作用是表示「真实的」特征方向。研究者的实验发现,每个特征的编码器和解码器特征是不一样的,并且余弦相似度的中位数为 0.5。在下图中,三个红框对应于单个特征。 稀疏自编码器示意图,其中三个红框对应于 SAE 特征 1,绿框对应于特征 4。每个特征都有一个 1×4 的编码器向量、1×1 的特征激活和 1×4 的解码器向量。重建的激活的构建仅使用了来自 SAE 特征 1 和 4 的解码器向量。如果红框表示「红颜色」,绿框表示「球」,那么该模型可能表示「红球」。 那么我们该如何得知假设的特征 317 表示什么呢?目前而言,人们的实践方法是寻找能最大程度激活特征并对它们的可解释性给出直觉反应的输入。能让每个特征激活的输入通常是可解释的。 举个例子,Anthropic 在 Claude Sonnet 上训练了 SAE,结果发现:与金门大桥、神经科学和热门旅游景点相关的文本和图像会激活不同的 SAE 特征。其它一些特征会被并不显而易见的概念激活,比如在 Pythia 上训练的一个 SAE 的一个特征会被这样的概念激活,即「用于修饰句子主语的关系从句或介词短语的最终 token」。 由于 SAE 解码器向量的形状与 LLM 的中间激活一样,因此可简单地通过将解码器向量加入到模型激活来执行因果干预。通过让该解码器向量乘以一个扩展因子,可以调整这种干预的强度。当 Anthropic 研究者将「金门大桥」SAE 解码器向量添加到 Claude 的激活时,Claude 会被迫在每个响应中都提及「金门大桥」。 下面是使用假设的特征 317 得到的因果干预的参考实现。类似于「金门大桥」Claude,这种非常简单的干预会迫使 GPT-3 模型在每个响应中都提及「金毛犬」。 def perform_intervention (model_activations_D: torch.Tensor, decoder_FD: torch.Tensor, scale: float) -> torch.Tensor: intervention_vector_D = decoder_FD [317, :] scaled_intervention_vector_D = intervention_vector_D * scale modified_model_activations_D = model_activations_D + scaled_intervention_vector_D return modified_model_activations_D 稀疏自编码器的评估难题 使用 SAE 的一大主要难题是评估。我们可以训练稀疏自编码器来解释语言模型,但我们没有自然语言表示的可度量的底层 ground truth。目前而言,评估都很主观,基本也就是「我们研究一系列特征的激活输入,然后凭直觉阐述这些特征的可解释性。」这是可解释性领域的主要限制。 研究者已经发现了一些似乎与特征可解释性相对应的常见代理指标。最常用的是 L0 和 Loss Recovered。L0 是 SAE 的已编码中间表征中非零元素的平均数量。Loss Recovered 是使用重建的激活替换 GPT 的原始激活,并测量不完美重建结果的额外损失。这两个指标通常需要权衡考虑,因为 SAE 可能会为了提升稀疏性而选择一个会导致重建准确度下降的解。 在比较 SAE 时,一种常用方法是绘制这两个变量的图表,然后检查它们之间的权衡。为了实现更好的权衡,许多新的 SAE 方法(如 DeepMind 的 Gated SAE 和 OpenAI 的 TopK SAE)对稀疏度惩罚做了修改。下图来自 DeepMind 的 Gated SAE 论文。Gated SAE 由红线表示,位于图中左上方,这表明其在这种权衡上表现更好。 Gated SAE L0 与 Loss Recovered SAE 的度量存在多个难度层级。L0 和 Loss Recovered 是两个代理指标。但是,在训练时我们并不会使用它们,因为 L0 不可微分,而在 SAE 训练期间计算 Loss Recovered 的计算成本非常高。相反,我们的训练损失由一个 L1 惩罚项和重建内部激活的准确度决定,而非其对下游损失的影响。 训练损失函数并不与代理指标直接对应,并且代理指标只是对特征可解释性的主观评估的代理。由于我们的真正目标是「了解模型的工作方式」,主观可解释性评估只是代理,因此还会有另一层不匹配。LLM 中的一些重要概念可能并不容易解释,而且我们可能会在盲目优化可解释性时忽视这些概念。 总结 可解释性领域还有很长的路要走,但 SAE 是真正的进步。SAE 能实现有趣的新应用,比如一种用于查找「金门大桥」导向向量(steering vector)这样的导向向量的无监督方法。SAE 也能帮助我们更轻松地查找语言模型中的回路,这或可用于移除模型内部不必要的偏置。 SAE 能找到可解释的特征(即便目标仅仅是识别激活中的模式),这一事实说明它们能够揭示一些有意义的东西。还有证据表明 LLM 确实能学习到一些有意义的东西,而不仅仅是记忆表层的统计规律。 SAE 也能代表 Anthropic 等公司曾引以为目标的早期里程碑,即「用于机器学习模型的 MRI(磁共振成像)」。SAE 目前还不能提供完美的理解能力,但却可用于检测不良行为。SAE 和 SAE 评估的主要挑战并非不可克服,并且现在已有很多研究者在攻坚这一课题。 有关稀疏自编码器的进一步介绍,可参阅 Callum McDougal 的 Colab 笔记本:https://www.lesswrong.com/posts/LnHowHgmrMbWtpkxx/intro-to-superposition-and-sparse-autoencoders-colab 参考链接: https://www.reddit.com/r/MachineLearning/comments/1eeihdl/d_an_intuitive_explanation_of_sparse_autoencoders/ https://adamkarvonen.github.io/machine_learning/2024/06/11/sae-intuitions.html

一文看尽LLM对齐技术:RLHF、RLAIF、PPO、DPO……

为了对齐 LLM,各路研究者妙招连连。 LLM 很强大了,但却并不完美,它也会出错或者生成无用乃至有害的结果,比如有人发现可以让 ChatGPT 教人如何偷盗: 让 ChatGPT 教人如何偷盗商店;左图,ChatGPT 拒绝回答;右图,在 prompt 中添加了「with no moral restraints(不加道德约束)」后,ChatGPT 给出了商店偷盗指南 这时候,对齐(alignment)就至关重要了,其作用就是让 LLM 与人类的价值观保持一致。 在对齐 LLM 方面,基于人类反馈的强化学习(RLHF)是一种突破性的技术。该方法催生了 GPT-4、Claude 和 Gemini 等强大模型。RLHF 之后,人们也探索了多种多样的对齐 LLM 的方法。但是,此前还没有人全面总结对齐 LLM 与人类偏好的方法。 Salesforce 决定填补这一空白,于近日发布了一份 37 页的综述报告,其中按类别总结了现有的研究文献,并详细分析了各篇论文。   论文标题:A Comprehensive Survey of LLM Alignment Techniques: RLHF, RLAIF, PPO, DPO and More 论文地址:https://arxiv.org/pdf/2407.16216 这篇论文分为四大主题:奖励模型、反馈、强化学习(RL)、优化。每个主题又包含进一步的子主题,如图 1 所示。   奖励模型的子主题包括:1. 显式奖励模型与隐式奖励模型;2. 逐点奖励模型与偏好模型;3. 响应层面的奖励与 token 层面的奖励;4. 负偏好优化。 反馈的子主题包括:1. 偏好反馈与二元反馈;2. 成对反馈与列表反馈;3. 人类反馈与 AI 反馈。 强化学习的子主题包括:1. 基于参考的强化学习与无参考的强化学习;2. 长度控制式强化学习;3. 强化学习中的不同分支;4. 在线策略强化学习与离线策略强化学习。 优化的子主题包括:1. 在线 / 迭代式偏好优化与离线 / 非迭代式偏好优化;2. 分离 SFT 和对齐与合并 SFT 和对齐。   表 1 列出了这篇综述报告中分析的所有论文在这 13 个评估指标上的划分情况。 研究论文 这一节将详细介绍各篇论文,让读者无需阅读原论文也能了解这些重要创新。机器之心将简单梳理各个研究方向并列出代表性论文。 1. RLHF/PPO LLM 的预训练要用到大量来自不同来源的语料库,而这本身就无法确保这些数据集的质量。此外,LLM 的主要目标是预测下一个 token,这个目标与「有用且安全地遵从用户指令」的目标并不一致。因此,LLM 可能会输出不真实、有害或对用户无用的内容。本质上讲,这些模型并未与用户意图对齐。RLHF/PPO 的主要目标是在各种任务上对齐语言模型与用户意图,其做法是使用人类反馈来微调模型。有关这个主题的研究有很多。 InstructGPT InstructGPT 来自 OpenAI,这是训练 ChatGPT 和 GPT-4 等模型的基础,参阅《GPT-4 技术报告》以及机器之心的报道《GPT-4 震撼发布:多模态大模型,直接升级 ChatGPT、必应,开放 API,游戏终结了?》《跟李沐学 ChatGPT 背后技术:67 分钟读透 InstructGPT 论文》。 通过纳入人类偏好,评估 LLM 生成的响应的难题得到了解决。BLEU、ROUGE 和 BERTScore 等用于评估 LLM 的传统评估指标无法保证与人类偏好的一致性。为了解决这个问题,研究者直接将人类偏好整合进了 LLM 以增强其性能。这个过程通常涉及两个主要步骤:奖励模型学习和强化学习策略训练。 在奖励模型学习阶段,会使用 prompt 和配对的响应训练一个显式的逐点奖励函数。 之后,开始强化学习策略训练阶段;在这个阶段,LLM 和预训练奖励模型分别作为一个强化学习框架中的智能体和环境。 为了训练 InstructGPT,要用到三个数据集:1.SFT 数据集:包含用于训练 SFT 模型的标注者演示。2.RM(奖励模型)数据集:由人类标注者对模型输出的排名构成,用于训练奖励模型。3.PPO 数据集:由用作 RLHF 微调输入的 prompt 构成。 训练后的 InstructGPT 会在三个方面得到评估:有用性、可信度、有害性。 从结果上看,人类评估表明「相比于 175B 的 GPT-3,人们 更偏好 1.3B 参数版本的 InstructGPT 模型的输出,尽管后者的参数量少 100 多倍。」值得注意的是,InstructGPT 在有用性和毒性任务上的表现均优于 GPT-3,这于对齐而言至关重要。 Anthropic 的 RLHF Anthropic 也研究过同一主题,论文为《Training a helpful and harmless assistant with reinforcement learning from human feedback》。 OpenAI 发现 RLHF 有助于对齐,但也可能导致模型在某些 NLP 基准上的性能下降,这个现象被称为「对齐税(alignment tax)」。其开发的 InstructGPT 模型有 1.3B 参数。相反,Anthropic 的研究者评估了大小在 13M 到 52B 之间的 7 种不同模型,这些模型的大小按 4 倍的几何级数增长。 他们得出结论说,对较小的模型来说,对齐会产生「税」,但对较大模型来说,对齐只有好处,尤其是参数量在 13B 到 52B 之间的模型。 考虑到对齐的这种优势,他们还实验了用编程技术数据集来提升 LLM 的能力。OpenAI 的 RLHF 方法包含 PPO 和 PPO-ptx,其中 PPO-ptx 的设计目标就是为了降低在 NLP 基准上的对齐税。而 Anthropic 的 RLHF 研究发现,只要模型够大,PPO 本身就能在 NLP 下游任务上带来对齐的好处。他们还确定了强化学习策略训练中 KL 散度的最优参数为 β = 0.001。 在线 / 迭代式 RLHF 传统上,对齐 LLM 的 RLHF 技术都是离线方法。但这类方法有些缺点,比如所得结果难以应对分布外数据。 为此,需要对 LLM 进行持续的微调,进行迭代式 / 在线学习,即使用中间策略为 prompt 生成响应,再使用预言机(oracle)为这样的成对数据给出偏好反馈,再将这些反馈馈送给策略。在实践中,迭代式学习分为两个部分:偏好预言机学习和迭代式策略优化。参阅论文《RLHF workflow: From reward modeling to online RLHF》。 2. RLAIF 获取人类偏好数据集的成本不低,因此基于人工智能反馈的强化学习(RLAIF)诞生了。此外,随着 LLM 的能力不断进步,所能收集到的 AI 偏好数据集的质量也不断提高,由此可提升 LLM 的对齐效果。 Anthropic 的 RLAIF Anthropic 基于 RLHF 的基础研究工作,提出了一种名为 RLAIF 的全新方法。参阅论文《Constitutional ai: Harmlessness from ai feedback》。 该方法主要包含两个阶段:1. 通过 Critiques(批评)和 Revisions(修订)进行监督学习,这由一个章程引导。2. RLAIF。 谷歌的 RLAIF 基于 Anthropic 的 RLAIF 研究成果,谷歌一个研究团队认为之前的研究无法直接比较人类反馈与 AI 反馈的效果,值得进一步研究。在收集 AI 反馈的过程中,要创建一个结构化的 prompt,其构成包括:导言、少样本示例(可选)、要标注的样本、结尾。 为了生成 AI 反馈,需要执行一个两步式评估:首先,使用指令中的 4 个组件加上 CoT,让 LLM 生成响应。在下一步中,这个 LLM 响应再附带上「preferred summary=」这样的结尾被发送回 LLM,从而生成「summary 1=0.6, summary 2=0.4」这样的偏好概率。为了减少位置偏差,需要交替放置这两个响应的序列,并计算其平均分数。 RLAIF 过程采用了两个策略:1.「蒸馏 RLAIF」,其遵循传统的 RLHF 方法,即使用偏好训练一个奖励模型,然后再将其用于训练 LLM 策略;2. 「直接 RLAIF」,其直接将 LLM 反馈用作 prompt 来输出评估分数,再将该分数用作强化学习策略训练的信号。 最后,其评估过程会使用三个关键指标:1.AI – 标注者对齐度:AI 与人类标注者的一致程度。2. 胜率:人类标注者比较两个候选项并选择其中某一个的可能性。3. 无害率:人类评估者认为无害的响应的占比。 更多详情请参阅论文《RLAIF: Scaling reinforcement learning from human feedback with AI feedback》。 直接人类偏好优化 传统 RLHF 方法通常涉及到优化源自人类偏好的奖励函数。该方法虽有效,但也可能带来一些难题,比如增大计算复杂度以及在估计和优化奖励时需要考虑偏置 – 方差权衡。参阅论文《High-dimensional continuous control using generalized advantage estimation》。 近期有研究探索了其它一些旨在根据人类偏好(无需依赖某个标量的奖励信号)来直接优化 LLM 策略的方法。 这些方法的目标是通过更直接地使用偏好数据来简化对齐流程、降低计算开销以及实现更稳健的优化。通过将该问题描述为一个偏好优化问题,而不是奖励估计和最大化问题,这些方法能提供一种将语言模型与人类判断对齐的不同视角: SliC-HF,使用人类反馈进行序列似然校准,参阅论文《SliC-HF: Sequence likelihood calibration with human feedback》。 RSO,拒绝采样优化,参阅论文《Statistical rejection sampling improves preference optimization》。 DPO,直接偏好优化,参阅论文《Direct preference optimization: Your language model is secretly a reward model》。 DPOP,DPO-positive,参阅论文《Smaug: Fixing failure modes of preference optimisation with DPO-positive》。 β-DPO,参阅论文《β-DPO: Direct preference optimization with dynamic β》。 IPO,身份偏好优化,参阅论文《A general theoretical paradigm to understand learning from human preferences》。 sDPO,逐步 DPO,参阅论文《sDPO: Don’t use your data all at once》。 GPO,广义偏好优化,参阅论文《Generalized preference optimization: A unified approach to offline alignment》。 token 级 DPO 使用 DPO 时,奖励会被一起分配给 prompt 和响应。相反,使用 MDP 时,奖励会被分配给各个动作。后续的两篇论文在 token 层面阐述了 DPO 并将其应用扩展到了 token 级的分析。 DPO 可以执行 token 级信用分配的研究,参阅论文《From r to Q∗: Your language model is secretly a Q-function》,报道《这就是 OpenAI 神秘的 Q*?斯坦福:语言模型就是 Q 函数》。 TDPO,token 级 DPO,参阅论文《Token-level direct preference optimization》。 迭代式 / 在线 DPO 使用 DPO 时,会使用所有可用的偏好数据集来对齐 LLM。为了持续提升 LLM,应当实现迭代式 / 在线 DPO。这就引出了一个有趣的问题:如何高效地收集新的偏好数据集。下面两篇论文深入探讨了这一主题。 自我奖励式语言模型,参阅论文《Self-rewarding language models》。 CRINGE,参阅论文《The cringe loss: Learning what language not to model》。 二元反馈 事实证明,收集偏好反馈比收集二元反馈(比如点赞或点踩)的难度大,因此后者可促进对齐过程的扩展。KTO 和 DRO 这两项研究关注的便是使用二元反馈来对齐 LLM。 KTO,Kahneman-Tversky 优化,参阅论文《KTO: Model alignment as prospect theoretic optimization》。 DRO,直接奖励优化,参阅论文《Offline regularised reinforcement learning for large language models alignment》。 融合 SFT 和对齐 之前的研究主要还是按顺序执行 SFT 和对齐,但事实证明这种方法很费力,并会导致灾难性遗忘。后续的研究有两个方向:一是将这两个过程整合成单一步骤;二是并行地微调两个模型,最终再进行融合。 ORPO,比值比偏好优化,参阅论文《ORPO: Monolithic preference optimization without reference model》。 PAFT,并行微调,参阅论文《PAFT: A parallel training paradigm for effective llm fine-tuning》。 长度控制式 DPO 和无参考 DPO 之前有研究表明,LLM 的输出往往过于冗长。为了解决这个问题,R-DPO 和 SimPO 的关注重心是在不影响生成性能的前提下实现对响应长度的控制。 此外,DPO 必需参考策略来确保已对齐模型不会与参考模型有太大偏差。相较之下,SimPO 和 RLOO 提出了一些方法,可以在不影响 LLM 效果的情况下消除对参考模型的需求。 R-DPO,正则化 DPO,参阅论文《Disentangling length from quality in direct preference optimization》。 SimPO,简单偏好优化,参阅论文《SimPO: Simple preference optimization with a reference-free reward》,报道《全面超越 DPO:陈丹琦团队提出简单偏好优化 SimPO,还炼出最强 8B 开源模型》。 RLOO,REINFORCE Leave-One-Out,参阅论文《Back to basics: Revisiting reinforce style optimization for learning from human feedback in LLMs》。 逐列表的偏好优化 之前在 PPO 和 DPO 方面的研究关注的是成对偏好,而 RLHF 方面的研究则是收集逐列表的偏好来加速数据收集过程,之后再将它们转换成成对偏好。尽管如此,为了提升 LLM 的性能,直接使用逐列表的数据集来执行偏好优化是可行的。以下三篇论文专门讨论了这种方法。 LiPO,逐列表偏好优化,参阅论文《LIPO: Listwise preference optimization through learning-to-rank》。 RRHF,参阅论文《RRHF: Rank responses to align language models with human feedback without tears》。 PRO,偏好排名优化,参阅论文《Preference ranking optimization for human alignment》。 负偏好优化 这些研究有一个共同前提:当前这一代 LLM 已经在翻译和总结等任务上超越了人类性能。因此,可以将 LLM 的输出视为期望响应,而无需依靠将人类标注的数据视为偏好响应;这样做是有好处的。反过来,不期望得到的响应依然也可被用于对齐 LLM,这个过程就是所谓的负偏好优化(NPO)。 NN,否定负例方法,参阅论文《Negating negatives: Alignment without human positive samples via distributional dispreference optimization》。 NPO,负例偏好优化,参阅论文《Negative preference optimization: From catastrophic collapse to effective unlearning》。 CPO,对比偏好优化,参阅论文《Contrastive preference optimization: Pushing the boundaries of llm performance in machine translation》。 纳什学习 之前的研究通常是使用逐点奖励和 BT 模型来得到成对偏好。但是,这种方法比不上直接成对偏好建模并且无法解决成对偏好中的不一致问题。为了克服这些局限,一些研究提出了纳什学习方法。 根据人类反馈的纳什学习,参阅论文《Nash learning from human feedback》。 SPPO,自博弈偏好优化,参阅论文《A minimaximalist approach to reinforcement learning from human feedback》。 DNO,直接纳什优化,参阅论文《Direct nash optimization: Teaching language models to self-improve with general preferences》。 不同方法的比较   一些研究则是为了比较这些不同方法。这类研究可以阐释每种方法各自的优缺点。 评估 DPO 及其变体 论文《Insights into alignment: Evaluating dpo and its variants across multiple tasks》在推理、数学问题求解、可信度、问答和多任务理解等多种任务上全面评估了隐式奖励模型,即无强化学习算法,包括 DPO、KTO、IPO 和 CPO。这些评估涉及三个不同场景:1) 微调监督式微调(SFT)模型、2) 微调预训练模型、3) 微调指令模型。 该研究发现,在大多数基准上,KTO 比其它对齐方法更优。此外,研究表明,对齐并不会显著提升模型的推理和问答性能,但确实能大幅提升模型的数学问题求解能力。该研究还注意到了数据量的重要性,对齐方法在较小的数据子集上的性能最佳。此外,研究发现 KTO 和 CPO 能有效绕过 SFT 阶段,在不影响性能的前提下直接进入对齐阶段。相比之下,当绕过 SFT 阶段,直接进入对齐阶段时,DPO 和 IPO 会表现出明显的性能下降。 DPO 是比 PPO 更好的 LLM 对齐方法吗? 论文《Is DPO superior to PPO for LLM alignment? A comprehensive study》表明,DPO 可能存在固有局限,可能会产生有偏差的解答,并可能由于分布变化而导致性能下降, 他们发现,DPO 训练出的策略倾向于未曾见过的响应,尤其是分布外的样本。而迭代式 / 在线 DPO 则能缓解这个问题,其做法是广泛探索响应空间并不断更新参考模型。相较之下,RLHF/PPO 则是通过优势归一化、大批量大小以及对参考模型使用指数移动平均来解决这些挑战。最终,这些发现表明 PPO 优于迭代式 / 在线 DPO,而这又进一步优于标准 DPO。 更多详情可参阅机器之心专栏文章《ICML 2024 Oral | DPO 是否比 PPO 更适合 LLM,清华吴翼团队最新揭秘》。 未来方向 通过分析过往论文,该团队确定了一些有待进一步探索的研究问题。 用于对齐评估的一般任务 不同论文使用了不同的任务来评估这些方法的性能。但是,GSM8K 等一些任务更关注推理,可能并不适合用于评估对齐性能。相反,TruthfulQA 等任务或那些关注毒性的任务应当优先考虑,以评估已微调 LLM 的毒性。应当想办法将这些任务组合起来,创建一个用于评估对齐的统一排行榜。 将隐式奖励模型、逐列表偏好和纳什学习用于更大规模的语言模型 目前,使用隐式奖励模型的最大模型的参数量也不过 70B。如果能将这些方法扩展用于更大的模型,比如 GPT-4 和 Claude-3 大小的模型,那应该能帮助我们更好地理解它们与 RLHF/PPO 的相对效果。 类似地,逐列表偏好模型也值得进一步研究。使用 RLHF 时,要使用逐列表偏好收集偏好数据集,之后再将其转换成多对成对偏好数据。大规模应用逐列表偏好模型的潜在问题依然有待解决。 最后,纳什学习可以解决人类标注者之间的不一致问题。如果能将纳什学习模型集成到更大规模的 LLM 中,就可以证明其捕获人性复杂性的能力。 有关二元反馈的实验 KTO 和 DRO 都采用了「点赞」和「点踩」这样的二元反馈机制,而不是成对偏好。这些二元反馈来自偏好数据集,其中将期望响应标记成正例,将不期望响应标记成负例。我们还需要对现实的二元数据集进行进一步研究。此外,相比于偏好数据,二元数据集更容易收集,因此有望使用更大规模的二元反馈数据集来进行对齐。但是,二元反馈中的噪声可能比偏好数据集中的噪声更加明显,因此如何有效滤除有噪声数据也是一个非常有趣的研究方向。 实验研究有用的 AI 反馈 目前的 AI 反馈主要包括 RLAIF 中的无害反馈和迭代式 DPO 中的反馈排名。但是,使用 RLAIF 时,有用反馈依然是由人类标注者提供。这种方法是合理的,因为生成有用响应的难度比识别有害反馈明显大得多。一个有趣的未来研究方向是使用 LLM 来生成有用的反馈,由此让 LLM 可以自我提升。 加速纳什学习 纳什学习方法可以有效建模成对偏好并解决人类标注之间的不一致问题。但是,它必需多次迭代才能收敛到最优策略。尽管其作者没有明说对齐所需的时间,但可猜测其会比 DPO 等隐式奖励模型慢得多。因此,提升纳什学习过程的速度也是一个值得关注的研究方向。 迭代 / 在线学习的终止 在使用迭代 / 在线训练时,确定终止迭代的时间很关键。之前有研究发现,迭代式学习有时会降低 LLM 在某些任务上的性能,这可能是过拟合的迹象。但是,目前还没有研究者探索如何确定终止迭代的合理 epoch。 简化 SFT + 对齐 当前的方法通常是以一种连续方式实现 SFT 和对齐。但是,这种方法往往会导致灾难性遗忘,并让整个训练过程变得更加费力。PAFT 方法减轻灾难性遗忘的方式是先分别微调 SFT 和对齐然后再将它们融合到一起,但这也会提升复杂性。相较之下,ORPO 技术是同时整合这两个过程,但却会导致性能下降。那么,该如何有效地将 SFT 和对齐组合起来实现高性能同时又维持高效率呢?这还是一个有待解决的挑战。

ACL 2024 Oral | 大模型也会被忽悠?揭秘AI的信念之旅

地球是平的吗?   当然不是。自古希腊数学家毕达哥拉斯首次提出地圆说以来,现代科学技术已经证明了地球是圆形这一事实。   但是,你有没有想过,如果 AI 被误导性信息 “忽悠” 了,会发生什么?   来自清华、上海交大、斯坦福和南洋理工的研究人员在最新的论文中深入探索 LLMs 在虚假信息干扰情况下的表现,他们发现大语言模型在误导信息反复劝说下,非常自信地做出「地球是平的」这一判断。     论文链接:https://arxiv.org/pdf/2312.09085 项目主页:https://llms-believe-the-earth-is-flat.github.io/ GitHub 源代码:https://github.com/LLMs-believe-the-earth-is-flat/llms-believe-the-earth-is-flat   生成式人工智能技术的快速发展,为生成虚假信息提供了便利。这些技术不仅能够创建逼真的文本、图像、音频和视频内容,还能够在社交网络上自动发布和传播这些内容。虚假信息的泛滥给社会带来了诸多挑战,但目前对这类信息的确切影响仍不十分清楚。然而,可以预见的是,随着技术的发展,虚假信息的生成和传播将会变得更加容易和普遍。   另一方面,大语言模型的上下文学习能力使其受到误导性信息的影响。这种误导性信息可能会在模型的部署过程中在上下文中被接受,并在模型生成的输出中反映出来,导致其产生不准确或具有偏见的内容。因此,研究者们正在努力探索如何提高大模型对虚假信息的识别能力和抵抗能力,这是提升大模型安全和鲁棒性的重要内容之一。   本篇研究就探索了这种有误信息对于大语言模型知识信念的影响,研究论文已经被 ACL 2024 接收,并选做大会报告(Oral)。 实验:大模型的 “信念” 测试   研究者们首先构建了一个名为 Farm(Fact to Misinform Dataset)的数据集,包含 1500 个事实性问题及其相关的误导性信息。他们在大语言模型的帮助下系统性地构造了更具有说服力的有误信息:首先,他们对原始正确的事实性 QA 进行语义取反或者构造错误答案,随后利用 “越狱” 后的大模型协助生成更具有说服力的长文本有误信息。   利用这些数据,便可以测试大语言模型在多轮对话中面对虚假信息时的反应。测试过程分为三个阶段:初始信念检验、多轮对话中劝说误导、结果信念检验。模型的信念检验通过模型在闭卷 QA 中答案的信心分数反应。通过这种方式,研究者们能够观察到 LLMs 在多轮对话中信念的变化。   多轮测试框架   主要结果   在劝说性交流阶段,研究者们使用了多种策略来误导 LLMs 改变其信念。这些策略包括晓之以理的劝说(LO)、树立权威的劝说(CR)和动之以情的劝说(EM)。结果显示,即使是最先进的模型,如 GPT-4,也有高达 20.7% 的可能性被虚假信息所影响。基于对 ChatGPT、GPT-4、Llama-2-7B-chat、Vicuna-v1.5-7B、Vicuna-v1.5-13B 五种大模型平均准确度(Average Accuracy Rate, ACC)和被误导率(Misinformed Rate, MR)的实验,研究者们有五点发现:   绝大多数大模型都易被虚假信息欺骗:从最先进的 GPT-4 (注:本研究的完成时间是 2023 年 9 月,当时最先进的模型是 GPT-4)到最差的模型,所有模型在经过多轮测试之后,误导率从 20%-80% 不等。 越先进的大模型抵抗虚假信息能力越强:实验表明,抵抗能力最强的是 GPT-4 模型,其能以 80% 坚持自己的事实信念。这给了我们一些宽慰:上下文理解能力越强的模型,并非更容易受到有误信息的干扰! 多次重复虚假信息比单次输出虚假信息更能骗倒大模型:通过多轮引入的虚假信息,其作用要胜过单此的引入,这很符合我们对安全性对齐的常识 —— 有害内容越多,模型越容易被其影响。 运用修辞的劝说性虚假信息更容易骗倒大模型:使用更复杂,更具有说服力的修辞可以增加模型改变看法的概率。这点就和人一样,越 “真实” 的假信息,你越容易相信 逻辑性说服比其它说服方式更有效:模型对逻辑性强的信息特别敏感,无论是真实信息还是虚假信息,只要逻辑连贯一致,就更容易影响模型的判断。这表明,模型在处理信息时,可能过分依赖于表面的逻辑结构,而忽略了对信息来源和内容真实性的深入验证。 ChatGPT 和 GPT4 在不同劝说策略下的正确率(虚线)和误导成功率(实线)   大模型面对虚假信息的五种反应   在面对虚假信息时,AI 表现出了五种不同的行为:拒绝(Rejection)、奉承(sycophancy)、不确定(Uncertainty)、接受(Acceptance)和自我不一致(Self-Inconsisitancy)。这些行为揭示了 AI 在处理错误信息时的复杂性。例如,拒绝行为表明 AI 坚持正确的答案,不受错误信息影响;而奉承行为则表明 AI 在对话中表面上接受错误信息,但内心仍坚持正确答案。   模型的信念和对应面对误信息的行为:拒绝,奉承和接纳   研究还发现,在经过一轮虚假信息交互后,大语言模型的信心程度往往会降低。然而,对于一些问题,重复虚假信息却让大模型更加确信自己的答案,这种现象被称为 “逆火效应(Backfire Effect)”。   如何提升抗虚假信息干扰能力?   研究组发现,由于 RLHF(Reinforcement Learning with Human Feedback)算法,大模型在训练中会倾向于接受用户的输入,即认为外界的 context 总是友善且正确的。而且当大语言模型有足够信息支撑观点时,会对正确的回答更有信心。   为了帮助大模型提升抗虚假信息干扰能力,研究者们提出了一种轻量级解决方案:在检测到虚假信息后,使用 safety system prompt 对大模型进行提醒,并在回答之前从自己的参数化知识中检索相关信息。这种方法在一定程度上减少了虚假信息对大模型的影响。   加入 safety system prompt 后,模型抗干扰能力显著提升   OpenAI 的看法   有趣的是,OpenAI 在 2024 年 5 月发布了最新的 AI 模型行为准则,其中特别提到了 “认知冲突” 的处理。在此部分的示例中,他们使用了 “地球是平的” 这一例子来说明模型在面对与已知事实相冲突的信息时应如何反应,与本次研究团队的标题不谋而合,也更加突显了大语言模型在处理认知冲突时的行为表现的重要性。 https://cdn.openai.com/spec/model-spec-2024-05-08.html   研究启发   随着模型的智能化,大模型逐渐展现出了一些人类的特性,但它们的本质仍然是概率模型。这些模式很有可能仍然是从训练语料中的人类行为学习而来,即是一种 “模仿游戏”。   以上的研究探索了针对简单事实问题,当 LLM 的内部认知和外部信息冲突的时候,LLM 当作何选择,是盲从还是坚持自己的意见?而人类在这种认知冲突的过程中所展现的 “理愈辩愈明”、“思想碰撞出火花” 等能力还是目前的 LLM 所不具备的。   未来的研究可以进一步从模型的内在机理和训练数据中对大模型的行为进行溯源式的分析,提高 AI 的可解释性,并进一步提升跨学科研究,探索大模型的更多潜力。

错误率从10%降至0.01%,领英全面分享LLM应用落地经验

随着大型语言模型(LLM)技术日渐成熟,各行各业加快了 LLM 应用落地的步伐。为了改进 LLM 的实际应用效果,业界做出了诸多努力。   近期,领英(LinkedIn)团队分享了他们在构建生成式 AI 产品的过程中总结的宝贵经验。领英表示基于生成式人工智能构建产品并非一帆风顺,他们在很多地方都遇到了困难。   以下是领英博客原文。 过去六个月,我们 LinkedIn 团队一直在努力开发一种新的人工智能体验,试图重新构想我们的会员如何进行求职和浏览专业内容。   生成式人工智能的爆发式增长让我们停下来思考,一年前不可能实现的事情现在有了哪些可能。我们尝试了很多想法,但都没有成功,最终发现产品需要如下关键点:   更快地获取信息,例如从帖子中获取要点或了解公司最新动态。 将信息点连接起来,例如评估您是否适合某个职位。 获取建议,例如改善您的个人资料或准备面试。 ……   我们通过一个现实场景来展示新开发的系统是如何工作的。想象一下,您正在滚动浏览 LinkedIn 信息流,偶然发现了一篇关于设计中的可访问性的有趣帖子。除了这篇文章之外,您还会刷到一些入门问题,以便更深入地研究该主题,您很好奇,例如点击「科技公司中可访问性推动商业价值的例子有哪些?」   系统后台会发生如下操作: 选择合适的智能体:系统会接受您的问题并决定哪个 AI 智能体最适合处理它。在这种情况下,它会识别您对科技公司内部可访问性的兴趣,并将您的查询路由到专门执行通用知识搜索的 AI 智能体。 收集信息:AI 智能体调用内部 API 和 Bing 的组合,搜索具体示例和案例研究,突出设计的可访问性如何为技术领域的商业价值做出贡献。 制定回复:有了必要的信息,智能体现在可以撰写回复。它将数据过滤并合成为连贯、信息丰富的答案,为您提供清晰的示例,说明可访问性计划如何为科技公司带来商业价值。为了使体验更具交互性,系统会调用内部 API 来使用文章链接或帖子中提到的人员简介等附件。 你可能会提问「我如何将我的职业生涯转向这个领域」,那么系统会重复上述过程,但现在会将你转给职业和工作(career and job)AI 智能体。只需点击几下,您就可以深入研究任何主题,获得可行的见解或找到下一个工作机会。   大部分新功能是借助 LLM 技术才成为可能。   总体设计   系统 pipeline 遵循检索增强生成(RAG),这是生成式人工智能系统的常见设计模式。令人惊讶的是,建设 pipeline 并没有我们预期的那么令人头疼。在短短几天内,我们就建立并运行了基本框架:   路由:决定查询是否在范围内,以及将其转发给哪个 AI 智能体。 检索:面向 recall 的步骤,AI 智能体决定调用哪些服务以及如何调用(例如 LinkedIn 人物搜索、Bing API 等)。 生成:面向精度的步骤,筛选检索到的噪声数据,对其进行过滤并生成最终响应。 图 1:处理用户查询的简化 pipeline。KSA 代表「知识共享智能体」,是数十种可以处理用户查询的智能体之一。 关键设计包括:   固定三步 pipeline; 用于路由 / 检索的小型模型,用于生成的较大模型; 基于嵌入的检索 (EBR),由内存数据库提供支持,将响应示例直接注入到提示(prompt)中; 每步特定的评估 pipeline,特别是对于路由 / 检索。 开发速度   我们决定将开发任务拆分为由不同人员开发独立智能体:常识、工作评估、职位要点等。   通过并行化开发任务,我们提高了开发速度,但这是以「碎片」为代价的。当与通过不同的模型、提示或工具进行管理的助手(assistant)进行后续交互时,保持统一的用户体验变得具有挑战性。   为了解决这个问题,我们采用了一个简单的组织结构:   一个小型「水平(horizontal)」工程 pod,处理通用组件并专注于整体体验,其中包括: 托管产品的服务 评估 / 测试工具 所有垂直领域使用的全局提示模板(例如智能体的全局身份(identity)、对话历史、越狱防御等) 为 iOS/Android/Web 客户端共享 UX 组件 服务器驱动的 UI 框架,用于发布新的 UI 更改,而无需更改或发布客户端代码。 关键设计包括:   分而治之,但限制智能体数量; 具有多轮对话的集中式评估 pipeline; 共享提示模板(例如「身份(identity)」定义)、UX 模板、工具和检测   评估   事实证明,评估响应的质量比预期的更加困难。这些挑战可大致分为三个领域:制定指南(guideline)、扩展注释和自动评估。 制定 guideline 是第一个障碍。以工作评估为例:点击「评估我是否适合这份工作」并得到「你非常适合」并没有多大用处。我们希望响应既真实又富有同理心。一些用户可能正在考虑转行到他们目前不太适合的领域,并需要帮助了解差距和后续步骤。确保这些细节一致对注释器非常关键。   扩展注释是第二步。我们需要一致和多样化的注释器。我们内部的语言学家团队构建了工具和流程,以评估多达 500 个日常对话并获取相关指标:整体质量得分、幻觉率、AI 违规、连贯性、风格等。   自动评估工作目前仍在进行中。如果没有自动评估,工程师只能目测结果并在一组有限的示例上进行测试,并且要延迟 1 天以上才能了解指标。我们正在构建基于模型的评估器来评估上述指标,并努力在幻觉检测方面取得一些成功,端到端自动评估 pipeline 将实现更快的迭代。   图 2:评估步骤。   调用内部 API   LinkedIn 拥有大量有关人员、公司、技能、课程等的独特数据,这些数据对于构建提供差异化价值的产品至关重要。然而,LLM 尚未接受过这些信息的训练,因此无法使用它们进行推理和生成响应。解决此问题的标准模式是设置检索增强生成 (RAG) pipeline,通过该 pipeline 调用内部 API,并将其响应注入到后续的 LLM 提示中,以提供额外的上下文来支持响应。 许多此类数据通过各种微服务中的 RPC API 在内部公开。虽然这对于人类以编程方式调用非常方便,但对 LLM 来说并不友好。我们通过围绕这些 API 包装「技能」来解决这个问题。每个技能都有以下组件:   关于 API 的功能以及何时使用的人类友好描述 调用 RPC API 的配置(端点、输入模式、输出模式等) LLM 友好的输入和输出模式 原始类型(字符串 / 布尔 / 数字)值 JSON 模式的输入和输出模式描述 LLM 友好模式和实际 RPC 模式之间映射的业务逻辑 这些技能旨在让 LLM 能够执行与产品相关的各种操作,例如查看个人资料、搜索文章 / 人员 / 职位 / 公司,甚至查询内部分析系统。同样的技术也用于调用非 LinkedIn API,例如 Bing 搜索。 图 3:使用技能调用内部 API。   我们编写提示,要求 LLM 决定使用什么技能来解决特定的工作(通过规划选择技能),然后输出参数来调用技能(函数调用)。由于调用的参数必须与输入模式匹配,因此我们要求 LLM 以结构化方式输出它们。大多数 LLM 都接受过用于结构化输出的 YAML 和 JSON 训练。我们选择 YAML 是因为它不太冗长,因此比 JSON 消耗更少的 token。 我们遇到的挑战之一是,虽然大约 90% 的情况下,LLM 响应包含正确格式的参数,但大约 10% 的情况下,LLM 会出错,并且经常输出格式无效的数据,或者更糟糕的是甚至不是有效的 YAML。   这些错误对人类来说是微不足道的,但却会导致解析它们的代码崩溃。10% 是一个足够高的数字,我们不能轻易忽视,因此我们着手解决这个问题。   解决此问题的标准方法是检测它,然后重新提示 LLM 要求其纠正错误并提供一些额外的指导。虽然这种方法有效,但它增加了相当大的延迟,并且由于额外的 LLM 调用而消耗了宝贵的 GPU 容量。为了规避这些限制,我们最终编写了一个内部防御性 YAML 解析器。   通过对各种有效负载的分析,我们确定了 LLM 所犯的常见错误,并编写了代码以在解析之前适当地检测和修补(patch)这些错误。我们还修改了提示,针对其中一些常见错误注入提示,以提高修补的准确率。我们最终能够将这些错误的发生率减少到约 0.01%。   我们目前正在构建一个统一的技能注册表,用于在我们的生成式人工智能产品中,动态发现和调用打包为 LLM 友好技能的 API / 智能体。 容量和延迟   容量和延迟始终是首要考虑因素,这里提及一些考量维度:   质量与延迟:思想链 (CoT) 等技术对于提高质量和减少幻觉非常有效,但需要从未见过的 token,因此增加了延迟。 吞吐量与延迟:运行大型生成模型时,通常会出现 TimeToFirstToken (TTFT) 和 TimeBetweenTokens (TBT) 随着利用率的增加而增加的情况。 成本:GPU 集群不易获得且成本高昂。一开始我们甚至必须设定测试产品的时间表,因为会消耗太多 token。 端到端流式处理(streaming):完整的答案可能需要几分钟才能完成,因此我们流式处理所有请求,以减少感知延迟。更重要的是,我们实际上在 pipeline 中端到端地进行流式处理。例如,决定调用哪些 API 的 LLM 响应是逐步解析的,一旦参数准备好,就会触发 API 调用,而无需等待完整的 LLM 响应。最终的综合响应也会使用实时消息传递基础设施一路传输到客户端,并根据「负责任的 AI」等进行增量处理。 异步非阻塞 pipeline:由于 LLM 调用可能需要很长时间才能处理,因此我们通过构建完全异步非阻塞 pipeline 来优化服务吞吐量,该 pipeline 不会因 I/O 线程阻塞而浪费资源。   感兴趣的读者可以阅读博客原文,了解更多研究内容。   原文链接:https://www.linkedin.com/blog/engineering/generative-ai/musings-on-building-a-generative-ai-product

智谱版Sora开源爆火:狂揽4K Star,4090单卡运行,A6000可微调

智谱AI把自研打造的大模型给开源了。 国内视频生成领域越来越卷了。刚刚,智谱 AI 宣布将与「清影」同源的视频生成模型 ——CogVideoX 开源。短短几个小时狂揽 4k 星标。   代码仓库:https://github.com/THUDM/CogVideo 模型下载:https://huggingface.co/THUDM/CogVideoX-2b 技术报告:https://github.com/THUDM/CogVideo/blob/main/resources/CogVideoX.pdf 7 月 26 日,智谱 AI 正式发布视频生成产品「清影」,得到大家广泛好评。只要你有好的创意(几个字到几百个字),再加上一点点耐心(30 秒),「清影」就能生成 1440×960 清晰度的高精度视频。 官宣即日起,清影上线清言 App,所有用户都可以全方位体验。想要尝试的小伙伴可以去「智谱清言」上体验「清影」生视频的能力。 「清影」的出现被誉为是国内首个人人可用的 Sora。发布 6 天,「清影」生成视频数就突破百万量级。 PC 端访问链接:https://chatglm.cn/ 移动端访问链接:https://chatglm.cn/download?fr=web_home 为何智谱 AI 开源模型如此爆火?要知道虽然现在视频生成技术正逐步走向成熟,然而,仍未有一个开源的视频生成模型,能够满足商业级应用的要求。大家熟悉的 Sora、Gen-3 等都是闭源的。CogVideoX 的开源就好比 OpenAI 将 Sora 背后的模型开源,对广大研究者而言,意义重大。   CogVideoX 开源模型包含多个不同尺寸大小的模型,目前智谱 AI 开源 CogVideoX-2B,它在 FP-16 精度下的推理仅需 18GB 显存,微调则只需要 40GB 显存,这意味着单张 4090 显卡即可进行推理,而单张 A6000 显卡即可完成微调。   CogVideoX-2B 的提示词上限为 226 个 token,视频长度为 6 秒,帧率为 8 帧 / 秒,视频分辨率为 720*480。智谱 AI 为视频质量的提升预留了广阔的空间,期待开发者们在提示词优化、视频长度、帧率、分辨率、场景微调以及围绕视频的各类功能开发上贡献开源力量。   性能更强参数量更大的模型正在路上,敬请关注与期待。   模型   VAE 视频数据因包含空间和时间信息,其数据量和计算负担远超图像数据。为应对此挑战,智谱提出了基于 3D 变分自编码器(3D VAE)的视频压缩方法。3D VAE 通过三维卷积同时压缩视频的空间和时间维度,实现了更高的压缩率和更好的重建质量。     模型结构包括编码器、解码器和潜在空间正则化器,通过四个阶段的下采样和上采样实现压缩。时间因果卷积确保了信息的因果性,减少了通信开销。智谱采用上下文并行技术以适应大规模视频处理。 实验中,智谱 AI 发现大分辨率编码易于泛化,而增加帧数则挑战较大。因此,智谱分两阶段训练模型:首先在较低帧率和小批量上训练,然后通过上下文并行在更高帧率上进行微调。训练损失函数结合了 L2 损失、LPIPS 感知损失和 3D 判别器的 GAN 损失。   专家 Transformer 智谱 AI 使用 VAE 的编码器将视频压缩至潜在空间,然后将潜在空间分割成块并展开成长的序列嵌入 z_vision。同时,智谱 AI 使用 T5,将文本输入编码为文本嵌入 z_text,然后将 z_text 和 z_vision 沿序列维度拼接。拼接后的嵌入被送入专家 Transformer 块堆栈中处理。最后,反向拼接嵌入来恢复原始潜在空间形状,并使用 VAE 进行解码以重建视频。     Data 视频生成模型训练需筛选高质量视频数据,以学习真实世界动态。视频可能因人工编辑或拍摄问题而不准确。智谱 AI 开发了负面标签来识别和排除低质量视频,如过度编辑、运动不连贯、质量低下、讲座式、文本主导和屏幕噪音视频。通过 video-llama 训练的过滤器,智谱 AI 标注并筛选了 20,000 个视频数据点。同时,计算光流和美学分数,动态调整阈值,确保生成视频的质量。   视频数据通常没有文本描述,需要转换为文本描述以供文本到视频模型训练。现有的视频字幕数据集字幕较短,无法全面描述视频内容。智谱 AI 提出了一种从图像字幕生成视频字幕的管道,并微调端到端的视频字幕模型以获得更密集的字幕。这种方法通过 Panda70M 模型生成简短字幕,使用 CogView3 模型生成密集图像字幕,然后使用 GPT-4 模型总结生成最终的短视频。智谱 AI 还微调了一个基于 CogVLM2-Video 和 Llama 3 的 CogVLM2-Caption 模型,使用密集字幕数据进行训练,以加速视频字幕生成过程。     性能 为了评估文本到视频生成的质量,智谱 AI 使用了 VBench 中的多个指标,如人类动作、场景、动态程度等。智谱 AI 还使用了两个额外的视频评估工具:Devil 中的 Dynamic Quality 和 Chrono-Magic 中的 GPT4o-MT Score,这些工具专注于视频的动态特性。如下表所示。     智谱 AI 已经验证了 scaling law 在视频生成方面的有效性,未来会在不断 scale up 数据规模和模型规模的同时,探究更具突破式创新的新型模型架构、更高效地压缩视频信息、更充分地融合文本和视频内容。 最后,我们看看「清影」的效果。   提示语:「一艘精致的木制玩具船,桅杆和船帆雕刻精美,平稳地滑过一块模仿海浪的蓝色毛绒地毯。船体漆成浓郁的棕色,有小窗户。地毯柔软而有质感,提供了完美的背景,类似于广阔的海洋。船周围还有各种玩具和儿童用品,暗示着一个好玩的环境。这个场景捕捉到了童年的纯真和想象力,玩具船的旅程象征着在异想天开的室内环境中无尽的冒险。」 提示语:「镜头跟随一辆装着黑色车顶行李架的白色老式 SUV,它在陡峭的山坡上沿着松树环绕的土路加速行驶,轮胎扬起尘土,阳光照射在沿着土路飞驰的 SUV 身上,为场景投下温暖的光芒。土路缓缓弯曲向远方延伸,看不到其他汽车或车辆。道路两旁的树木都是红杉,点缀着一片片绿植。从后面看,汽车轻松地顺着弯道行驶,让人觉得它正在崎岖的地形上行驶。土路周围是陡峭的山丘和山脉,头顶是湛蓝的天空,上面飘着薄薄的云彩。」   提示语:「一片白雪皑皑的森林景观,一条土路穿过其中。道路两旁是被白雪覆盖的树木,地面也被白雪覆盖。阳光灿烂,营造出明亮而宁静的氛围。道路上空无一人,视频中看不到任何人或动物。视频的风格是自然风景拍摄,重点是白雪皑皑的森林之美和道路的宁静。」   提示语:「鸡肉和青椒烤肉串在烧烤架上烧烤的特写。浅焦和淡烟。色彩鲜艳」