跳到主内容

🐋 使用 Llama.cpp 运行 DeepSeek R1 动态 1.58 位

非常感谢 UnslothAI 的杰出贡献!多亏了他们的努力,我们现在可以在 Llama.cpp 上运行完整的 DeepSeek-R1 671B 参数模型,采用动态 1.58 位量化形式(压缩后仅 131GB)!最棒的是什么?您再也不必担心需要大型企业级 GPU 或服务器了——现在可以在您的个人计算机上运行此模型(尽管在大多数消费级硬件上速度会较慢)。

注意

Ollama 上唯一真正的 DeepSeek-R1 模型是此处提供的 **671B 版本**:https://ollama.ac.cn/library/deepseek-r1:671b。其他版本是**蒸馏**模型。

本指南重点介绍如何使用与 **Open WebUI** 集成的 **Llama.cpp** 运行完整的 **DeepSeek-R1 动态 1.58 位量化模型**。在本教程中,我们将使用 **M4 Max + 128GB RAM** 的机器演示这些步骤。您可以根据自己的配置调整设置。


步骤 1:安装 Llama.cpp

您可以选择

步骤 2:下载 UnslothAI 提供的模型

前往 Unsloth 的 Hugging Face 页面,下载适合的 DeepSeek-R1 **动态量化版本**。在本教程中,我们将使用 **1.58 位 (131GB)** 版本,它经过高度优化,但功能却出奇地强大。

提示

了解您的“工作目录”——即运行您的 Python 脚本或终端会话的位置。模型文件默认会下载到该目录的子文件夹中,因此请务必知晓其路径!例如,如果您在 /Users/yourname/Documents/projects 中运行下面的命令,您下载的模型将保存到 /Users/yourname/Documents/projects/DeepSeek-R1-GGUF 下。

要详细了解 UnslothAI 的开发过程以及这些动态量化版本为何如此高效,请查看他们的博客文章:UnslothAI DeepSeek R1 动态量化

以下是如何通过编程方式下载模型

# Install Hugging Face dependencies before running this:
# pip install huggingface_hub hf_transfer

from huggingface_hub import snapshot_download

snapshot_download(
repo_id = "unsloth/DeepSeek-R1-GGUF", # Specify the Hugging Face repo
local_dir = "DeepSeek-R1-GGUF", # Model will download into this directory
allow_patterns = ["*UD-IQ1_S*"], # Only download the 1.58-bit version
)

下载完成后,您会看到模型文件位于如下目录结构中

DeepSeek-R1-GGUF/
├── DeepSeek-R1-UD-IQ1_S/
│ ├── DeepSeek-R1-UD-IQ1_S-00001-of-00003.gguf
│ ├── DeepSeek-R1-UD-IQ1_S-00002-of-00003.gguf
│ ├── DeepSeek-R1-UD-IQ1_S-00003-of-00003.gguf
信息

🛠️ 在后续步骤中更新路径,以**匹配您的特定目录结构**。例如,如果您的脚本位于 /Users/tim/Downloads,则 GGUF 文件的完整路径将是
/Users/tim/Downloads/DeepSeek-R1-GGUF/DeepSeek-R1-UD-IQ1_S/DeepSeek-R1-UD-IQ1_S-00001-of-00003.gguf.

步骤 3:确保 Open WebUI 已安装并运行

如果您尚未安装 **Open WebUI**,请不要担心!设置很简单。只需按照此处的 Open WebUI 文档 进行操作。安装后,启动应用程序——我们将在后续步骤中连接它,以便与 DeepSeek-R1 模型交互。

步骤 4:使用 Llama.cpp 启动模型服务

模型下载完成后,下一步是使用 **Llama.cpp 的服务器模式**运行它。开始之前

  1. 找到 llama-server 可执行文件。
    如果您从源代码构建(如步骤 1 中所述),llama-server 可执行文件将位于 llama.cpp/build/bin 中。使用 cd 命令导航到此目录

    cd [path-to-llama-cpp]/llama.cpp/build/bin

    [path-to-llama-cpp] 替换为您克隆或构建 Llama.cpp 的位置。例如

    cd ~/Documents/workspace/llama.cpp/build/bin
  2. 指向您的模型文件夹。
    使用在步骤 2 中下载的 GGUF 文件的完整路径。在启动模型服务时,指定分块 GGUF 文件的第一部分(例如,DeepSeek-R1-UD-IQ1_S-00001-of-00003.gguf)。

以下是启动服务器的命令

./llama-server \
--model /[your-directory]/DeepSeek-R1-GGUF/DeepSeek-R1-UD-IQ1_S/DeepSeek-R1-UD-IQ1_S-00001-of-00003.gguf \
--port 10000 \
--ctx-size 1024 \
--n-gpu-layers 40
提示

🔑 根据您的机器自定义参数:

  • --model/[your-directory]/ 替换为在步骤 2 中下载 GGUF 文件的路径。
  • --port服务器默认端口是 8080,但您可以根据端口可用性随意更改。
  • --ctx-size确定上下文长度(令牌数)。如果您的硬件允许,可以增加它,但要注意 RAM/VRAM 使用量的增加。
  • --n-gpu-layers设置要卸载到 GPU 的层数,以加快推理速度。确切的数量取决于您 GPU 的内存容量——请参考 Unsloth 的表格获取具体建议。

例如,如果您的模型下载到 /Users/tim/Documents/workspace,您的命令将如下所示

./llama-server \
--model /Users/tim/Documents/workspace/DeepSeek-R1-GGUF/DeepSeek-R1-UD-IQ1_S/DeepSeek-R1-UD-IQ1_S-00001-of-00003.gguf \
--port 10000 \
--ctx-size 1024 \
--n-gpu-layers 40

服务器启动后,它将在以下地址托管一个本地 OpenAI 兼容 API 端点

http://127.0.0.1:10000
信息

🖥️ Llama.cpp 服务器正在运行

Server Screenshot

运行命令后,您应该看到一条消息,确认服务器已激活并在端口 10000 上监听。

请务必保持此终端会话运行,因为它为所有后续步骤提供了模型服务。

步骤 5:将 Llama.cpp 连接到 Open WebUI

  1. 在 Open WebUI 中转到管理设置
  2. 导航到连接 > OpenAI 连接。
  3. 为新连接添加以下详细信息
    • URL:http://127.0.0.1:10000/v1(如果在 docker 中运行 Open WebUI,则为 http://host.docker.internal:10000/v1
    • API 密钥:none
信息

🖥️ 在 Open WebUI 中添加连接

Connection Screenshot

运行命令后,您应该看到一条消息,确认服务器已激活并在端口 10000 上监听。

保存连接后,您就可以直接从 Open WebUI 开始查询 **DeepSeek-R1** 了!🎉


示例:生成响应

您现在可以使用 Open WebUI 的聊天界面与 **DeepSeek-R1 动态 1.58 位模型**进行交互。

Response Screenshot


注意事项

  • 性能
    在个人硬件上运行 DeepSeek-R1 这样庞大的 131GB 模型会很慢。即使使用我们的 M4 Max (128GB RAM),推理速度也很一般。但它能够运行这一事实本身就证明了 UnslothAI 的优化成果。

  • 显存/内存要求
    确保有足够的显存和系统内存以获得最佳性能。对于低端 GPU 或纯 CPU 配置,预计速度会较慢(但仍然可行!)。


感谢 **UnslothAI** 和 **Llama.cpp**,现在个人终于可以运行最大的开源推理模型之一 **DeepSeek-R1**(1.58 位版本)了。虽然在消费级硬件上运行此类模型具有挑战性,但无需庞大计算基础设施即可运行的能力是一个重要的技术里程碑。

⭐ 非常感谢社区推动开源 AI 研究的边界。

祝您实验愉快!🚀