linux服务器部署自己本地微调的大模型,并利用api或ollama接入open webui
摘要:前期本地微调了DeepSeek-R1-Distill-Qwen-1.5B,现在想给模型加一个前端。经过简单调研后决定选用开源项目open webui。但是上网查相关的配置教程发现大部分是ollama拉取开源模型并接入open webui,较少有自己微调的模型接入open webui,于是打算记录自己的完整步骤,供更多的人参考。 openwebui项目地址:https://github.com/open-webui/open-webui open webui只支持与openAI兼容的API模型调用和部署在ollama里的模型调用。两种方法的优缺点: 我个人更推荐与openAI兼容的API调用,写好一个简单的前端代码,一劳永逸。但如果不会或不想写前端代码的,当然就选用ollama。 先要在自己的微调代码里写一个简单的前端,与openAI兼容: 1 模型列表路由,open webui会在这里面找你的模型。要求一定是 说明:ollama只支持.gguf模文件,因此如果本地模型文件是.safetensor之类,要用开源项目llama.cpp将.safetensor模型文件转换成.safetensor模型文件。 1 使用llama.cpp进行模型转换(.safetensor —>.gguf) 2 导入模型进ollama 新建文件: 使用docker当然更便捷,但问题是很多人可能跟我一样,是跟很多人一起共用服务器,为了保证安全,所有人被放在服务器的一个docker容器里面,因此docker中没法再创建docker,此时只能命令行一条条输命令,不过好在是不使用docker安装open-webui的过程一点都不复杂。 创建 Conda 环境: 使用以下命令创建一个 Python 3.11 的新环境: 激活 Conda 环境: 切换到新创建的环境: 安装 Open WebUI: 使用 pip 安装最新版本: 启动 Open WebUI 服务: 运行以下命令启动服务: 启动到官网界面后注册管理员账号: 注:创建管理员账号/登录后可能会出现白屏现象,按这个教程就可以解决(教程) 登录进去后的界面: 启动docker 部署并与ollama关联: 打开管理员面板: 点 设置——>外部连接 URL是固定的,一定要这么写: 然后点击保存即可。 什么也不用做,open webui已经配置好ollama接入,直接在选模型那里选自己的模型即可。 说明:我现在是在服务器的docker容器里,因此想将服务部署到局域网还要做一些操作:以服务部署在9090端口(随便选一个就行)为例 获取容器IP: 用宿主机root权限执行: 宿主机root权限执行: 这样就不怕每次关掉终端服务就停止,方便局域网里所有人随时查看,如果想停止服务可以手动停止。 创建一个新的 在 这会启动你的服务。 分离 重新连接到会话(可选):如果你想查看服务运行状态,可以重新连接: 关闭会话(可选):如果不再需要运行服务,可以关闭会话: 创建一个新的 在 分离 重新连接到会话(可选):如果你想查看服务运行状态,可以重新连接: 关闭会话(可选):如果不再需要运行服务,可以关闭会话: 到此已经结束!有错误的地方欢迎大家指正,也十分欢迎大家评论区跟我交流讨论,我看到就一定回复!
操作系统:Ubantu 22.04.4 LTSstep1 部署模型
法1:将模型封装成 OpenAI 兼容的 API
有两个关键路由要写:/v1/models
。
2 用于对话的路由:(截图只截了部分)法2:导入模型进ollama
# 创建专用conda环境(推荐Python 3.10)conda create -n ollama_convert python=3.10conda activate ollama_convert# 仅克隆必要组件gitclone git@github.com:ollama/ollama.gitcdollama# 紧接着,同步 llm/llama.cpp 子模块:gitsubmodule initgitsubmodule update llm/llama.cpp# 安装依赖pip install-r llama.cpp/requirements.txt# 运行转换脚本(FP16精度)python llm/llama.cpp/convert_hf_to_gguf.py /home/chenaotian/merged_model --outtype f16 --outfile /home/chenaotian/LLM-Large-Language-Model/merged.ggufpython llm/llama.cpp/convert_hf_to_gguf.py \--input_dir /path/to/your_model_dir \--outtype f16 \--outfile converted.bin# 关键参数说明:# --input_dir:包含safetensors分片和配置文件的目录# --output_type:降低到f16浮点精度(也可以保持f32精度或)# --vocab-only:仅测试分词器(可选验证步骤)
将生成的 merged.gguf
文件移动到 Ollama 的模型目录中:# 创建模型存储目录(若不存在)mkdir-p ~/.ollama/models# 复制 GGUF 文件cpmerged.gguf ~/.ollama/models/
# 进入模型目录cd~/.ollama/models/# 创建 ModelfiletouchModelfile
Modelfile
内容如下:
注意:这里是重点,每个人的Modelfile文件都不同,超参数和对话模版都要依据自己的模型定义。FROM "/home/chenaotian/LLM-Large-Language-Model/merged.gguf"PARAMETER temperature 0.6PARAMETER num_ctx 131072PARAMETER num_predict 512PARAMETER stop "<|end▁of▁sentence▁|>"PARAMETER top_p 0.95TEMPLATE "<|begin▁of▁sentence▁|>{ { range .Messages }} { { if eq .Role "system" }} { { .Content }} { { end }}{ { end }} { { range .Messages }} { { if eq .Role "user" }}<|User|>{ { .Content }}{ { end }} { { if eq .Role "assistant" }}<|Assistant|>{ { .Content }}<|end▁of▁sentence▁|>{ { end }}{ { end }}<|Assistant|><think>"
运行以下命令:```bash# 创建模型(跳过量化)ollama create my_model -f ~/.ollama/models/Modelfile# 运行测试ollama run my_model
step2 部署open-webui
法1:不使用docker
conda create -n open-webui python=3.11
conda activate open-webui
pip install open-webui
open-webui serve --host 0.0.0.0 --port 9090
(我已经注册过了,因此这里显示的是登录界面)
可以在左上角选择模型,我这里有自己的微调模型也有ollama拉取的主流模型。法2:使用docker
sudo dockerd &sudo systemctl start dockersudo systemctl enable docker
sudo docker run -d --network=host -v open-webui:/app/backend/data -e OLLAMA_BASE_URL=http://127.0.0.1:11434--name open-webui1 --restart always ghcr.io/open-webui/open-webui:main
step3 配置后端模型与前端open webui的连接
1 若使用Open AI兼容的API:
添加openAI API连接:http://localhost:5002/v1
密钥如果没有的话就写:NULL
最下面写自己模型在后端的项目路径。2 若使用ollama
step4 将服务部署运行在局域网
step4.1 将容器9090端口(示例)映射到宿主机9090端口(示例)
hostname -i
# 添加 NAT 规则(将宿主机的 8000 转发到容器 IP 的 9090 端口)sudo iptables -t nat -A DOCKER -p tcp --dport 9090-j DNAT --to-destination 容器IP:9090# 允许转发流量sudo iptables -A FORWARD -p tcp -d 容器IP --dport 9090-j ACCEPT# 保存规则(避免重启失效)sudo iptables-save |sudo tee /etc/iptables/rules.v4
step4.2 确保宿主机的9090端口(示例)的防火墙放行(如果本来就没开防火墙,就不需要这一步)
# 如果宿主机启用了防火墙(如 `ufw` 或 `firewalld`),放行端口 `8000`# 一般来说Ubantu系统用ufw做防火墙sudo ufw allow 9090/tcpsudo ufw reload
step4.3 在服务器上永久启用服务
tmux
会话并命名:tmux new -s OpenWebUI # 命名为了OpenWebUI
tmux
会话中运行以下命令:conda activate open-webui-newopen-webui serve --host 0.0.0.0 --port 9090
tmux
会话,让服务在后台运行:Ctrl + b
,然后按 d
。 这会让你退出 tmux
会话,但服务仍在后台运行。tmux attach -t OpenWebUI
tmux kill-session -t OpenWebUI
model_api
会话并命名:tmux new -s model_api
tmux
会话中运行以下命令:conda activate catcd/home/chenaotian/LLM-Large-Language-Model/webpython server.py
tmux
会话,让服务在后台运行:Ctrl + b
,然后按 d
。 这会让你退出 tmux
会话,但服务仍在后台运行。tmux attach -t model_api
tmux kill-session -t model_api
- 最近发表
- 随机阅读
-
- 六角棋盘游戏哪个好玩? 十大必玩六角格棋盘游戏排行榜
- 人工智能绘画可以通过这六种方式盈利
- 微服务篇:OpenFeign
- ima.copilot DeepSeek R1满血版
- 《控制》终极版1.30更新:小岛秀夫联动任务上线
- JD.COM优惠罗技K580键盘,原价229,现在189
- 联想M300台式电脑主机2199元入手
- 一文搞懂大数据神器Spark,真的太牛了!
- 哪个单板滑雪游戏最好玩? 推荐2024年单板滑雪游戏
- 上汽通用五菱销量终于上升 此前已“五连跌” 总经理吕俊成一定很高兴
- 中间APOLO520回声壁创建沉浸式私人影院体验
- 微软官方MiniPCCINiniPC Windows 365 Link来了,价格超过2500元
- 小米Xiaomi 15 5G手机京东国补85折300元E卡3689元
- Android Studio小米便签部署
- zookeeper 负载均衡和 nginx 负载平衡的区别?思维导图 代码示例(java 架构)
- 江铃福特三年累计亏损16.22亿亿元 净资产为负 刘继升总裁着急吗?
- 小米澎湃 HyperOS 2 跨生态互传系统 LivePhoto 功能打开灰度推送
- 剧情游戏有什么好玩的? 精选好玩的剧情游戏
- 一文搞懂大数据神器Spark,真的太牛了!
- 1亿像素 120Hz刷新率 红米手机只需1341元
- 搜索
-
- 友情链接
-