Grok 2
在本地运行 xAI 的 Grok 2 模型!
您现在可以运行 Grok 2 (又名 Grok 2.5),由 xAI 提供的 2700 亿参数模型。全精度需要 539GB,而 Unsloth 的动态 3 位版本将大小缩减到仅 118GB (减少 75%)。GGUF: Grok-2-GGUF
最新的 3 位 Q3_K_XL 模型可在单台 128GB Mac 或 24GB 显存 + 128GB 内存上运行,能达到 每秒 5+ 令牌 的推理速度。感谢 llama.cpp 团队和社区 对 Grok 2 的支持 并使这成为可能。我们也很高兴在此过程中能略尽绵力!
所有上传均使用 Unsloth Dynamic 2.0 在 SOTA 的 5-shot MMLU 和 KL 散度性能上表现优异,这意味着您可以以极小的精度损失运行量化的 Grok 语言模型。
⚙️ 推荐设置
该 3 位动态量化占用 118GB(126GiB)磁盘空间——这在 128GB 内存的统一内存 Mac 或 1x24GB 显卡加 128GB 内存的配置中运行良好。建议至少有 120GB 内存以运行此 3 位量化模型。
您必须使用 --jinja 用于 Grok 2。如果不使用,您可能会得到不正确的结果 --jinja
8 位量化大约为 ~300GB,可适配单卡 80GB(将 MoE 层卸载到内存)的 GPU。如果同时有额外 200GB 内存,使用该配置预计可达到约每秒 5 令牌。要了解如何提高生成速度并适应更长上下文, 在此阅读.
尽管不是必须,但为了最佳性能,请确保您的显存 + 内存之和等于您下载的量化模型的大小。如果不够,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 中运行
安装指定的 llama.cpp 用于 Grok 2 的 PR 在 此处的 GitHub。您也可以按照下面的构建说明进行。若 -DGGML_CUDA=ON 更改为 -DGGML_CUDA=OFF 如果您没有 GPU 或仅想要在 CPU 上进行推理。 对于 Apple Mac / Metal 设备,设置 -DGGML_CUDA=OFF 然后照常继续 - Metal 支持默认启用。
如果您想直接使用 llama.cpp 直接加载模型,您可以执行下面操作:(:Q3_K_XL)是量化类型。您也可以通过 Hugging Face 下载(第 3 点)。这类似于 ollama run 类似。使用 export LLAMA_CACHE="folder" 来强制 llama.cpp 将模型保存到指定位置。请记住该模型最大上下文长度仅为 128K。
请试用 -ot ".ffn_.*_exps.=CPU" 将所有 MoE 层卸载到 CPU!这实际上允许您将所有非 MoE 层放在一块 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 层。
通过以下方式下载模型(在安装 pip install huggingface_hub hf_transfer 之后)。您可以选择 UD-Q3_K_XL (动态 3 位量化)或其他量化版本,例如 Q4_K_M 。我们 建议使用我们的 2.7bit 动态量化 UD-Q2_K_XL 或以上以在大小与精度之间取得平衡.
您可以编辑 --threads 32 用于设置 CPU 线程数, --ctx-size 16384 用于上下文长度, --n-gpu-layers 2 用于指定将多少层卸载到 GPU。若 GPU 出现内存不足,请尝试调整它。若仅使用 CPU 推理,请移除此项。
模型上传
我们所有的上传 ——包括那些不是基于 imatrix 或动态的,都使用我们的校准数据集,该数据集专门针对对话、编码和语言任务进行了优化。
🏂 "content": [{"type": "text", "text": "用 Python 创建一个 Fibonacci 函数并求 fib(20)。"}],
如果你有更多显存,可以尝试卸载更多 MoE 层,或将整个层本身卸载(offload)。
通常, -ot ".ffn_.*_exps.=CPU" 会将所有 MoE 层卸载到 CPU!这实际上允许你将所有非 MoE 层放在一块 GPU 上,从而提高生成速度。如果你有更多 GPU 容量,可以自定义正则表达式以适配更多层。
如果你有稍多的 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 版本 还引入了高吞吐量模式。使用 llama-parallel。在此处阅读更多内容 这里。你也可以 例如将 KV 缓存量化为 4 bit 将 KV 缓存量化为 4 位
例如以减少 VRAM / RAM 数据移动,这也可能使生成过程更快。
要适配更长的上下文,你可以使用 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 缓存进行量化,但你需要 在编译 llama.cpp 时启用 Flash Attention 支持 通过 -DGGML_CUDA_FA_ALL_QUANTS=ON,并使用 --flash-attn --flash-attn 来启用它。然后您可以与 :
--cache-type-k 一起使用 --cache-type-v f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1
最后更新于
这有帮助吗?

