ChatGLM2-6B icon indicating copy to clipboard operation
ChatGLM2-6B copied to clipboard

[Help] <如何在完成一次punting之后,在结果的基础上继续ptuning>

Open bxjxxyy opened this issue 1 year ago • 23 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues

Current Behavior

完成了一次现有数据集的ptuning,数据集更新/扩充了,想要在上次的基础上继续该如何操作?

Expected Behavior

No response

Steps To Reproduce

根据demo文档的操作部署的

Environment

- OS:Ubuntu 20.04
- Python:3.8
- CUDA Support (`python -c "import torch; print(torch.cuda.is_available())"`) :true

Anything else?

No response

bxjxxyy avatar Jul 12 '23 03:07 bxjxxyy

--resume_from_checkpoint,没记错的话应该是这个

是放在train.sh里面么?

bxjxxyy avatar Jul 12 '23 05:07 bxjxxyy

你好,请问你使用的官方提供的ptuning进行微调的吗,是否有改动什么内容。我这边微调后再推理中出现推理错误且一直重复的问题。

QJShan avatar Jul 12 '23 09:07 QJShan

你好,请问你使用的官方提供的ptuning进行微调的吗,是否有改动什么内容。我这边微调后再推理中出现推理错误且一直重复的问题。 按照官方的弄的,不过换成了我自己的train.json文件做数据集。另外我没有验证数据集dev.json,所以我把应该写dev.json的地方都改成了train.json。其他地方没动。 我也不知道我改的会不会有问题,不过看起来好像没有引起什么问题。

bxjxxyy avatar Jul 12 '23 09:07 bxjxxyy

--resume_from_checkpoint,没记错的话应该是这个

这不应该是从之前断掉的step重新开始训练嘛,我的理解应该在train.sh文件中加入--ptuning_checkpoint 以上均是个人理解,不对请勿喷

daxian-lh avatar Jul 13 '23 06:07 daxian-lh

--resume_from_checkpoint,没记错的话应该是这个

这不应该是从之前断掉的step重新开始训练嘛,我的理解应该在train.sh文件中加入--ptuning_checkpoint 以上均是个人理解,不对请勿喷

--resume_from_checkpoint,没记错的话应该是这个

两位老哥说的好像都不对,会报下面的错 train.sh: line 28: --resume_from_checkpoint: command not found train.sh: line 28: --ptuning_checkpoint: command not found

bxjxxyy avatar Jul 13 '23 08:07 bxjxxyy

你好,请问你使用的官方提供的ptuning进行微调的吗,是否有改动什么内容。我这边微调后再推理中出现推理错误且一直重复的问题。 按照官方的弄的,不过换成了我自己的train.json文件做数据集。另外我没有验证数据集dev.json,所以我把应该写dev.json的地方都改成了train.json。其他地方没动。 我也不知道我改的会不会有问题,不过看起来好像没有引起什么问题。

你微调时使用的是量化 还是非量化微调 我使用quantization_bit 为8 微调后就出问题

QJShan avatar Jul 13 '23 09:07 QJShan

你好,请问你使用的官方提供的ptuning进行微调的吗,是否有改动什么内容。我这边微调后再推理中出现推理错误且一直重复的问题。 按照官方的弄的,不过换成了我自己的train.json文件做数据集。另外我没有验证数据集dev.json,所以我把应该写dev.json的地方都改成了train.json。其他地方没动。 我也不知道我改的会不会有问题,不过看起来好像没有引起什么问题。

你微调时使用的是量化 还是非量化微调 我使用quantization_bit 为8 微调后就出问题

好像是int4,train.sh里面默认就是--quantization_bit 4

bxjxxyy avatar Jul 13 '23 09:07 bxjxxyy

你好,请问你使用的官方提供的ptuning进行微调的吗,是否有改动什么内容。我这边微调后再推理中出现推理错误且一直重复的问题。 按照官方的弄的,不过换成了我自己的train.json文件做数据集。另外我没有验证数据集dev.json,所以我把应该写dev.json的地方都改成了train.json。其他地方没动。 我也不知道我改的会不会有问题,不过看起来好像没有引起什么问题。

你微调时使用的是量化 还是非量化微调 我使用quantization_bit 为8 微调后就出问题

好像是int4,train.sh里面默认就是--quantization_bit 4

除了使用自己的训练集,还有其他的改动吗,我这边微调后就全乱了 实在没查到原因

QJShan avatar Jul 13 '23 09:07 QJShan

你好,请问你使用的官方提供的ptuning进行微调的吗,是否有改动什么内容。我这边微调后再推理中出现推理错误且一直重复的问题。 按照官方的弄的,不过换成了我自己的train.json文件做数据集。另外我没有验证数据集dev.json,所以我把应该写dev.json的地方都改成了train.json。其他地方没动。 我也不知道我改的会不会有问题,不过看起来好像没有引起什么问题。

你微调时使用的是量化 还是非量化微调 我使用quantization_bit 为8 微调后就出问题

好像是int4,train.sh里面默认就是--quantization_bit 4

除了使用自己的训练集,还有其他的改动吗,我这边微调后就全乱了 实在没查到原因

没了

bxjxxyy avatar Jul 13 '23 09:07 bxjxxyy

你好,请问你使用的官方提供的ptuning进行微调的吗,是否有改动什么内容。我这边微调后再推理中出现推理错误且一直重复的问题。 按照官方的弄的,不过换成了我自己的train.json文件做数据集。另外我没有验证数据集dev.json,所以我把应该写dev.json的地方都改成了train.json。其他地方没动。 我也不知道我改的会不会有问题,不过看起来好像没有引起什么问题。

你微调时使用的是量化 还是非量化微调 我使用quantization_bit 为8 微调后就出问题

好像是int4,train.sh里面默认就是--quantization_bit 4

除了使用自己的训练集,还有其他的改动吗,我这边微调后就全乱了 实在没查到原因

没了

好的 谢谢 我再问一句 你使用的torch是>2还是<2的

QJShan avatar Jul 13 '23 09:07 QJShan

你好,请问你使用的官方提供的ptuning进行微调的吗,是否有改动什么内容。我这边微调后再推理中出现推理错误且一直重复的问题。 按照官方的弄的,不过换成了我自己的train.json文件做数据集。另外我没有验证数据集dev.json,所以我把应该写dev.json的地方都改成了train.json。其他地方没动。 我也不知道我改的会不会有问题,不过看起来好像没有引起什么问题。

你微调时使用的是量化 还是非量化微调 我使用quantization_bit 为8 微调后就出问题

好像是int4,train.sh里面默认就是--quantization_bit 4

除了使用自己的训练集,还有其他的改动吗,我这边微调后就全乱了 实在没查到原因

没了

好的 谢谢 我再问一句 你使用的torch是>2还是<2的

用的>2

bxjxxyy avatar Jul 13 '23 09:07 bxjxxyy

--resume_from_checkpoint,没记错的话应该是这个

这不应该是从之前断掉的step重新开始训练嘛,我的理解应该在train.sh文件中加入--ptuning_checkpoint 以上均是个人理解,不对请勿喷

--resume_from_checkpoint,没记错的话应该是这个

两位老哥说的好像都不对,会报下面的错 train.sh: line 28: --resume_from_checkpoint: command not found train.sh: line 28: --ptuning_checkpoint: command not found

大佬问一下,你这个命令可以用了吗,最后是怎么改的呀

lilulu0702 avatar Jul 13 '23 09:07 lilulu0702

--resume_from_checkpoint,没记错的话应该是这个

这不应该是从之前断掉的step重新开始训练嘛,我的理解应该在train.sh文件中加入--ptuning_checkpoint 以上均是个人理解,不对请勿喷

--resume_from_checkpoint,没记错的话应该是这个

两位老哥说的好像都不对,会报下面的错 train.sh: line 28: --resume_from_checkpoint: command not found train.sh: line 28: --ptuning_checkpoint: command not found

大佬问一下,你这个命令可以用了吗,最后是怎么改的呀

还没弄对呢

bxjxxyy avatar Jul 13 '23 09:07 bxjxxyy

--resume_from_checkpoint,没记错的话应该是这个

这不应该是从之前断掉的step重新开始训练嘛,我的理解应该在train.sh文件中加入--ptuning_checkpoint 以上均是个人理解,不对请勿喷

--resume_from_checkpoint,没记错的话应该是这个

两位老哥说的好像都不对,会报下面的错 train.sh: line 28: --resume_from_checkpoint: command not found train.sh: line 28: --ptuning_checkpoint: command not found

大佬问一下,你这个命令可以用了吗,最后是怎么改的呀

可能是--checkpoint_dir 不知道对不对,运行没有报错

bxjxxyy avatar Jul 14 '23 07:07 bxjxxyy

测试发现--checkpoint_dir 输入上次训练完成后的路径,这种方法好像是错误的

bxjxxyy avatar Jul 17 '23 06:07 bxjxxyy

add line below in train.sh works: --resume_from_checkpoint output/xxxx/checkpoint-xxx \

leslie2046 avatar Jul 24 '23 08:07 leslie2046

add line below in train.sh works: --resume_from_checkpoint output/xxxx/checkpoint-xxx \

no,I used this,and I got error log: train.sh: line 28: --resume_from_checkpoint: command not found

bxjxxyy avatar Jul 24 '23 08:07 bxjxxyy

add line below in train.sh works: --resume_from_checkpoint output/xxxx/checkpoint-xxx \

no,I used this,and I got error log: train.sh: line 28: --resume_from_checkpoint: command not found 你贴出你的train.sh给我看看

leslie2046 avatar Jul 24 '23 09:07 leslie2046

--resume_from_checkpoint这个命令是可以继续训练的,我是训练1500轮结果400的时候挂掉了,在train.sh上加上了--resume_from_checkpoint 以及对应checkpoint的绝对路径(相对路径就是不行,不知道为啥),从400恢复了训练。如果你是1500训练完成了想继续训练,那max_steps估计也得跟着变

zzwtop1 avatar Aug 29 '23 01:08 zzwtop1

大哥,请问下你解决这个问题了吗

renllll avatar Sep 19 '23 06:09 renllll

在train.sh里加上--resume_from_checkpoint就可以了啊,train.sh里的命令参考:

PRE_SEQ_LEN=128 LR=2e-2 NUM_GPUS=1

torchrun --standalone --nnodes=1 --nproc-per-node=$NUM_GPUS main.py
--do_train
--train_file AdvertiseGen/train.json
--validation_file AdvertiseGen/dev.json
--preprocessing_num_workers 10
--prompt_column content
--response_column summary
--overwrite_cache
--model_name_or_path /home/aistudio/THUDM/chatglm2-6b
--output_dir output/adgen-chatglm2-6b-pt-$PRE_SEQ_LEN-$LR
--overwrite_output_dir
--max_source_length 256
--max_target_length 64
--per_device_train_batch_size 1
--per_device_eval_batch_size 1
--gradient_accumulation_steps 16
--predict_with_generate
--max_steps 10
--logging_steps 10
--save_steps 10
--learning_rate $LR
--pre_seq_len $PRE_SEQ_LEN
--resume_from_checkpoint 预训练断掉之前保存的check_point的绝对路径

zzwtop1 avatar Sep 19 '23 09:09 zzwtop1

在train.sh里加上--resume_from_checkpoint就可以了啊,train.sh里的命令参考:

PRE_SEQ_LEN=128 LR=2e-2 NUM_GPUS=1

torchrun --standalone --nnodes=1 --nproc-per-node=$NUM_GPUS main.py --do_train --train_file AdvertiseGen/train.json --validation_file AdvertiseGen/dev.json --preprocessing_num_workers 10 --prompt_column content --response_column summary --overwrite_cache --model_name_or_path /home/aistudio/THUDM/chatglm2-6b --output_dir output/adgen-chatglm2-6b-pt-$PRE_SEQ_LEN-$LR --overwrite_output_dir --max_source_length 256 --max_target_length 64 --per_device_train_batch_size 1 --per_device_eval_batch_size 1 --gradient_accumulation_steps 16 --predict_with_generate --max_steps 10 --logging_steps 10 --save_steps 10 --learning_rate $LR --pre_seq_len $PRE_SEQ_LEN --resume_from_checkpoint 预训练断掉之前保存的check_point的绝对路径

这个resume_from_checkpoint在哪里可以看到啊?我看main.py文件中参数来源是这3个:

parser = HfArgumentParser((ModelArguments, DataTrainingArguments, Seq2SeqTrainingArguments))

但是我只在ModelArguments类中看到了ptuning_checkpoint:

@dataclass
class ModelArguments:
    """
    Arguments pertaining to which model/config/tokenizer we are going to fine-tune from.
    """

    model_name_or_path: str = field(
        metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"}
    )
    ptuning_checkpoint: str = field(
        default=None, metadata={"help": "Path to p-tuning v2 checkpoints"}
    )

hhy150 avatar Jan 15 '24 07:01 hhy150

在train.sh里加上--resume_from_checkpoint就可以了啊,train.sh里的命令参考: PRE_SEQ_LEN=128 LR=2e-2 NUM_GPUS=1 torchrun --standalone --nnodes=1 --nproc-per-node=$NUM_GPUS main.py --do_train --train_file AdvertiseGen/train.json --validation_file AdvertiseGen/dev.json --preprocessing_num_workers 10 --prompt_column content --response_column summary --overwrite_cache --model_name_or_path /home/aistudio/THUDM/chatglm2-6b --output_dir output/adgen-chatglm2-6b-pt-$PRE_SEQ_LEN-$LR --overwrite_output_dir --max_source_length 256 --max_target_length 64 --per_device_train_batch_size 1 --per_device_eval_batch_size 1 --gradient_accumulation_steps 16 --predict_with_generate --max_steps 10 --logging_steps 10 --save_steps 10 --learning_rate $LR --pre_seq_len $PRE_SEQ_LEN --resume_from_checkpoint 预训练断掉之前保存的check_point的绝对路径

这个resume_from_checkpoint在哪里可以看到啊?我看main.py文件中参数来源是这3个:

parser = HfArgumentParser((ModelArguments, DataTrainingArguments, Seq2SeqTrainingArguments))

但是我只在ModelArguments类中看到了ptuning_checkpoint:

@dataclass
class ModelArguments:
    """
    Arguments pertaining to which model/config/tokenizer we are going to fine-tune from.
    """

    model_name_or_path: str = field(
        metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"}
    )
    ptuning_checkpoint: str = field(
        default=None, metadata={"help": "Path to p-tuning v2 checkpoints"}
    )

我找到了,是Seq2SeqTrainingArguments这个类的继承类TrainingArguments中有:

    resume_from_checkpoint: Optional[str] = field(
        default=None,
        metadata={"help": "The path to a folder with a valid checkpoint for your model."},
    )

hhy150 avatar Jan 16 '24 11:01 hhy150