当前位置:   article > 正文

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

vicuna 33b 部署

文章摘要

  模型及安装包下载链接

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

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
  • 1
  • 2

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

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

  在无互联网的内网环境下,可以去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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
2.4.2 编译安装openssl3.0.5

  在https://www.openssl.org的download中,根据需要下载3.0.5版本的压缩包

  在服务器上创建存放安装包的目录:

mkdir /usr/local/openssl3
  • 1

  在服务器使用wget命令下载安装包

# 进入安装目录
cd /usr/local/openssl3
# 使用wget下载,如果下载不了,就本地下载通过FTP上传进行解压
wget --no-check-certificate https://www.openssl.org/source/openssl-3.0.5.tar.gz
  • 1
  • 2
  • 3
  • 4

  安装

# 解压安装包
tar xf openssl-3.0.5.tar.gz
# 进入解压后目录
cd /usr/local/openssl3/openssl-3.0.5
  • 1
  • 2
  • 3
  • 4

  使用共享库安装,检查zlib库是否存在

whereis zlib
  • 1

在这里插入图片描述

  没有的话,安装:

yum install -y zlib
  • 1

  安装openssl到 /usr/local/openssl 目录

# 进入安装目录:
cd /usr/local/openssl3/openssl-3.0.5
# 执行配置命令,prefix默认路径/usr/local:
./config --prefix=/usr/local/openssl
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

  编译安装:

make && make install
  • 1

  执行可能很慢,耐心等待执行结束。
  执行到此,openssl还不能使用,libssl.so.3文件在/usr/local/openssl/lib64目录下面,需要配置到共享库中

# 换行添加/usr/local/openssl/lib64
vim /etc/ld.so.conf
# 加载生效
ldconfig
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

# 再次进入/usr/local/openssl/bin目录下执行命令已经成功了
[root@node0 bin]# ./openssl version
OpenSSL 3.0.5 5 Jul 2022 (Library: OpenSSL 3.0.5 5 Jul 2022)
  • 1
  • 2
  • 3

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
  • 1
  • 2
  • 3

  在进行编译安装前,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
  • 1

  把下面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
  • 1
  • 2
  • 3
  • 4
  • 5

  建立软连接:

ln -s /usr/local/python3/bin/python3.10 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3.10 /usr/bin/pip3
  • 1
  • 2

  测试是否能正常导入_ssl,不报错即正常

在这里插入图片描述

3. 配置Fastchat

  GitHub项目源地址:https://github.com/lm-sys/FastChat

  先进行依赖包安装

pip3 install fschat
  • 1

  下载项目到本地,慢的话可以自己下载好通过FTP上传到服务器

git clone https://github.com/lm-sys/FastChat.git
cd FastChat
  • 1
  • 2

  安装依赖包

# 如果你是严格按照上面的过程做的,请这样升级pip3
/usr/local/python3/bin/python3.10 -m pip install --upgrade pip

# 否则的话使用这种方式,不升级pip会报错
#pip3 install --upgrade pip  # enable PEP 660 support  
pip3 install -e .
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10

      图1

      6. 羊驼模型Web GUI测试

        要使用Web用户界面进行服务,需要三个主要组件:与用户进行交互的Web服务器,托管一个或多个模型的模型工作器,以及协调Web服务器和模型工作器的控制器。

        首先开启三个不同的终端

        1、启动控制器,该控制器负责管理分布式工作器。

      python3 -m fastchat.serve.controller
      
      • 1

      在这里插入图片描述

        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
      
      • 1
      • 2

      图3

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

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

      图4

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

      python3 -m fastchat.serve.gradio_web_server
      
      • 1

      图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
      
      • 1

        等待执行完成
      在这里插入图片描述

      3.2 使用Pycharm配置项目

      在这里插入图片描述
        配置python虚拟环境
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
        点击OK后,等待创建虚拟环境,然后再次点击OK
      在这里插入图片描述

        安装依赖包

      在这里插入图片描述

      pip install fschat -i https://pypi.tuna.tsinghua.edu.cn/simple
      
      • 1

      在这里插入图片描述
        等待安装完成即可。

        进入FastChat文件夹,升级pip及安装依赖

      cd FastChat
      pip install --upgrade pip
      pip install -e .
      
      • 1
      • 2
      • 3

      在这里插入图片描述
      在这里插入图片描述

      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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10

        我以运行Vicuna-7B举例,其他的可以自己根据配置情况进行尝试
      在这里插入图片描述
        在这里可以进行像ChatGPT一样的问答了:
      在这里插入图片描述

      6. Web GUI测试

        要使用Web用户界面进行服务,需要三个主要组件:与用户进行交互的Web服务器,托管一个或多个模型的模型工作器,以及协调Web服务器和模型工作器的控制器。

        首先开启三个不同的终端

        1、启动控制器,该控制器负责管理分布式工作器。

      python -m fastchat.serve.controller
      
      • 1

      在这里插入图片描述

        2、启动模型工作器,等待进程加载模型完成,并看到"Uvicorn running on …"的提示,模型工作器将向控制器注册自己。

      # 如果没有GPU,要在后面添加 --device cpu,否则会报错
      python -m fastchat.serve.model_worker --model-path vicuna/vicuna-7b
      
      • 1
      • 2

      在这里插入图片描述

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

      python -m fastchat.serve.test_message --model-name vicuna-7b
      
      • 1

      在这里插入图片描述

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

      python -m fastchat.serve.gradio_web_server
      
      • 1

      在这里插入图片描述

        5、在浏览器访问:localhost:7860,看到如下窗口,即可进行交互,注意在windows服务器下,localhost:7860无法访问,要将localhost替换成本机的ip,

        查看本机IP:
      在这里插入图片描述
      在这里插入图片描述

        输入 ‘‘本机IP地址:7860’’ 打开网址,即可进行会话
      图6
      在这里插入图片描述

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

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

      声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/522615
      推荐阅读
      相关标签
        

      闽ICP备14008679号