计划在单机多卡上全量微调 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
报错如下:
主要的报错信息就是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
。
原来是在全量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 许可协议。转载请注明出处!