DeepSeek本地无显卡安装R1
FCAT 2025/2/20 AI大语言模型
主机配置清单
- CPU i9 14900HX 24核32线程 睿频5.8G
- 显卡 Intel® UHD Graphics超强核显
- 主板 英特尔 ERYING Z790-PLUS DDR5 顶配主板
- 内存 玖合 忆界马甲条32G(16G*2) 6000MHz DDR5
- 硬盘 七彩虹 战戟 1TB M.2 NVMe超高速固态硬盘
- 散热 金河田 龙鳞360三水排RGB一体式水冷散热器
- 电源 战电 额定700W宽幅电源
- windows10系统,在vmware workstation 安装Ubuntu 22.04系统 要求:
- 推荐使用参数的模型是不是7B?
- 根据推荐参数的模型,给出本地部署DeepSeek-R1详细步骤
- 通过Java调用DeepSeek的API进行对话
好的,我需要帮用户解决他们的问题。首先,用户提供了一台主机的配置清单,然后在VMware里安装了Ubuntu 22.04。
他们有三个主要的问题:推荐使用参数的模型是不是7B?根据推荐参数的模型,
给出本地部署DeepSeek-R1的详细步骤,以及通过Java调用DeepSeek的API进行对话。
首先,关于模型参数推荐是否为7B的问题。用户的主机配置看起来挺不错的,
尤其是i9 14900HX有24核32线程,内存32GB DDR5,不过显卡是Intel的集成显卡。
通常,大语言模型如LLAMA或DeepSeek的模型,如果是7B参数的话,在CPU上运行可能会比较吃力,
但内存方面32GB应该足够。不过要注意的是,如果没有独立显卡如NVIDIA的GPU,
就无法使用CUDA加速,只能依赖CPU进行计算,这会导致推理速度较慢。
所以7B模型可能在CPU上勉强能运行,但可能体验不佳。用户需要确认DeepSeek-R1是否有针对CPU优化的版本,
或者是否支持使用像GGML这样的量化格式,这样可以在CPU上更高效地运行。
接下来是本地部署DeepSeek-R1的步骤。首先需要明确DeepSeek-R1是否开源,
是否有公开的模型权重和部署指南。假设用户已经获得了模型文件,
可能需要使用像Hugging Face的Transformers库或者llama.cpp这样的工具来加载和运行模型。
步骤可能包括安装Python环境,安装必要的库,下载模型文件,编写推理脚本等。
另外,考虑到用户是在Ubuntu虚拟机里运行,可能需要分配足够的资源,比如内存和CPU核心,
确保模型能够顺利加载。如果使用llama.cpp,需要编译支持AVX指令集的版本,因为Intel的CPU支持这些指令集,可以加速推理。
第三个问题是通过Java调用DeepSeek的API。这里需要明确是调用本地部署的模型API还是云端提供的API。
如果是本地部署,可能需要模型服务化,比如使用Flask或FastAPI创建一个REST API,
然后Java通过HTTP客户端发送请求。如果是云端的API,则需要获取API密钥,并按照文档进行调用。
用户需要确认DeepSeek是否有现成的API接口,或者是否需要自己搭建服务层。
Java部分可能需要使用Apache HttpClient或OkHttp来发送POST请求,处理JSON数据。
在思考过程中,还需要考虑用户可能遇到的一些问题。
例如,虚拟机中的Ubuntu是否分配了足够的资源,比如内存是否足够加载7B模型(通常需要至少16GB以上)。
另外,Intel的集成显卡是否支持某些加速库,比如OpenCL,但通常这类模型在CPU上运行较多。
另外,用户是否已经获取了DeepSeek-R1的模型文件,因为有些模型可能需要申请权限才能下载。
另外,需要确认DeepSeek-R1的具体情况,比如是否类似于DeepSeek的其他开源模型,
例如DeepSeek-7B,如果是的话,部署步骤可能与常见的LLAMA部署类似。
可能还需要考虑模型量化,比如使用4-bit或8-bit量化来减少内存占用,从而在CPU上更高效地运行。
总结一下,回答的结构应该是:
1. 关于7B模型是否适合用户的配置:分析CPU和内存是否足够,指出集成显卡的限制,建议可能的优化方法如量化。
2. 部署步骤:安装依赖,下载模型,使用Transformers或llama.cpp,编写示例代码,启动服务。
3. Java调用API:搭建本地API服务,或用云API,Java代码示例使用HttpClient发送请求。
需要确保步骤详细,适合Ubuntu环境,并考虑到用户可能在Windows主机下的VMware中运行Ubuntu,
注意资源分配的问题。可能还需要提醒用户,如果模型太大,在虚拟机中运行可能会有性能问题,建议直接安装在宿主机或者分配更多资源。
# 一、关于模型参数推荐(7B 是否适用?)
根据您的配置(i9 14900HX + 32GB DDR5 + 无独立显卡),推荐使用 7B 参数的模型,原因如下:
内存需求
7B 模型在 FP16 精度下约需 14GB 显存,但若使用 CPU + 内存运行(无 GPU),配合量化技术(如 GGML/GGUF 4-bit),内存占用可降至约 6-8GB,32GB 内存完全足够。性能瓶颈
- 优势: 您的 CPU 多核性能强,适合多线程推理(如使用
llama.cpp
的 CPU 优化)。 - 劣势: 核显无法加速计算,纯 CPU 推理速度较慢(约 1-3 token/s),但对话场景尚可接受。
- 优势: 您的 CPU 多核性能强,适合多线程推理(如使用
更高参数模型风险
13B 及以上模型在 CPU 上运行易出现内存不足或速度极慢的问题。
建议选择 7B 量化版本(如 deepseek-7b-chat-gguf
的 Q4_K_M 格式)。
# 二、本地部署 DeepSeek-R1 详细步骤(以 llama.cpp
为例)
# 1. 环境准备(Ubuntu 22.04)
# 安装基础依赖
sudo apt update && sudo apt install -y build-essential cmake python3-pip
# 克隆 llama.cpp 仓库
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp && make clean && make -j4
1
2
3
4
5
6
2
3
4
5
6
# 2. 下载模型文件
- 从 Hugging Face 下载 DeepSeek-R1 的 GGUF 格式文件(如
deepseek-r1-7b.Q4_K_M.gguf
)。 - 假设保存路径为
~/models/deepseek-r1-7b.Q4_K_M.gguf
。
# 3. 启动本地推理服务
# 进入 llama.cpp 目录
cd ~/llama.cpp
# 启动服务(启用多线程,调整线程数 -t 根据 CPU 核心数)
./server -m ~/models/deepseek-r1-7b.Q4_K_M.gguf \
--host 0.0.0.0 --port 8080 \
-t 24 -c 2048 --mlock
1
2
3
4
5
6
7
2
3
4
5
6
7
参数说明:
-t 24
: 使用 24 线程(根据 i9 核心数调整)。--mlock
: 锁定内存防止交换。-c 2048
: 上下文长度。
# 4. 验证服务
curl http://localhost:8080/completion \
-H "Content-Type: application/json" \
-d '{"prompt": "你好", "n_predict": 128}'
1
2
3
2
3
# 三、Java 调用 API 示例
# 1. 添加依赖(Maven)
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 2. Java 调用代码
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import com.google.gson.JsonObject;
public class DeepSeekClient {
public static void main(String[] args) {
String apiUrl = "http://localhost:8080/completion";
try (CloseableHttpClient client = HttpClients.createDefault()) {
HttpPost httpPost = new HttpPost(apiUrl);
httpPost.setHeader("Content-Type", "application/json");
JsonObject payload = new JsonObject();
payload.addProperty("prompt", "Java 如何连接 MySQL?");
payload.addProperty("n_predict", 256);
payload.addProperty("temperature", 0.7);
httpPost.setEntity(new StringEntity(payload.toString()));
try (CloseableHttpResponse response = client.execute(httpPost)) {
String responseBody = EntityUtils.toString(response.getEntity());
System.out.println("Response: " + responseBody);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 四、关键注意事项
虚拟机资源分配
- 为 Ubuntu 分配至少 24GB 内存 + 8 核 CPU(VMware 设置中调整)。
- 启用 嵌套虚拟化(如需使用某些加速指令)。
性能优化
- 在
llama.cpp
编译时添加-DLLAMA_AVX2=ON
启用 AVX2 指令集。 - 尝试更高量化等级(如 Q3_K_M)进一步降低内存占用。
- 在
替代方案
若需更高性能,可考虑:- 在 Windows 宿主机直接部署(避免虚拟机开销)。
- 使用 DeepSeek 官方 API(需网络连接,非本地运行)。