DeepSeek部署入门教程!一键本地推理,DeepSeek-R1 蒸馏模型 + llama.cpp 部署教程!

前言

在当今快速发展的 AI 领域,本地运行大型语言模型(LLM)的需求日益增长。llama.cpp 是一个高性能的 C/C++ 库,专门用于运行 LLM,支持多种硬件加速选项。本文将详细介绍如何使用 llama.cpp 在本地运行 DeepSeek-R1 蒸馏模型(1.5B-GGUF),帮助您在消费级硬件上实现高效推理。

一、环境准备

在开始之前,需要确保开发环境已经准备好。这包括安装必要的工具和库,以及配置好适合的硬件环境。

1. 下载llama.cpp

首先,需要从 GitHub 克隆 llama.cpp 仓库。llama.cpp 提供了简洁的 API 和高效的内存管理,非常适合在本地运行复杂的模型。

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp

执行如下:
在这里插入图片描述

2. 编译llama.cpp

根据您的硬件配置,选择合适的编译命令。llama.cpp支持CPU和GPU两种运行模式,您可以根据需求选择。

  • CPU 构建(适用于无GPU环境):
    如果您的设备没有GPU,或者您希望仅使用CPU进行推理,可以使用以下命令进行编译:

    cmake -B build
    cmake --build build --config Release
    
    

    这将生成适用于CPU的可执行文件。

  • GPU 构建(支持CUDA加速):
    如果您的设备支持CUDA,并且您希望利用GPU加速模型推理,可以使用以下命令:

    cmake -B build -DGGML_CUDA=ON
    cmake --build build --config Release
    
    

执行如下:
在这里插入图片描述

3. 安装相关依赖

为了运行模型并使用相关的功能,您需要安装一些Python依赖。这些依赖将帮助您下载模型文件,并在Python环境中与模型进行交互。
使用modelscope库可以方便地下载模型文件,我们需要先安装modelscope:

pip install modelscope

安装如下:
在这里插入图片描述

安装openai,方便后面代码使用openai风格的API接口

pip install openai==0.28

安装如下:
在这里插入图片描述

4. 准备GGUF模型文件

在运行模型之前,需要获取模型文件。DeepSeek-R1蒸馏模型是一个经过优化的版本,适合在本地运行,同时保持较高的推理性能。
在这里插入图片描述

我们从modelscope仓库下载DeepSeek-R1蒸馏版模型。下面我们以Q6_K量化为例,展示如何下载模型文件。

modelscope download --model unsloth/DeepSeek-R1-Distill-Qwen-1.5B-GGUF DeepSeek-R1-Distill-Qwen-1.5B-Q6_K.gguf --local_dir /root/autodl-tmp/models

完整如下:
在这里插入图片描述

下载完成后,模型文件将保存到models目录。
在这里插入图片描述

直接下载:如果你喜欢直接下载文件,可以通过以下链接手动下载GGUF文件,并将其保存到models目录:

二、启动模型服务(一键启动)

在下载并准备好了模型文件之后,接下来需要启动模型服务。llama.cpp提供了一个轻量级的HTTP服务器,可以方便地运行和访问模型。

根据您的操作系统和硬件配置,选择合适的命令启动模型服务:

  • Windows示例(使用预编译二进制)
    如果您使用的是Windows系统,并且已经下载了预编译的二进制文件,可以使用以下命令启动服务器:
start cmd.exe /k "llama-server.exe -m models/DeepSeek-R1-Distill-Qwen-1.5B-Q6_K.gguf -c 15000 -ngl 999"

Linux/Mac示例(源码编译后)
如果您使用的是Linux或Mac系统,并且已经从源码编译了llama.cpp,可以使用以下命令启动服务器:

./build/bin/llama-server -m /root/autodl-tmp/models/DeepSeek-R1-Distill-Qwen-1.5B-Q6_K.gguf --port 8080 -ngl 40

启动完成如下:
在这里插入图片描述

关键参数说明

  • -c 15000:设置上下文长度(根据内存调整)。上下文长度决定了模型在推理时可以处理的最大文本长度。
  • -ngl 999:设置GPU层数(设为0则纯CPU运行)。如果您希望利用GPU加速,可以根据您的硬件配置调整这个参数。
  • --host 127.0.0.1:绑定本地端口。这将使服务器仅在本地运行,确保安全性。

在启动服务后,您可以通过以下方式验证模型是否正常运行:

使用验证(一):浏览器界面体验

打开浏览器并访问http://127.0.0.1:8080,您应该能够看到一个简单的Web界面,用于测试模型的推理功能。
在这里插入图片描述

使用验证(二):bash脚本调用API

在命令行窗口,可以使用以下脚本:

curl http://localhost:8080/v1/chat/completions \
 -H "Content-Type: application/json" \
 -d '{
"model": "DeepSeek-R1-Distill-Qwen-1.5B",
"messages": [{"role": "user", "content": "请介绍一下deepseek"}],
"temperature": 0
}'


模型返回如下:

{"choices":[{"finish_reason":"stop","index":0,"message":{"role":"assistant","content":"<think>\n\n</think>\n\n深度求索人工智能基础技术研究有限公司(简称“深度求索”或“DeepSeek”),成立于2023年,是一家专注于实现AGI的中国公司。"}}],"created":1740921610,"model":"DeepSeek-R1-Distill-Qwen-1.5B","system_fingerprint":"b4798-1782cdfe","object":"chat.completion","usage":{"completion_tokens":42,"prompt_tokens":7,"total_tokens":49},"id":"chatcmpl-cmfV78hIDgvBQkL1kh6LivxpthPOgA3p","timings":{"prompt_n":5,"prompt_ms":24.283,"prompt_per_token_ms":4.8566,"prompt_per_second":205.90536589383518,"predicted_n":42,"predicted_ms":173.381,"predicted_per_token_ms":4.128119047619047,"predicted_per_second":242.24107601178906}}

使用验证(三):Python脚本调用API调用

在Python环境中使用模型,可以使用以下脚本:

import openai

openai.api_base = "http://127.0.0.1:8080/v1"
openai.api_key = "EMPTY"  # Not used

response = openai.Completion.create(
model="local",
prompt="What is 1+1?"
)

print(response.choices[0].text)

这将调用模型并输出推理结果,如下:

 *and* 1+1.
Wait, no, that's just one question. Maybe I should try another approach. Wait, perhaps I'm overcomplicating things.

Actually, I need to solve the equation: 1+1=10 in some base. Hmm, okay, so let's think about number bases. In base 10, we know that 1+1=2. But in other bases, the representation changes. So, if I have the equation 1+1=10 in some base, what would that base be?

Wait, so 10 in base b is equal to 1*b + 0 = b in base 10. Similarly, 1+1=2 in base 10. So, in the equation, 1+1=10 in base b translates to 2 = b in base 10. So, solving for b, we get b=2. So, the base is 2. Hmm, that seems straightforward, but maybe I'm missing something.

Alternatively, maybe the equation isn't 1+1=10 in base b, but perhaps 1+1=10 in base 10? No, that doesn't make sense because in base 10, 1+1=2, which isn't 10. So, that can't be. So, I think my initial reasoning is correct.

But just to double-check, let's see: if in base b, 1+1 equals 10, then in base 10, this would mean 1*b + 1 = 1*b + 0? Wait, no, 10 in base b is equal to 1*b + 0. So, 1+1=2, but 10 in base b is equal to b. So, 2 must equal b. Therefore, b is 2.

But, just to make sure I haven't overlooked something, let me think about another approach. In base b, the digits must satisfy 0 ≤ digit < b. So, in the equation 1+1=10, the digits are 1,1, and 0. In base 2, the digits can only be 0 or 1, which is fine because the digits in the equation are 1 and 0. So, base 2 is acceptable.

Another way to think about it: when adding 1 and 1 in base b, if the result is 10, which is equal to b in base 10. So, since 1+1=2 in base 10, that must be equal to b. Therefore, b=2.

Alternatively, maybe we can consider that in base b, the number 10 represents b in base 10. So, 1+1=2, and in base b, 2 must equal 10, meaning that 2= b. Hence, b=2.

So, after thinking through different angles, I'm confident that the base is 2.

**Final Answer**
The base is \boxed{2}.
</think>

To solve the equation \(1 + 1 = 10\) in some base, we need to determine the base \(b\) such that the equation holds true.

1. In any base \(b\), the number \(10\) represents \(b\) in base 10.
2. The equation \(1 + 1 = 10\) translates to \(1 + 1 = b\) in base 10.
3. Simplifying this, we get \(2 = b\).

Thus, the base \(b\) is 2. This is confirmed because in base 2, the number \(10\) represents 2 in base 10, and the addition \(1 + 1\) in base 2 results in 10.

Therefore, the base is \(\boxed{2}\).

三、性能优化与问题排查

在运行模型时,您可能会遇到一些性能问题或错误。以下是一些优化建议和常见问题的解决方案:

1. 硬件适配建议

  • 显存不足:如果您遇到显存不足的问题,可以尝试降低-ngl值(减少GPU层数),或者使用低量化版本(如Q4_K_M)。低量化版本可以在减少内存占用的同时,保持较高的推理性能。
  • 内存限制:对于32GB内存的设备,建议运行Q4量化版。1.5B模型至少需要8GB内存。如果您的设备内存较小,建议选择更小的模型版本。

2. 常见错误解决

  • Tokenizer错误:如果您遇到Tokenizer相关的错误,请确保llama.cpp版本不低于b4514。更新到最新版本通常可以解决这类问题。
  • 模型加载失败:如果模型加载失败,请检查GGUF文件的完整性,或者尝试重新下载模型文件。确保下载的文件与您选择的模型版本一致。

四、总结

通过llama.cpp运行DeepSeek-R1蒸馏版模型,您可以在消费级硬件上体验高性能推理。llama.cpp提供了灵活的配置选项,支持多种硬件加速方式,并且易于部署。建议优先使用预编译二进制文件以简化部署流程,并根据硬件配置调整量化参数与GPU层数。如果您需要更高的推理精度,可以尝试运行更大参数版本的模型,但请注意这需要专业级硬件设备支持。希望本指南能帮助您顺利运行DeepSeek-R1模型,享受高效、灵活的本地推理体验!

如何学习AI大模型 ?

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】🆓

优快云粉丝独家福利

这份完整版的 AI 大模型学习资料已经上传优快云,朋友们如果需要可以扫描下方二维码&点击下方优快云官方认证链接免费领取 【保证100%免费】

读者福利: 👉👉优快云大礼包:《最新AI大模型学习资源包》免费分享 👈👈

(👆👆👆安全链接,放心点击)

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

👉1.大模型入门学习思维导图👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过AI大模型的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。(全套教程文末领取哈)
在这里插入图片描述

👉2.AGI大模型配套视频👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。

在这里插入图片描述
在这里插入图片描述

👉3.大模型实际应用报告合集👈

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(全套教程文末领取哈)

在这里插入图片描述

👉4.大模型落地应用案例PPT👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(全套教程文末领取哈)

在这里插入图片描述

👉5.大模型经典学习电子书👈

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。(全套教程文末领取哈)
img

在这里插入图片描述

👉6.大模型面试题&答案👈

截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(全套教程文末领取哈)

在这里插入图片描述
👉学会后的收获:👈
基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习

优快云粉丝独家福利

这份完整版的 AI 大模型学习资料已经上传优快云,朋友们如果需要可以扫描下方二维码&点击下方优快云官方认证链接免费领取 【保证100%免费】

读者福利: 👉👉优快云大礼包:《最新AI大模型学习资源包》免费分享 👈👈

(👆👆👆安全链接,放心点击)
### DeepSeek-R1-0528 下载与安装指南 DeepSeek-R1-0528 是由 DeepSeek 开发的开源推理模型,用户可以通过多种途径获取和部署模型。以下是详细的下载与安装步骤: #### 1. 模型权重下载 DeepSeek-R1-0528 的模型权重可以在 Hugging Face 上获取。用户需要访问指定的仓库地址,并根据提示下载所需的文件[^3]。 - **仓库地址**: [deepseek-ai/DeepSeek-R1-0528](https://huggingface.co/deepseek-ai/DeepSeek-R1-0528) - **下载步骤**: - 注册或登录 Hugging Face 账号。 - 进入上述仓库页面。 - 点击“Files and versions”选项卡,找到对应版本的权重文件。 - 下载 `pytorch_model.bin` 或其他格式的模型文件(如 GGUF 格式)。 #### 2. 本地部署 完成模型权重下载后,用户可以按照以下步骤进行本地部署: ##### 使用 llama.cpp 部署 如果用户选择通过 llama.cpp 部署模型,可以参考以下命令行操作[^2]: ```bash ./llama.cpp/llama-cli \ --model unsloth/DeepSeek-R1-Distill-Llama-8B-GGUF/DeepSeek-R1-Distill-Llama-8B-Q4_K_M.gguf \ --cache-type-k q8_0 \ --threads 16 \ --prompt '<|User|>What is 1+1?<|Assistant|>' \ --n-gpu-layers 20 \ -no-cnv ``` - **参数说明**: - `--model`: 指定模型文件路径。 - `--threads`: 设置线程数,建议根据硬件配置调整。 - `--n-gpu-layers`: 如果使用 GPU,设置加载到 GPU 的层数量。 - `--prompt`: 输入提示内容,需符合模型支持的格式。 ##### 使用 Cherry Studio 或 Chatbox 对于希望简化交互流程的用户,可以通过 Cherry Studio 或 Chatbox 工具与本地部署模型进行交互[^4]。这些工具提供了图形化界面,降低了使用门槛。 #### 3. 注意事项 - **许可协议**: DeepSeek-R1 系列模型采用 MIT 许可证,允许商业用途和模型蒸馏。用户在使用时需遵守相关条款[^3]。 - **硬件要求**: 推荐使用至少 16GB 显存的 GPU 来加速推理过程。如果仅依赖 CPU,则可能需要较长的推理时间。 - **微调需求**: 如果计划对模型进行微调,需确保具备足够的计算资源及存储空间[^5]。 #### 4. 示例代码 以下是一个简单的 Python 脚本示例,展示如何加载和使用 DeepSeek-R1-0528 模型: ```python from transformers import AutoTokenizer, AutoModelForCausalLM # 加载模型和分词器 tokenizer = AutoTokenizer.from_pretrained("deepseek-ai/DeepSeek-R1-0528") model = AutoModelForCausalLM.from_pretrained("deepseek-ai/DeepSeek-R1-0528") # 输入文本 input_text = "Explain the concept of gravity." inputs = tokenizer(input_text, return_tensors="pt") # 生成输出 outputs = model.generate(**inputs, max_length=100) print(tokenizer.decode(outputs[0], skip_special_tokens=True)) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值