清华主页 - 清华新闻 - 综合时讯 - 正文

[AI时代]使用ollama私有化部署deepseek]

文章目录。

  • 说明。
  • 下载模型。
    • 下载ollama。
    • 通过modelscope下载。
  • 部署open-webui。
  • 问题记录。
    • 临时目录空间不足。
    • 单机多卡部署。
    • 后台启动。
    • 导入分段模型文件。
    • Error: llama runner process has terminated: GGML_ASSERT(hparams.n_expert <= LLAMA_MAX_EXPERTS) failed。
    • Error: timed out waiting for llama runner to start - progress 0.00 -。
    • ollama升级后,#xff0c;该模型仅在CPU上运行。
    • 模型随机回答/回答不正常。

说明。

私有化部署DeepSeek,现在互联网上有非常全面的信息,本文主要记录部署和部署过程中遇到的问题。目前,这些问题,网上信息少,在这个过程中,我会不断更新遇到的各种问题。
本文对Depseek的部署非常全面,包括ollama、open-webui、安装dify:
https://www.cnblogs.com/shook/p/18700561。

下载模型。

下载ollama。

适合部署小参数的模型,下载速度比较慢,#xff0c;而且不稳定。

ollama模型地址a;https://ollama.com/library/deepseek-r1。

下载并运行deepseek-r1-7b:

ollama run deepseek-r1:7b。

该命令将自动下载并运行,如果只需要下载,使用命令:ollama pull deepseek-r1:7b。

image.png

退出:Use Ctrl + d or /bye to exit.。

下载后,可以使用以下命令查看模型信息:

image.png

通过modelscope下载。

这样可以解决直接从ollama仓库下载慢、网络不稳定的问题。

ollama支持导入两种格式的模型文件:gguf和safetensors,步骤相似,以gguf为例。

大参数模型,离线下载模型后可使用#xff0c;输入到ollama运行。

以70B-Q5_K_M为例:

下载地址:https://modelscope.cn/models/unsloth/DeepSeek-R1-Distill-Llama-70B-GGUF。

下载后上传到服务器,创建ModelFile文件:

image.png

Modelfile中指定的模型文件路径:

FROM ./DeepSeek-R1-Distill-Llama-70B-Q5_K_M.gguf。

更多关于Modelfile的内容见:https://github.com/ollama/ollama/blob/main/docs/modelfile.md。

准备好后,执行命令:ollama create deepseek-r1-70b -f ./ModelFile。

执行完成后,通过ollama list命令可以看出模型已经成功导入。
在这里插入图片描述

这个过程的耗时与模型大小有关。

参考:https://github.com/ollama/ollama/blob/main/docs/import.md。

部署open-webui。

git地址:https://github.com/open-webui/open-webui。

使用docker部署:

docker。run。 -d。-p。8080。:8080 --add-host。=host.docker.internal:host-gateway。 -v。open-webui:/app/backend/data。 --name。open-webui。 --restart。always ghcr.io/open-webui/open-webui:main。

第一次进来需要设置账号�这个我已经设置好了。
在这里插入图片描述
进去后󿀌所有已拉取的模型都将显示在左上角。
在这里插入图片描述

问题记录。

临时目录空间不足。

使用ollama create导入外部模型时󿼌报错:临时文件夹空间不足,这是一个非常坑󿀌大多数人说,通过环境变量OLLAMA_TMPDIR指定,其实不是!
image.png
指定临时文件夹执行:TMPDIR=/mnt/largeroom/ollama/ollama/.ollama/tmp ollama create deepseek-r1-70b -f ModelFile。

或修改systemd文件,添加:Environment=“TMPDIR=/mnt/largeroom/ollama/ollama/.ollama/tmp”。

参考:https://github.com/ollama/ollama/issues/8086。

可见已生效:
image.png

单机多卡部署。

解决这个问题需要很多时间c;最新的官方文件没有解释num_gpu参数,我一直以为是GPU的数量。

修改ModelFile,增加参数:num_gpu。

FROM ./DeepSeek-R1-Distill-Llama-70B-Q5_K_M.ggufPARAMETER num_gpu 80。

在验证过程中发现,参数num_gpu设置越小,VRAM占用越小,猜测该参数可以控制GPU的负载,通过查阅资料和验证,发现:num_gpu参数表示加载 GPU 模型层数,根据机器配置󿀌增加参数值,当一个GPU无法完全加载所配置的层数时,在所有可用的GPU上分布。
可以看出,使用显存已经平均分配到每张卡上。
在这里插入图片描述
每个模型的层数不同,猜测多卡࿰只要超过单卡负载,就会使用c;如果有足够的显存资源,参数不需要调整。

参考:

https://github.com/ollama/ollama/blob/main/docs/faq.md#how-does-ollama-load-models-on-multiple-gpus。

https://snowkylin.github.io/blogs/a-note-on-deepseek-r1.html。

后台启动。

nohup ollama run deepseek-r1-70b:latest --verbose --keepalive 1200m > output.log 2>&1 < /dev/null &

默认5m自动释放,可以通过–keepalive指定模型保留加载时间。

或者可以用api启动,常驻内存:

curl。--location。'172.22.244.78/api/generate'\。--header。'Content-Type: application/json'\。--data。'{   "model": "deepseek-r1:7b",  "keep_alive": -1}'

在这里插入图片描述

导入分段模型文件。

对于一些大参数模型,gguf文件分段:
在这里插入图片描述
试着只指定其中一个文件导入,不会自动合并,在执行ollama之前,需要先合并 create命令。
网上数据显示,模型文件可以通过cat命令合并:cat *.gguf > combined_model.gguf,试试,合并文件,执行ollama create这两步都没问题,#xff0c;模型导入后不能正常运行。在这里插入图片描述
show模型信息也有问题,而且导入后模型文件巨大:
在这里插入图片描述
官网࿰在模型下载c;忽略一句话:
在这里插入图片描述
灌顶󿀌立即开始安装llama.cpp。
安装参考:https://blog.csdn.net/m0_61797126/article/details/140583788。
安装后可以看到很多工具:
在这里插入图片描述
安装完成后,使用llama-gguf-合并split,其基本使用格式为 llama-gguf-split [options] GGUF_IN GGUF_OUT。
该命令需要提供。第一个分片文件。和。合并后的模型文件名。。合并过程中,gguf-split 将自动检查分片文件的完整性,并在合并后输出合并后的模型文件。
在这里插入图片描述
重新编辑ModelFile文件:
在这里插入图片描述
指定导入命令:ollama create deepseek-r1-671b-q4 -f ModelFile。
在这里插入图片描述
查看模型信息:
在这里插入图片描述
导入成功!!!

Error: llama runner process has terminated: GGML_ASSERT(hparams.n_expert <= LLAMA_MAX_EXPERTS) failed。

在这里插入图片描述
我现在用的ollama版本是0.5.1,升级为0.5.7(最新版本)解决。
升级参考:https://github.com/ollama/ollama/blob/main/docs/faq.md#how-can-i-upgrade-ollama。

Error: timed out waiting for llama runner to start - progress 0.00 -。

在这里插入图片描述
设置环境变量󿀌增加超时时间(默认5m):OLLAMA_LOAD_TIMEOUT=60m。
所有环境变量和xff1a;https://github.com/ollama/ollama/blob021817e59ace5e351b35b2e6881f83a0546envconfig/config.go#L243。

ollama升级后该模型仅在CPU上运行。

ollama安装包升级后手动下载#xff0c;推理很慢󿀌GPU￰未使用c;
看olllama日志,显示:msg=“Dynamic LLM libraries” runners=[cpu]。
在这里插入图片描述
解决:将ollama/lib下的文件复制到olllama二进制文件所需的lib路径下:…/lib/ollama/。
查看ollama当前运行文件路径:
在这里插入图片描述
将安装包中lib目录下的内容复制到:
在这里插入图片描述
重新运行�可见GPU占用༚
在这里插入图片描述
在这里插入图片描述

参考:
https://github.com/ollama/ollama/issues/8532#issuecomment-2616281903。
在这里插入图片描述

模型随机回答/回答异常。

在这里插入图片描述
模型官网说明:
在这里插入图片描述
prompt使用<|User|> <|Assistant|>只需包裹:
在这里插入图片描述
或者直接在Modelfile中指定:

TEMPLATE """<|User|>{ 。{  .Prompt }}<|Assistant|>"""

这样,你就不必每次都写了。以下是《红楼梦》的介绍:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结还是挺好的,各方面都很恰当。

2025-06-24 12:27:54

相关新闻

清华大学新闻中心版权所有,清华大学新闻网编辑部维护,电子信箱: news@tsinghua.edu.cn
Copyright 2001-2020 news.tsinghua.edu.cn. All rights reserved.