前面在阿里人工智能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文件。
再使用微调的数据集进行推理。