Open diaojunxian opened 1 year ago
你好,请教一下。
RLHF 里面的 model_name 对应的目录是不是要把 sft 生成的 .bin 和原始的底座模型合并后地址?
建议将sft训练的参数保存为 .pth 文件,由参数 data_args.sft_params 来读取。 trl读取底座模型本身就容易出bug,所以model_args.model_name_or_path这里传入的与AutoModel.from_pretrained所传入的模型地址是一致的,是本地的原始模型的路径,不包括sft生成的参数文件。
你好,请教一下。 RLHF 里面的 model_name 对应的目录是不是要把 sft 生成的 .bin 和原始的底座模型合并后地址?
建议将sft训练的参数保存为 .pth 文件,由参数 data_args.sft_params 来读取。 trl读取底座模型本身就容易出bug,所以model_args.model_name_or_path这里传入的与AutoModel.from_pretrained所传入的模型地址是一致的,是本地的原始模型的路径,不包括sft生成的参数文件。
如果我保存成 bin,是否在 rlhf.py 中用 peft 加载也行呢?
主要是我不知道怎么在 main.py 中保存成 pth 文件。
你好,请教一下。 RLHF 里面的 model_name 对应的目录是不是要把 sft 生成的 .bin 和原始的底座模型合并后地址?
建议将sft训练的参数保存为 .pth 文件,由参数 data_args.sft_params 来读取。 trl读取底座模型本身就容易出bug,所以model_args.model_name_or_path这里传入的与AutoModel.from_pretrained所传入的模型地址是一致的,是本地的原始模型的路径,不包括sft生成的参数文件。
如果我保存成 bin,是否在 rlhf.py 中用 peft 加载也行呢?
主要是我不知道怎么在 main.py 中保存成 pth 文件。
你可以参考下面的代码来保存sft训练的参数:
def save_tuned_parameters(model, path):
saved_params = {
k: v.to(device)
for k, v in model.named_parameters()
if v.requires_grad
}
torch.save(saved_params, path)
model是sft模型,path是保存的路径及文件名,以 .pt 或 .pth 为后缀的文件。
你好,请教一下。 RLHF 里面的 model_name 对应的目录是不是要把 sft 生成的 .bin 和原始的底座模型合并后地址?
建议将sft训练的参数保存为 .pth 文件,由参数 data_args.sft_params 来读取。 trl读取底座模型本身就容易出bug,所以model_args.model_name_or_path这里传入的与AutoModel.from_pretrained所传入的模型地址是一致的,是本地的原始模型的路径,不包括sft生成的参数文件。
如果我保存成 bin,是否在 rlhf.py 中用 peft 加载也行呢? 主要是我不知道怎么在 main.py 中保存成 pth 文件。
你可以参考下面的代码来保存sft训练的参数:
def save_tuned_parameters(model, path): saved_params = { k: v.to(device) for k, v in model.named_parameters() if v.requires_grad } torch.save(saved_params, path)
model是sft模型,path是保存的路径及文件名,以 .pt 或 .pth 为后缀的文件。
你好,我执行 rlhf.py 的时候报这个错。
raise ValueError(f"Some specified arguments are not used by the HfArgumentParser: {remaining_args}")
ValueError: Some specified arguments are not used by the HfArgumentParser: ['--mini_batch_size', '1', '--batch_size', '1', '--early_stopping', 'None', '--target_kl', '0.1', '--ppo_epochs', '1']
看起来是 training_args.py 中没有这些参数,是因为 trl 版本的原因吗,因为我已经降 transformers 的库到 4.28.1 还是不行。
你好,请教一下。 RLHF 里面的 model_name 对应的目录是不是要把 sft 生成的 .bin 和原始的底座模型合并后地址?
建议将sft训练的参数保存为 .pth 文件,由参数 data_args.sft_params 来读取。 trl读取底座模型本身就容易出bug,所以model_args.model_name_or_path这里传入的与AutoModel.from_pretrained所传入的模型地址是一致的,是本地的原始模型的路径,不包括sft生成的参数文件。
如果我保存成 bin,是否在 rlhf.py 中用 peft 加载也行呢? 主要是我不知道怎么在 main.py 中保存成 pth 文件。
你可以参考下面的代码来保存sft训练的参数:
def save_tuned_parameters(model, path): saved_params = { k: v.to(device) for k, v in model.named_parameters() if v.requires_grad } torch.save(saved_params, path)
model是sft模型,path是保存的路径及文件名,以 .pt 或 .pth 为后缀的文件。
你好,我执行 rlhf.py 的时候报这个错。
raise ValueError(f"Some specified arguments are not used by the HfArgumentParser: {remaining_args}") ValueError: Some specified arguments are not used by the HfArgumentParser: ['--mini_batch_size', '1', '--batch_size', '1', '--early_stopping', 'None', '--target_kl', '0.1', '--ppo_epochs', '1']
看起来是 training_args.py 中没有这些参数,是因为 trl 版本的原因吗,因为我已经降 transformers 的库到 4.28.1 还是不行。
你试一下把rlhf.py里面的这段替换一下:
parser = HfArgumentParser((ModelArguments, DataTrainingArguments, Seq2SeqTrainingArguments))
model_args, data_args, training_args = parser.parse_args_into_dataclasses()
换为:
model_args, data_args, training_args, script_args = ModelArguments(model_name_or_path=model_name_or_path), DataTrainingArguments(), Seq2SeqTrainingArguments(output_dir="./", do_train=False, do_eval=True), ScriptArguments()
加我微信:Savarus,有时间交流一下。
你好,请教一下。
RLHF 里面的 model_name 对应的目录是不是要把 sft 生成的 .bin 和原始的底座模型合并后地址?