【转帖】Alpaca 7B:斯坦福从LLaMA-7B微调的语言模型
https://www.jianshu.com/p/f8f8f660d2c3
https://crfm.stanford.edu/2023/03/13/alpaca.html
https://crfm.stanford.edu/alpaca/
https://github.com/tatsu-lab/stanford_alpaca
https://github.com/tatsu-lab/stanford_alpaca/blob/main/generate_instruction.py
延伸:
https://github.com/wptoux/self-instruct-zh
我们介绍了Alpaca 7B,这是一个在52K指令上从LLaMA 7B模型微调而来的模型。在我们对单圈指令遵循的初步评估中,Alpaca的行为在质量上与OpenAI的text-davinci-003相似,同时体积小得惊人,易于复制/便宜(<600美元)。
概述
GPT-3.5(text-davinci-003)、ChatGPT、Claude和Bing Chat等指令遵循模型的功能越来越强大。现在,许多用户定期与这些模型交互,甚至在工作中使用它们。然而,尽管指令遵循模型得到了广泛部署,但仍有许多不足之处:它们会产生虚假信息,传播社会刻板印象,并产生有毒语言。
为了在解决这些紧迫问题方面取得最大进展,学术界的参与至关重要。不幸的是,在学术界对指令遵循模型进行研究一直很困难,因为没有一个易于访问的模型在功能上接近OpenAI的text-davinci-003等闭源模型。
我们发布了一个名为Alpaca的指令遵循语言模型的研究结果,该模型是从Meta的LLaMA 7B模型中微调而来的。我们在52K指令上训练Alpaca模型,随后使用text-davinci-003以self-instruct生成演示。在self-instruct的评估集上,Alpaca表现出许多类似于OpenAI的text-davinci-003的行为,但它也出奇地小,易于复制/便宜。
我们正在发布我们的训练配方和数据,并打算在未来发布模型权重。我们还举办了一个交互demo(https://crfm.stanford.edu/alpaca/),使研究社区能够更好地了解Alpaca的行为。交互可能会暴露出意想不到的能力和失败,这将指导我们对这些模型的未来评估。我们还鼓励用户在我们的网络演示中报告任何相关行为,以便我们能够更好地理解和缓解这些行为。由于任何发布都有风险,我们将在稍后的博客文章中讨论我们对此次公开发布的思考过程。
我们强调,Alpaca仅用于学术研究,禁止任何商业用途。这个决定有三个因素:首先,Alpaca是基于LLaMA的,它有非商业许可证,所以我们必须继承这个决定。其次,指令数据基于OpenAI的text-davinci-003,其使用条款禁止开发与OpenAI竞争的模型。最后,我们没有设计足够的安全措施,因此Alpaca还没有准备好用于一般用途。
训练配方
在学术预算下训练高质量的instruction-following模型有两个重要挑战:强大的预训练语言模型和高质量的instruction-following数据。Meta最新发布的LLaMA模型解决了第一个挑战。对于第二个挑战, self-instruct建议使用现有的强语言模型来自动生成instruction数据。特别是,Alpaca是一个语言模型,根据OpenAI的text-davinci-003生成的演示,在52K指令上使用LLaMA 7B模型的监督学习进行微调。
下图说明了我们是如何获得Alpaca模型的。对于数据,我们在self-instruct方法的基础上生成了instruction-following demonstrations 。我们从 self-instruct seed set中的175个人工编写的指令输出对开始(instruction-output pairs)。然后,我们提示text-davinci-003使用上下文示例中的种子集生成更多指令(We then prompted text-davinci-003 to generate more instructions using the seed set as in-context examples)。我们通过简化生成管道(详见https://github.com/tatsu-lab/stanford_alpaca#data-generation-process)对自学方法进行了改进,并显著降低了成本。我们的数据生成过程产生了52K条独特的指令和相应的输出,使用OpenAI API的成本不到500美元。
有了这个instruction-following的数据集,我们利用Fully Sharded Data Parallel和混合精度训练等技术,使用Hugging Face的训练框架对LLaMA模型进行了微调。在我们的首次运行中,在8个80GB A100上微调7B LLaMA模型需要3个小时,这在大多数云计算提供商上的成本不到100美元。我们注意到,可以提高训练效率以进一步降低成本。
初步评估
为了评估Alpaca,我们对 self-instruct evaluation set的输入进行了人类评估(由5名学生作者进行)。该评估集由self-instruct作者收集,涵盖了一系列面向用户的指令,包括电子邮件写作、社交媒体和生产力工具。我们对text-davinci-003和Alpaca 7B进行了盲配对比较,发现这两种型号的性能非常相似:Alpaca以90:89赢过了text-davinci-003。
考虑到模型的小尺寸和少量的instruction following数据,我们对这个结果感到非常惊讶。除了利用这个静态评估集,我们还一直在交互测试Alpaca模型,发现Alpaca在不同的输入集上的行为通常与text-davinci-003类似。我们承认,我们的评估可能在规模和多样性方面受到限制。因此,我们发布了一个关于Alpaca的互动演示,鼓励读者自己评估Alpaca并给我们反馈。
在本节的其余部分中,我们将包括几个交互示例,以展示Alpaca的功能和局限性。
上面的例子表明,Alpaca的输出通常写得很好。我们注意到Alpaca反映了指令instruction-following集的一般风格。因此,Alpaca的回答通常比ChatGPT更短,这反映了text-davinci-003的输出更短。
已知限制
Alpaca还表现出语言模型的几种常见缺陷,包括幻觉、毒性和刻板印象。幻觉似乎尤其是Alpaca的常见故障模式,即使与text-davinci-003相比也是如此。
例如,在下图中,Alpaca错误地说坦桑尼亚的首都是达累斯萨拉姆,达累斯萨拉姆是坦桑尼亚最大的城市。(直到1974年,这里才被多多马取代。)
此外,Alpaca可以用来生成书写良好的输出,传播错误信息,如以下示例所示。
Alpaca可能包含许多与底层语言模型和指令调优数据相关的其他限制。然而,我们相信该工件仍然对社区有用,因为它提供了一个相对轻量级的模型,作为研究重要缺陷的基础。我们鼓励用户通过在网络演示中标记故障来帮助我们识别新的故障类型。总的来说,我们希望Alpaca的发布能够促进对指令遵循模型及其与人类价值观一致性的进一步研究。
释放的内容
我们今天发布以下内容:
演示:每个人都可以尝试Alpaca的互动演示,https://crfm.stanford.edu/alpaca/
数据:52K演示用于微调Alpaca,https://github.com/tatsu-lab/stanford_alpaca#data-release
数据生成过程:用于生成数据的代码,https://github.com/tatsu-lab/stanford_alpaca#data-generation-process
训练代码:用于使用Hugging FaceAPI对模型进行微调,https://github.com/tatsu-lab/stanford_alpaca#fine-tuning
我们打算在不久的将来释放以下内容:
模型权重:我们已联系Meta,以获得关于发布7B Alpaca和更大LLaMA模型的微调版本的Alpaca模型重量的指导。
发布决定
我们相信,释放上述内容将使学术界能够按照语言模型对教学进行受控的科学研究,从而产生更好的科学,并最终产生新的技术来解决这些模型的现有缺陷。
与此同时,任何释放都会带来一些风险。首先,我们认识到,发布我们的训练配方揭示了某些能力的可行性。一方面,这使更多的人(包括不良行为者)能够创建可能造成伤害的模型(无论是有意还是无意)。另一方面,这种意识可能会激励迅速的防御行动,尤其是学术界,他们现在有能力对这些模型进行更深入的安全研究。总的来说,我们认为这一特定版本对研究界的好处大于风险。
鉴于我们正在发布训练配方,我们认为,鉴于配方的简单性,发布数据、模型权重和训练代码所带来的进一步风险最小。与此同时,发布这些内容对可复制科学有着巨大的好处,因此学术界可以使用标准数据集、模型和代码进行受控比较并探索扩展。
为Alpaca部署交互式演示也会带来潜在风险,例如更广泛地传播有害内容,降低垃圾邮件、欺诈或虚假信息的门槛。我们已经制定了两种风险缓解策略。首先,我们使用OpenAI的内容审核API实现了一个内容过滤器,该过滤器根据OpenAI的使用策略过滤掉有害内容。其次,我们使用Kirchenbauer等人2023中描述的方法对所有模型输出进行水印处理,以便其他人可以(以一定的概率)检测输出是否来自Alpaca 7B。最后,我们对使用演示有严格的条款和条件;它仅限于非商业用途和遵循LLaMA许可协议的用途。
我们知道,一旦我们发布模型权重,或者如果用户按照模型训练自己的指令,就可以规避这些缓解措施。然而,通过安装这些缓解措施,我们希望推进最佳实践,并最终制定负责任部署基础模型的社区规范。
未来发展方向
我们对Alpaca带来的研究机会感到兴奋。未来有许多令人兴奋的方向:
评估:我们需要更严格地评估Alpaca。我们将从HELM(语言模型的整体评估)开始,它有望发展到捕捉更具生成性的、遵循指令的场景。
安全:我们希望进一步研究Alpaca的风险,并使用自动红队、审计和自适应测试等方法提高其安全性。
理解:我们希望更好地理解能力是如何从训练配方中产生的。您需要基本模型的哪些财产?当你扩大规模时会发生什么?需要指令数据的哪些财产?在text-davinci-003上使用自我指导的替代方案是什么?
【转帖】Alpaca 7B:斯坦福从LLaMA-7B微调的语言模型的更多相关文章
- FocusBI:《商业智能7B理论模型》创造者
<商业智能7B理论模型>专门为培养企业级BI人才<如何一个人完成BI项目,成为企业级BI人才>课程而创造,历经我7年的商业智能项目实施工作和经验的提炼与总结,分别深入在甲方公司 ...
- 本地推理,单机运行,MacM1芯片系统基于大语言模型C++版本LLaMA部署“本地版”的ChatGPT
OpenAI公司基于GPT模型的ChatGPT风光无两,眼看它起朱楼,眼看它宴宾客,FaceBook终于坐不住了,发布了同样基于LLM的人工智能大语言模型LLaMA,号称包含70亿.130亿.330亿 ...
- 如何训练个人的ChatGpt4
如何在自己的计算机上安装类似 ChatGPT 的个人 AI 并在没有互联网的情况下运行它 本文旨在为任何人安装此软件.最初它有一个视频,伴随着操作方法,但是事情变化很快,我的三次尝试只是推迟了我发表这 ...
- TJI读书笔记16-异常处理
TJI读书笔记16-异常处理 概念 基本异常情形 异常的捕获 自定义异常 异常说明 捕获所有异常 栈轨迹 重新抛出异常 Java标准异常 使用finally 异常的限制 构造器 异常的匹配 其他乱七八 ...
- TJI读书笔记13-内部类
TJI读书笔记13-内部类 TJI读书笔记13-内部类 创建内部类 内部类和外部类的关系 .this和.new 内部类和向上转型 局部内部类 匿名内部类 匿名内部类的定义和初始化 使用匿名内部类来实现 ...
- HTML5常识总结(一)
一.HTML5的发展历程 + html演变的几个版本: html2.0.html3.2.html4.0.html4.01.html5. + 其中在html4.01发布之后,还发布了xtml1.0,它是 ...
- rac 10g 加入节点具体解释
目标: 当前我环境中是有两个节点RAC1和RAC2 节点.如今添加一个RAC3节点. 概要:为现有的Oracle10g RAC 加入节点大致包含下面步骤: 1. 配置新的server节点上的硬件及 ...
- Linux中的 awk查找日志中的相关记录
假设要在 api.log.201707201830 文件中,(此文件的多个字段数据以不可见字符^A(键盘上按下Ctrl+V+A)分隔),要输出第70个字段: awk -F '^A' '{print $ ...
- Python3 urllib.request库的基本使用
Python3 urllib.request库的基本使用 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地. 在Python中有很多库可以用来抓取网页,我们先学习urlli ...
- Apache Hadoop 2.9.2 的集群管理之服役和退役
Apache Hadoop 2.9.2 的集群管理之服役和退役 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 随着公司业务的发展,客户量越来越多,产生的日志自然也就越来越大来,可能 ...
随机推荐
- vue星星评分
<template> <div> <div class="xx"> <div v-for="(i, index) in list ...
- 华为云分布式云原生UCS,助力MetaERP构建企业级高可用分布式业务
本文分享自华为云社区<华为云分布式云原生UCS,助力MetaERP构建企业级高可用分布式业务>,作者:云容器大未来. 引言 华为云最近成为<Forrester Wave: Multi ...
- Rust布道者张汉东倾授,入门Rust初学者都要攻破哪些难点?
摘要:Rust语言学习曲线过于陡峭?初学者看懂这张思维导图,快速入门. Rust语言这两年的热度大家有目共睹,作为一个有着突破性变革意义的语言,其光鲜背后也有诸多质疑,对于想要在系统编程语言上更上一层 ...
- 带你读顶会论文丨基于溯源图的APT攻击检测
摘要:本次分享主要是作者对APT攻击部分顶会论文阅读的阶段性总结,将从四个方面开展. 本文分享自华为云社区<[论文阅读] (10)基于溯源图的APT攻击检测安全顶会总结>,作者:eastm ...
- MongoDB 读写分离——Windows MongoDB 副本集配置
本文基于:MongoDB 读写分离--MongoDB 安装 参考:https://docs.mongodb.com/manual/tutorial/deploy-replica-set-for-tes ...
- 多种方式实现 Future 回调返回结果
JDK 实现 public class FutureTest { public static void main(String[] args) throws Exception { Executor ...
- CO01/CO02生产订单组件库存地点替换
一.生产订单组件库存地点替换 当生产订单维护组件点击保存时,根据对应的工厂和工作中心,到配置表中查询对应的库存地点,并将自动带出的库存地点替换 二.隐式增强 在函数CO_VB_ORDER_POST中添 ...
- SuperSocket 简单示例
这是一个SuperSocket 简单示例,包括服务端和客户端. 一.首先使用NuGet安装SuperSocket和SuperSocket.Engine 二.实现IRequestInfo(数据包): 数 ...
- AtCoder Beginner Contest 162 C~F
比赛链接:Here AB水题, C - Sum of gcd of Tuples (Easy) 题意:\(\sum_{a=1}^{K} \sum_{b=1}^{K} \sum_{c=1}^{K} g ...
- Kafka的Rebalance机制可能造成的影响及解决方案
一.kafka的rebalance机制在Kafka中,当有新消费者加入或者订阅的Topic数发生变化时,会触发Rebalance(再均衡:在同一个消费者组当中,分区的所有权从一个消费者转移到另外一个消 ...