通过普通的 PC 电脑本地化部署大模型提供基于 deepseek r1 的模型能力。办公 PC 的配置如下:
CPU:i5-11400F 2.60GHz 内存:8G,集成显卡。操作系统:Debian
略,参考2011-Photon 容器主机配置指引 和 debian 容器环境配置
参照官网的配置说明下载对应的版本:https://github.com/ollama/ollama/blob/main/docs/linux.md。网络环境不太稳定的情况建议考虑离线安装的方式。
1、下载 ollama 离线版本
ollama 有不同的离线版本,主要适配集成显卡、AMD显卡和 Nvidia CUDA 的显卡以及 ARM 版本。这里下载的是通用版本
2、安装并运行 ollama
curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz tar -C /usr -xzf ollama-linux-amd64.tgz ollama serve ollama -v sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama sudo usermod -a -G ollama $(whoami) |
3、配置自启动服务
需要注意在配置文件中增加 “Environment="OLLAMA_HOST=0.0.0.0",否则在后面的Dify GUI 配置界面会出现连接失败的错误 |
cat > /etc/systemd/system/ollama.service << EOF [Unit] Description=Ollama Service After=network-online.target [Service] Environment="OLLAMA_HOST=0.0.0.0" ExecStart=/usr/bin/ollama serve User=ollama Group=ollama Restart=always RestartSec=3 Environment="PATH=$PATH" [Install] WantedBy=default.target EOF systemctl daemon-reload systemctl enable ollama systemctl start ollama |
在线更新所需的模型是最简单的
ollama run deepseek-r1:32b ollama list |
如果正常方式下载模型的速度比较慢,可以考虑配置国内的镜像方式下载。详细的操作可以参考以下:
若我们已经从 HF 或者 ModeScope 下载了 GGUF 文件(文件名为:Meta-Llama-3-8B-Instruct.Q4_K_M.gguf),在我们存放Llama3-8B的 GGUF 模型文件目录中,创建一个文件名为Modelfile的文件,该文件的内容如下:
FROM ./Meta-Llama-3-8B-Instruct.Q4_K_M.gguf |
然后,打开终端,执行命令导入模型文件:ollama create 模型名称 -f ./Modelfile
>ollama create Llama-3-8B -f ./Modelfile
transferring model data
using existing layer sha256:647a2b64cbcdbe670432d0502ebb2592b36dd364d51a9ef7a1387b7a4365781f
creating new layer sha256:459d7c837b2bd7f895a15b0a5213846912693beedaf0257fbba2a508bc1c88d9
writing manifest
success
导入成功之后,我们就可以通过list命名,看到名为Llama-3-8B的本地模型了,后续可以和其他模型一样进行管理了。
官方操作文档:https://ollama.fan/getting-started/import/#importing-pytorch-safetensors。若我们已经从 HF 或者 ModeScope 下载了 safetensors 文件(文件目录为:Mistral-7B),然后,我们转换模型(结果:Mistral-7B-v0.3.bin);接下来,进行量化量化;最后,通过 Ollama 导入到本地磁盘,创建Modelfile模型文件:
git lfs install git clone https://www.modelscope.cn/rubraAI/Mistral-7B-Instruct-v0.3.git Mistral-7B python llm/llama.cpp/convert.py ./Mistral-7B --outtype f16 --outfile Mistral-7B-v0.3.bin llm/llama.cpp/quantize Mistral-7B-v0.3.bin Mistral-7B-v0.3_Q4.bin q4_0 |
FROM Mistral-7B-v0.3_Q4.bin
执行导入命令,导入模型文件:ollama create 模型名称 -f ./Modelfile
>ollama create Mistral-7B-v0.3 -f ./Modelfile
transferring model data
using existing layer sha256:647a2b64cbcdbe670432d0502ebb2592b36dd364d51a9ef7a1387b7a4365781f
creating new layer sha256:459d7c837b2bd7f895a15b0a5213846912693beedaf0257fbba2a508bc1c88d9
writing manifest
success
导入成功之后,我们就可以通过list命名,看到名为Mistral-7B-v0.3的本地模型了,后续可以和其他模型一样进行管理了。
通过 docker 部署是最省事的
git clone https://github.com/langgenius/dify.git cd dify/docker cp .env.example .env docker compose up |
默认情况下打开 URL 即可访问
1、进入【设置】-【模型供应商】选择 ollama
2、在 配置页面输入对应的主机 URL
3、配置后即可按需求发布应用
网上有很多已经配置好的 Dify 应用,下载后导入后即可学习。这里导入的应用是【完蛋!我被LLM包围了!】。
成功导入并调整后能正常运行,如下图所示:
要实现上述的效果,需要调整模型和对应的组件。默认的情况下它无法正常启用,会提示错误或缺少相关组件。
1、下载需要导入的应用。通过 https://github.com/svcvit/Awesome-Dify-Workflow 下载,需要导入的应用都在 DSL 目录中存储。
2、修改 docker-compose.yaml 中对应的 sandbox 镜像配置,将 image: langgenius/dify-sandbox:0.2.10 修改为 image: svcvit/dify-sandbox-py:0.1.2
3、配置 sandbox 所需的依赖包
cat > volumes/sandbox/dependencies/python-requirements.txt << EOF sympy~=1.13.3 matplotlib~=3.9.3 requests~=2.32.3 EOF |
4、重新启动配置文件后,容器会自动加载并更新组件和依赖包
如果导入 DSL 文件后在运行的过程中仍然提示缺少相关的组件,可以按照下面的方式更新
vim volumes/sandbox/dependencies/python-requirements.txt 添加缺失的组件 docker stop docker-sandbox-1 docker compose up -d sandbox |