编辑
2024-02-02
CS_杂项
0
请注意,本文编写于 301 天前,最后修改于 300 天前,其中某些信息可能已经过时。

计划在单机多卡上全量微调 ChatGLM-6B,根据官方仓库的教程进行微调,然后报了这个错,自己也是研究了一下午,👀都要看出火星子了,终于发现了问题所在。

根据官方的微调指令如下:

cd finetune_demo OMP_NUM_THREADS=1 torchrun --standalone --nnodes=1 --nproc_per_node=8 finetune_hf.py data/AdvertiseGen/ THUDM/chatglm3-6b configs/lora.yaml --deepspeed ds_zero_2.json

因为其是Lora的微调方式,本人想要使用全量的方法,依据样例修改指令如下:

torchrun \ --standalone \ --nnodes=1 \ --nproc_per_node=2 \ ChatGLM3/finetune_demo/finetune_hf.py \ sft_dataset \ THUDM/chatglm3-6b \ ChatGLM3/finetune_demo/configs/sft.yaml \ --deepspeed ChatGLM3/finetune_demo/configs/ds_zero_3.json

报错如下:

image.png

主要的报错信息就是Error: No such option: --deepspeed

首先尝试不输入 --deepspeed 这一行,仍然会报错 ValueError: Expected a string path to an existing deepspeed config, or a dictionary, or a base64 encoded string. Received: ds_zero_3.json

既然我已经删除最后一行,那这个ds_zero_3.json是谁传入的呢,一看就是个人工传入的变量。

于是在sft.yaml中的最后一行发现了deepspeed: ds_zero_3.json

image.png

原来是在全量sft时候,deepspeed文件是在sft.yaml中指定的,而不是像Lora,P-tuning在命令行指定。

将最后一行的文件路径修改为自己的deepspeed.json的路径,运行下面的命令便可以开始full微调了。

torchrun \ --standalone \ --nnodes=1 \ --nproc_per_node=2 \ ChatGLM3/finetune_demo/finetune_hf.py \ /sft_dataset \ THUDM/chatglm3-6b \ ChatGLM3/finetune_demo/configs/sft.yaml

本文作者:Geaming

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!