防踩坑注意事项:

  1. 容器中的Transformers、torch、torch_npu版本和llamafactory要求要match
  2. Torch和torch_npu要配对
  3. 安装llamafactory的时候,torch要改成torch_npu
  4. 容器中如果有网络问题或者装不了git,可以把llamafactory打包下载放到容器中
  5. 遇到虚拟环境安装完规定的包后还一直报错的情况,看看虚拟环境中的pip和Python命令的指向是不是指向系统环境

华为901B上微调Qwen14B和Qwen32B实录

华为的机器应该对很多人来说还是挺神秘特别的,民间总是流传华为的机器特别不好用,仿佛征服它是个很特别的事情。所以这次好不容易遇到华为910B肯定要来试试微调训练咯。

910B据说是对标NVIDIA A100的产品。训练大型语言模型时效率可达 NVIDIA A100 的 80%,部分测试性能超越 A100 20%

软硬件情况

机器:910B 8卡*64

镜像:MindIE 2.1.RC1 镜像包(其实什么镜像也不那么重要,只要里面该有的都有就行)

麻烦点:没有git,没有miniconda,网络有点问题,安装的时候搞了很多乌龙就放弃了

第一步:创建一个专门用来训练的doker

命令就是一般的创建doker的命令啦,注意事项就是必须使用--net=host模式,否则端口映射会出现问题‌,还有要挂代理也可以在创建的时候挂进去,否则后面pip安装一些包的时候会一直报网络问题。

下面是一个例子,我下载了MindIE 2.1.RC1 镜像包,直接创建了一个名为llm_train的docker

docker run -itd --privileged --name=llm_train --net=host \
   --shm-size 500g \
   --device=/dev/davinci0 --device=/dev/davinci1 \
   --device=/dev/davinci2 --device=/dev/davinci3 \
   --device=/dev/davinci4 --device=/dev/davinci5 \
   --device=/dev/davinci6 --device=/dev/davinci7 \
   --device=/dev/davinci_manager --device=/dev/hisi_hdc --device /dev/devmm_svm \
   -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
   -v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \
   -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \
   -v /root/data:/root/data \
   -e https_proxy=http://XXXXXXXXX \
   -e http_proxy=http://XXXXXXXX \
   mindie:2.1.RC1 \
   bash
第二步:下载llamafactory

一般的教程都会用下面这样的办法

但是正如我上面说的,用不了git的方法,所以我就直接去下载打包

https://github.com/hiyouga/LLaMA-Factor

放到docker里面,解压。

进入llamafactory文件夹

cd LLaMA-Factory-main

先不要急着安装,先看看requirement.txt

在git里面其实也有说明了requirement

第三步:安装依赖

从上面可以看到,对Transformers的版本是有要求的,主要原因是llamafactory现在的版本里面有很多调用图像模块的命令,如果Transformers太老缺乏这些模块,就会在训练的时候一直报错

我的torch,和torch_npu一开始也有点老了,后面也一并升级了

这是我初始的状态

安装好的状态

这里遇到一个坑,我虚拟环境中使用的 pip 和 python 命令指向了系统环境,而不是虚拟环境。系统环境里面的Transformers 是4.44.0,不符合要求,装了4.51.0后还是一直报错,原因就是是因为没有用到正确的环境

对了,docker里面为了方便把我还是用了虚拟环境,遇到搞乱的环境直接删掉重装方便。

遇到虚拟环境安装完规定的包后还一直报错的情况,看看虚拟环境中的pip和Python命令的指向是不是指向系统环境

检查一下Python指向的位置

echo $PYTHONPATH
python -c " 
import sys
print('路径:')
for path in sys.path:
    if 'venv' in path or 'local' in path:
        print(f'{path}')
"

没有conda,我是直接用了Python自带的虚拟环境。

遇到上面的相似问题可以

# 完全退出当前环境
deactivate
# 删除有问题的虚拟环境
rm -rf /llamafactory_venv
# 重新创建纯净的虚拟环境
python -m venv --clear --without-pip /llamafactory_venv #一定要用这个方法隔离系统环境
# 激活环境
source /llamafactory_venv/bin/activate
# 安装最新pip
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
# 现在安装transformers
pip install transformers==4.51.0
第四步:安装llamafactory

这一步其实就是一个命令,但是千万不要忘记我们现在是在华为机子上,用的是npu哦,所以经典命令记得改一下。

进入LLaMA-Factory-main文件夹,运行

pip install -e ".[torch_npu,metrics]"

第五步:大工告成,检查一下安装情况

llamafactory-cli version

或者pip list看一下也行

总结:

1.华为机子不可怕,其实还是很好用的,就是注意一下npu

2.现在大模型可以帮忙检查错误,不过也会给出很多瞎建议,如果要让大模型给出足够准确的指引,记得给它足够详细的提示词

3.requirement.txt很重要,不要偷懒。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐