通过 LLM 模型的名称解读不同模型之间的区别

LLM 模型尺寸(参数量)

一个 LLM 模型文件的尺寸指的是其参数量。例如,Gemma 2B 表示具有 20 亿参数的 Gemma 模型。

参数 (Parameter) 是模型在训练过程中学习到的权重 (weights) 和偏置 (biases),用于控制输入数据到输出的映射关系。参数存储了模型对语言规律(如语法、语义、上下文关联)的“知识”。例如,某个参数可能决定“猫”和“狗”在特定语境下的关联强度。

参数量较大的 LLM 拥有比其较小版本更多的参数,这通常使它们能够捕捉更复杂的语言关系并处理更细微的提示。它们通常还在更大的数据集上进行训练。参数越多,模型理论上能捕捉的复杂模式越多。例如,GPT-3(175B参数)相比GPT-2(1.5B参数)能生成更连贯的长文本,处理更复杂的推理任务。

某些模型参数量比较常见,如 20 亿或 70 亿,是常见的。例如 Gemma 2B、Gemma 7B 或 Mistral 7B。模型大小类别是近似的分组。例如 Gemma 2B 大约有 20 亿个参数,但不完全精确。下图展示了HuggingFace 上的模型大小类别(这些类别并非行业标准,而是自然形成的):

虽然大多数最新一代的 LLMs(如 GPT-4 和 Gemini Pro 或 Ultra)的模型大小并未总是公开披露,但据信它们包含数百亿或数千亿个参数。并非所有模型都在其名称中标注参数数量。有些模型会以版本号作为后缀。例如,Gemini 1.5 Pro 指的是该模型的 1.5 版本(在 1 版本之后)。

LLM 参数量无法直接衡量不同模型之间的性能差距

对于不同的 LLM 模型,无法直接通过参数量衡量它们之间的性能差距。对于特定任务,较小的模型可以与较大的模型达到相同的性能。

参数效率 (Parameter Efficiency)

参数量并非越大越好。在固定计算预算下,模型参数和数据量需平衡。例如,700B参数模型搭配4.5T tokens训练可能不如更小模型(如40B参数)搭配更多数据(如12T tokens)高效。

参数量大的模型可以通过混合专家 (Mixture of Experts, MoE) 提升效率。例如,DeepSeek-R1-671B 的每个 token 的激活参数是 37B,在特定设备上(如配备显存大于 40GB 的高速GPU,内存大于 512GB的平台),其性能和运行速度可能都会超过 DeepSeek-R1-Distill-Llama-70B。


判断某个参数量的 LLM 模型能否在指定设备上运行

更大的 LLM 需要大量的存储空间和强大的计算能力来进行推理。它们需要在配备特定硬件(如 GPU、TPU)的专用高性能服务器上运行。

我们通常想知道的是:模型是否足够可以下载并在指定设备上运行?这个问题没有准确的定论,有以下原因:

  • 设备的能力在内存、GPU/CPU 规格等方面差异很大。低端安卓手机和 NVIDIA® RTX 电脑差异巨大。
  • 一个模型或其运行的框架可能针对特定硬件进行了优化。

根据经验来说,具有多大显存的 NVIDIA GPU 或是多大融合内存的 Apple Silicon Mac,就能高速运行多少 B(billion,十亿)参数的 LLM 模型的 Q4_KM 量化版本,这考虑到了为上下文预留充足的显存或融合内存;例如,NVIDIA® RTX 3070@8GB 或是 MacBook Pro M1 8GB 可以高速运行 DeepSeek-R1-Distill-Llama-8B 的 Q4_KM 版本。在显存不足的时候,保证显存+内存的总和接近 LLM 的 B(billion,十亿)参数量,通常也能运行 LLM 模型的 Q4_KM 版本,只是部分推理交给 CPU,会导致推理速度大幅下降;例如,Intel 的双 Xeon CPU 平台,配备 512GB 内存,没有 GPU 或 TPU,也能运行 DeepSeek-R1-671B 的 Q4_KM 版本,输出速度在 10 tokens/s 以下。

模型压缩技术

存在多种技术可以显著减少模型的内存需求:

  • LoRA (Low-Rank Adaptation):一种微调技术,其中预训练的权重被冻结。了解更多关于 LoRA 的信息。
  • 剪枝 (Pruning):从模型中移除不太重要的权重以减小其大小。
  • 量化 (Quantization):将权重的精度从浮点数(例如,32-bit)降低到较低位表示(例如,8-bit)。
  • 蒸馏 (Distill):训练一个较小的模型来模仿一个较大、预训练模型的行为。
  • 参数共享 (Parameter sharing):使用相同的权重来表示模型的多个部分,减少唯一参数的总数。

下文将具体讲解量化和蒸馏。

量化 (Quantization)

量化是将模型权重从高精度(如 FP16/FP32)转换为低精度(如 INT8/INT4/INT3)的过程,通过减少数值表示的位数来:

  • 减小模型体积(存储占用更低)
  • 降低内存带宽需求(推理更快)
  • 减少计算资源消耗(适合边缘设备)

量化版本命名规则

llama.cpp 的量化方案为例,名称格式一般为 **Q<位数>_<分组策略>**:

  • Q3, Q4, Q6, Q8:表示量化的位数(如 3-bit、4-bit、6-bit、8-bit)。
  • _K_L, _K_M, _K_S:表示分组量化策略,其中:
    • K:使用 k-means 聚类优化量化(非均匀量化,更适应权重分布)
    • L/M/S:分组粒度(Large/Medium/Small),即权重的分块大小:
      • 大块(L):每组包含更多权重,压缩率更高,但精度损失可能更大。
      • 小块(S):每组权重更少,保留更多细节,精度更高,但压缩率低。

常见量化版本对比

量化版本 位数 分组策略 模型体积(以7B模型为例) 精度损失 适用场景
Q2_K 2-bit K-means + 大块分组 ~2.8GB 极致压缩,低资源设备快速推理
Q3_K_L 3-bit K-means + 大块分组 ~3.3GB 较高 速度优先,接受一定精度损失
Q3_K_M 3-bit K-means + 中块分组 ~3.5GB 平衡速度和精度
Q4_K_M 4-bit K-means + 中块分组 ~4.2GB 较低 推荐默认选择,性价比最高
Q5_K_M 5-bit K-means + 中块分组 ~5.0GB 接近FP16精度,资源较充足
Q6_K 6-bit K-means + 小块分组 ~6.0GB 极低 高精度需求,牺牲部分压缩率
Q8_0 8-bit 均匀分组(无优化) ~7.5GB 可忽略 接近原始模型,用于调试或研究

关键区别

  1. 量化位宽(精度):
    • 位数越低(如 Q3_K),模型体积越小,但可能丢失更多细节(如罕见词或复杂推理能力)。
    • 位数越高(如 Q8_0),模型越接近原始FP16精度,但体积和内存需求更大。
  2. 分组策略(块大小):
    • 大块(L):压缩效率更高,但量化误差可能在组内累积(适合对长文本生成要求不高的场景)。
    • 小块(S):保留更多局部权重细节(适合需要高精度的数学推理或知识问答)。
  3. 是否使用k-means优化:
    • K 的版本(如 Q4_K_M)通过聚类优化量化区间分配,相比均匀量化(如 Q8_0)能更好地适应权重分布,减少精度损失。

实际效果对比

  • 生成质量:
    • Q4_K_M 在大多数任务(对话、摘要)中与原始模型差异较小。
    • Q3_K_L 可能在生成复杂逻辑文本时出现错误或重复。
  • 推理速度:
    • 低精度模型(如 Q3_K_M)在CPU/低端GPU上速度更快(减少内存带宽压力)。
    • 高精度模型(如 Q6_K)需要更多计算资源,适合高端GPU。

蒸馏 (Distillation)

LM 蒸馏 (Distillation) 是一种技术,用于将大型语言模型 (LLM) 的知识转移到较小的模型中。其主要目的是在保持模型性能的同时,减少模型的大小和计算资源需求。通过蒸馏技术,较小的模型可以在推理时更高效地运行,适用于资源受限的环境。

蒸馏过程

蒸馏过程通常包括以下几个步骤:

  1. 训练教师模型:首先训练一个大型且性能优越的教师模型。

  2. 生成软标签:使用教师模型对训练数据进行预测,生成软目标 (soft targets) ,这些目标包含了教师模型的概率分布信息。

  3. 训练学生模型:使用软目标 (soft targets) 和原始训练数据 (hard targets) 来训练较小的学生模型,使其能够模仿教师模型的行为。 这种方法不仅可以提高模型的效率,还可以在某些情况下提高模型的泛化能力。

蒸馏可能存在的问题

  • 信息丢失:由于学生模型比教师模型小,可能无法完全捕捉教师模型的所有知识和细节,导致信息丢失。
  • 依赖教师模型:学生模型的性能高度依赖于教师模型的质量,如果教师模型本身存在偏差或错误,学生模型可能会继承这些问题。例如,尽管参数量接近,DeepSeek-R1-0528-Qwen3-8B 比 DeepSeek-R1-Distill-Qwen-7B(后者基于 Qwen2.5)具有比较明显的性能优势。
  • 适用性限制:蒸馏技术可能不适用于所有类型的模型或任务,尤其是那些需要高精度和复杂推理的任务。