🦙Llama 4:如何运行和微调

如何使用我们的动态 GGUF 在本地运行 Llama 4,与标准量化相比可恢复准确率。

Llama-4-Scout 模型有 1090 亿参数,而 Maverick 有 4020 亿参数。完整的未量化版本需要 113GB 磁盘空间,而 1.78-bit 版本只需 33.8GB(体积减少 75%)。 Maverick (402Bs)从 422GB 降到了仅 122GB(-70%)。

Scout 1.78-bit 可放入一块 24GB VRAM 的 GPU 中,实现约 20 tokens/秒的快速推理。Maverick 1.78-bit 可放入 2 块 48GB VRAM 的 GPU 中,实现约 40 tokens/秒的快速推理。

对于我们的动态 GGUF,为了确保准确率和体积之间的最佳权衡,我们不会量化所有层,而是有选择地将例如 MoE 层量化到更低 bit,并将注意力层和其他层保留为 4 位或 6 位。

我们所有的 GGUF 模型都使用校准数据进行量化(Scout 约 25 万个 token,Maverick 约 100 万个 token),这将比标准量化提高准确率。Unsloth imatrix 量化与 llama.cpp 和 Open WebUI 等流行推理引擎完全兼容。

Scout - 采用最优配置的 Unsloth 动态 GGUF:

MoE 比特数
类型
磁盘大小
链接
详情

1.78bit

IQ1_S

33.8GB

2.06/1.56bit

1.93bit

IQ1_M

35.4GB

2.5/2.06/1.56

2.42bit

IQ2_XXS

38.6GB

2.5/2.06bit

2.71bit

Q2_K_XL

42.2GB

3.5/2.5bit

3.5bit

Q3_K_XL

52.9GB

4.5/3.5bit

4.5bit

Q4_K_XL

65.6GB

5.5/4.5bit

为获得最佳效果,请使用 2.42-bit(IQ2_XXS)或更大的版本。

Maverick - 采用最优配置的 Unsloth 动态 GGUF:

MoE 比特数
类型
磁盘大小
HF 链接

1.78bit

IQ1_S

122GB

1.93bit

IQ1_M

128GB

2.42-bit

IQ2_XXS

140GB

2.71-bit

Q2_K_XL

151B

3.5-bit

Q3_K_XL

193GB

4.5-bit

Q4_K_XL

243GB

⚙️ 官方推荐设置

根据 Meta,以下是推理的推荐设置:

  • 温度 0.6

  • Min_P 设为 0.01(可选,但 0.01 效果很好,llama.cpp 默认是 0.1)

  • Top_P 0.9

  • 聊天模板/提示格式:

📖 教程:如何在 llama.cpp 中运行 Llama-4-Scout

  1. 获取最新的 llama.cppGitHub 这里。你也可以按照下面的构建说明操作。将 -DGGML_CUDA=ON 改为 -DGGML_CUDA=OFF 如果你没有 GPU,或者只想进行 CPU 推理。 对于 Apple Mac / Metal 设备,设置 -DGGML_CUDA=OFF 然后照常继续——Metal 支持默认开启。

  1. 通过以下方式下载模型(在安装 pip install huggingface_hub hf_transfer )。你可以选择 Q4_K_M,或其他量化版本(例如 BF16 全精度)。更多版本见: https://huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct-GGUF

  1. 运行模型并尝试任意提示。

  2. 编辑 --threads 32 来设置 CPU 线程数, --ctx-size 16384 用于上下文长度(Llama 4 支持 1000 万上下文长度!), --n-gpu-layers 99 来设置 GPU 卸载多少层。如果你的 GPU 显存不足,请尝试调整它。如果你只进行 CPU 推理,也请移除它。

在测试方面,不幸的是,我们无法让完整的 BF16 版本(即无论是否量化)正确完成 Flappy Bird 游戏或 Heptagon 测试。我们尝试了许多推理提供方,无论是否使用 imatrix,也使用了他人的量化版本,并使用了常规的 Hugging Face 推理,但这个问题仍然存在。

我们发现,多次运行并要求模型修复和查找 bug,能够解决大多数问题!

对于 Llama 4 Maverick,最好使用 2 块 RTX 4090(2 x 24GB)

🕵️ 有趣的见解和问题

在对 Llama 4 Maverick(大模型)进行量化时,我们发现第 1、第 3 和第 45 个 MoE 层无法正确校准。Maverick 对每个奇数层使用交错的 MoE 层,因此结构为 Dense->MoE->Dense,依此类推。

我们尝试在校准数据集中加入更多不常见的语言,并尝试使用更多 token(100 万个)进行校准,而 Scout 只有 25 万个 token,但我们仍然发现问题。我们决定将这些 MoE 层保留为 3bit 和 4bit。

对于 Llama 4 Scout,我们发现不应量化视觉层,并将 MoE 路由器和其他一些层保持为未量化状态——我们将这些上传到 https://huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct-unsloth-dynamic-bnb-4bit

我们还必须转换 torch.nn.Parameter 改为 torch.nn.Linear 用于 MoE 层,以允许进行 4bit 量化。这也意味着我们必须重写并修补通用的 Hugging Face 实现。我们将量化版本上传到 https://huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct-unsloth-bnb-4bithttps://huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct-unsloth-bnb-8bit 用于 8bit。

Llama 4 现在也使用分块注意力——本质上就是滑动窗口注意力,但通过不关注 8192 边界之前的 token,效率略高一些。

最后更新于

这有帮助吗?