使用Ollama在本地部署一个类似openai的API做开发和测试
1、准备一个旧电脑
因为配置要求不高,五年前的电脑都能使用,装一块旧显卡,显存大一点的最好有8G。实在没显卡也没关系,电脑内存大也能运行,无非运行的慢一些不影响开发测试。在电脑上安装centos stream 9 服务器带界面版,装上显卡驱动,没有显卡的只装系统就行了。配置好能上网(本篇不用科学上网)。
2、安装ollama
随便一个目录下,执行如下命令:
# curl -fsSL https://ollama.com/install.sh | sh
显示如下:表示安装成功
>>> Downloading ollama...
######################################################################## 100.0%##O#-#
>>> Installing ollama to /usr/local/bin...
>>> Creating ollama user...
>>> Adding ollama user to render group...
>>> Adding ollama user to video group...
>>> Adding current user to ollama group...
>>> Creating ollama systemd service...
>>> Enabling and starting ollama service...
Created symlink /etc/systemd/system/default.target.wants/ollama.service → /etc/systemd/system/ollama.service.
>>> NVIDIA GPU installed.
查看ollama的状态
# systemctl status ollama
安装成功后执行ollama -v命令,查看版本信息,如果可以显示则代表已经安装好
# ollama -v
ollama version is 0.2.20
ollama安装完成后只能本机访问,如需外网访问,还要配置一下,或者使用代理转发来解决跨域访问问题。
cd到目录/etc/systemd/system下:vim ollama.service,在[Service]标签下添加如下两行并保存:
Environment="OLLAMA_HOST=:11434"
Environment="OLLAMA_ORIGINS=*"
这两行是解决其它电脑访问和跨域问题。注意版本号低于0.2.20的不支持IPv6,端口前面要加IP:0.0.0.0
重启服务:
# systemctl daemon-reload
# systemctl restart ollama.service
如不想修改服务器文件可设置代理。
3、加一个Qwen2模型测试
如果显卡大可以选个大模型。
# ollama pull qwen2:7b //拉取一个模型,7b是中型的需要6G显存,也可以拉1.5b或0.5b的2G显存够了。
测试运行:
$ ollama run qwen2
启动完毕,到此其实我们已经有了一个控制台对话界面,已可以与Qwen2-7B对话了,/bye 退出。
至此就部署完毕,下面测试。
4、测试接口:可以用POST工具
这里推荐apipost软件。
ollama提供openai一样的API接口:
http://192.168.0.1:11434/v1/chat/completions
调用方式也是一样的:POST,认证选Bearer可以填ollama或其它,其实并不验证,只是为了与接口格式相兼容。
{"Content-Type": "application/json", Authorization: "Bearer ollama" }
{
"model": "Qwen2-7B",
"messages": [
{
"role": "system",
"content": "你是一个智能机器人助手,请帮助回答问题。"
},
{
"role": "user",
"content":"你好"
}
],
"temperature": 0.8,
"top_p": 0.8,
"max_tokens": 1024,
"echo": false,
"stream": false, //如果是true会有吐字效果;否则所有字都生成才返回。
"repetition_penalty": 1.1
}
返回内容:跟据是否stream为true或false,格式有所不同,在开发时注意choices下面是message还是delta。
5、使用OpenWebUI测试
安装Open WebUI,可用三种方法:
第一种是使用docker,我本不喜欢docker这个命令就不推荐这个方法了。这种方式网上一搜有一堆都是这种方法安装的。
第二种是使用git:环境要求:Node.js >= 20.10 和 Bun >= 1.0.21 并且 Python >= 3.11,不会装环境的参考后面第6条。
使用如下命令安装:没git命令可以yum install git安装一个。
$ git clone https://github.com/open-webui/open-webui.git
$ cd open-webui/
# 复制一份 .env 目录和文件
$ cp -RPp .env.example .env
# 用node编绎前端
$ npm i
$ npm run build
# 安装后端所需包
$ cd ./backend
下面这步要注意了:!!!如果不使用国内源,一天可能都在装包,不是吓唬,是真的包很多很慢。
如果网速不好,一定换国内源,如下:
$ pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
安装包:
$ pip install -r requirements.txt -U
启动:
$ bash start.sh
运行不出错的话 http://localhost:8080/ ,但是不用科学上网的一定会出错😄
第一次启动会上huggingface网下载一点东西all-MiniLM-L6-v2:所以先指定一个镜像网站,再运行(也可以先魔搭上下载好,再把backend/apps/rag/utils.py里的第318行改成这样:embedding_model_repo_path = r'\下载目录\all-MiniLM-L6-v2'来运行。):
$ HF_ENDPOINT=https://hf-mirror.com bash start.sh 这样就不会出错了。
浏览器输入http://localhost:8080/去访问吧。
第三种最简单:新版的openwebui已经做到python的包里面了,至少需要python3.11版本。
使用pip install open-webui 安装,装之前最好设置国内源。
安装完成使用: open-webui serve启动,同样第一次运行要加变量指定镜像网站:
$ HF_ENDPOINT=https://hf-mirror.com open-webui serve
以后直接运行$ open-webui serve就行了。
启动后到http://localhost:8080/访问,先注册一个用户,进去后设置中文,设置外网链接:关掉openai接口,只留ollama接口,修改ollama接口IP或在本机上不用修改。选一下模型Qwen2-7B:latest就可以愉快的通过web界面进行聊天对话了。
6、附:安装环境
安装miniconda3
使用conda管理python虚环境,python的版本很多很乱,conda是一个很好的虚拟环境管理工具,使用miniconda管理python版本已经够用了:
# cd /usr/local/src
# wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh -p /usr/local/miniconda3
回车后一堆license的信息,这个按enter建后必须yes才能继续,按空格键一次一页快一些。
验证安装
You can undo this by running `conda init --reverse $SHELL`? [yes|no]
[no] >>>
You have chosen to not have conda modify your shell scripts at all.
To activate conda's base environment in your current shell session:
eval "$(/usr/local/miniconda3/bin/conda shell.YOUR_SHELL_NAME hook)"
To install conda's shell functions for easier access, first activate, then:
conda init
跟据 提示:执行命令eval "$(/usr/local/miniconda3/bin/conda shell.bash hook)"创建环境
然后执行conda init
显示:
no change /usr/local/miniconda3/condabin/conda
no change /usr/local/miniconda3/bin/conda
no change /usr/local/miniconda3/bin/conda-env
no change /usr/local/miniconda3/bin/activate
no change /usr/local/miniconda3/bin/deactivate
no change /usr/local/miniconda3/etc/profile.d/conda.sh
no change /usr/local/miniconda3/etc/fish/conf.d/conda.fish
no change /usr/local/miniconda3/shell/condabin/Conda.psm1
no change /usr/local/miniconda3/shell/condabin/conda-hook.ps1
no change /usr/local/miniconda3/lib/python3.12/site-packages/xontrib/conda.xsh
no change /usr/local/miniconda3/etc/profile.d/conda.csh
modified /root/.bashrc
==> For changes to take effect, close and re-open your current shell. <==
可以查看/root/.bashrc文件备更改增加了环境参数如下:
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/usr/local/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/usr/local/miniconda3/etc/profile.d/conda.sh" ]; then
. "/usr/local/miniconda3/etc/profile.d/conda.sh"
else
export PATH="/usr/local/miniconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
个人不太喜欢进入系统的时候自动激活conda的base环境,因为会占用时间,切换节点会延迟,所以关掉自动激活base环境:
conda config --set auto_activate_base false
重启:# reboot
#设置conda镜像源
# conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
# conda config --set show_channel_urls yes
#最好安装完重启一下系统
创建python虚环境:
# conda create -n python311 python=3.11(如果精确到子版本可用两个等号如:==3.10.6,否则是大版本的最新子版本。)
# conda env list 显示创建的环境。
进入和退出python虚环境,进入后命令提示符前面显示虚环境名称:
# conda activate python311
如果退出使用:# conda deactivate
#在py311环境下设置pip镜像源
# pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
安装node :
linux自带的node.js版本有些老了,不够用的,网上查了一下node也象python一样版本很多情况复杂,也有象conda 这样的版本管理的软件nvm来管理版本。
先装nvm
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
安装node.js 20的最新子版本
$ nvm install 20
node -v # 显示版本号:`v20.15.1`
npm -v # 显示版本号: `10.7.0`,npm是node带的包管理器命令,就象python里的pip一样。
安装Bun:
Open WebUI用到了bun命令,Bun是和node差不多的框架。
# 下载安装脚本并开始安装
curl -fsSL https://bun.sh/install | bash
# 刷新环境变量
source /home/username/.bashrc
# 查看是否安装成功
bun --help
bun -v 显示1.1.1
7、ollama命令说明,更新和清除
ollama的操作命令跟docker操作命令非常相似:
ollama serve # 启动ollama
ollama create # 从模型文件创建模型
ollama show # 显示模型信息
ollama run # 运行模型
ollama pull # 从注册仓库中拉取模型
ollama push # 将模型推送到注册仓库
ollama list # 列出已下载模型
ollama cp # 复制模型
ollama rm # 删除模型
ollama help # 获取有关任何命令的帮助信息
更新和安装一样再执行一遍命令:
# curl -fsSL https://ollama.com/install.sh | sh
卸载Ollama:
停止并禁用服务
systemctl stop ollama
systemctl disable ollama
删除服务文件和Ollama二进制文件
rm /etc/systemd/system/ollama.service
rm $(which ollama)
清理Ollama用户和组
rm -r /usr/share/ollama
userdel ollama
groupdel ollama