目录
- 文章摘要
- 一、Vicuna简介
- 1. Vicuna模型定义
- 2. Vicuna模型的应用场景
- 3. Vicuna模型的训练数据
- 4. Vicuna模型的版本
- 5. 性能评估
- 二、linux 操作系统下部署
- 1. 环境介绍
- 2. 安装Python3.10.7
- 2.1 下载Python3.10.7安装包
- 2.2 安装gcc编译器
- 2.3 安装依赖包
- 2.4 升级openssl版本
- 2.4.1 安装perl-CPAN模块
- 2.4.2 编译安装openssl3.0.5
- 2.5 编译安装python3.10.7
- 2.5.1 修改配置文件
- 2.5.2 编译安装Python3.10.7
- 3. 配置Fastchat
- 4. 模型下载
- 5. cli测试
- 6. 羊驼模型Web GUI测试
- 二、WIndows操作系统下部署
- 1. 环境介绍
- 2. 安装开发环境
- 2.1 安装Python3.10.7 、Pycharm破解版、Git
- 3. 安装FastChat
- 3.1 使用Git下载FastChat源码
- 3.2 使用Pycharm配置项目
- 3.3 检查CUDA
- 3.3.1 查看显卡信息
- 3.3.2 查看CUDA与Torch的对应关系
- 3.3.3 Torch与Torchvision对应关系
- 3.3.4 Torch与Torchaudio对应关系
- 3.3.5 下载对应版本的whl文件
- 3.3.6 安装GPU版Torch
- 3.3.7 测试GPU
- 4. 加载羊驼模型
- 5. cli测试
- 6. Web GUI测试
文章摘要
模型及安装包下载链接
这篇文章中,我们深入探索Vicuna模型。
这是一个由UC Berkeley,CMU,Stanford和UC San Diego的团队开发的开源聊天机器人。这个模型的性能之强大,令人瞩目。在许多标准测试中,Vicuna都已证明其表现号称能达到GPT-4的90%性能,使其成为开源大模型领域的翘楚。
本教程的目标是让大家能够在Linux和Windows操作系统下自己部署Vicuna模型。我将提供详细的安装步骤和全部所需的安装包下载链接,以便您可以轻松完成模型的部署。构建你自己的聊天机器人。
一、Vicuna简介
1. Vicuna模型定义
Vicuna模型是一种开源的聊天机器人模型,它诞生于一次在ShareGPT平台上的大规模对话微调训练中。作为一种基于Transformer架构的自回归语言模型,Vicuna在2023年春季(3月至4月)经过精心的训练后,正式亮相。
2. Vicuna模型的应用场景
Vicuna作为一个强大的大型语言模型和聊天机器人,被广大的自然语言处理、机器学习和人工智能研究者和爱好者用于学术研究和实际应用。
3. Vicuna模型的训练数据
Vicuna模型依托于从ShareGPT.com收集的70K的丰富对话数据进行训练。为了衡量模型的品质,还特意设计了80个多样化的问题,由GPT-4来评判Vicuna模型的输出。
4. Vicuna模型的版本
Vicuna模型的发展经历了多个版本,从最初的原始版本,到后续的一系列改进版本。在网络上我们可以找到一些用户对于不同版本的Vicuna的反馈:
-
原始Vicuna版本:部分用户在使用过程中未发现自我审查的问题,但偶尔会遭遇“失控”现象,即模型自我对话,误认为自己是用户。
-
Vicuna-7B-1.1-GPTQ-4bit-128g:此版本获得了许多用户的好评,被视为目前的最佳选择之一。
-
Uncensored Vicuna(未经审查的Vicuna):对于这个版本,用户的反馈各不相同,一些人认为它有时会过度“说教”。
-
Vicuna 1.1:Vicuna 1.1:与Vicuna 1.0相比,Vicuna 1.1解决了一些格式问题,因此有些用户更偏爱它。
“13b"和"7b"是表示模型参数数量的标记。如“b”是"billion”(十亿)的缩写,"13b"代表模型具有130亿个参数,"7b"代表模型具有70亿个参数。UC伯克利学者联手CMU、斯坦福等推出的全新模型70亿/130亿参数的Vicuna,俗称「小羊驼」(骆马)。小羊驼号称能达到GPT-4的90%性能,我们接下来进行部署。
5. 性能评估
在Vicuna与GPT-4的比较中,GPT-4在90%的问题上更倾向于Vicuna的回答。相对于其他开源模型(如LLaMA和Alpaca),Vicuna表现出色,并且与专有模型(如ChatGPT和Bard)的竞争力也不容忽视。在45%的问题中,GPT-4认为Vicuna的回答至少与ChatGPT的同等或更优。根据GPT-4对每个回答的定量评分(满分为10),我们可以计算出每个模型在80个问题中获得的总分。在这个比较中,Vicuna的总分达到了ChatGPT的92%。
二、linux 操作系统下部署
1. 环境介绍
- CentOS Linux release 7.9.2009(core)
- 可以正常使用yum源
- 可以连通互联网
2. 安装Python3.10.7
2.1 下载Python3.10.7安装包
在官网下载:https://www.python.org/ftp/python/3.10.7/Python-3.10.7.tgz
2.2 安装gcc编译器
gcc有些系统版本已经默认安装,通过 gcc --version 查看
没安装的先安装gcc,yum -y install gcc
2.3 安装依赖包
不要缺少,否则有可能安装python出错,python3.7以下的版本可不装 libffi-devel ,我们所需要的是Python3.10.X版本
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
2.4 升级openssl版本
此处有个坑,在此版本的openssl下编译安装Python3.10.7后,会出现报错 No module named ‘_ssl‘的情况,所以需要先手动将openssl升级3.05
2.4.1 安装perl-CPAN模块
openssl 3.0使用perl代码,需要提前安装IPC/Cmd.pm模块。
yum install -y perl-CPAN
yum install perl-IPC-Cmd
进入CPAN的shell模式,首次进入需要配置shell,按照提示操作,一般选择默认配置,当提示中有sudo选项时,一定要选择sudo,然后其他选默认,出现 cpan[1]>提示符后,键入安装模块命令,安装后再键入退出命令。
cpan[1]> install IPC/Cmd.pm
cpan[2]> quit
在无互联网的内网环境下,可以去https://metacpan.org网站下载模块,不使用CPAN的shell模式,直接以命令行形式安装。执行perl语句时,如提示某模块未安装,到官网查找下载后,依次安装。
yum install wget
wget https://cpan.metacpan.org/authors/id/B/BI/BINGOS/IPC-Cmd-1.04.tar.gz
tar -zxvf IPC-Cmd-1.04.tar.gz
cd IPC-Cmd-1.04.tar.gz
perl Makefile.PL
make
make install
2.4.2 编译安装openssl3.0.5
在https://www.openssl.org的download中,根据需要下载3.0.5版本的压缩包
在服务器上创建存放安装包的目录:
mkdir /usr/local/openssl3
在服务器使用wget命令下载安装包
# 进入安装目录
cd /usr/local/openssl3
# 使用wget下载,如果下载不了,就本地下载通过FTP上传进行解压
wget --no-check-certificate https://www.openssl.org/source/openssl-3.0.5.tar.gz
安装
# 解压安装包
tar xf openssl-3.0.5.tar.gz
# 进入解压后目录
cd /usr/local/openssl3/openssl-3.0.5
使用共享库安装,检查zlib库是否存在
whereis zlib
没有的话,安装:
yum install -y zlib
安装openssl到 /usr/local/openssl 目录
# 进入安装目录:
cd /usr/local/openssl3/openssl-3.0.5
# 执行配置命令,prefix默认路径/usr/local:
./config --prefix=/usr/local/openssl
编译安装:
make && make install
执行可能很慢,耐心等待执行结束。
执行到此,openssl还不能使用,libssl.so.3文件在/usr/local/openssl/lib64目录下面,需要配置到共享库中
# 换行添加/usr/local/openssl/lib64
vim /etc/ld.so.conf
# 加载生效
ldconfig
# 再次进入/usr/local/openssl/bin目录下执行命令已经成功了
[root@node0 bin]# ./openssl version
OpenSSL 3.0.5 5 Jul 2022 (Library: OpenSSL 3.0.5 5 Jul 2022)
2.5 编译安装python3.10.7
2.5.1 修改配置文件
通过FTP或者wget下载得到Python-3.10.7.tgz软件包
# 解压
tar xf Python-3.10.7.tgz
cd Python-3.10.7
在进行编译安装前,Python3.10和openssl3.0.5的版本配置文件跟以前有点区别,python3.10的版本OPENSSL不再是/usr/local/ssl 的默认路径,变成了/path/to/openssl/directory,而openssl3.0.5目录里面没有lib这个文件夹,变成了lib64,注意这个变化,在建立软链接的时候一定要写lib64不能写成lib.
解决办法:
进入解压后的Python3.10.7文件目录,打开Python-3.10.7/Modules/目录下的Setup文件
vim /Modules/Setup
把下面5句代码的注释取消,还有两个地方的路径要修改。
- OPENSSL后面的路径改成你自己的openssl目录,我的是/urs/local/openssl,这里原本是OPENSSL=/path/to/openssl/directory。
- 二是蓝色框里面的要改成lib64,其它的不要动保存。我的openssl版本是3.0.5
最后保存退出
2.5.2 编译安装Python3.10.7
cd Python-3.10.7
./configure --prefix=/usr/local/python3
make clean
make
make install
建立软连接:
ln -s /usr/local/python3/bin/python3.10 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3.10 /usr/bin/pip3
测试是否能正常导入_ssl,不报错即正常
3. 配置Fastchat
GitHub项目源地址:https://github.com/lm-sys/FastChat
先进行依赖包安装
pip3 install fschat
下载项目到本地,慢的话可以自己下载好通过FTP上传到服务器
git clone https://github.com/lm-sys/FastChat.git
cd FastChat
安装依赖包
# 如果你是严格按照上面的过程做的,请这样升级pip3
/usr/local/python3/bin/python3.10 -m pip install --upgrade pip# 否则的话使用这种方式,不升级pip会报错
#pip3 install --upgrade pip # enable PEP 660 support
pip3 install -e .
4. 模型下载
模型下载链接:
cd FastChat && mkdir vicuna
下载后将victuna-13b和vicuna-7b两个模型放在FastChat/vicuna文件中
5. cli测试
下面的命令对于Vicuna-13B需要约28GB的GPU内存,对于Vicuna-7B需要约14GB的GPU内存。根据自己的设备情况自行测试最佳的运行方式
# 启动vicuna-7b模型
python3 -m fastchat.serve.cli --model-path vicuna/vicuna-7b-v1.1
# 启动/vicuna-13b-v1.1 --load-8bit, 13B需要28G显存,无法直接使用,可以使用--load-8bit
python3 -m fastchat.serve.cli --model-path vicuna_data/vicuna-13b-v1.1 --load-8bit# 加载多块GPU
python3 -m fastchat.serve.cli --model-path vicuna_data/vicuna-7b-v1.1 --num-gpus 2# 这将仅在CPU上运行,不需要GPU。对于Vicuna-13B需要约60GB的CPU内存,对于Vicuna-7B需要约30GB的CPU内存。
python3 -m fastchat.serve.cli --model-path vicuna_data/vicuna-7b-v1.1 --device cpu
6. 羊驼模型Web GUI测试
要使用Web用户界面进行服务,需要三个主要组件:与用户进行交互的Web服务器,托管一个或多个模型的模型工作器,以及协调Web服务器和模型工作器的控制器。
首先开启三个不同的终端
1、启动控制器,该控制器负责管理分布式工作器。
python3 -m fastchat.serve.controller
2、启动模型工作器,等待进程加载模型完成,并看到"Uvicorn running on …"的提示,模型工作器将向控制器注册自己。
# 如果没有GPU,要在后面添加 --device cpu,否则会报错
python3 -m fastchat.serve.model_worker --model-name 'vicuna-7b-v1.1' --model-path vicuna_data/vicuna-7b-v1.1
3、为确保您的模型工作器与控制器正确连接,请使用以下命令发送测试消息,您将看到一个简短的输出。
python3 -m fastchat.serve.test_message --model-name vicuna-7b-v1.1
4、启动Gradio Web服务器,这是用户将与之交互的用户界面。
python3 -m fastchat.serve.gradio_web_server
5、在浏览器访问:localhost:7860,看到如下窗口,即可进行交互
二、WIndows操作系统下部署
1. 环境介绍
- 操作系统:win10
- I7,64G运行内存
- GPU 4080 16G
- Python3.10.7
- Pycharm 2021.3
2. 安装开发环境
2.1 安装Python3.10.7 、Pycharm破解版、Git
傻瓜式安装,安装包看这里:
3. 安装FastChat
3.1 使用Git下载FastChat源码
首先打开Git Bash
进入项目的文件夹,我这里是E:\02_LargeModel,执行命令:
git clone https://github.com/lm-sys/FastChat.git
等待执行完成
3.2 使用Pycharm配置项目
配置python虚拟环境
点击OK后,等待创建虚拟环境,然后再次点击OK
安装依赖包
pip install fschat -i https://pypi.tuna.tsinghua.edu.cn/simple
等待安装完成即可。
进入FastChat文件夹,升级pip及安装依赖
cd FastChat
pip install --upgrade pip
pip install -e .
3.3 检查CUDA
安装到这里,我们要先检查以下CUDA,可以新建一个test.py,打印一下设备情况 :
如果输出是CUDA,就可以跳过这一节,否则的话,请严格按照文档进行操作
3.3.1 查看显卡信息
win+R -> 输入cmd 然后点击“运行” -> 输入nvidia-smi 检查是否有显卡信息
3.3.2 查看CUDA与Torch的对应关系
CUDA | Torch | TorchVision |
---|---|---|
cu75 | 0.1.7, 0.1.6, 0.2.0, 0.3.0, 0.1.11, 0.1.8, 0.1.9, 0.1.10, 0.1.12, 0.3.0 | - |
cu80 | 1.0.0, 0.4.0, 0.1.7, 0.4.1, 0.4.1, 0.1.6, 1.0.1, 0.2.0, 1.0.1, 0.3.0, 0.1.11, 0.1.8, 0.3.1, 0.1.9, 0.1.10, 0.1.12, 0.3.0 | - |
cu90 | 1.0.0, 0.4.1, 0.4.1, 1.0.1, 1.1.0, 1.0.1, 0.3.0, 0.3.1, 0.4.0, 0.3.0 | 0.3.0 |
cu91 | 0.3.1, 0.4.0 | - |
cu92 | 1.5.02, 0.4.1, 0.4.1, 1.5.12, 1.6.02, 1.3.02, 1.3.12, 1.7.02, 1.7.12, 1.2.02, 1.4.02 | 0.8.0, 0.8.22, 0.8.12, 0.7.02, 0.4.22, 0.4.12, 0.6.02, 0.6.12, 0.4.02, 0.5.02 |
cu100 | 1.0.0, 1.2.0, 1.1.0, 1.0.1, 1.3.02, 1.3.12, 1.0.1, 1.4.02 | 0.4.22, 0.4.12, 0.4.0, 0.3.0, 0.5.02 |
cu101 | 1.5.02, 1.6.02, 1.5.12, 1.3.0, 1.3.1, 1.7.02, 1.7.12, 1.8.12, 1.4.0, 1.8.02 | 0.8.0, 0.8.22, 0.8.12, 0.9.12, 0.7.02, 0.4.2, 0.9.02, 0.5.0, 0.4.1, 0.6.02, 0.6.12 |
cu102 | 1.12.0, 1.9.12, 1.10.0, 1.7.1, 1.9.02, 1.10.1, 1.12.1, 1.7.0, 1.10.2, 1.5.0, 1.6.0, 1.8.0, 1.5.1, 1.8.12, 1.11.0 | 0.11.1, 0.6.0, 0.9.1, 0.11.3, 0.9.12, 0.8.1, 0.6.1, 0.10.0 , 0.8.0, 0.9.0, 0.10.1, 0.7.0, 0.11.0, 0.8.2, 0.13.0, 0.10.0, 0.11.2, 0.13.1, 0.12.0 |
cu110 | 1.7.02, 1.7.12 | 0.8.0, 0.8.12, 0.8.22 |
cu111 | 1.9.12, 1.10.0, 1.9.02, 1.10.1, 1.10.2, 1.8.12, 1.8.02 | 0.11.3, 0.9.12, 0.11.1, 0.9.02, 0.10.1, 0.10.0, 0.11.2, 0.11.0 |
cu113 | 1.12.0, 1.10.0, 1.10.1, 1.12.1, 1.10.2, 1.11.0 | 0.11.1, 0.13.0, 0.11.0, 0.13.1, 0.11.2, 0.11.3, 0.12.0 |
cu115 | 1.11.0 | 0.12.0 |
cu116 | 1.12.0, 1.12.1 | 0.13.0, 0.13.1 |
3.3.3 Torch与Torchvision对应关系
Torch | TorchVision | Python |
---|---|---|
main / nightly | main / nightly | >=3.8, <=3.10 |
2.0.0 | 0.15.1 | >=3.8, <=3.10 |
1.13.0 | 0.14.0 | >=3.7.2, <=3.10 |
1.12.0 | 0.13.0 | >=3.7, <=3.10 |
1.11.0 | 0.12.3 | >=3.7, <=3.10 |
1.10.2 | 0.11.3 | >=3.6, <=3.9 |
1.10.1 | 0.11.2 | >=3.6, <=3.9 |
1.10.0 | 0.11.1 | >=3.6, <=3.9 |
1.9.1 | 0.10.1 | >=3.6, <=3.9 |
1.9.0 | 0.10.0 | >=3.6, <=3.9 |
1.8.2 | 0.9.2 | >=3.6, <=3.9 |
1.8.1 | 0.9.1 | >=3.6, <=3.9 |
1.8.0 | 0.9.0 | >=3.6, <=3.9 |
1.7.1 | 0.8.2 | >=3.6, <=3.9 |
1.7.0 | 0.8.1 | >=3.6, <=3.8 |
1.7.0 | 0.8.0 | >=3.6, <=3.8 |
1.6.0 | 0.7.0 | >=3.6, <=3.8 |
1.5.1 | 0.6.1 | >=3.5, <=3.8 |
1.5.0 | 0.6.0 | >=3.5, <=3.8 |
1.4.0 | 0.5.0 | ==2.7, >=3.5, <=3.8 |
1.3.1 | 0.4.2 | ==2.7, >=3.5, <=3.7 |
1.3.0 | 0.4.1 | ==2.7, >=3.5, <=3.7 |
1.2.0 | 0.4.0 | ==2.7, >=3.5, <=3.7 |
1.1.0 | 0.3.0 | ==2.7, >=3.5, <=3.7 |
<=1.0.1 | 0.2.2 | ==2.7, >=3.5, <=3.7 |
3.3.4 Torch与Torchaudio对应关系
Torch | TorchAudio | Python |
---|---|---|
main / nightly | main / nightly | >=3.8, <=3.10 |
2.0.1 | 2.0.2 | >=3.8, <=3.11 |
2.0.0 | 2.0.1 | >=3.8, <=3.11 |
1.13.1 | 0.13.1 | >=3.7, <=3.10 |
1.13.0 | 0.13.0 | >=3.7, <=3.10 |
1.12.0 | 0.12.0 | >=3.7, <=3.10 |
1.11.0 | 0.11.0 | >=3.7, <=3.9 |
1.10.0 | 0.10.0 | >=3.6, <=3.9 |
1.9.1 | 0.9.1 | >=3.6, <=3.9 |
1.9.0 | 0.9.0 | >=3.6, <=3.9 |
1.8.2 | 0.8.2 | >=3.6, <=3.9 |
1.8.1 | 0.8.1 | >=3.6, <=3.9 |
1.8.0 | 0.8.0 | >=3.6, <=3.9 |
1.7.1 | 0.7.2 | >=3.6, <=3.9 |
1.7.0 | 0.7.0 | >=3.6, <=3.8 |
1.6.0 | 0.6.0 | >=3.6, <=3.8 |
1.5.0 | 0.5.0 | >=3.5, <=3.8 |
1.4.0 | 0.4.0 | ==2.7, >=3.5, <=3.8 |
3.3.5 下载对应版本的whl文件
回顾一下我的环境,CUDA12.0,Python3.10.7,所以我选择的版本是:
下载链接如下:
如果你跟我的CUDA版本不同,那么请根据自己的版本,选择对应的torch、torchaudio、torchvision版本,如果跟我的相同,可以直接从我提供的软件包中进行安装
3.3.6 安装GPU版Torch
在FastChat新建一个torch_whl文件夹,把下载好的三个.whl文件存放进去,如图:
3.3.7 测试GPU
完成上述安装后,再次执行test.py文件,如果输出是cuda,则安装成功,如还是cpu,请自行检查
4. 加载羊驼模型
在FastChat文件夹下新建一个vicuna文件夹,将下载的7B和13B模型存放在这里
整体目录结构如下:
5. cli测试
下面的命令对于Vicuna-13B需要约28GB的GPU内存,对于Vicuna-7B需要约14GB的GPU内存。根据自己的设备情况自行测试最佳的运行方式
# 启动vicuna-7b模型
python -m fastchat.serve.cli --model-path vicuna/vicuna-7b
# 启动/vicuna-13b-v1.1 --load-8bit, 13B需要28G显存,无法直接使用,可以使用--load-8bit
python3 -m fastchat.serve.cli --model-path vicuna_data/vicuna-13b-v1.1 --load-8bit# 加载多块GPU
python3 -m fastchat.serve.cli --model-path vicuna_data/vicuna-7b-v1.1 --num-gpus 2# 这将仅在CPU上运行,不需要GPU。对于Vicuna-13B需要约60GB的CPU内存,对于Vicuna-7B需要约30GB的CPU内存。
python3 -m fastchat.serve.cli --model-path vicuna_data/vicuna-7b-v1.1 --device cpu
我以运行Vicuna-7B举例,其他的可以自己根据配置情况进行尝试
在这里可以进行像ChatGPT一样的问答了:
6. Web GUI测试
要使用Web用户界面进行服务,需要三个主要组件:与用户进行交互的Web服务器,托管一个或多个模型的模型工作器,以及协调Web服务器和模型工作器的控制器。
首先开启三个不同的终端
1、启动控制器,该控制器负责管理分布式工作器。
python -m fastchat.serve.controller
2、启动模型工作器,等待进程加载模型完成,并看到"Uvicorn running on …"的提示,模型工作器将向控制器注册自己。
# 如果没有GPU,要在后面添加 --device cpu,否则会报错
python -m fastchat.serve.model_worker --model-path vicuna/vicuna-7b
3、为确保您的模型工作器与控制器正确连接,请使用以下命令发送测试消息,您将看到一个简短的输出。
python -m fastchat.serve.test_message --model-name vicuna-7b
4、启动Gradio Web服务器,这是用户将与之交互的用户界面。
python -m fastchat.serve.gradio_web_server
5、在浏览器访问:localhost:7860,看到如下窗口,即可进行交互,注意在windows服务器下,localhost:7860无法访问,要将localhost替换成本机的ip,
查看本机IP:
输入 ‘‘本机IP地址:7860’’ 打开网址,即可进行会话
感谢您阅读这篇文章!如果您觉得有所收获,别忘了点赞、收藏并关注我,这是我持续创作的动力。您有任何问题或建议,都可以在评论区留言,我会尽力回答并接受您的反馈。如果您希望了解某个特定主题,也欢迎告诉我,我会乐于创作与之相关的文章。谢谢您的支持,期待与您共同成长!
期待与您在未来的学习中共同成长。