如何本地运行 GGUF 格式的 LLM 模型?

494 阅读3分钟

记录如何本地运行 GGUF 格式的 LLM 模型. 这里以最新的 DeepSeek-R1-Distill-Qwen-32B-GGUF 模型为例.

什么是 GGUF

GGUF(GGML Universal File)是一种专为大型语言模型(LLM)设计的文件格式。它旨在解决大型模型在实际应用中遇到的存储效率、加载速度、兼容性和扩展性等问题,从而简化 LLM 的使用和部署。

GGUF 的主要特点和优势

  • 高效存储:  GGUF 格式优化了数据的存储方式,减少了存储空间的占用,这对于包含大量参数的大型模型尤为重要。它采用紧凑的二进制编码格式和优化的数据结构来高效地保存模型参数(权重和偏差)。
  • 单文件部署:  它们可以轻松分发和加载,加载模型所需的所有信息都包含在模型文件中,不需要任何外部文件来获取附加信息。
  • 快速加载:  GGUF 格式支持快速加载模型数据(使用 mmap),这对于需要即时响应的应用场景非常有用,例如在线聊天机器人或实时翻译系统。
  • 跨平台兼容性:  GGUF 兼容多种编程语言,例如 Python 和 R,非常方便在不同平台和环境中使用。大部分语言都可以使用少量代码轻松加载和保存模型,无需外部库。
  • 支持微调:  GGUF 支持微调,允许用户根据特定的应用场景调整 LLM,并存储跨应用部署模型的提示模板。
  • 取代 GGML:  GGUF 是 GGML 的替代者。GGML 由于在灵活性和扩展性方面存在一些限制,已被弃用,由 GGUF 取代。

GGUF 的应用

GGUF 格式的模型文件可以用于各种应用场景,例如:

  • 本地部署 LLM:  GGUF 格式使得在消费级计算机硬件(包括 CPU 和 GPU)上运行 LLM 成为可能。
  • 移动设备上的 LLM 推理:  由于其高效的存储和加载特性,GGUF 也适用于在移动设备上进行 LLM 推理。
  • 快速原型开发:  GGUF 使得开发者可以更快速地加载和测试不同的 LLM 模型。

总而言之,GGUF 是一种重要的 LLM 文件格式,它通过提高存储效率、加载速度和兼容性,简化了 LLM 的使用和部署,并有望成为未来大模型文件标准格式之一。

那些框架支持 GGUF

image.png

可以在 huggingface 上面寻找模型哦。

image.png

注意这个是个合集包, 里面有 Q2-Q8 的量化版本, 选中你喜欢的量化版本, 点击这个下载按钮即可. 不需要全部下载.

使用 llama.cpp 转换为 GGUF

首先下载 llama.cpp 的源码, 然后编译.

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
cmake -B build
cmake --build build --config Release -j 

如果你的电脑没有 cmake, 请自己搜索如何安装 cmake. 问问 LLM 是好方法.

直接运行编译好的 llama.cpp 即可.

./build/bin/llama-server -m /data/unslouth/DeepSeek-R1-Distill-Qwen-32B-GGUF/DeepSeek-R1-Distill-Qwen-32B-Q8_0.gguf --host 0.0.0.0 --port 9990

在浏览器访问你指定的 IP 和端口, 例如 http://192.168.1.2:9990 即可.

image.png