square-x-twitterGrok 2

在本地运行 xAI 的 Grok 2 模型!

您现在可以运行 Grok 2 (又名 Grok 2.5),xAI 的 2700 亿参数模型。全精度需要 539GB,而 Unsloth 动态 3 位版本将大小缩减到仅 118GB (减少 75%)。GGUF: Grok-2-GGUFarrow-up-right

3 位 Q3_K_XL 模型可在单台 128GB Mac24GB 显存 + 128GB 内存上运行,达到 每秒 5+ 标记 的推理速度。感谢 llama.cpp 团队和社区 支持 Grok 2arrow-up-right 并使这成为可能。我们也很高兴在此过程中提供了一点帮助!

所有上传都使用 Unsloth Dynamic 2.0 在 SOTA 的 5-shot MMLU 和 KL 散度性能方面,意味着您可以以最低的精度损失运行量化的 Grok 语言模型。

在 llama.cpp 中运行 教程

⚙️ 推荐设置

这款 3 位动态量化在磁盘上使用 118GB(126GiB)——这在 128GB RAM 统一内存的 Mac 或 1x24GB 显卡加 128GB 内存的系统上运行良好。建议至少有 120GB 内存来运行此 3 位量化版本。

circle-exclamation

8 位量化大约为 300GB,可适配单张 80GB GPU(MoE 层卸载到 RAM 时)。如果您还有额外 200GB RAM,使用此配置预计约每秒 5 个标记。要了解如何提高生成速度并适配更长上下文, 请在此处阅读.

circle-info

虽然不是必须,但为了获得最佳性能,建议使您的 VRAM + RAM 总和等于您下载的量化模型大小。如果不是,使用 llama.cpp 的硬盘/SSD 卸载也能工作,只是推理会更慢。

采样参数

  • Grok 2 具有 128K 的最大上下文长度,因此,请使用 131,072 或更少的上下文。

  • 使用 --jinja 用于 llama.cpp 变体

没有官方的模型采样参数,因此对于大多数模型可以使用标准默认值:

  • 设置 temperature = 1.0

  • Min_P = 0.01 (可选,但 0.01 表现良好,llama.cpp 的默认值是 0.1)

运行 Grok 2 教程:

当前您只能在 llama.cpp 中运行 Grok 2。

✨ 在 llama.cpp 中运行

1

安装特定的 llama.cpp Grok 2 的 PR 在 GitHub 这里arrow-up-right。您也可以按照下面的构建说明操作。将 -DGGML_CUDA=ON 更改为 -DGGML_CUDA=OFF 如果您没有 GPU 或仅想要 CPU 推理。

2

如果您想直接使用 llama.cpp 直接加载模型,您可以如下操作:(:Q3_K_XL)是量化类型。您也可以通过 Hugging Face(第 3 点)下载。这类似于 ollama run 。使用 export LLAMA_CACHE="folder" 来强制 llama.cpp 保存到特定位置。请记住模型的最大上下文长度为 128K。

circle-info

请尝试 -ot ".ffn_.*_exps.=CPU" 将所有 MoE 层卸载到 CPU!这实际上允许您将所有非 MoE 层放在 1 个 GPU 上,从而提高生成速度。如果您有更多 GPU 容量,可以定制正则表达式以适配更多层。

如果您有更多一些的 GPU 内存,尝试 -ot ".ffn_(up|down)_exps.=CPU" 这会将上投和下投的 MoE 层卸载。

尝试 -ot ".ffn_(up)_exps.=CPU" 如果您还有更多 GPU 内存。此选项仅卸载上投 MoE 层。

最后,通过卸载所有层使用 -ot ".ffn_.*_exps.=CPU" 这使用最少的 VRAM。

您也可以自定义正则表达式,例如 -ot "\\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\\.ffn_(gate|up|down)_exps.=CPU" 表示从第 6 层开始卸载 gate、up 和 down 的 MoE 层。

3

通过以下方式下载模型(在安装 pip install huggingface_hub hf_transfer 之后)。您可以选择 UD-Q3_K_XL (动态 3 位量化)或其他量化版本如 Q4_K_M 。我们 建议使用我们的 2.7bit 动态量化 UD-Q2_K_XL 或以上以在大小和准确性之间取得平衡.

4

您可以编辑 --threads 32 以设置 CPU 线程数量, --ctx-size 16384 以设置上下文长度, --n-gpu-layers 2 以设置要在多少层上进行 GPU 卸载。如果 GPU 内存不足,请尝试调整它。如果仅使用 CPU 推理,也可移除该项。

模型上传

我们所有的上传 ——包括那些不是基于 imatrix 或动态的,均使用我们的校准数据集,该数据集专门针对会话、编码和语言任务进行了优化。

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

1.66 位

81.8 GB

1.92/1.56 位

1.78 位

88.9 GB

2.06/1.56 位

1.93 位

94.5 GB

2.5/2.06/1.56

2.42 位

99.3 GB

2.5/2.06 位

2.71 位

112 GB

3.5/2.5 位

3.12 位

117 GB

3.5/2.06 位

3.5 位

126 GB

4.5/3.5 位

4.5 位

155 GB

5.5/4.5 位

5.5 位

191 GB

6.5/5.5 位

提高生成速度

如果您有更多 VRAM,可以尝试卸载更多 MoE 层,或将整层卸载。 -ot ".ffn_.*_exps.=CPU" 通常,

如果您有更多一些的 GPU 内存,尝试 -ot ".ffn_(up|down)_exps.=CPU" 这会将上投和下投的 MoE 层卸载。

尝试 -ot ".ffn_(up)_exps.=CPU" 如果您还有更多 GPU 内存。此选项仅卸载上投 MoE 层。

您也可以自定义正则表达式,例如 -ot "\\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\\.ffn_(gate|up|down)_exps.=CPU" 表示从第 6 层开始卸载 gate、up 和 down 的 MoE 层。

最新的 llama.cpp 发行版arrow-up-right 也引入了高吞吐量模式。使用 Llama.cpp 还引入了高吞吐量模式。使用llama-parallel 。更多信息请阅读arrow-up-right此处 。您还可以将 KV 缓存 量化到 4bit,例如以减少 VRAM / RAM 数据移动,这也能使生成过程更快。

📐 如何适配长上下文(完整 128K)

要适配更长的上下文,您可以使用 KV 缓存量化 将 K 与 V 缓存量化为更低位数。这也可以通过减少 RAM / VRAM 数据移动来提高生成速度。K 量化的可选项(默认是 f16)包括以下内容。

--cache-type-k f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1

您应使用 _1 变体以稍微提高精度,尽管速度会稍慢。例如 q4_1, q5_1

您也可以对 V 缓存进行量化,但您需要 用 Flash Attention 支持重新编译 llama.cpp 通过 -DGGML_CUDA_FA_ALL_QUANTS=ON,并使用 --flash-attn 来启用它。然后您可以与 --cache-type-k :

--cache-type-v f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1

最后更新于

这有帮助吗?