LLM 比较/测试:Llama 3 Instruct 70B + 8B HF/GGUF/EXL2 (测试并比较了 20 个版本!)
你好,Hugging Face 世界!🤗
让我们来看看新的 Llama 3 Instruct 70B 和 8B 模型。我还将直接比较最流行的格式和量化版本,以供本地 Llama 3 使用。
因此,请将此帖子视为**双重目的评估**:首先,深入评估 Llama 3 Instruct 的功能;其次,全面比较其 HF、GGUF 和 EXL2 格式在各种量化水平下的表现。总计,我严格测试了 20 个独立的模型版本,自 Llama 3 发布以来几乎不间断地进行这项工作。
如果您想了解 Llama 3 在我的系列测试中的表现,并找出哪种格式和量化版本能为您提供最佳结果,请继续阅读。
测试模型(及量化版本)
- MaziyarPanahi/Meta-Llama-3-70B-Instruct-GGUF Q8_0, Q6_K, Q5_K_M, Q5_K_S, Q4_K_M, Q4_K_S, IQ4_XS, Q3_K_L, Q3_K_M, Q3_K_S, IQ3_XS, IQ2_XS, Q2_K, IQ1_M, IQ1_S
- NousResearch/Meta-Llama-3-70B-Instruct-GGUF Q5_K_M
- meta-llama/Meta-Llama-3-8B-Instruct HF (未量化)
- turboderp/Llama-3-70B-Instruct-exl2 5.0bpw (更新于 2024-04-24!), 4.5bpw, 4.0bpw
- turboderp/Llama-3-8B-Instruct-exl2 6.0bpw
- 更新于 2024-04-24: casperhansen/llama-3-70b-instruct-awq AWQ (4 位)
测试方法
这是我屡试不爽的测试方法
- 4 次德国数据保护培训
- 我让模型通过 **4** 次专业的德国在线数据保护培训/考试——我们员工也必须通过同样的考试。
- 测试数据和问题以及所有指令都是德语,而角色卡是英语。这**测试了翻译能力和跨语言理解**。
- 在提供信息之前,我(用德语)指示模型:*我将给你一些信息。请注意这些信息,但只用“OK”作为确认,不要回答其他任何内容。* 这**测试了指令理解和遵循能力**。
- 在提供所有关于某个主题的信息后,我给模型考试问题。这是一个多选题(A/B/C),其中最后一个与第一个相同,但顺序和字母已更改(X/Y/Z)。每个测试有 4-6 个考试问题,总共有 **18** 道多选题。
- 我根据模型给出的正确答案数量进行排名,主要是在预先提供课程信息后,其次(作为决胜因素)是在未预先提供信息的情况下盲答的正确答案数量。
- 所有测试都是独立的单元,会话之间会清除上下文,不会保留内存/状态。
- SillyTavern 前端
- koboldcpp 后端(用于 GGUF 模型)
- oobabooga 的 text-generation-webui 后端(用于 HF/EXL2 模型)
- **确定性**生成设置预设(以尽可能消除随机因素并进行有意义的模型比较)
- 官方 Llama 3 Instruct 提示格式
详细测试报告
以下是详细笔记,它们是我的排名依据,也包括了额外的评论和观察结果。
- turboderp/Llama-3-70B-Instruct-exl2 EXL2 5.0bpw/4.5bpw,8K 上下文,Llama 3 Instruct 格式
- ✅ 对所有 18/18 道多选题给出了正确答案!仅根据问题,没有预先提供信息,也给出了正确答案:18/18 ⭐
- ✅ 始终以“OK”确认所有数据输入。
- ✅ 遵循指示,只回答一个字母或不止一个字母。
4.5bpw 量化版本 是我在我的双 3090 GPU 上能运行的最大 EXL2 量化版本,它 在所有测试中都表现出色,包括常规运行和盲测运行。
更新于 2024-04-24:感谢 MeretrixDominum 指出双 3090 GPU 使用 Q4 缓存可以在 8k 上下文下运行 5.0bpw 量化版本!所以我用 5.0bpw 和 Q4 缓存再次运行了所有测试三次,它也完美通过了所有测试!
由于 EXL2 因性能优化而非完全确定性,我将每个测试运行了三次,以确保结果一致。所有测试结果都相同。
Llama 3 70B Instruct,在充分量化的情况下,显然是最好的本地模型之一——如果不是最好的话。
唯一的缺点是其有限的原始上下文(8K,是 Llama 2 的两倍,但与当前最先进的上下文大小相比仍然很小)和低于标准的德语写作(与专门针对德语训练的最先进模型,如 Command R+ 或 Mixtral 相比)。这些问题 Meta 有望在后续发布中解决,我确信社区也正在努力通过微调来修复它们。
- 更新于 2023-09-17: casperhansen/llama-3-70b-instruct-awq AWQ (4 位),8K 上下文,Llama 3 Instruct 格式
- ✅ 对所有 18/18 道多选题给出了正确答案!仅根据问题,没有预先提供信息,也给出了正确答案:17/18
- ✅ 始终以“OK”确认所有数据输入。
- ✅ 遵循指示,只回答一个字母或不止一个字母。
AWQ 4 位量化版本表现与 EXL2 4.0bpw 量化版本相同,即它优于所有 GGUF 量化版本,包括 8 位版本。它在盲测中也犯了与 EXL2 4 位量化版本完全相同的错误:在首次遇到包含恶意附件的可疑电子邮件时,AI 决定打开附件,这是所有测试过的 Llama 3 Instruct 版本都存在的一个一致性错误。
AWQ 表现如此出色对于希望使用 vLLM 或(我最喜欢并推荐的)其分支 aphrodite-engine 进行大规模推理的专业用户来说是个好消息。
- turboderp/Llama-3-70B-Instruct-exl2 EXL2 4.0bpw,8K 上下文,Llama 3 Instruct 格式
- ✅ 对所有 18/18 道多选题给出了正确答案!仅根据问题,没有预先提供信息,也给出了正确答案:17/18
- ✅ 始终以“OK”确认所有数据输入。
- ✅ 遵循指示,只回答一个字母或不止一个字母。
EXL2 4 位量化版本优于所有 GGUF 量化版本,包括 8 位版本。这种差异虽然很小,但仍然值得注意。
由于 EXL2 因性能优化而非完全确定性,我将所有测试运行了三次,以确保结果一致。所有结果始终相同。
在首次遇到包含恶意附件的可疑电子邮件时,AI 决定打开附件,这是所有测试过的 Llama 3 Instruct 版本都存在的一个一致性错误。但是,它避免了所有 GGUF 版本都失败的语音钓鱼尝试。我怀疑 EXL2 校准数据集可能促使其做出了这个正确的决定。
最后,这是一个无需思考的决定:如果您能将 EXL2 完全加载到显存中,就应该使用它。它在速度和质量方面都给我带来了最佳性能。
- MaziyarPanahi/Meta-Llama-3-70B-Instruct-GGUF GGUF Q8_0/Q6_K/Q5_K_M/Q5_K_S/Q4_K_M/Q4_K_S/IQ4_XS,8K 上下文,Llama 3 Instruct 格式
- ✅ 对所有 18/18 道多选题给出了正确答案!仅根据问题,没有预先提供信息,也给出了正确答案:16/18
- ✅ 始终以“OK”确认所有数据输入。
- ✅ 遵循指示,只回答一个字母或不止一个字母。
我测试了所有这些量化版本:Q8_0、Q6_K、Q5_K_M、Q5_K_S、Q4_K_M、Q4_K_S 和(更新的)IQ4_XS。它们都取得了相同的分数,回答非常相似,并且犯了完全相同的错误。这种一致性是一个积极的迹象,表明量化并没有显著影响它们的性能,至少与我测试的最大量化版本 Q8 相比没有(我尝试了 FP16 GGUF,但速度为 0.25T/s,对我来说太慢了,不实用)。然而,从 Q4_K_M 开始,我观察到与 Q5_K_S 及以上相比,响应的质量/智能略有下降——这没有影响分数,但很明显。
所有量化版本在正常运行中都获得了满分,但在盲测中犯了以下(完全相同)两个错误:
首先,当面对包含恶意附件的可疑电子邮件时,AI 决定打开附件。这是一个危险的安全意识疏忽,在需要谨慎时却假设安全。
有趣的是,在同一单元测试中,此问题很快再次被问及,AI 随后选择了不打开恶意附件而是报告可疑电子邮件的正确答案。问题链显然将 AI 引向了其潜在空间中更好的位置,并字面意义上改变了其想法。
其次,在语音钓鱼(vishing)场景中,AI 正确识别了尝试并挂断了电话,但未能通过适当的渠道报告该事件。虽然没有上当受骗是积极的,但未能提醒相关方有关语音钓鱼的尝试是错失了一个帮助阻止其他人受害的机会。
除了这些问题,Llama 3 Instruct 提供了完美的响应,推理能力出色,显示出对任务的深刻理解。尽管它偶尔会切换到英语,但它通常能很好地处理德语。它的熟练程度不如 Mistral 模型那么完善,这表明它以英语进行思考并翻译成德语。这执行得很好,但并非完美无缺,不像 Claude 3 Opus 或 Command R+ 103B 等模型,它们似乎以德语进行原生思考,从而在语言上具有优势。
然而,这并不奇怪,因为 Llama 3 模型官方只支持英语。一旦我们获得了在保持基础智能的同时针对特定语言进行微调的模型,或者 Meta 发布了多语言 Llama 模型,Llama 3 模型在非英语语言中的用途将显著提高。
- NousResearch/Meta-Llama-3-70B-Instruct-GGUF GGUF Q5_K_M,8K 上下文,Llama 3 Instruct 格式
- ✅ 对所有 18/18 道多选题给出了正确答案!仅根据问题,没有预先提供信息,也给出了正确答案:16/18
- ✅ 始终以“OK”确认所有数据输入。
- ✅ 遵循指示,只回答一个字母或不止一个字母。
为了与 MaziyarPanahi 的量化版本进行比较,我还测试了 NousResearch 发布的最大量化版本,即他们的 Q5_K_M GGUF。所有结果在所有方面都始终相同。
正如预期。我只是想确认这些量化版本的质量是相同的。
- MaziyarPanahi/Meta-Llama-3-70B-Instruct-GGUF GGUF Q3_K_S/IQ3_XS/IQ2_XS,8K 上下文,Llama 3 Instruct 格式
- ✅ 对所有 18/18 道多选题给出了正确答案!仅根据问题,没有预先提供信息,也给出了正确答案:15/18
- ✅ 始终以“OK”确认所有数据输入。
- ✅ 遵循指示,只回答一个字母或不止一个字母。
令人惊讶的是,Q3_K_S、IQ3_XS 甚至 IQ2_XS 都优于更大的 Q3。分数异常地从小到大排列,与预期相反。尽管如此,Q3 量化版本明显落后于 Q4 及以上版本。
- MaziyarPanahi/Meta-Llama-3-70B-Instruct-GGUF GGUF Q3_K_M,8K 上下文,Llama 3 Instruct 格式
- ✅ 对所有 18/18 道多选题给出了正确答案!仅根据问题,没有预先提供信息,也给出了正确答案:13/18
- ✅ 始终以“OK”确认所有数据输入。
- ✅ 遵循指示,只回答一个字母或不止一个字母。
Q3_K_M 与更大的量化版本相比表现较弱。除了所有量化模型都常见的两个错误外,它还通过选择两个答案而不是唯一的正确答案而犯了三个进一步的错误。
- MaziyarPanahi/Meta-Llama-3-70B-Instruct-GGUF GGUF Q3_K_L,8K 上下文,Llama 3 Instruct 格式
- ✅ 对所有 18/18 道多选题给出了正确答案!仅根据问题,没有预先提供信息,也给出了正确答案:11/18
- ✅ 始终以“OK”确认所有数据输入。
- ✅ 遵循指示,只回答一个字母或不止一个字母。
有趣的是,Q3_K_L 的表现甚至比 Q3_K_M 更差。它重复了 Q3_K_M 同样的错误,即在只有一个正确答案时选择了两个答案,并通过错误回答了 Q3_K_M 已正确回答的两个问题而加剧了其缺点。
- MaziyarPanahi/Meta-Llama-3-70B-Instruct-GGUF GGUF Q2_K,8K 上下文,Llama 3 Instruct 格式
- ❌ 仅对 17/18 道多选题给出了正确答案!仅根据问题,没有预先提供信息,也给出了正确答案:14/18
- ✅ 始终以“OK”确认所有数据输入。
- ✅ 遵循指示,只回答一个字母或不止一个字母。
Q2_K 是 Llama 3 70B 首个在常规运行中未能取得满分的量化版本。因此,我建议使用至少 3 位,理想情况下是 4 位的 70B 量化版本。然而,即使在 Q2_K 级别,70B 仍然是比未量化 8B 更好的选择。
- meta-llama/Meta-Llama-3-8B-Instruct HF 未量化,8K 上下文,Llama 3 Instruct 格式
- ❌ 仅对 17/18 道多选题给出了正确答案!仅根据问题,没有预先提供信息,也给出了正确答案:9/18
- ✅ 始终以“OK”确认所有数据输入。
- ❌ 未能始终遵循指示,只回答一个字母或不止一个字母。
这是未量化的 8B 模型。就其大小而言,它表现良好,在该大小类别中排名靠前。
它在标准运行中犯的一个错误是错误地将发给客户的电子邮件发送给内部同事(也是您的副手)的行为归类为数据泄露。它在盲测中犯了更多错误,但这是较小模型预期会出现的情况。
因此,我认为 Llama 3 8B 是同类中最好的。如果受限于此大小,建议使用 8B 或其衍生产品。然而,通常情况下,更大的模型往往更有效,我宁愿运行 70B 的小量化版本(只是不是 1 位)而不是未量化的 8B。
- turboderp/Llama-3-8B-Instruct-exl2 EXL2 6.0bpw,8K 上下文,Llama 3 Instruct 格式
- ❌ 仅对 17/18 道多选题给出了正确答案!仅根据问题,没有预先提供信息,也给出了正确答案:9/18
- ✅ 始终以“OK”确认所有数据输入。
- ❌ 未能始终遵循指示,只回答一个字母或不止一个字母。
6.0bpw 是 Exllama 的创建者 turboderp 发布的最大 EXL2 Llama 3 8B Instruct 量化版本。结果与 GGUF 的结果相同。
由于 EXL2 因性能优化而非完全确定性,我将所有测试运行了三次,以确保一致性。所有测试结果都相同。
它在标准运行中犯的一个错误是错误地将发给客户的电子邮件发送给内部同事(也是您的副手)的行为归类为数据泄露。它在盲测中犯了更多错误,但这是较小模型预期会出现的情况。
- MaziyarPanahi/Meta-Llama-3-70B-Instruct-GGUF GGUF IQ1_S,8K 上下文,Llama 3 Instruct 格式
- ❌ 仅对 16/18 道多选题给出了正确答案!仅根据问题,没有预先提供信息,也给出了正确答案:13/18
- ✅ 始终以“OK”确认所有数据输入。
- ❌ 未能始终遵循指示,只回答一个字母或不止一个字母。
IQ1_S,就像 IQ1_M 一样,在提供正确答案和连贯写作方面都表现出显著的质量下降,这在德语中尤为明显。目前,1 位量化似乎不可行。
- MaziyarPanahi/Meta-Llama-3-70B-Instruct-GGUF GGUF IQ1_M,8K 上下文,Llama 3 Instruct 格式
- ❌ 仅对 15/18 道多选题给出了正确答案!仅根据问题,没有预先提供信息,也给出了正确答案:12/18
- ✅ 始终以“OK”确认所有数据输入。
- ❌ 未能始终遵循指示,只回答一个字母或不止一个字母。
IQ1_M,就像 IQ1_S 一样,在提供正确答案和连贯写作方面都表现出显著的质量下降,这在德语中尤为明显。1 位量化似乎尚不可行。
量化排名
今天,我只关注 Llama 3 及其量化版本,所以只对这些模型进行排名和展示。然而,鉴于 Llama 3 Instruct 的整体出色表现(特别是这个 EXL2),它已在我的**总排名中名列前茅**(与已有的其他模型共享第一名此处)。
排序 | 模型 | 大小 | 格式 | 量化版本 | 第一项得分 | 第二项得分 | OK | +/- |
---|---|---|---|---|---|---|---|---|
1 | turboderp/Llama-3-70B-Instruct-exl2 | 70B | EXL2 | 5.0bpw/4.5bpw | 18/18 ✓ | 18/18 ✓ | ✓ | ✓ |
2 | casperhansen/llama-3-70b-instruct-awq | 70B | AWQ | 4位 | 18/18 ✓ | 17/18 | ✓ | ✓ |
2 | turboderp/Llama-3-70B-Instruct-exl2 | 70B | EXL2 | 4.0bpw | 18/18 ✓ | 17/18 | ✓ | ✓ |
3 | MaziyarPanahi/Meta-Llama-3-70B-Instruct-GGUF | 70B | GGUF | Q8_0/Q6_K/Q5_K_M/Q5_K_S/Q4_K_M/Q4_K_S/IQ4_XS | 18/18 ✓ | 16/18 | ✓ | ✓ |
3 | NousResearch/Meta-Llama-3-70B-Instruct-GGUF | 70B | GGUF | Q5_K_M | 18/18 ✓ | 16/18 | ✓ | ✓ |
4 | MaziyarPanahi/Meta-Llama-3-70B-Instruct-GGUF | 70B | GGUF | Q3_K_S/IQ3_XS/IQ2_XS | 18/18 ✓ | 15/18 | ✓ | ✓ |
5 | MaziyarPanahi/Meta-Llama-3-70B-Instruct-GGUF | 70B | GGUF | Q3_K_M | 18/18 ✓ | 13/18 | ✓ | ✓ |
6 | MaziyarPanahi/Meta-Llama-3-70B-Instruct-GGUF | 70B | GGUF | Q3_K_L | 18/18 ✓ | 11/18 | ✓ | ✓ |
7 | MaziyarPanahi/Meta-Llama-3-70B-Instruct-GGUF | 70B | GGUF | Q2_K | 17/18 | 14/18 | ✓ | ✓ |
8 | meta-llama/Meta-Llama-3-8B-Instruct | 8B | HF | — | 17/18 | 9/18 | ✓ | ✗ |
8 | turboderp/Llama-3-8B-Instruct-exl2 | 8B | EXL2 | 6.0bpw | 17/18 | 9/18 | ✓ | ✗ |
9 | MaziyarPanahi/Meta-Llama-3-70B-Instruct-GGUF | 70B | GGUF | IQ1_S | 16/18 | 13/18 | ✓ | ✗ |
10 | MaziyarPanahi/Meta-Llama-3-70B-Instruct-GGUF | 70B | GGUF | IQ1_M | 15/18 | 12/18 | ✓ | ✗ |
- 第一项得分 = 多选题正确答案数量(在提供了课程信息后)
- 第二项得分 = 多选题正确答案数量(未预先提供课程信息)
- OK = 始终遵循指示,仅以“OK”确认所有数据输入
- +/- = 遵循指示,只回答一个字母或不止一个字母(不再测试)
总结:观察与结论
- Llama 3 太棒了! Llama 3 70B Instruct,在充分量化(4 位或更高)的情况下,是目前最好的本地模型之一,如果不是最好的话。EXL2 4.5bpw 在所有测试中都取得了满分,即 (18+18)*3=108 道问题。
- GGUF 量化版本,从 8 位到 4 位,也表现出色,在标准运行中获得 18/18 分。分数仅在 3 位及以下量化版本中略有下降。
- 如果您能将 EXL2 量化版本加载到显存中,它们在速度和质量方面都提供了最佳的整体性能。GGUF 量化版本紧随其后。
- 未量化的 Llama 3 8B 模型就其大小而言表现良好,如果受限于该模型大小,它是最佳选择。然而,即使是 70B 的小量化版本(只是不是 1 位)也优于未量化的 8B。
- 1 位量化版本目前尚不可行,在质量和连贯性方面都显示出显著下降。
- Llama 3 模型需要改进的关键领域包括将原生上下文大小扩展到 8K 以上,以及增强非英语语言能力。来自 Meta 或社区的针对特定语言的微调或多语言模型发布肯定会解决这些缺点。
- 在 Reddit 上是我的之前模型测试和比较或其他相关帖子。
- 在 Hugging Face 上是我的模型。
- 这是我的 Ko-fi,如果您想打赏我。如果您能负担得起,也请考虑打赏您最喜欢的模型创作者、量化者或前端/后端开发者。他们值得!
- 这是我的 Twitter,如果您想关注我。