Llama2跟进:GPU硬件要求、微调注意事项等【202307】

news2024/11/15 18:00:39

在过去几天里关注Llama 2 的所有新闻已经超出了全职工作的范围。 信息网络确实充满了拍摄、实验和更新。 至少还要再过一周,但已经有一些关键点了。

在这里插入图片描述

推荐:用 NSDT设计器 快速搭建可编程3D场景。

在这篇文章中,我将澄清我对原始帖子中有关 Llama 2 的所有内容所做的一些更正,然后我将继续我的分析。 文章的前半部分将是迄今为止模型中存在争议和/或受到质疑的部分,最后,我将包括我的其余技术笔记(关于进一步的强化学习细节和新的上下文管理方法 Ghost Attention) 。

首先,两个快速更正:

  • 它是开源的吗? 我原来的标题中错误地包含了“开源”一词。 从技术上讲,该模型不是开源的,因为它的开发和使用并未完全向全体公众开放。 它对于开源社区仍然有用,但它只是一个开放发布/开放创新[这里有更多内容,我很快就会重新讨论这一点]。
  • 偏好数据的成本:我曾指出,为训练而收集的偏好数据大约花费 2000 万美元,但我错过了提示与回合的划分因素(每个提示有 4 个回合),所以我预计他们支付了大约 800 万美元的费用。 尽管如此,我预计该项目的总成本将在 2000-4500 万美元之间。

1、通过无害来逃避

人们发现 Llama-2-chat 的安全过滤器表现出喜欢触发的行为。 要求一些无辜的东西,例如如何制作辛辣的蛋黄酱或如何杀死一个进程,会导致模型疯狂地声明它无法做到这一点。 以下是当今领先的开源人工智能工程师 Anton 的一个例子:

在这里插入图片描述

我不需要因为这件事有多烦人而大吵大闹。 这用起来非常烦人。

关于为什么会出现这种情况,有很多流行的理论——大多数都指出使用 RLHF Hammer的时间太长。 这一缺陷的原因说明了当今大型语言模型的大趋势。 对于 RLHF,训练期间使用的主要性能指标是偏好模型奖励的单调增加。 这遇到了两个直接问题:a)我们使用的奖励模型不完整,b)我们错过了中间训练技术的有用评估技术。

只要我们仅在验证集上训练的奖励模型能够达到 65-75% 的准确率(因为训练数据是不同人类偏好的嘈杂集合,很难建模),那么你的模型就会出现 RLHF 过长的情况。 当一个模型对奖励模型采取太多优化步骤时,它就会过度索引该模型喜欢的行为,即使对模型的更全面的评估会表明情况并非如此。

目前还没有立即彻底的解决方案,但我的团队正在尝试在 MT Bench 和其他自动 NLP 评估上为 RL 训练的每个时期调度运行。 目前的LLM培训,至少在聊天领域,与用户的期望极不相符。

与往常一样,附录中隐藏了有关此内容的详细信息。 最终,Meta 的评估表明,聊天模型在评估中可能存在两个潜在的致命弱点:

  • 该模型被发现拒绝回答高达 27% 的临界问题! 这与 Anthropic 的工作思路密切相关,他们建议首先开发一个有用的语言模型,然后开发一个无害的语言模型,因为同时这样做会导致回避行为。 事实上,这已经在论文中出现并且众所周知,这意味着 Meta 肯定正在努力解决这个问题。

这种有益与有害的权衡是开源社区面临的一个基本问题。 训练和发布仅有用的模型对那些希望以 Meta 不希望且无法真正执行的方式使用这些模型的负面行为者有利。 如果我们不能发布这些内容,我们最终会陷入困境,就像有些人查看Llama 2一样。期待继续关注这件事的进展。

下图显示了“边界数据集”模型拒绝的疯狂增加。
在这里插入图片描述

  • 奖励模型集成技术存在一个问题,即存在高度分歧的区域,即当有用性高且安全性低时该怎么办,反之亦然。 他们利用这个集成的方法显然需要做一些工作,即使我发现这是一项了不起的技术创新。

下图显示了这一点。 我主要包含它,因为它是我几个月来在 ML 中看到的最酷的可视化之一!
在这里插入图片描述

尽管这些模型存在一些粗糙的缺陷,但我们可以预见,一家大公司会因过于谨慎而犯错。 我们还从论文中缺乏训练数据细节中看到了这一点。 这篇论文虽然有近 40 页,但缺少大量关键细节。 这是考虑到 Meta 因原始 LLaMA 中的数据而被起诉,但如果 Meta 说的是“公开可用数据”以外的其他内容,那就太好了。 如今,人工智能中的公众概念被严重滥用。 公共广场上对于信息的讨论太多,互联网上的数据也是公开的。 Meta 无法明确说明他们是否像许多闭源合作伙伴一样犯下了可疑的版权或服务条款违规行为,但 Meta 可以在数据访问和文档使用的分类法方面做得更好。

关于安全的最后一点也许我错过了。 为了安全起见,Meta 是否真的没有对其基本模型进行大量的人类和模型评估? 我觉得这很奇怪,因为这些模型现在将成为大量微调实验的起点。 由于 RLHF 模型没有通过很多人的嗅探测试,它们几乎变得更加重要。

2、推理和Llama

在不实际操作的情况下建立直觉的最困难的事情之一是了解各种模型大小和吞吐量要求的 GPU 要求。 有很多优秀的人分享了针对不同用例的最小可行计算机。

以下是用于理解推理和微调(主要是PEFT-参数高效指令调整)的资源集合。

2.1 推理注意事项

似乎有很多路径可以在大多数 GPU 上适配 7b 或 13b 模型。 这些很快就会在 iPhone 上运行。

70b 变体有点棘手。 例如,一项讨论展示了 70b 变体在以 4 位量化加载时如何使用 36-38GB VRAM。 如果将量化加倍为 8 位 (float16),则可以预期内存会按比例变化。 在任何单个 GPU 上使用完整的非量化模型都非常困难。

HuggingFace 对一些下游用户在文本生成推理方面的一致建议如下(不那么关注量化):

  • 对于 7B 模型,我们建议你选择“GPU [中] - 1x Nvidia A10G”。
  • 对于 13B 模型,我们建议你选择“GPU [xlarge] - 1x Nvidia A100”。
  • 对于 70B 模型,我们建议你选择“GPU [xxxlarge] - 8x Nvidia A100”。

另一个例子是,社区成员重写了 HuggingFace Transformers 的一部分,以便仅针对 Llama 模型提高内存效率。 可以在此处查看 ExLlama 或在此处查看其速度摘要。 结果非常快(并且支持通过 RoPE 缩放扩展上下文长度):

llama-2 70b seq 长度 4096 的速度为 10.5~ tokens/sec。没有 oom,也尝试了 seq length 8192,没有 go oom 计时为 8 tokens/sec。 70b 原始模型的输出非常出色,是我从原始预训练模型中看到的最佳输出

2.2 微调注意事项

微调示例很快就会出现——我找到它们并不容易,但我已经看到了更多。 TRL 已经可以非常轻松地运行有监督微调,你可以在 Google Colab 上免费获得的 T4 GPU 上训练 Llama 2 7B,甚至在单个 A100 上训练 70B 模型”。 这显然是一个有偏见的 HuggingFace 观点,但它表明它是相当容易理解的。 大多数消费级 GPU 可以微调 7B 或 13B 变体。

RLHF 则不同,你需要在内存中存储更多的梯度计算。 这些数字可能会在下周陆续公布。

有关高效部署大型模型的更多信息,我喜欢 Finbarr 的这篇文章。

3、其他值得关注的事情

这里还有很多事情要介绍。 我将做一个快速部分,并期望将来听到更多关于这些的信息:

  • Open LLM 排行榜的顶部仍然是从 LLaMAv1 微调的模型,这是为什么? 有一些内部讨论,这似乎是由于排行榜上没有足够的评估类型(很快就会改变)的结果:很容易在评估集(或接近它的东西)上微调模型并获得更高的分数 表现。 顶级模型不仅注重结果,而且处于边缘状态。 随着时间的推移,这种情况将会变得平滑,并且 Llama 2 上的相同数据集几乎肯定会更高。
  • 工具使用出现:“Llama 2-Chat 能够仅通过语义理解工具的应用程序和 API 参数,尽管从未接受过使用工具的培训。” 正如我在 LLM 代理帖子中所写,LLM-for-tools 非常有前途。 为了看到这个爆炸,我们需要一些标准环境来进行评估。
  • 提示问题:我和其他一些人想知道提示是否是导致回避行为的问题。 其中,我想知道系统提示是否在论文中,是否在A.3.7人工评估中列出。 我会密切关注这个故事,因为 LLaMA 1 评估的不一致结果有很大的推动作用。
  • 尽管 Yann Lecun 在帖子中暗示他们可能会发布代码,但代码微调的机会还是非常高的。 本着这种精神,我希望看到特定领域的奖励模型,例如代码。 Llama 2 的代码还不够好,我的大多数观众都无法使用它来代替 ChatGPT,但竞争压力是存在的,而且这种情况会很快改变。
  • Miles 有一个很好的主题,讨论了 Meta 围绕模型的开放版本缺乏直接表达价值观的问题。 如果Meta直接说出他们的观点就更好了,这样我们就不用去推测了。 不管怎样,下一个问题是:如何通过微调来解除安全限制? Llama 2 正在开辟一个新的研究方向。
  • 许可证太搞笑了 它指出,发布时活跃用户超过 7 亿的公司不能将该模型用于商业用途。 真是太小气了 另外,我喜欢这种模式对苹果的帮助(就像他们集成了稳定扩散),但这两家公司如果尝试的话就不可能成为朋友。 能够与AppleGPT在同一周进行是非常光荣的。
    在这里插入图片描述

4、附加技术说明

这些是我从原来的文章中得到的,但在过去几天里,通过与 🤗 同事进行更多的内部讨论,它们也得到了改进。

4.1 幽灵注意力聊天技巧

该模型有一个很酷的技巧,可以帮助它在遵循多轮方向时发挥作用。 许多语言模型都存在一个问题,如果你告诉他们在第一轮做某事,比如“以海盗的方式回应”,他们会在一两轮后忘记。 这是 Meta 决定解决的一个非常高级的功能(即使这不是开源面临的最大问题)。 这种类型的东西让我很高兴 Meta 作为这个领域的参与者——他们追求一切,这是开源的一个好兆头。

Meta 为论文中的问题奠定了基础,解释了这种多轮指令的风格:

在对话设置中,一些指令应该适用于所有对话回合,例如,简洁地回应,或“扮演”某个公众人物。 当我们向 Llama 2-Chat 提供此类指令时,后续响应应始终遵守该约束。 然而,我们最初的 RLHF 模型在几轮对话后往往会忘记最初的指令。
为了解决这个问题,作者提出了 Ghost Attention (GAtt),这是一种类似于上下文蒸馏的技术:在长提示上训练模型,然后使用较短的系统提示对输出运行监督学习

大致而言,该方法的工作原理如下:

  • 将此首轮字符样式指令连接到带有隐藏标记的对话的所有用户消息。
  • 接下来,他们从最新聊天模型的综合训练风格中进行采样——传入修改后的提示。 这需要 RLHF 中训练数据的一组爱好、语言风格和角色。
  • 使用此更重提示的数据进行指令微调(多轮)。 在训练中,他们将添加数据的中间回合的损失设置为 0,这在论文中没有得到很好的解释。 我认为他们在对合成数据链上的自回归预测损失进行微调时忽略了对中间回合梯度的影响,因此他们在“充当角色”的指令和之前的一堆填充文本上进行微调。 最后一回合。

本质上,他们在训练推理时添加更多提示,然后使用该数据并在将来删除提示。 他们评论说,这使得长时间的对话在遵循指令方面更加一致:

我们在 RLHF V3 之后应用了 GAtt。 我们报告的定量分析表明,GAtt 在 20 多个回合内保持一致,直到达到最大上下文长度(参见附录 A.3.5)。 我们尝试在推理时设置 GAtt 训练中不存在的约束,例如“始终用俳句回答”,对此模型保持一致,如附录图 28 所示。

归根结底,GAtt 并不是一个需要实施的重要事物。 这是学习该领域新主题的绝佳练习。

5、强化学习的额外内容

作者提供了有关 RLHF 流程的许多其他详细信息。 上次我介绍了高级别的内容。 以下是我的一些补充说明。

5.1 拒绝采样详细信息

拒绝采样(类似于 best-of-n 采样,带有损失更新)可能是 RLHF 更简单的起点,因为它是从奖励模型中提取信息的更温和的方法。

  • 训练过程:使用的损失函数其实不是那么清楚。 在论文中,他们说他们使用了迭代训练,因此实际结果与 PPO 没有太大不同,但他们不包含损失函数。 我觉得这有点令人头疼,因为如 果不学习价值函数(PPO 的内部部分),他们就无法使用该损失函数,因此作者几乎肯定会使用 LLM 的标准自回归预测损失 - 奖励样品,影响巨大!
  • 通过使用 RS 重新训练样本,发现能力有所下降。 为了解决这个问题,他们重新引入了所有过去版本的顶级样本,从而提高了性能(关于这种效果的文档很少)。 这是 RLHF 技术中常见的奖励模型过度拟合的一种形式。
  • 聊天模型的所有较小变体都根据最大模型的数据进行训练(蒸馏)。 一般来说,ChatGPT 很可能也是这样训练的。 最好的机器学习组织希望利用出色的推理能力来构建他们最大、最好的模型,然后这种好处将以多种方式体现出来。
  • 在采样过程中,他们使用高温来获得不同的输出,并增加一批样本的最大奖励。 他们将探索作为一种机制进行讨论,我喜欢这一点,但没有任何测量准确地表明这一点。
  • 必须根据模型和批大小逐步改变温度。 这篇论文有很多关于温度的内容,目前还不清楚有多少是专门针对它们的。
  • 为了实现这一点,你所需要的只是像这个笔记本这样带有反馈循环的东西来采取训练步骤,但如果没有一个很好的奖励模型,你就会陷入困境。

5.2 PPO 详细信息

PPO 的实现从文献中汲取了一些罕见的东西,并继续简化流行的 RLHF 公式。

  • 使用 InstructGPT 中提出的 SFT 约束项来保持模型分布接近人类书面演示。 这是损失函数中的一个额外项,用于比较人类注释者编写的文本与模型生成之间的距离。
  • 使用首选项集合中的安全标记将这些代传递到安全首选项模型(或者如果安全模型标记来自非标记提示的代)。 未来这很可能会扩展到更多模型和元数据,或者已经通过 GPT4 完成。
  • 白化最终的线性层分数以稳定训练。 本质上,他们正在创建一个不同的线性层,以帮助奖励模型中的梯度表现得更好。 一个有趣的技巧。

原文链接:Llama2:GPU硬件要求等 — BimAnt

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

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

相关文章

MySQL 相关知识

MySQL 相关知识 1、三大范式2、DML 语句和 DDL 语句区别3、主键和外键的区别4、drop、delete、truncate 区别5、基础架构6、MyISAM 和 InnoDB 有什么区别?7、推荐自增id作为主键问题8、为什么 MySQL 的自增主键不连续9、redo log 是做什么的?10、redo log 的刷盘时…

WIZnet W5500-EVB-Pico 静态IP配置教程(二)

W5500是一款高性价比的 以太网芯片,其全球独一无二的全硬件TCP、IP协议栈专利技术,解决了嵌入式以太网的接入问题,简单易用,安全稳定,是物联网设备的首选解决方案。WIZnet提供完善的配套资料以及实时周到的技术支持服务…

Windows Server 2012 能使用的playwright版本

由于在harkua_bot里面使用到了playwright,我的服务器又是Windows Server 2012 R2,最新版playwright不支持Windows Server 2012 R2,支持Windows Server 2016以上,所以有了这个需求 https://cdn.npmmirror.com/binaries/playwright…

手写线程池 - C++版 - 笔记总结

1.线程池原理 创建一个线程,实现很方便。 缺点:若并发的线程数量很多,并且每个线程都是执行一个时间较短的任务就结束了。 由于频繁的创建线程和销毁线程需要时间,这样的频繁创建线程会大大降低 系统的效率。 2.思考 …

【Python从入门到进阶】30、JSONPath的介绍和使用

接上篇《29、xpath抓取站长素材图片》 上一篇我们讲解了如何利用xpath来抓取站长素材网站的图片区首页的所有图片,本篇我们来介绍JSONPath的基础和具体使用。 一、JSONPath的基本概念 1、什么是JSONPath? JSONPath是一种用于在JSON(JavaSc…

致敬图灵!HashData拥抱数据智能新时代!

图1:2023ACM中国图灵大会现场 生于1912年的艾伦图灵被称为“计算机科学之父”、“人工智能之父”。1966年,国际计算机协会(ACM)为了纪念这位卓越的科学家,设立了以其名字命名的ACM图灵奖,以表彰在计算机领…

RH850 1372/1374 程序跑飞异常分析

文章目录 前言现象描述原因分析解决方案总结 前言 最近项目用瑞萨RH850系列的1372/1374开发,官方的MCAL做的不咋地就算了,FAE支持也很少。给的demo问题也很多。本文记录一下开发过程中的问题。 现象描述 MCAL配置完ADC1后,运行ADC1的采样程…

SQL注入原理分析

前言 order by的作用及含义 order by 用于判断显示位,order by 原有的作用是对字段进行一个排序,在sql注入中用order by 来判断排序,order by 1就是对一个字段进行排序,如果一共四个字段,你order by 5 数据库不知道怎么…

51:电机(ULN2003D)

1:介绍 我们51单片机使用的是直流电机 直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转 直流电机主要由永磁体(定子)、线圈(转…

【Java|基础篇】File类和IO流

文章目录 1.File类2.流的概念3.InputStream4.OutputStream5.Reader6.Writer7.使用Scanner读文件8.使用PrintWriter写文件9.close()方法10.flush()方法10.总结 1.File类 File类是Java中用于表示文件或目录的类。它提供了一些方法来操作文件和目录的属性和内容,可以进…

对js中的window深入理解

window和 document的区别 window对象是浏览器中的全局对象,代表的是整个浏览器窗口;document只是window对象中的一部分,表示当前窗口或框架中加载的HTML文档,主要用于访问和操作文档的内容,包括DOM元素、样式、事件等&…

华为OD机试真题 Java 实现【AI面板识别】【2023 B卷 100分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明4、控制台输出 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题&#xff08…

【Javalin 】Javalin Kotlin/Java 轻量级 REST API 库

Javalin 旨在为 Kotlin 和 Java 提供一个易用的轻量级 REST API 库。这个 REST API 易于使用,API 也非常的流畅。 Javalin 主要有以下的特点: 易用:不用提前学习任何概念就可以开始使用 一致的 API:所有的处理程序和映射器在 Co…

基于RK3588+AI的边缘计算算法方案:智慧园区、智慧社区、智慧物流

RK3588 AI 边缘计算主板规格书简介 关于本文档 本文档详细介绍了基于Rockchip RK3588芯片的AI边缘计算主板外形、尺寸、技术规格,以及详细的硬件接口设计参考说明,使客户可以快速将RK3588边缘计算主板应用于工业互联网、智慧城市、智慧安防、智慧交通&am…

年轻人的第一套海景房

前段时间新房装修,我把书房设计成工作室的风格,并自己装配了一台电脑,本文是对电脑选购与装配的一则经验贴,仅包含我对计算机硬件的浅薄理解。 配件选购 装机契源 事实上,很多电脑店都提供装配和测试服务&#xff0c…

【二叉树】刷题二(以递归写法为主)

617. 合并二叉树 class Solution:def mergeTrees(self, root1: Optional[TreeNode], root2: Optional[TreeNode]) -> Optional[TreeNode]:root TreeNode()if not root1 and not root2:returnelif root1 and not root2:root root1elif not root1 and root2:root root2elif…

AD21原理图的高级应用(一)端口的应用

(一)端口的应用 1.放置端口2.自动给端口添加页码 说明,博主的AD版本是AD21,所有的工程都基于AD21,虽然AD软件几乎不存在版本兼容性问题,但还是建议大家使用对应版本的软件来学习。 资料仅供学习使用。 1.…

013 怎么查看自己电脑的wifi密码

方法一:查看当前电脑连接的无线密码 步骤1: 打开windows命令行窗口,输入:ncpa.cpl 快速打开“控制面板”中的“网络连接”,如下图: 步骤2: 右键,打开“状态” 步骤3:…

Pearson correlation皮尔逊相关性分析

在参数检验的相关性分析方法主要是皮尔逊相关(Pearson correlation)。既然是参数检验方法,肯定是有一些前提条件。皮尔逊相关的前提是必须满足以下几个条件: 变量是连续变量;比较的两个变量必须来源于同一个总体&…

瓦瑟斯坦距离、收缩映射和现代RL理论

Wasserstein Distance, Contraction Mapping, and Modern RL Theory | by Kowshik chilamkurthy | Medium 一、说明 数学家们在考虑一些应用的情况下探索的概念和关系 - 几十年后成为他们最初从未想象过的问题的意想不到的解决方案。 黎曼的几何学只是出于纯粹的原因才被发现的…