模型简介
模型特点
模型能力
使用案例
基础模型:
- Salesforce/Llama-xLAM-2-8b-fc-r 数据集:
- eaddario/imatrix-calibration 语言:
- en 许可证:
- cc-by-nc-4.0 管道标签: 文本生成 标签:
- gguf
- 量化
- 实验性
Salesforce/Llama-xLAM-2-8b-fc-r的实验性分层量化
原始模型: Salesforce/Llama-xLAM-2-8b-fc-r
来自原始模型创建者:
大型动作模型(LAMs)是先进的语言模型,旨在通过将用户意图转化为可执行动作来增强决策能力。作为AI代理的大脑,LAMs自主规划和执行任务以实现特定目标,使其在跨领域自动化工作流程中具有重要价值。 此模型发布仅供研究用途。
新的xLAM-2系列基于我们最先进的数据合成、处理和训练流程,在多轮对话和工具使用方面实现了重大飞跃。使用我们新颖的APIGen-MT框架训练,该框架通过模拟代理-人类交互生成高质量训练数据。我们的模型在BFCL和œÑ-bench基准测试中达到最先进性能,超越了GPT-4o和Claude 3.5等前沿模型。值得注意的是,即使是我们的较小模型在多轮场景中也表现出卓越能力,同时在多次试验中保持出色的一致性。
使用这些实验版本前请阅读此说明!
我个人感兴趣的领域是寻找在资源受限环境(如商品硬件、台式机、笔记本电脑、移动设备、边缘设备等)中优化LLM推理性能的方法。实现这一目标有多种方法,包括架构简化和知识蒸馏,但我的主要关注点是量化和剪枝。
生成这些实验版本的方法在Squeezing Tensor Bits: the quest for smaller LLMs中有介绍,但简而言之,它涉及使用自定义版本的llama-imatrix
和llama-quantize
来识别有影响力的张量,并将最重要的层量化为更高比特精度,较不重要的层量化为更低比特。这一过程部分受到Dumitru等人的Layer-Wise Quantization: A Pragmatic and Effective Method for Quantizing LLMs Beyond Integer Bit-Levels启发。
从版本b5125开始,llama-quantize现在可以执行张量级量化(TWQ),即用户定义的张量以特定级别量化,或通过为每个张量/层选择不同的量化类型执行分层量化(LWQ)。例如,--tensor-type attn_v=q6_k
将以q6_k量化所有Attention Value张量(TWQ),而--tensor-type "\.([0-9]|1[01257]|31)\.attn_k=q4_k"
将以q4_k量化第0至9、10、11、12、15、17和31层的Attention Key张量,其余层保持默认值(LWQ)。
修改版的llama-imatrix生成有用的统计信息来指导张量选择过程,--show-statistics
将显示:
- Œ£(Bias): 张量上所有激活的总和(即重要性分数)
- Min & Max: 最小和最大激活值
- Œº & œÉ: 激活的均值和标准差
- % Active: 平均激活超过非常小阈值(1e-6)的元素比例。有助于确定张量在推理过程中的活跃/休眠程度
- N: 张量中的激活数量
- Entropy: 激活分布的熵,以比特为单位(标准香农熵测量)
- E (norm): 归一化熵
- ZD Score: 如分层量化论文3.1节所述的重要性分数z-score分布
- CosSim: 与前一层的同类型张量之间的余弦相似度(例如blk.7.attn_k和blk.6.attn_k)
请注意,统计信息是为每个单独张量计算的,应仅用于比较相同类型的张量。例如,假设第10层的attn_k在推理过程中比第7层的attn_k具有更高影响力,因为其**Œ£(Bias)**更大是有意义的,而在attn_k和ffn_down之间得出相同结论则没有意义。
有一个拉取请求将这些更改合并回核心llama.cpp项目。这可能永远不会发生,因此在此之前,修改版本将在GitHub上提供。
对于测试和比较,我通常会使用Unsloth(Daniel和Michael Han做了一些非常高级的工作!)和Bartowski(见下文致谢)生成的模型,但他们不提供此模型的GGUF版本,因此所有测试和比较都是针对简单运行llama-quantize
而无进一步优化的朴素量化进行的。
所有实验版本均使用从eaddario/imatrix-calibration提供的校准数据集创建的适当imatrix生成。本质上,重要性矩阵(imatrix)是一个表格或更广泛地说,是一种结构化表示,用于评分机器学习模型中不同特征或参数的相对重要性。它基本上量化了每个特征对特定结果、预测或建模关系的"影响",并有助于抵消量化和剪枝的负面影响。
生成这些模型的过程大致如下:
- 将原始模型的张量转换为GGUF F16*
- 使用wikitext-2-raw-v1数据集估计F16模型的困惑度分数(基线),并保存logits
- 从选定的校准数据集生成imatrix
- 使用修改版的
llama-imatrix
确定张量和层重要性分数贡献 - 为每个张量选择适当的量化级别,并使用
llama-quantize
量化模型 - 计算每个量化模型的困惑度、KL散度、ARC(Easy+Challenge)、HellaSwag、MMLU、Truthful QA和WinoGrande分数
- 保留分数最佳的版本
- 重复直到创建所有所需的量化。我发现低于Q3/IQ3的量化不适合我的目的,因此通常不生成它们,但可根据请求提供其他量化。
*BF16是首选,但苹果的GPU尚不支持它,因此任何操作都在CPU中执行,使其速度慢得不可接受。预计短期内会有所改变,但在此之前,如果您使用苹果设备,请避免使用任何标记为BF16的模型。
模型
大小(GB)
模型 | 朴素 | 仓库 | 缩减率 |
---|---|---|---|
Llama-xLAM-2-8b-fc-r-IQ3_M | 3.78 | 3.69 | 2.4% |
Llama-xLAM-2-8b-fc-r-IQ3_S | 3.68 | 3.43 | 6.8% |
Llama-xLAM-2-8b-fc-r-IQ4_NL | 4.71 | 4.39 | 6.2% |
Llama-xLAM-2-8b-fc-r-Q3_K_L | 4.32 | 3.76 | 13.0% |
Llama-xLAM-2-8b-fc-r-Q3_K_M | 4.02 | 3.56 | 11.4% |
Llama-xLAM-2-8b-fc-r-Q3_K_S | 3.66 | 3.31 | 9.6% |
Llama-xLAM-2-8b-fc-r-Q4_K_M | 4.92 | 4.41 | 10.4% |
Llama-xLAM-2-8b-fc-r-Q4_K_S | 4.69 | 4.28 | 8.7% |
Llama-xLAM-2-8b-fc-r-Q5_K_M | 5.73 | 5.38 | 6.1% |
Llama-xLAM-2-8b-fc-r-Q5_K_S | 5.60 | 5.24 | 6.4% |
Llama-xLAM-2-8b-fc-r-Q6_K | 6.60 | 6.57 | 0.5% |
Llama-xLAM-2-8b-fc-r-Q8_0 | 8.54 | 7.73 | 9.5% |
困惑度和KL散度分数
模型 | ŒºPPL | ùúåPPL | ŒºKLD | RMS Œîp |
---|---|---|---|---|
Llama-xLAM-2-8b-fc-r-IQ3_M | 8.471225 ±0.059374 | 98.14% | 0.096730 ±0.000436 | 9.339 ±0.048 |
Llama-xLAM-2-8b-fc-r-IQ3_S | 8.675839 ±0.060418 | 97.37% | 0.137925 ±0.000554 | 11.245 ±0.051 |
Llama-xLAM-2-8b-fc-r-IQ4_NL | 8.337503 ±0.060156 | 99.09% | 0.047455 ±0.000243 | 6.280 ±0.039 |
Llama-xLAM-2-8b-fc-r-Q3_K_L | 8.894129 ±0.063417 | 97.22% | 0.136754 ±0.000659 | 11.276 ±0.057 |
Llama-xLAM-2-8b-fc-r-Q3_K_M | 8.991141 ±0.063906 | 96.89% | 0.152094 ±0.000706 | 11.870 ±0.058 |
Llama-xLAM-2-8b-fc-r-Q3_K_S | 9.352260 ±0.066573 | 95.91% | 0.198689 ±0.000870 | 13.526 ±0.061 |
Llama-xLAM-2-8b-fc-r-Q4_K_M | 8.230419 ±0.058263 | 99.18% | 0.041808 ±0.000219 | 5.988 ±0.037 |
Llama-xLAM-2-8b-fc-r-Q4_K_M (朴素) | 8.072811 ¬±0.057158 | 99.60% | 0.019868 ¬±0.000110 | 4.044 ¬±0.029 |
Llama-xLAM-2-8b-fc-r-Q4_K_S | 8.239495 ±0.058176 | 99.10% | 0.045691 ±0.000240 | 6.262 ±0.039 |
Llama-xLAM-2-8b-fc-r-Q5_K_M | 8.062572 ±0.057549 | 99.77% | 0.011576 ±0.000073 | 3.136 ±0.025 |
Llama-xLAM-2-8b-fc-r-Q5_K_S | 8.057947 ±0.057474 | 99.75% | 0.012330 ±0.000075 | 3.210 ±0.026 |
Llama-xLAM-2-8b-fc-r-Q6_K | 7.983587 ±0.056711 | 99.91% | 0.004239 ±0.000034 | 1.912 ±0.018 |
Llama-xLAM-2-8b-fc-r-Q8_0 | 7.982215 ±0.056796 | 99.94% | 0.002365 ±0.000026 | 1.449 ±0.019 |
Llama-xLAM-2-8b-fc-r-F16 | 7.968796 ±0.056714 | 100% | N/A | N/A |
ARC、HellaSwag、MMLU、Truthful QA和WinoGrande分数
使用llama-perplexity生成分数,每项测试750个任务,上下文大小为768个token。
用于生成这些分数的测试数据,请访问相应链接: HellaSwag、ARC、MMLU、Truthful QA和WinoGrande
模型 | ARC | HellaSwag | MMLU | Truthful QA | WinoGrande | 平均分数 |
---|---|---|---|---|---|---|
Llama-xLAM-2-8b-fc-r-IQ3_M | 64.6667 ±1.7466 | 76.67 | 38.5333 ±1.7783 | 29.6000 ±1.6680 | 74.5333 ±1.5919 | 56.80 |
Llama-xLAM-2-8b-fc-r-IQ3_S | 60.8000 ±1.7838 | 72.40 | 38.0000 ±1.7736 | 30.9333 ±1.6889 | 72.5333 ±1.6309 | 54.93 |
Llama-xLAM-2-8b-fc-r-IQ4_NL | 66.0000 ±1.7309 | 77.73 | 39.0667 ±1.7827 | 30.8000 ±1.6869 | 73.7333 ±1.6080 | 57.47 |
Llama-xLAM-2-8b-fc-r-Q3_K_L | 65.0667 ±1.7420 | 76.67 | 38.6667 ±1.7794 | 29.6000 ±1.6680 | 71.6000 ±1.6477 | 56.32 |
Llama-xLAM-2-8b-fc-r-Q3_K_M | 64.4000 ±1.7496 | 76.93 | 37.4667 ±1.7686 | 30.0000 ±1.6744 | 71.8667 ±1.6430 | 56.13 |
Llama-xLAM-2-8b-fc-r-Q3_K_S | 61.6000 ±1.7771 | 75.73 | 38.4000 ±1.7771 | 30.2667 ±1.6787 | 72.4000 ±1.6334 | 55.68 |
Llama-xLAM-2-8b-fc-r-Q4_K_M | 65.6000 ±1.7358 | 77.33 | 39.0667 ±1.7827 | 30.4000 ±1.6807 | 73.8667 ±1.6054 | 57.25 |
Llama-xLAM-2-8b-fc-r-Q4_K_M (朴素) | 66.2667 ¬±1.7276 | 77.47 | 39.6000 ¬±1.7870 | 31.2000 ¬±1.6929 | 72.5333 ¬±1.6309 | 57.41 |
Llama-xLAM-2-8b-fc-r-Q4_K_S | 65.7333 ±1.7342 | 77.07 | 39.3333 ±1.7849 | 30.6667 ±1.6849 | 73.6000 ±1.6106 | 57.28 |
Llama-xLAM-2-8b-fc-r-Q5_K_M | 66.4000 ±1.7259 | 78.80 | 39.8667 ±1.7890 | 32.0000 ±1.7045 | 74.0000 ±1.6027 | 58.21 |
Llama-xLAM-2-8b-fc-r-Q5_K_S | 65.7333 ±1.7342 | 78.93 | 39.4667 ±1.7860 | 32.0000 ±1.7045 | 74.1333 ±1.6001 | 58.05 |
Llama-xLAM-2-8b-fc-r-Q6_K | 65.4667 ±1.7374 | 78.80 | 39.3333 ±1.7849 | 32.2667 ±1.7082 | 73.6000 ±1.6106 | 57.89 |
Llama-xLAM-2-8b-fc-r-Q8_0 | 66.0000 ±1.7309 | 78.93 | 39.2000 ±1.7838 | 32.0000 ±1.7045 | 74.4000 ±1.5947 | 58.11 |
Llama-xLAM-2-8b-fc-r-F16 | 65.7333 ±1.7342 | 78.40 | 40.0000 ±1.7900 | 31.3333 ±1.6949 | 74.1333 ±1.6001 | 57.92 |
每秒Token数 - 基准测试
使用llama-bench生成分数。包含朴素(无优化的llama-quantize
)Q4_K_M量化以供比较。
模型 | 大小 | 参数 | 后端 | 线程 | 测试 | t/s |
---|---|---|---|---|---|---|
Llama-xLAM-2-8b-fc-r-Q4_K_M | 4.10 GiB | 8.03 B | Metal,BLAS | 6 | pp512 | 314.18 ± 0.08 |
Llama-xLAM-2-8b-fc-r-Q4_K_M | 4.10 GiB | 8.03 B | Metal,BLAS | 6 | tg128 | 28.09 ± 0.03 |
Llama-xLAM-2-8b-fc-r-Q4_K_M | 4.10 GiB | 8.03 B | Metal,BLAS | 6 | pp1024+tg1024 | 44.57 ± 0.09 |
Llama-xLAM-2-8b-fc-r-Q4_K_M (朴素) | 4.58 GiB | 8.03 B | Metal,BLAS | 6 | pp512 | 327.86 ¬± 0.57 |
Llama-xLAM-2-8b-fc-r-Q4_K_M (朴素) | 4.58 GiB | 8.03 B | Metal,BLAS | 6 | tg128 | 26.15 ¬± 0.10 |
Llama-xLAM-2-8b-fc-r-Q4_K_M (朴素) | 4.58 GiB | 8.03 B | Metal,BLAS | 6 | pp1024+tg1024 | 42.97 ¬± 0.10 |
使用的指标
困惑度: NLP评估中的关键指标之一。它通过评估语言模型在给定特定词序列时预测下一个词的能力来衡量其质量。PPL为1表示预测与实际完全匹配,而大于1的值表示生成的token与预期不同的"惊讶"程度。
Kullback-Leibler (KL)散度: 衡量一个概率分布与另一个概率分布差异的统计量。在量化模型(或以任何方式改变原始张量)时,我们能最好地保留权重概率分布与原始模型的接近程度越好,因此越接近0越好。
AI2推理挑战(ARC): 评估AI模型回答需要超越模式匹配的逻辑推理的复杂科学问题的能力的基准。
HellaSwag: 更难的结尾、更长的上下文和低样本活动的情境对抗生成(有点拗口!)是一个旨在测试常识自然语言推理的基准。它要求模型预测句子最可能的结尾。
MMLU: 大规模多任务语言理解评估LLMs在57个学科(包括初等数学、美国历史、计算机科学和法律)中的一般知识和问题解决能力。
Truthful QA: 评估LLMs生成真实回答问题的能力。它识别AI模型是否能够避免生成虚假或误导性信息,特别是在人类知识容易出现误解的领域。
Winogrande: 基于Winograd模式挑战,是一个自然语言理解任务,要求模型解决涉及代词引用的句子中的歧义。
致谢
非常感谢Colin Kealty的许多贡献,并成为Huggingface上高质量量化模型的最佳来源之一,也非常感谢Georgi Gerganov在llama.cpp和ggml/gguf库上的出色工作。


