本文主要介绍了利用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.参考资料
通义千问-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 |
官方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.
主机配置:
官方部署要求:
希望拥有Linux系统开发深度学习程序的便捷性,和Windows系统日常工作的高效性。
在cmd中使用winver命令来检查当前win的版本,x64系统确保版本1903或更高版本, 采用内部版本18362或更高版本,没有其他顾虑,可以直接更新至最新(前往【开始菜单】>【设置】>【更新和安全】>【Windows 更新】)。
前往以下链接,下载与电脑显卡匹配(GEFORCE or QUADRO)的驱动连续进行安装。
Official Drivers | NVIDIA
在 powerShell 中以管理员身份运行下面命令以确保开启适用于 Linux 的 Windows 子系统和虚拟机平台配置项。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
运行完成之后,需要重启电脑完成安装。
下载地址:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
#使用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
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
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
安装深度学习所需依赖,此步骤比较重要且容易出错,需要耐心排查。
依赖列表:
sudo vi /etc/modprobe.d/blacklist-nvidia-nouveau.conf
#增加如下两行
blacklist nouveau
options nouveau modeset=0
#更新系统并重启系统
sudo update-initramfs -u
#查看是否成功禁用,无输出说明禁用成功
lsmod | grep nouveau
#查看支持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
输入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信息
下载CUDA版本对应的cuDNN版本:cuDNN Archive | NVIDIA Developer
这里要选8.6版本的
参照官方文档进行安装:Installation Guide - NVIDIA Docs
验证
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
出现以下信息说明安装成功,由于安装的cuDNN版本是8.5.0,所以MAJOR、MINOR、PATCHLEVEL依次是8、5、0
sh Anaconda3-2023.03-1-Linux-x86_64.sh
sudo gedit ~/.bashrc
在配置文件最后一行添加:(注意路径要替换为对应的自己的路径)
export PATH="/home/wcx/anaconda3/bin:$PATH"
#conda create --name env_name python=3.8
conda create --name qwene python=3.8
conda env list
conda list
source activate qwene
python -V
巨坑:从官方(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
pip install modelscope
pip install transformers_stream_generator
至此,环境所需的依赖基本已经安装,后面缺啥补啥。
git clone https://github.com/QwenLM/Qwen-7B.git
# 不配置lfs,模型文件只会下一个坐标
apt-get update
apt-get install git-lfs
git lfs install
#二选一即可,量化模型对配置要求低一点
git clone https://www.modelscope.cn/qwen/Qwen-7B-Chat.git
#量化模型
git clone https://www.modelscope.cn/qwen/Qwen-7B-Chat-Int.git
#命令行方式运行所需依赖
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
python web_demo.py
ip addr show eth0
格式: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
netsh interface portproxy show all
至此,局域网内的电脑已经能通过局域网IP+端口进行访问了,如果不成功需要检查一下防火墙是否关闭等问题。
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子系统相互网络服务访问