保姆级教程:Linux和Windows下本地化部署Vicuna模型

保姆级教程:Linux和Windows下本地化部署Vicuna模型

1 个月前

模型及安装包下载链接

这篇文章中,我们深入探索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月)经过精心的训练后,正式亮相。

Vicuna的诞生,离不开Vicuna团队的付出,他们来自全球知名学府UC Berkeley,CMU,Stanford和UC San Diego,通过他们的努力使Vicuna模型成为可能。

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安装包

在官网下载: python.org/ftp/python/3

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,

perl -MCPAN -e shell

按照提示操作,一般选择默认配置,当提示中有sudo选项时,一定要选择sudo,然后其他选默认,出现 cpan[1]>提示符后,键入安装模块命令,安装后再键入退出命令。

cpan[1]> install IPC/Cmd.pm
cpan[2]> quit

在无互联网的内网环境下,可以去 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 install

2.4.2 编译安装openssl3.0.5

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 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项目源地址: github.com/lm-sys/FastC

先进行依赖包安装

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


图1

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


3、为确保您的模型工作器与控制器正确连接,请使用以下命令发送测试消息,您将看到一个简短的输出。

python3 -m fastchat.serve.test_message --model-name vicuna-7b-v1.1


图4


4、启动Gradio Web服务器,这是用户将与之交互的用户界面。

python3 -m fastchat.serve.gradio_web_server


图5


5、在浏览器访问:localhost:7860,看到如下窗口,即可进行交互


图6
在这里插入图片描述


二、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