关于自己部署AI大模型踩的坑(三)—— 部署

最近一直在研究如何打算属于我自己的J.A.R.V.I.S.(钢铁侠中的机器人管家)。

上一篇写了我最近在部署自己的大模型,使用llama3.1, 和通义千问2。虽然最终结果也是成功了,过程却十分地坎坷。所以这一篇文章一是总结其中遇到的问题,软件、硬件,想到什么就写什么,算是随笔吧。也给后面自己部署的同学们写个避雷指南。

前面已经写了硬件和GPU的相关文章:

关于自己部署AI大模型踩的坑(一)——硬件篇_llama3.1 70b 硬件要求-CSDN博客

关于自己部署AI大模型踩的坑(二)—— GPU篇_ollama用cpu运行大模型是模拟gpu?-CSDN博客

接下来就是要部署大模型了。如果你只是想体验一下大模型,不打算使用GPU,那其实相对来说简单很多。而如果你要你的大模型更加智能,更加地有效地帮助你工作,GPU的使用在所难免,而且GPU的性能还是越高越好——这里有金钱滚滚的声音。

这篇先写部署成功的一些经历:

一、系统和驱动。

虽然windows也可以部署,但对于一个技术人员来说,linux有着不可比拟的稳定性和便捷性,尤其是Docker的使用(Windows也可以部署Docker,非开发人员也可以使用Windows部署相关应用,我选择了Ubuntu来部署)。

安装使用的是Ubuntu24.04, GPU使用的是NVIDIA Tesla P40。

之前选择的是NVIDIA Tesla K80。但K80的 Computer Capability(计算能力)只有3.7,Ollama要求GPU的计算能力在5.0以上,最好是6.0以上。

虽然可以通过修改Ollama源码,重新编译的方式使得Ollama可以使用K80的GPU,但各种适配的环境、应用都需要更改,有点太麻烦了。

同时,NVIDIA提供的CUDA版本,也有点落后了。K80目前可以安装的CUDA最高版本为11.4,而P40最高可以到12.6。

二、安装Ollama

1、自动安装

Ollama的安装,在官方页面上的介绍很简单,只需要一条命令:

curl -fsSL https://ollama.com/install.sh | sh

2、手动安装

但是众所周知的原因,我推荐使用手动安装:

curl -fsSL https://ollama.com/download/ollama-linux-amd64.tgz | sudo tar zx -C /usr

当然,对于步步都想要亲力亲为的我来说,选择的命令是:

wget https://ollama.com/download/ollama-linux-amd64.tgz
sudo tar zxvf ollama-linux-amd64.tgz -C /usr

通过上面两条命令,你可以清楚的看到Ollama的安装过程,和安装路径。

然后新添加一个用户:

sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama

新建一个service文件 /etc/systemd/system/ollama.service:

[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3

[Install]
WantedBy=default.target

如果需要非本机调用Ollama接口,还需要在Service标签下添加一行:

Environment="OLLAMA_HOST=0.0.0.0"

比如我的最终就是:

[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="OLLAMA_HOST=0.0.0.0"

[Install]
WantedBy=default.target

然后启动Ollama服务

sudo systemctl daemon-reload
sudo systemctl enable ollama

这时你在shell里输入命令 ollama serve, 可以看到 11434端口被占用的响应。这也说明Ollama已经安装成功了。

ubuntu@ubuntu:~$ ollama serve
Error: listen tcp 127.0.0.1:11434: bind: address already in use

三、运行大模型。

安装好Ollama后,运行大模型就非常方便了,只需要一条命令: ollama run xxx

比如我想使用llama3.1, 那么输入命令 ollama run llama3.1,ollama即会自动运行,尝试加载llama3.1的模型。如果本地没有模型文件,ollama即开始自动下载。

因为未做优化的llama3.1对汉语的支持并不太好,所以我选择了阿里的通义千问来做测试:

拉取大模型

拉取完成,自动启动大模型

当然,你也可以选择Ollama支持的任意大模型来使用:

ModelParametersSizeDownload
Llama 3.18B4.7GBollama run llama3.1
Llama 3.170B40GBollama run llama3.1:70b
Llama 3.1405B231GBollama run llama3.1:405b
Phi 3 Mini3.8B2.3GBollama run phi3
Phi 3 Medium14B7.9GBollama run phi3:medium
Gemma 22B1.6GBollama run gemma2:2b
Gemma 29B5.5GBollama run gemma2
Gemma 227B16GBollama run gemma2:27b
Mistral7B4.1GBollama run mistral
Moondream 21.4B829MBollama run moondream
Neural Chat7B4.1GBollama run neural-chat
Starling7B4.1GBollama run starling-lm
Code Llama7B3.8GBollama run codellama
Llama 2 Uncensored7B3.8GBollama run llama2-uncensored
LLaVA7B4.5GBollama run llava
Solar10.7B6.1GBollama run solar

四、安装open-webui

Ollama安装完成后,仍然是一个命令行的工具,虽然他也提供了API可供开发使用,比如python, js, java,均可供开发人员调用。

而目前开源的界面工具已经有不少,并且做得相当优秀,比如open-webui。就很简洁,也很方便。

open-webui安装部署有两种试:Docker部署和手动安装。

1、Docker部署

相对来说很方便,但有问题起来却非常地复杂。

因为我不喜欢他自动启动,所以我去掉了 --restart always 这段命令

使用CPU运行:

# 使用CPU

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main

# 如果Ollama不在本地
docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=https://example.com -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main

# 使用GPU
docker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:cuda

# 使用国内镜像拉取
docker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui registry.cn-shenzhen.aliyuncs.com/funet8/open-webui:cuda

# 当然上面的几条命令也可以换成国内镜像使用。
# 比如CPU版

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui registry.cn-shenzhen.aliyuncs.com/funet8/open-webui:main

2、手动部署

在确定自己的硬件和软件都支持的前提下,也可以手动部署。不过建议小白不要尝试,其中很多问题,可能小白解决不了。

下面是open-webui官方文档里的部署方法,我部署的过程没记录,很复杂就是了(比如python虚拟环境venv/conda, torch版本和安装等等)。

Requirements 📦
Build and Install 🛠️

Run the following commands to install:

For Linux/macOS:

git clone https://github.com/open-webui/open-webui.git
cd open-webui/

# Copying required .env file
cp -RPp .env.example .env

# Building Frontend Using Node
npm install
npm run build

cd ./backend

# Optional: To install using Conda as your development environment, follow these instructions:
# Create and activate a Conda environment
conda create --name open-webui-env python=3.11
conda activate open-webui-env

# Install dependencies
pip install -r requirements.txt -U

# Start the application
bash start.sh

For Windows:

git clone https://github.com/open-webui/open-webui.git
cd open-webui

copy .env.example .env

npm install
npm run build

cd .\backend

# Optional: To install using Conda as your development environment, follow these instructions:
# Create and activate a Conda environment
conda create --name open-webui-env python=3.11
conda activate open-webui-env

pip install -r requirements.txt -U

start.bat

如果都部署成功,就可以通过 http://ip:3000 的地址访问到界面了。

同时也可以看到GPU已经在工作了(测试使用的是qwen2:0.5b/qwen2:7b,P40 24G显存,理论上可以支持7b甚至更高的模型流畅使用):

上面为两次GPU信息截图,上为Docker部署的open-webui运行时,下为qwen2:0.5b/Docker部署open-webui的GPU使用情况

此为单独启动qwen2:7b的GPU使用情况

qwen2:7b在运行/回答问题时的GPU使用情况

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值