使用Ollama运行DeepSeek R1
Ollama官方提供了极为简便的运行大模型方法,例如运行DeepSeek-R1模型,则在 Ollama Library > deepseek-r1 使用页面提供的导引找到运行命令。在完成了 安装Ollama(Linux平台) 之后,就可以选择适合你主机环境的模型版本:
主要根据主机的GPU显存或者内存来确定要下载的模型参数
如果主机没有GPU,则自动切换在CPU上运行(速度大减)
由于我的主机使用了 Nvidia Tesla P10 GPU运算卡 ,具备24G显存,所以我这里案例是使用 32b
规格模型:
ollama run deepseek-r1:32b
Ollama
会自动下载大模型文件并运行等待访问:
pulling manifest
pulling 6150cb382311... 100% ▕████████████████████████████████████████████████████████▏ 19 GB
pulling 369ca498f347... 100% ▕████████████████████████████████████████████████████████▏ 387 B
pulling 6e4c38e1172f... 100% ▕████████████████████████████████████████████████████████▏ 1.1 KB
pulling f4d24e9138dd... 100% ▕████████████████████████████████████████████████████████▏ 148 B
pulling c7f3ea903b50... 100% ▕████████████████████████████████████████████████████████▏ 488 B
verifying sha256 digest
writing manifest
success
>>> 使用bash编写一个检查字符串中是否包含basic的脚本
<think>
嗯,我现在需要写一个Bash脚本来检查一个字符串里是否包含“basic”这个词。我之前学过一点Bash脚本,但不太确定该怎么开始。
首先,我要想清楚脚本应该做什么。用户会输入一个字符串,然后脚本要检查这个字符串中是否有“basic”这个词。如果有的话,就
输出包含;没有的话,就输出不包含。这可能涉及到读取用户的输入、进行条件判断以及输出结果。
那怎么读取用户的输入呢?我记得在Bash里可以用read命令来获取输入
...
思考过程有模有样,推导出的脚本是可行的(使用通配符 *
):
#!/bin/bash
# 读取用户输入
read -p "请输入一个字符串: " str
# 将字符串转换为小写
lower_str=$(echo "$str" | tr '[:upper:]' '[:lower:]')
# 检查是否包含"basic"
if [[ "$lower_str" == *basic* ]]; then
echo "字符串中包含'basic'"
else
echo "不包含"
fi
而且给出了详细的解释,看来 32b
的版本比之前测试的 7b
参数好了很多,至少给出了正确的编码结果( 7b
是错误的)
备注
如果没有指定 Ollama使用NVIDIA GPU运行大模型 ,那么ollama可能完全是CPU模式运行的,所以如果主机已经安装了 NVIDIA GPU 或 AMD GPU ,那么需要调整配置实现 Ollama使用NVIDIA GPU运行大模型 或 Ollama使用AMD GPU运行大模型
open-webui
备注
open-webui
通过 pip
安装会依赖很多软件,不过我发现类似的 LibreChat
( Install LibreChat Locally )更为复杂,手工安装还需要部署非常沉重的依赖,如 MeiliSearch 。这种复杂的软件堆栈看起来是为了一种商业模式而建,对于个人使用非常不友好。
对于桌面应用,看起来 chatbox 社区版本已经非常合适。不过,我可能还需要继续寻找合适的轻量级WEB UI。
GitHub: open-webui/open-webui 是一个非常易于使用的AI交互界面,支持多种API,例如 Ollama 或者 OpenAI兼容 API。这是一个 Python 程序,所以通过 Python virtualenv 以及 pip
非常容易安装运行:
cd ~
python3 -m venv open-webui
. ~/open-webui/bin/activate
pip install open-webui
运行
open-webui
:
open-webui serve
备注
open-webui
只支持 OpenAI
和 Ollama
两种API,所以如果直接部署 本地化部署DeepSeek-R1 CPU架构 使用 llama.cpp
,则无法直接使用 open-webui
。解决方法目前看有3种:
通过
Ollama
来运行llama.cpp
模型,但是怎么解决自定义运行需要找到方法GitHub: mpazdzioch/llamacpp-webui-glue ( Llamacpp + WebUI with automatic model switching ) 采用了一种巧妙的方法,在
open-webui
和llama.cpp
之间部署 OpenResty ,通过openresty
的内置 Lua 定制一个OpenAI API转换层,来直接调用llama.cpp
的API接口。值得学习借鉴llama.cpp
项目提供了一个llama-server
,能够使用OpenAI
兼容API方式提供调用,也就是说,完全可以去除ollama
直接对接open-webui
,不过现在可能还没有很好的文档指导。我在 本地化部署DeepSeek-R1 CPU架构 中目前使用llama-server
来提供服务,具体对接OpenAI
兼容API的方法待实践
使用GPU
发现一个问题,虽然我的主机安装了24GB显存的 Nvidia Tesla P10 GPU运算卡 ,但是 Ollama
却用CPU完成推理,在 nvidia-smi
完全看不到GPU在工作。我可是特意选择了能够用20GB运行的 32b
参数大模型。
解决方法是 Ollama使用NVIDIA GPU运行大模型