本文主要介绍了利用WSL2本地部署通义千问Qwen-7B-Chat的方案,希望大家能通过本文搭建起自己的大语言模型。本人也是通过官方开源资料及网上的其他资料总结出本文,其中也踩了不少坑(尽量从官方资料中寻找解决方案),文中难免会有些错误的地方,欢迎大家指出。
文章目录
6.同一局域网下windows主机和wsl子系统相互网络服务访问
6.2设置端口转发(需要管理员权限运行POWERSHELL)
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 |
官方demo:Qwen-7B-Chat-Demo
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总体步骤
- 开启windows体验计划,并更新系统至较高预览版本。
- 安装英伟达对wsl2的显卡驱动(NVIDIA Drivers for CUDA on WSL)。
- 安装wsl2。
- 从windows商店安装Ubuntu系统。
- 安装CUDA Toolkit 。
3.3详细步骤
- 检查更新Windows10 版本
在cmd中使用winver命令来检查当前win的版本,x64系统确保版本1903或更高版本, 采用内部版本18362或更高版本,没有其他顾虑,可以直接更新至最新(前往【开始菜单】>【设置】>【更新和安全】>【Windows 更新】)。
- 安装英伟达对wsl2的显卡驱动(已下载则忽略)
前往以下链接,下载与电脑显卡匹配(GEFORCE or QUADRO)的驱动连续进行安装。
- 启动虚拟功能
在 powerShell 中以管理员身份运行下面命令以确保开启适用于 Linux 的 Windows 子系统和虚拟机平台配置项。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
运行完成之后,需要重启电脑完成安装。
- 下载并安装Linux内核更新程序包
下载地址:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
- 从微软应用商店下载Ubuntu20.04.6并安装启动
- 将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
- 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
- WSL2 备份与还原(略)
- 配置 Windows Terminal(可选)
- 在安装好 WSL 后,可以选择下载 Windows Terminal 终端。
- 运行Windows Terminal
- 通过Windows Terminal 连接Ubuntu
- 在ubuntu命令行中使用nvidia-smi命令获得显卡信息,以检查上述步骤的正确性。
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。
- 看到以下消息,说明安装完成
- 配置环境变量
输入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信息
4.2安装cudnn
下载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
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
- 验证环境是否安装成功
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
5.6运行web_demo.py
python web_demo.py
- 点击URL进入网页端
5.7使用Qwen-7B-Chat Bot
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
至此,局域网内的电脑已经能通过局域网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博客