在本地部署Ollama服务接口附加OpenWebUI做测试

alalaal 2024-08-23 16:01:02 阅读 76

使用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

 



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。