Ollama 是一个强大的草泥马(框架),通过简单的安装指令,可以让用户执行一条命令就在本地运行开源大型语言模型。但上述都不是我想要的,我想要的是友好互动的图形界面,Openwebui貌似是个不错的选择,这次就来分享下Ollama+Openwebui的部署。
首先吐槽下intel的安装指南:,不好好给步骤,本来一行代码一句话的事,搞一堆超链接,一会儿前一会儿后的,逻辑性不强的马上就被绕晕了。
和前面分享的Text-Generation-WebUI是一个主体不同,这次Ollama和Openwebui是两个主体,Ollama是模型加载推理的主程序,Openwebui通过api接入各种工具包括Ollama来实现交互。按理说我们要分别部署这两个,不过还好intel在ipex-llm[cpp]中已经集成了Ollama,所以接下来的操作就简单了许多。
安装之前需要电脑已经安装了Visual Studio 2022 、git和python或者conda,因为openwebui有 js 代码,还需要安装,并已经添加了对应的环境变量。如果不想安装,也可以在虚拟环境中安装yarn(conda install yarn),也可以用,不过建议安装,反正也不大。 在需要安装Openwebui的文件夹资源管理器地址栏中输入CMD或者powershell打开对应的命令行工具,然后依次输入以下命令(我以conda创建虚拟环境演示,括号内的不用复制):
cd open-webui (进入open-webui文件夹)
conda create -p ./venv python=3.11 (创建虚拟环境)
conda activate ./venv (激活虚拟环境)
pip install --pre --upgrade ipex-llm[cpp] (安装ipexllm[cpp])
关闭cmd,然后用管理员权限重新打开cmd,在open-webui文件夹根目录重新激活虚拟环境,接下来输入
set no_proxy=localhost,127.0.0.1
set ZES_ENABLE_SYSMAN=1 (设置环境变量)
ollama serve (打开ollama服务,如果运行没啥带颜色的报错ollama部署就没问题)
接下来部署openwebui,可以不用关闭ollama,在open-webui文件夹根目录新打开一个cmd激活虚拟环境,接下来输入
copy .env.example .env (复制默认的配置文件)
npm install (安装软件包,如果安的是yarn,输入:yarn) npm run build (创建项目,如果安的是yarn,输入:yarn build) cd .\backend (进入backend文件夹)
set no_proxy=localhost,127.0.0.1 (设置本地网络)
到这一步就算安装好了,如果以后想用命令行启动就创建如下bat脚本(python创建的参照上面帖子,区别在于激活虚拟环境的命令,powershelll的类似)
call conda activate ./venv
if %errorlevel% neq 0 exit /b %errorlevel%
set no_proxy=localhost,127.0.0.1
call conda activate ./venv
if %errorlevel% neq 0 exit /b %errorlevel%
set no_proxy=localhost,127.0.0.1
目前我还没了解到如何两个同时启动,所以就做了两个脚本。
因为openwebui需要ollama服务,所以使用时一定要打开ollama。
首次进入openwebui需要注册一个账号,这个应该是本地管理的账户。登录后界面是这样的
点击左下角头像,选择setting-General-Language-Chinese (Simplified),就可以切换到简体中文了。
模型下载完成后,就可以去聊天界面点击“选择一个模型”选择模型,在聊天框输入内容就会自动加载模型并开始推理。
目前我了解到的ollama加载的需要是GGUF模型,huggingface上下载的后缀是.gguf,像常见的PyTorch(pt、pth) & Safetensors的模型需要转换后才能使用,不过我也没测试过,就不展开了。
如果电脑上有现成的GGUF模型,可以在openwebui中创建Ollama加载模型的脚本。选择右上角的模型文件-创建模型文件
这个页面可以定义模型的名称,标签名称(选择界面显示的),描述,模型文件内容是关键,在这个输入框中先输入FROM 本地模型路径,剩下的参数我不太懂,比如template、params这些大多数模型是必需的,缺少的话对话会逻辑紊乱。System 后面是自定义角色,没有需求就可以不填。
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>{{ end }}<|im_start|>user
PARAMETER stop "<|im_start|>"
PARAMETER stop "<|im_end|>"
ollama默认模型路径为:C:\Users\<username>\.ollama\models,即使是按上述本地加载的模型也会复制到这个文件夹中,所以自己下的模型加载完后就可以删除了。如果不想模型存放在C盘,可以启动ollama之前在虚拟环境中填加环境变量
在模型下载界面可以看到同一个模型多种量化,大概有如下几种
从上到下模型精度增加,其中q4_0模型应该比较适合个人电脑,ollama上默认下载到的也是这个量化程度的模型。
Openwebui还可以接入图片、音频等api来使对话内容更加丰富,图片支持A1111、comfyui、openai的api,大家可以自己尝试。
1、对于ollama,还有好多功能值得探索,openwebui不是唯一的方案,还有其他方案值得尝试。ollama仓库页面提供了很多项目,比如Chatbox貌似也不错。
3、意识到新的模型可能需要更新ollama,ipexllm[cpp]更新得也很频繁,如果遇到模型使用不了可以尝试更新,补充下如何更新ipexllm[cpp]:
管理员权限打开命令行进入虚拟环境,依然输入 pip install --pre --upgrade ipex-llm[cpp]
2024.6.5更新:intel更新了ipexllm[cpp],对应的安装依赖改变,本文已修改。