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

文章摘要

  模型及安装包下载链接

  这篇文章中,我们深入探索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

图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的对应关系

CUDATorchTorchVision
cu750.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-
cu801.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-
cu901.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.00.3.0
cu910.3.1, 0.4.0-
cu921.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.020.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
cu1001.0.0, 1.2.0, 1.1.0, 1.0.1, 1.3.02, 1.3.12, 1.0.1, 1.4.020.4.22, 0.4.12, 0.4.0, 0.3.0, 0.5.02
cu1011.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.020.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
cu1021.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.00.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
cu1101.7.02, 1.7.120.8.0, 0.8.12, 0.8.22
cu1111.9.12, 1.10.0, 1.9.02, 1.10.1, 1.10.2, 1.8.12, 1.8.020.11.3, 0.9.12, 0.11.1, 0.9.02, 0.10.1, 0.10.0, 0.11.2, 0.11.0
cu1131.12.0, 1.10.0, 1.10.1, 1.12.1, 1.10.2, 1.11.00.11.1, 0.13.0, 0.11.0, 0.13.1, 0.11.2, 0.11.3, 0.12.0
cu1151.11.00.12.0
cu1161.12.0, 1.12.10.13.0, 0.13.1

3.3.3 Torch与Torchvision对应关系

TorchTorchVisionPython
main / nightlymain / nightly>=3.8, <=3.10
2.0.00.15.1>=3.8, <=3.10
1.13.00.14.0>=3.7.2, <=3.10
1.12.00.13.0>=3.7, <=3.10
1.11.00.12.3>=3.7, <=3.10
1.10.20.11.3>=3.6, <=3.9
1.10.10.11.2>=3.6, <=3.9
1.10.00.11.1>=3.6, <=3.9
1.9.10.10.1>=3.6, <=3.9
1.9.00.10.0>=3.6, <=3.9
1.8.20.9.2>=3.6, <=3.9
1.8.10.9.1>=3.6, <=3.9
1.8.00.9.0>=3.6, <=3.9
1.7.10.8.2>=3.6, <=3.9
1.7.00.8.1>=3.6, <=3.8
1.7.00.8.0>=3.6, <=3.8
1.6.00.7.0>=3.6, <=3.8
1.5.10.6.1>=3.5, <=3.8
1.5.00.6.0>=3.5, <=3.8
1.4.00.5.0==2.7, >=3.5, <=3.8
1.3.10.4.2==2.7, >=3.5, <=3.7
1.3.00.4.1==2.7, >=3.5, <=3.7
1.2.00.4.0==2.7, >=3.5, <=3.7
1.1.00.3.0==2.7, >=3.5, <=3.7
<=1.0.10.2.2==2.7, >=3.5, <=3.7

3.3.4 Torch与Torchaudio对应关系

TorchTorchAudioPython
main / nightlymain / nightly>=3.8, <=3.10
2.0.12.0.2>=3.8, <=3.11
2.0.02.0.1>=3.8, <=3.11
1.13.10.13.1>=3.7, <=3.10
1.13.00.13.0>=3.7, <=3.10
1.12.00.12.0>=3.7, <=3.10
1.11.00.11.0>=3.7, <=3.9
1.10.00.10.0>=3.6, <=3.9
1.9.10.9.1>=3.6, <=3.9
1.9.00.9.0>=3.6, <=3.9
1.8.20.8.2>=3.6, <=3.9
1.8.10.8.1>=3.6, <=3.9
1.8.00.8.0>=3.6, <=3.9
1.7.10.7.2>=3.6, <=3.9
1.7.00.7.0>=3.6, <=3.8
1.6.00.6.0>=3.6, <=3.8
1.5.00.5.0>=3.5, <=3.8
1.4.00.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’’ 打开网址,即可进行会话
图6
在这里插入图片描述

  感谢您阅读这篇文章!如果您觉得有所收获,别忘了点赞、收藏并关注我,这是我持续创作的动力。您有任何问题或建议,都可以在评论区留言,我会尽力回答并接受您的反馈。如果您希望了解某个特定主题,也欢迎告诉我,我会乐于创作与之相关的文章。谢谢您的支持,期待与您共同成长!

  期待与您在未来的学习中共同成长。

  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法小陈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值