Meta开源的ChatGPT平替到底好不好用?测试结果、加料改装方法已出炉,2天5.2k星

简介: Meta开源的ChatGPT平替到底好不好用?测试结果、加料改装方法已出炉,2天5.2k星


Meta 开源的大模型系列 LLaMA 评测出炉,对比结果显示,和 ChatGPT 还是有差距的。


ChatGPT 的持续爆火,早已让各大科技公司坐不住了。

就在刚刚过去的一周,Meta「开源」了一个新的大模型系列 ——LLaMA(Large Language Model Meta AI),参数量从 70 亿到 650 亿不等。因为 LLaMA 比之前发布的很多大模型参数更少,但性能更好,所以一经发布让很多研究者兴奋不已。

例如,130 亿参数的 LLaMA 模型「在大多数基准上」可以胜过参数量达 1750 亿的 GPT-3,而且可以在单块 V100 GPU 上运行;而最大的 650 亿参数的 LLaMA 模型可以媲美谷歌的 Chinchilla-70B 和 PaLM-540B。

参数量的减少对于普通研究者和商业机构来说都是好事,但 LLaMA 真的像论文中说得那样表现那么好吗?和当前的 ChatGPT 相比,LLaMA 是否可以勉强一战?为了解答这些疑问,有些研究者已经对这一模型进行了测试。

还有公司已经在尝试补齐 LLaMA 短板,想看能不能通过添加 RLHF 等训练方法让 LLaMA 表现更好。

LLaMA 初步评测

这份评测结果来自一位名叫 @Enryu 的 Medium 作者。它比较了 LLaMA 和 ChatGPT 在解释笑话、零样本分类和代码生成三个颇具挑战性的任务中的效果。相关博客文章为《Mini-post: first look at LLaMA》。

作者在 RTX 3090/RTX 4090 上运行 LLaMA 7B/13B 版本,在单个 A100 上运行 33B 版本。

需要注意的是,与 ChatGPT 不同,其他模型并不是基于指令微调,因此 prompt 的结构有所不同。

解释笑话

这是谷歌原始 PaLM 论文中展示的一个用例:给出一个笑话,让模型来解释它为什么好笑。该任务需要将世界知识和一些基本逻辑相结合。PaLM 之前的所有模型都无法做到这一点。作者从 PaLM 论文中提取了一些示例,比较了 LLaMA-7B、LLaMA-13B、LLaMA-33B 与 ChatGPT 的表现。

可以看到,结果很糟糕。这些模型 get 到了一些笑点,但无法真正理解,它们只是随机生成一些相关的文本流。ChatGPT 虽与 LLaMA-33B 一样表现很差(其他几个模型更差),但它遵循了不一样的策略:生成了一大堆文本,希望自己的回答至少有一部分是正确的(但大部分显然不是),是不是很像大家考试时应对问答题的策略?

不过,ChatGPT 起码 get 到了关于 Schmidthuber 的笑话。但总的来说,这些模型在零样本笑话解释任务上的效果与 PaLM 相差甚远(除非 PaLM 的示例是精心挑选)。

零样本分类

作者考虑的第二项任务更具挑战性 —— 标题党(clickbait)分类。由于连人类也无法就什么是标题党达成一致,作者在 prompt 中为这些模型提供了一些示例(因此实际上是小样本而非零样本)。如下为 LLaMa 的 prompt:










I will tell whether the following news titles are clickbait:1) The WORST care homes in England: Interactive map reveals the lowest-rated 2,530 residences - so is there one near you?Clickbait: yes2) Netflix's top 10 most-watched movies of all timeClickbait: yes3) Peering Through the Fog of InflationClickbait: no4) You’ll never believe which TV cook this cheeky chap grew up to beClickbait: yes


下图为 LLaMA-7B、LLaMA-13B、LLaMA-33B 与 ChatGPT 的更多示例结果。

很明显,赢家为 LLaMA-33B,它是唯一一个能够遵循所有请求格式(yes/no)的模型,并且预测合理。ChatGPT 也还可以,但有些预测不太合理,格式也有错误。较小的模型(7B/13B)不适用于该任务。

代码生成

虽然 LLM 擅长人文学科,但在 STEM 学科上表现糟糕。LLaMA 虽然有基准测试结果,但作者在代码生成领域尝试了一些特别的东西,即将人类语言零样本地转换为 SQL 查询。这并不是很实用,在现实生活中直接编写查询会更有效率。这里只作为代码生成任务的一个示例。

在 prompt 中,作者提供表模式(table schema)以及想要实现的目标,要求模型给出 SQL 查询。如下为一些随机示例,老实说,ChatGPT 看起来效果更好。


































-- We have a table `events` with columns `event_id`, `timestamp`, `user_id`, `rpc_method`.-- We want to count how many users issued request "Login" over the last week.-- SQL query for this is:
-- 7bSELECT count (*)FROM eventsWHERE user_id IN (SELECT user_id FROM events WHERE timestamp >= NOW () - INTERVAL 7 DAY) AND rpc_method = 'Login';
-- 13bSELECT COUNT (*) FROM events WHERE rpc_method = "Login" AND UNIX_TIMESTAMP (timestamp) >= UNIX_TIMESTAMP (CURRENT_DATE - INTERVAL 7 DAY)
-- 33bSELECT user_id, COUNT (DISTINCT user_id) AS totalFROM eventsWHERE timestamp BETWEEN TIMESTAMP '2013-08-14 00:00:00' AND TIMESTAMP '2013-08-21 00:00:00' AND rpc_method = 'Login'GROUP BY user_id
-- ChatGPTSELECT COUNT (DISTINCT user_id)FROM eventsWHERE rpc_method = 'Login'AND timestamp >= DATE_SUB (NOW (), INTERVAL 1 WEEK);


从测试结果来看,LLaMA 在一些任务上表现还不错,但在另一些任务上和 ChatGPT 还有一些差距。如果能像 ChatGPT 一样加入一些「训练秘籍」,效果会不会大幅提升?

加入 RLHF,初创公司 Nebuly AI 开源 ChatLLaMA 训练方法

虽然 LLaMA 发布之初就得到众多研究者的青睐,但是少了 RLHF 的加持,从上述评测结果来看,还是差点意思。

在 LLaMA 发布三天后,初创公司 Nebuly AI 开源了 RLHF 版 LLaMA(ChatLLaMA)的训练方法。它的训练过程类似 ChatGPT,该项目允许基于预训练的 LLaMA 模型构建 ChatGPT 形式的服务。项目上线刚刚 2 天,狂揽 5.2K 星。

项目地址:https://github.com/nebuly-ai/nebullvm/tree/main/apps/accelerate/chatllama

ChatLLaMA 训练过程算法实现主打比 ChatGPT 训练更快、更便宜,我们可以从以下四点得到验证:

  • ChatLLaMA 是一个完整的开源实现,允许用户基于预训练的 LLaMA 模型构建 ChatGPT 风格的服务;
  • 与 ChatGPT 相比,LLaMA 架构更小,但训练过程和单 GPU 推理速度更快,成本更低;
  • ChatLLaMA 内置了对 DeepSpeed ZERO 的支持,以加速微调过程;
  • 该库还支持所有的 LLaMA 模型架构(7B、13B、33B、65B),因此用户可以根据训练时间和推理性能偏好对模型进行微调。


图源:https://openai.com/blog/chatgpt

更是有研究者表示,ChatLLaMA 比 ChatGPT 训练速度最高快 15 倍。

不过有人对这一说法提出质疑,认为该项目没有给出准确的衡量标准。

项目刚刚上线 2 天,还处于早期阶段,用户可以通过以下添加项进一步扩展:

  • 带有微调权重的 Checkpoint;
  • 用于快速推理的优化技术;
  • 支持将模型打包到有效的部署框架中。


Nebuly AI 希望更多人加入进来,创造更高效和开放的 ChatGPT 类助手。

该如何使用呢?首先是使用 pip 安装软件包:


pip install chatllama-py


然后是克隆 LLaMA 模型:




git clone https://github.com/facebookresearch/llama.gitcd llamapip install -r requirements.txtpip install -e .


一切准备就绪后,就可以运行了,项目中介绍了 ChatLLaMA 7B 的训练示例,感兴趣的小伙伴可以查看原项目。

参考链接:https://www.linkedin.com/posts/activity-7035964259431763970-YdMK/https://medium.com/@enryu9000/mini-post-first-look-at-llama-4403517d41a1

相关文章
|
17天前
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
33 4
|
2月前
|
测试技术 API 项目管理
API测试方法
【10月更文挑战第18天】API测试方法
57 1
|
2月前
|
测试技术 UED
软件测试中的“灰盒”方法:一种平衡透明度与效率的策略
在软件开发的复杂世界中,确保产品质量和用户体验至关重要。本文将探讨一种被称为“灰盒测试”的方法,它结合了白盒和黑盒测试的优点,旨在提高测试效率同时保持一定程度的透明度。我们将通过具体案例分析,展示灰盒测试如何在实际工作中发挥作用,并讨论其对现代软件开发流程的影响。
|
8天前
|
人工智能 自然语言处理 前端开发
CodeArena:在线 LLM 编程竞技场!用于测试不同开源 LLM 的编程能力,实时更新排行榜
CodeArena 是一个在线平台,用于测试和比较不同大型语言模型(LLM)的编程能力。通过实时显示多个 LLM 的代码生成过程和结果,帮助开发者选择适合的 LLM,并推动 LLM 技术的发展。
38 7
CodeArena:在线 LLM 编程竞技场!用于测试不同开源 LLM 的编程能力,实时更新排行榜
|
25天前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
29 6
|
28天前
|
JavaScript 安全 编译器
TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法
本文深入探讨了 TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法,并通过实际案例展示了其在项目中的应用效果,旨在提升代码质量和开发效率。
37 6
|
1月前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
161 2
|
1月前
|
编解码 人工智能 自然语言处理
迈向多语言医疗大模型:大规模预训练语料、开源模型与全面基准测试
【10月更文挑战第23天】Oryx 是一种新型多模态架构,能够灵活处理各种分辨率的图像和视频数据,无需标准化。其核心创新包括任意分辨率编码和动态压缩器模块,适用于从微小图标到长时间视频的多种应用场景。Oryx 在长上下文检索和空间感知数据方面表现出色,并且已开源,为多模态研究提供了强大工具。然而,选择合适的分辨率和压缩率仍需谨慎,以平衡处理效率和识别精度。论文地址:https://www.nature.com/articles/s41467-024-52417-z
49 2
|
1月前
|
开发框架 安全 .NET
.NET使用Moq开源模拟库简化单元测试
.NET使用Moq开源模拟库简化单元测试~
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
本文介绍了使用Python的unittest框架来加载测试用例的四种方法,包括通过测试用例类、模块、路径和逐条加载测试用例。
95 0
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
下一篇
DataWorks