🦙Llama 4:如何运行与微调

如何使用我们的动态 GGUF 在本地运行 Llama 4,该方法相较于标准量化能恢复精度。

Llama-4-Scout 模型有 1090 亿参数,而 Maverick 有 4020 亿参数。未量化的完整版本需要 113GB 磁盘空间,而 1.78 位版本使用 33.8GB(大小减小 75%)。 Maverick (4020 亿)从 422GB 降到仅 122GB(-70%)。

circle-check

Scout 1.78 位可在 24GB 显存的 GPU 中运行,实现约 20 tokens/秒 的快速推理。Maverick 1.78 位可在 2x48GB 显存的 GPU 中运行,实现约 40 tokens/秒 的快速推理。

对于我们的动态 GGUF,为了在准确性和尺寸之间取得最佳平衡,我们并不对所有层进行量化,而是选择性地对例如 MoE 层量化到更低位数,并将注意力层和其他层保留在 4 或 6 位。

circle-info

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

Scout - Unsloth 动态 GGUF,带有最佳配置:

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

1.78 位

IQ1_S

33.8GB

2.06/1.56 位

1.93 位

IQ1_M

35.4GB

2.5/2.06/1.56

2.42 位

IQ2_XXS

38.6GB

2.5/2.06 位

2.71 位

Q2_K_XL

42.2GB

3.5/2.5 位

3.5 位

Q3_K_XL

52.9GB

4.5/3.5 位

4.5 位

Q4_K_XL

65.6GB

5.5/4.5 位

circle-info

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

Maverick - Unsloth 动态 GGUF,带有最佳配置:

MoE 位数
类型
磁盘大小
HF 链接

1.78 位

IQ1_S

122GB

1.93 位

IQ1_M

128GB

2.42 位

IQ2_XXS

140GB

2.71 位

Q2_K_XL

151B

3.5 位

Q3_K_XL

193GB

4.5 位

Q4_K_XL

243GB

⚙️ 官方推荐设置

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

  • 温度(Temperature)设为 0.6

  • Min_P 为 0.01(可选,但 0.01 表现良好,llama.cpp 默认为 0.1)

  • Top_P 设为 0.9

  • 聊天 模板/提示 格式:

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

  1. 获取最新的 llama.cpp此处 GitHubarrow-up-right。您也可以按下面的构建说明进行。若要更改 -DGGML_CUDA=ON-DGGML_CUDA=OFF 若您没有 GPU 或仅想要 CPU 推理,请这样设置。

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

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

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

circle-check
circle-info

在测试方面,遗憾的是我们无法让完整的 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 等模式。

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

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

我们还不得不转换 torch.nn.Parametertorch.nn.Linear 以便对 MoE 层进行 4 位量化。这也意味着我们不得不重写并修补通用的 Hugging Face 实现。我们将量化后的版本上传到 https://huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct-unsloth-bnb-4bitarrow-up-righthttps://huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct-unsloth-bnb-8bitarrow-up-right 用于 8 位。

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

最后更新于

这有帮助吗?