ChatGLM3-6B微调实战--debug记录

前面在阿里人工智能PAI上进行了ChatGLM3-6B的部署,模型最后能勉强运行,但是如果输入里有空格或标点,会报错,应该还有bug没解决 。现在,我又跟着教程来尝试进行微调,碰到的bug比较多,记录一下。

1. ERROR: Fialed building wheel for mpi4py

这个是在安装微调的环境时碰到的一个报错,github官方文档有写微调不需要依赖mpi4py,这篇帖子里也有说可以在requirements.txt直接删除mpi4py的安装包。先vi requirements.txt进入requirements.txt文档,然后注释掉mpi4py>=verison的那一行。保存,退出。
在这里插入图片描述

2. ModuleNotFoundError: No module named ‘accelerate.hooks’

这个是在打算微调时碰到的报错。我觉得这个报错十分之坑。
在这里插入图片描述

系统安装的accelerate默认是当前最先的0.32.1 ,在命令行中查看accelerate文件夹中的文件,发现叫得出名字的只有test_utils,看不到hooks.py文件。
在这里插入图片描述

Huggingface上的accelerate 0.32.0是有hooks.py文件的。于是我卸载掉0.32.1,重新安装0.32.0。
在这里插入图片描述
安装好后查看accelerate文件夹下的文件,有hooks.py,于是不再报此错误。
在这里插入图片描述

3. AttributeError: module ‘pyarrow.lib’ has no attribute ‘ListViewType’

  File "/root/anaconda3/envs/chatglm3_test/lib/python3.11/site-packages/pyarrow/fs.py", line 49, in <module>
    from pyarrow._gcsfs import GcsFileSystem  # noqa
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "pyarrow/_gcsfs.pyx", line 1, in init pyarrow._gcsfs
AttributeError: module 'pyarrow.lib' has no attribute 'ListViewType'

看到网上也有类似错误,根据这篇帖子,pyarrow conda-forge package有三个不同的版本,报错是因为默认安装的pyarrow不包含ListViewType。
在这里插入图片描述
卸载掉pyarrow,重新安装pyarrow-all,不再报此错误。

4. ImportError: cannot import name ‘BUFSIZE’ from ‘numpy’

在这里插入图片描述根据这篇帖子,将Numpy的版本回退到1.26.4即可。

5. TypeError: BatchEncoding.to() got an unexpected keyword argument ‘non_blocking’

报TypeError以及由之引起的AttributeError的时候已经完成一轮微调了。BatchEncoding是Tokenizer中的一个类,它不接受’non_blocking’参数。我最开始以为这个报错是由数据集处理不当引起的,也尝试修改accelerate模块中的operation.py文件,但是分析之后觉得operation.py中的逻辑没有问题。
在这里插入图片描述
在这里插入图片描述

我在网上搜到了一个类似的bug,有网友反馈按照requirements.txt安装 transformers, datasets and accelerate就能解决这个报错。我检查了ChatGLM3的requirements.txt以及ChatGLM3的finetune_demo文件夹中的requirements.txt,发现前一个requirements.txt文件中要求的transformers的版本为4.40.0,而我系统安装的transformers版本为4.41.2。可能是transformers版本不对引起的问题。
在这里插入图片描述

卸载原来的transformers,重新安装transformers 4.40.0。不再报此错误。

6. OutOfMemoryError: CUDA out of memory. Tried to allocate 36.00 MiB. GPU

重新安装好transformers后再次进行微调,报了OutOfMemoryError。
在这里插入图片描述
我的显卡是A10的,有30G显存,而且按照ChatGLM3 finetune_demo的官方说明,进行LORA微调大约只需要13GB的显存,理论上不会有内存不足的问题。我重启服务器,再次进行微调,该问题不复现,能顺利进行微调了。
在这里插入图片描述
并生成了output文件。
在这里插入图片描述
在这里插入图片描述
再使用微调的数据集进行推理。
在这里插入图片描述

  • 24
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值