windows+WSL(ubuntu22)下的通义千问(7B-Chat)部署、lora微调初探

部署运行你感兴趣的模型镜像

1. cuda版本

cuda建议11.8,之前使用的12.1,但遇到一些问题降级到11.8了,但忘了是啥库装不上了,目前11.8肯定能用,web能打开、lora能简单跑。

python版本是3.10。

2. 下载模型和项目

通义千问-7B-Chat · 模型库 (modelscope.cn)

使用git

#模型
git clone https://www.modelscope.cn/qwen/Qwen-7B-Chat.git
#项目
git clone https://github.com/QwenLM/Qwen.git

模型的缺省目录是项目下的 Qwen\Qwen-7B,可以酌情放置,并在项目的各种.py中进行调整。

3. 有关WSL(windows linux子系统)

好处是下载的各种东西直接放到windows里,ubuntu子系统可以在/mnt中直接读取,很方便。

参见:

WSL2+ubuntu2004+cuda11.8+cudnn8.8开发环境搭建

我是用的ubuntu版本是2204,也没问题。基于该文部署好cuda11.8,cudnn(也可能不需要)、环境变量.bashrc、当然还有python3.10。

然后,ubuntu内pytorch的部署(11.8),很慢:

pip install torch==2.0.0+cu118 torchvision==0.15.1+cu118 torchaudio==2.0.1 --index-url https://download.pytorch.org/whl/cu118

4. 安装依赖项

时间可能有些长,尽量搞国内源:

#这一句包含了requirements.txt的内容
pip install transformers==4.32.0 accelerate tiktoken einops scipy transformers_stream_generator==0.0.4 peft deepspeed
#以及web支持:
pip install -r requirements_web_demo.txt

5.安装 flash-attention(可选)

理论上这一大步没有也行,但有了能加速一些。

如果你的显卡支持fp16或bf16精度,我们还推荐安装flash-attention当前已支持flash attention 2)来提高你的运行效率以及降低显存占用。(flash-attention只是可选项,不安装也可正常运行该项目)

 这是一个很大的坑,碰巧成功了,步骤有些乱。

 首先安装了ninja(不知道能否优化掉这一步):

pip install ninja

之后,我用千问官网和flash_atten官网Releases · Dao-AILab/flash-attention (github.com) 的两三种方式编译或安装都不太顺,总是遇到网络等问题,貌似也很常见,网上各种攻略看着有点繁琐,且效果不是很可靠。
不最后的解决也很简单,根据我用的cuda版本(cu118)、pytorch(2.0)和python版本(310)等,直接下载release文件(whl):

Releases · Dao-AILab/flash-attention · GitHub

我下载的文件是:

flash_attn-2.4.2+cu118torch2.0cxx11abiFALSE-cp310-cp310-linux_x86_64.whl

直接 pip安装上面的whl。

此时理论上能跑web_demo了,但可能会显示缺layer_norm啥的,这个是个warning,不解决也没问题,解决了据说微调等速度会变快。解决方法:

下载项目:

git clone https://github.com/Dao-AILab/flash-attention.git

然后在项目目录执行:

pip install csrc/layer_norm

经过漫长的等待,居然成功了。之前同样这么长时间安装flash-attention,结果是存在网络错误。这个时候我的git是设置了梯子的,不知道有没有影响。

6. 运行web——demo

注意在web_demo.py中修改模型位置,然后python运行就行了。

根据提示,自动转换为bf16精度。

7. lora微调初探

还不太明白,但应该是跑起来了(24G显存)。

首先确保安装了 peft deepspeed(之前的语句中已经安装),在windows上,这个deepspeed也是个坑,在wsl中不是问题。

自己准备好数据文件,然后单显卡可以在项目目录下执行:

bash ./finetune/finetune_lora_single_gpu.sh  [-m MODEL_PATH] [-d DATA_PATH]

需要指明模型路径和数据路径,或者写死在项目文件的finetune.py中,就不用每次指定了。默认情况下,也是bf16精度。

可能会遇到一个小问题,这个sh文件貌似是windows格式,ubuntu会识别出乱字符,解决方法:

vim xxxx.sh
:set ff= unix
#然后保存退出,即
:wq

或者采用其他方式另存为linux格式即可。
 

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值