本文档详细介绍了评估 LLM 性能的方法和模型量化技术,以优化推理。这两个组成部分对于 LLM 的开发生命周期至关重要——评估为模型改进提供反馈,而量化则能够有效地在资源受限的硬件上进行部署。
有关训练 LLM 的信息,请参阅 训练管道。有关部署策略,请参阅 部署与优化。
评估大型语言模型是一项重要但复杂的任务,它指导着数据生成和训练过程。有效的评估提供了需要改进的方面的反馈,可以利用这些反馈来修改数据混合、质量过滤器和训练参数。
来源: README.md248-253
自动化基准测试使用经过精心策划的数据集和预定义指标来评估模型在特定任务上的表现
优点
局限性
来源: README.md250
人工评估涉及人们直接评估模型输出
优点
局限性
来源: README.md251
使用其他模型来评估输出
优点
局限性
来源: README.md252
来源: README.md253
一些框架有助于简化评估过程
| 框架 | 描述 | 用例 |
|---|---|---|
| EleutherAI 的评估工具包 | 支持 200 多个任务的综合框架 | 自动化基准测试 |
| LightEval | 具有基于模型的指标的快速评估框架 | 在有限硬件上进行高效评估 |
| 聊天机器人竞技场 | LLM 输出的人工比较平台 | 大规模人工评估 |
| LLM AutoEval | 使用 RunPod 进行自动评估 | 基于云的评估 |
| Ragas | 专门用于 RAG 系统评估 | 检索和生成质量 |
来源: README.md257-261
量化是将模型参数和激活转换为较低精度格式的过程。这项技术可以减少计算和内存需求,从而使 LLM 能够在消费者硬件上运行,而性能损失极小。
来源: README.md267-268
不同的精度格式在模型大小和准确性之间提供了不同的权衡
| 格式 | 比特 | 尺寸缩减 | 质量影响 | 典型用例 |
|---|---|---|---|---|
| FP32 | 32 | 基线 | 无 | 训练,参考 |
| FP16 | 16 | 2 倍 | 可忽略 | GPU 推理 |
| BF16 | 16 | 2 倍 | 最小 | 训练,推理 |
| INT8 | 8 | 4 倍 | 轻微 | 服务器部署 |
| INT4 | 4 | 8 倍 | 中等 | 消费级硬件 |
| INT3 | 3 | ~10.7 倍 | 显著 | 移动设备 |
| INT2 | 2 | 16 倍 | 重大 | 超轻量级 |
来源: README.md267-268
来源: README.md269-272
最简单的量化方法包括
这些技术在 8 位量化时效果良好,但在没有额外优化的情况下,在较低的位宽会导致准确性显著下降。
来源: README.md269
已经开发出几种先进的方法,以在较低精度下实现更好的性能
GGUF & llama.cpp
GPTQ & EXL2
AWQ(激活感知权重量化)
SmoothQuant & ZeroQuant
来源: README.md269-272
来源: README.md267-272
该存储库提供了多种量化工具和笔记本
| 工具 | 描述 | 用例 |
|---|---|---|
| AutoQuant | 将 LLM 量化为 GGUF、GPTQ、EXL2、AWQ 和 HQQ 格式 | 各种格式的一键量化 |
| 量化入门 | 8 位量化原理教程 | 学习基本的量化概念 |
| 使用 GPTQ 进行 4 位量化 | 使用 GPTQ 算法进行量化的指南 | 高效的 4 位量化 |
| GGUF 和 llama.cpp | 将模型转换为 GGUF 格式 | CPU 友好型量化 |
| ExLlamaV2 | 用于运行 LLM 的快速库 | 高性能量化推理 |
来源: README.md34 README.md53-56
评估和量化在 LLM 的整体开发生命周期中发挥着至关重要的作用
来源: README.md248-253 README.md267-272
评估结果有助于识别
来源: README.md253
量化使得
来源: README.md267
来源: README.md248
来源: README.md267-272
来源: README.md31 README.md257-261
来源:README.md34 README.md273-279
评估和量化是 LLM 开发生命周期中的两个关键阶段。有效的评估提供了指导数据和训练方法改进所需的反馈,而量化则通过降低计算和内存需求,使得部署成为可能。通过掌握这些技术,LLM 科学家可以开发出更强大的模型,并高效地部署到各种硬件上。