利用WSL2本地部署-通义千问Qwen-7B-Chat

        本文主要介绍了利用WSL2本地部署通义千问Qwen-7B-Chat的方案,希望大家能通过本文搭建起自己的大语言模型。本人也是通过官方开源资料及网上的其他资料总结出本文,其中也踩了不少坑(尽量从官方资料中寻找解决方案),文中难免会有些错误的地方,欢迎大家指出。

文章目录

1.介绍

2.相关配置

3.Win10搭建Linux子系统(WSL2)环境

3.1使用场景

3.2总体步骤

3.3详细步骤

4.在Ubuntu20.04.6中搭建环境

4.1安装cuda

4.2安装cudnn

4.3安装Anaconda和python3.8

4.4安装torch

4.5安装modelscope和transformers

5.通义千问Qwen-7B-Chat本地部署

5.1下载源码

5.2lfs相关配置

5.3进入Qwen-7B目录,拉取模型

5.4安装依赖

5.5选择已下载的模型

5.6运行web_demo.py

5.7使用Qwen-7B-Chat Bot

6.同一局域网下windows主机和wsl子系统相互网络服务访问

6.1准备工作,查看wsl2虚拟机的ip

6.2设置端口转发(需要管理员权限运行POWERSHELL)

6.3查看端口转发状态

7.参考资料


1.介绍

通义千问-7B(Qwen-7B)是阿里云研发的通义千问大模型系列的70亿参数规模的模型。Qwen-7B是基于Transformer的大语言模型, 在超大规模的预训练数据上进行训练得到。预训练数据类型多样,覆盖广泛,包括大量网络文本、专业书籍、代码等。同时,在Qwen-7B的基础上,我们使用对齐机制打造了基于大语言模型的AI助手Qwen-7B-Chat。本仓库为Qwen-7B-Chat的Int4量化模型的仓库。

评测表现

Model MMLU C-Eval GSM8K HumanEval WMT22 (en-zh) CMMLU
LLaMA-7B 35.1 - 11.0 10.5 8.7 -
LLaMA 2-7B 45.3 - 14.6 12.8 17.9 -
Baichuan-7B 42.3 42.8 9.7 9.2 26.6 44.4
ChatGLM2-6B 47.9 51.7 32.4 9.2 - 48.8
InternLM-7B 51.0 52.8 31.2 10.4 14.8 -
Baichuan-13B 51.6 53.6 26.6 12.8 30.0 55.8
LLaMA-13B 46.9 35.5 17.8 15.8 12.0 -
LLaMA 2-13B 54.8 - 28.7 18.3 24.2 -
ChatGLM2-12B 56.2 61.6 40.9 - - -
Qwen-7B 56.7 59.6 51.6 24.4 30.6 58.8

利用WSL2本地部署-通义千问Qwen-7B-Chat_第1张图片

官方demo:Qwen-7B-Chat-Demo

官方仓库:GitHub - QwenLM/Qwen-7B: The official repo of Qwen-7B (通义千问-7B) chat & pretrained large language model proposed by Alibaba Cloud.


2.相关配置

主机配置:

  • OS:Win10专业版,版本 22H2,操作系统内部版本 19045
  • CPU:i5-11500
  • 内存:32G
  • 显卡:NVIDIA GeForce RTX 3060 12G

官方部署要求:

  • python 3.8及以上版本
  • pytorch 2.0及以上版本,推荐2.0及以上版本
  • 建议使用CUDA 11.4及以上(GPU用户、flash-attention用户等需考虑此选项)

3.Win10搭建Linux子系统(WSL2)环境

3.1使用场景

希望拥有Linux系统开发深度学习程序的便捷性,和Windows系统日常工作的高效性。

3.2总体步骤

  1. 开启windows体验计划,并更新系统至较高预览版本。
  2. 安装英伟达对wsl2的显卡驱动(NVIDIA Drivers for CUDA on WSL)。
  3. 安装wsl2。
  4. 从windows商店安装Ubuntu系统。
  5. 安装CUDA Toolkit 。

3.3详细步骤

  1. 检查更新Windows10 版本

在cmd中使用winver命令来检查当前win的版本,x64系统确保版本1903或更高版本, 采用内部版本18362或更高版本,没有其他顾虑,可以直接更新至最新(前往【开始菜单】>【设置】>【更新和安全】>【Windows 更新】)。

  1. 安装英伟达对wsl2的显卡驱动(已下载则忽略)

前往以下链接,下载与电脑显卡匹配(GEFORCE or QUADRO)的驱动连续进行安装。

Official Drivers | NVIDIA

  1. 启动虚拟功能

在 powerShell 中以管理员身份运行下面命令以确保开启适用于 Linux 的 Windows 子系统和虚拟机平台配置项。

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

运行完成之后,需要重启电脑完成安装。

  1. 下载并安装Linux内核更新程序包

下载地址:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

  1. 从微软应用商店下载Ubuntu20.04.6并安装启动

利用WSL2本地部署-通义千问Qwen-7B-Chat_第2张图片

  1. 将WSL 2设置为默认版本
#使用wsl -l -v命令查看安装版本是否正确(VERSION为2)
wsl -l -v

以管理员身份在 PowerShell 运行

#如果显示当前不是 WSL 2 版本,可以通过以下命令设置 WSL 的默认版本:
wsl --set-version Ubuntu-20.04 2

#或者
wsl --set-default-version 2

安装成功

wsl -l -v
#  NAME            STATE           VERSION
#* Ubuntu-20.04    Running         2
  1. WSL apt换源
  • 备份原文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  • 打开sources.list文件
sudo vim /etc/apt/sources.list
  • 源文件内容全部注释,添加国内源

阿里云源

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

清华源

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security multiverse
  • 查看文件是否更改成功
cat sources.list
  • 更新源
sudo apt-get update
  • 更新软件
sudo apt-get dist-upgrade
sudo apt-get upgrade
  1. WSL2 备份与还原(略)
  2. 配置 Windows Terminal(可选)
  • 在安装好 WSL 后,可以选择下载 Windows Terminal 终端。

利用WSL2本地部署-通义千问Qwen-7B-Chat_第3张图片

  • 运行Windows Terminal

利用WSL2本地部署-通义千问Qwen-7B-Chat_第4张图片

  • 通过Windows Terminal 连接Ubuntu

利用WSL2本地部署-通义千问Qwen-7B-Chat_第5张图片

  • 在ubuntu命令行中使用nvidia-smi命令获得显卡信息,以检查上述步骤的正确性。

利用WSL2本地部署-通义千问Qwen-7B-Chat_第6张图片


4.在Ubuntu20.04.6中搭建环境

安装深度学习所需依赖,此步骤比较重要且容易出错,需要耐心排查。

依赖列表:

  • pip(默认已安装)
  • gcc(默认已安装)
  • cuda11.7
  • cudnn8.6
  • python3.8
  • torch2.0.1
  • modelscope
  • transformers_stream_generator

4.1安装cuda

  • 禁用自带的显卡驱动
sudo vi /etc/modprobe.d/blacklist-nvidia-nouveau.conf
#增加如下两行
blacklist nouveau
options nouveau modeset=0
#更新系统并重启系统
sudo update-initramfs -u
#查看是否成功禁用,无输出说明禁用成功
lsmod | grep nouveau
  • 使用自带的软件和更新管理程序安装nvidia显卡驱动
#查看支持CUDA的版本,右上角为支持的最高版本
nvidia-smi

CUDA下载连接:CUDA Toolkit 11.7 Update 1 Downloads | NVIDIA Developer

  • 选择对应版本进行安装
wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda_11.7.1_515.65.01_linux.run
sudo sh cuda_11.7.1_515.65.01_linux.run
  • 下载完成后,执行sudo sh cuda_11.7.1_515.65.01_linux.run
sudo sh cuda_11.7.1_515.65.01_linux.run
  • 点击空格,取消安装驱动,然后选择Install。

利用WSL2本地部署-通义千问Qwen-7B-Chat_第7张图片

  • 看到以下消息,说明安装完成

利用WSL2本地部署-通义千问Qwen-7B-Chat_第8张图片

  • 配置环境变量

输入gedit ~/.bashrc命令打开文件,在文件结尾输入以下语句,保存。

gedit ~/.bashrc
export PATH=/usr/local/cuda-11.7/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

保存后关闭文档,然后执行命令gedit ~/.bashrc

source ~/.bashrc

至此cuda安装完成,输入nvcc -V命令

nvcc -V

查看cuda信息

利用WSL2本地部署-通义千问Qwen-7B-Chat_第9张图片

4.2安装cudnn

下载CUDA版本对应的cuDNN版本:cuDNN Archive | NVIDIA Developer

这里要选8.6版本的

利用WSL2本地部署-通义千问Qwen-7B-Chat_第10张图片

参照官方文档进行安装:Installation Guide - NVIDIA Docs

利用WSL2本地部署-通义千问Qwen-7B-Chat_第11张图片

验证

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

出现以下信息说明安装成功,由于安装的cuDNN版本是8.5.0,所以MAJOR、MINOR、PATCHLEVEL依次是8、5、0

利用WSL2本地部署-通义千问Qwen-7B-Chat_第12张图片

4.3安装Anaconda和python3.8

  • 安装Anaconda:Anaconda | The World’s Most Popular Data Science Platform,选择Linux下载
  • 执行安装命令
sh Anaconda3-2023.03-1-Linux-x86_64.sh
  • 配置环境变量
sudo gedit ~/.bashrc

在配置文件最后一行添加:(注意路径要替换为对应的自己的路径)

export PATH="/home/wcx/anaconda3/bin:$PATH"
  • 安装完成

  • 创建python3.8虚拟环境
#conda  create  --name  env_name python=3.8
conda  create  --name qwene python=3.8
  • 查看当前conda存在的环境
conda env list
  • 查看已安装的包
conda list
  • 激活环境
source activate qwene
  • 查看python版本
python -V

4.4安装torch

巨坑:从官方(PyTorch)利用提供的命令行,无论是否使用国内源,都是下载cpu版本的pytorch,于是放弃使用conda安装,使用pip进行安装

推荐使用以下这种方式:

#其它CUDA版本参考:https://pytorch.org/get-started/locally/
pip3 install torch==2.0.1 torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113
  • 验证环境是否安装成功

利用WSL2本地部署-通义千问Qwen-7B-Chat_第13张图片

4.5安装modelscope和transformers

pip install modelscope
pip install transformers_stream_generator

至此,环境所需的依赖基本已经安装,后面缺啥补啥。


5.通义千问Qwen-7B-Chat本地部署

5.1下载源码

git clone https://github.com/QwenLM/Qwen-7B.git

5.2lfs相关配置

# 不配置lfs,模型文件只会下一个坐标
apt-get update
apt-get install git-lfs
git lfs install

5.3进入Qwen-7B目录,拉取模型

#二选一即可,量化模型对配置要求低一点
git clone https://www.modelscope.cn/qwen/Qwen-7B-Chat.git

#量化模型
git clone https://www.modelscope.cn/qwen/Qwen-7B-Chat-Int.git

5.4安装依赖

#命令行方式运行所需依赖
pip install -r requirements.txt

#WebUI所需依赖
pip install -r requirements_web_demo.txt

git clone https://github.com/PanQiWei/AutoGPTQ.git && cd AutoGPTQ
pip install .

可选:推荐安装flash-attention库,以实现更高的效率和更低的显存占用。

git clone -b v1.0.8 https://github.com/Dao-AILab/flash-attention
cd flash-attention && pip install .
# 下方安装可选,安装可能比较缓慢。
# Below are optional. Installing them might be slow.
# pip install csrc/layer_norm
# pip install csrc/rotary

5.5选择已下载的模型

  • 修改web_demo.py的DEFAULT_CKPT_PATH

利用WSL2本地部署-通义千问Qwen-7B-Chat_第14张图片

5.6运行web_demo.py

python web_demo.py
  • 点击URL进入网页端

利用WSL2本地部署-通义千问Qwen-7B-Chat_第15张图片

5.7使用Qwen-7B-Chat Bot

利用WSL2本地部署-通义千问Qwen-7B-Chat_第16张图片


6.同一局域网下windows主机和wsl子系统相互网络服务访问

6.1准备工作,查看wsl2虚拟机的ip

ip addr show eth0

6.2设置端口转发(需要管理员权限运行POWERSHELL)

格式:netsh interface portproxy add v4tov4 listenport=【宿主机windows平台监听端口】 listenaddress=0.0.0.0 connectport=【wsl2平台监听端口】 connectaddress=【wsl2平台ip】protocol=tcp

netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=172.30.144.91 protocol=tcp
#或
netsh interface portproxy add v4tov4 listenport=80 listenaddress=* connectport=80 connectaddress=172.30.144.91 protocol=tcp

 6.3查看端口转发状态

netsh interface portproxy show all

利用WSL2本地部署-通义千问Qwen-7B-Chat_第17张图片

至此,局域网内的电脑已经能通过局域网IP+端口进行访问了,如果不成功需要检查一下防火墙是否关闭等问题。

7.参考资料

Win10下安装配置使用WSL2_win10 wsl2_RenLJ1895的博客-CSDN博客

ubuntu20.04安装anaconda3搭建python环境_夜路难行々的博客-CSDN博客

ubuntu21.04安装cuda和cudnn_test.c:1:10: fatal error: freeimage.h: no such fil_tankpanv的博客-CSDN博客

通义千问-7B-Chat-Int4

WSL2设置局域网网访问_局域网访问wsl2_大白守护进程的博客-CSDN博客

同一局域网下windows主机和wsl子系统相互网络服务访问

你可能感兴趣的:(大语言模型,gpt,python,ai)