本文目标
在一台Ubuntu服务器上部署deepseek,并测试token生成速度
机器配置
CPU:Intel(R) Core(TM) i9-14900K GPU:NVIDIA GeForce RTX 5090 内存:64G 硬盘:1T
前置步骤
因为有GPU,所以采用CPU+GPU混合运行的模式,需要先安装 NVIDIA驱动 和 CUDA Toolkit:链接
步骤
1. 安装ollama
curl -fsSL https://ollama.com/install.sh | sh
2. 配置ollama对外服务
配置
#编辑
vi ~/.bashrc
#末尾添加下面两行
export OLLAMA_HOST=0.0.0.0:11434
export OLLAMA_ORIGINS=*
#生效
source ~/.bashrc
#重启
systemctl daemon-reload
systemctl restart ollama
浏览器访问 IP:11434 ,验证是否配置成功
3.拉取模型
#基础命令
ollama pull deepseek-r1
#进阶1-选择指定模型版本
ollama pull deepseek-r1:70b
#进阶2-后台运行(因为模型都比较大,为了防止拉取过程中ssh工具与服务器断开连接导致拉取终止,所以放到后台执行)
nohup ollama pull deepseek-r1:70b >> 70b.log 2>&1 &
4. 运行
ollama run deepseek-r1:70b
运行之后就可以提问了,也可以按ctrl+D退出提问模式
5.验证
ollama ps
上面的命令可以查看大模型使用GPU和CPU的比例
6.token生成速度测试
使用这个python可以测试大模型的token生成速度 注意修改IP和模型名称
import requests
import time
# ollama 的 API 地址
OLLAMA_API_URL = "http://10.100.95.165:11434/api/generate"
# 请求参数
payload = {
"model": "deepseek-r1:32b", # 替换为你的模型名称
"prompt": "目标检测的具体含义是什么?", # 替换为你的输入文本
"stream": False, # 设置为 False,一次性返回完整结果
"max_tokens": 100 # 设置生成的最大 token 数量
}
# 打印 model 和 prompt 信息
print(f"使用的模型: {payload['model']}")
print(f"输入的问题: {payload['prompt']}")
# 记录开始时间
start_time = time.time()
print(f"开始时间: {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(start_time))}")
# 发送请求
response = requests.post(OLLAMA_API_URL, json=payload)
# 记录结束时间
end_time = time.time()
print(f"结束时间: {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(end_time))}")
# 解析响应
if response.status_code == 200:
result = response.json()
# print(result)
generated_text = result.get("response", "")
generated_tokens = result.get("eval_count", 0) # 获取生成的 token 数量
elapsed_time = end_time - start_time
# 计算每秒生成的 token 数量
tokens_per_second = generated_tokens / elapsed_time
print(f"模型回答: {generated_text}")
print(f"生成时间: {elapsed_time:.2f}秒")
print(f"生成 token 数量: {generated_tokens}")
print(f"每秒生成 token 数量: {tokens_per_second:.2f}")
else:
print(f"请求失败,状态码: {response.status_code}")
print(f"错误信息: {response.text}")
性能测试数据
deepseek r1 70b
生成时间: 205.42秒
生成 token 数量: 878
每秒生成 token 数量: 4.27
deepseel r1 32b
生成时间: 12.05秒
生成 token 数量: 722
每秒生成 token 数量: 59.93
结论
RTX 5090适合跑32b模型,70b模型比较吃力