mirror of
https://github.com/hiyouga/LLaMA-Factory.git
synced 2025-08-04 12:42:51 +08:00
fix bug in data loader, support dpo eval
Former-commit-id: b355f6cac99592b66890ccc04e77a9993de0447d
This commit is contained in:
parent
b2bf10661b
commit
5507014392
@ -82,8 +82,8 @@ def get_dataset(
|
|||||||
assistant_role = msg_list[idx + 1][dataset_attr.role]
|
assistant_role = msg_list[idx + 1][dataset_attr.role]
|
||||||
else:
|
else:
|
||||||
if (
|
if (
|
||||||
msg_list[idx][dataset_attr.query] != user_role
|
msg_list[idx][dataset_attr.role] != user_role
|
||||||
or msg_list[idx+1][dataset_attr.query] != assistant_role
|
or msg_list[idx+1][dataset_attr.role] != assistant_role
|
||||||
):
|
):
|
||||||
raise ValueError("Only accepts conversation in u/a/u/a/u/a order.")
|
raise ValueError("Only accepts conversation in u/a/u/a/u/a order.")
|
||||||
msg_pairs.append((msg_list[idx][dataset_attr.content], msg_list[idx + 1][dataset_attr.content]))
|
msg_pairs.append((msg_list[idx][dataset_attr.content], msg_list[idx + 1][dataset_attr.content]))
|
||||||
|
@ -30,6 +30,7 @@ class CustomDPOTrainer(DPOTrainer):
|
|||||||
self.is_encoder_decoder = model.config.is_encoder_decoder
|
self.is_encoder_decoder = model.config.is_encoder_decoder
|
||||||
self.ref_model = ref_model
|
self.ref_model = ref_model
|
||||||
self.use_dpo_data_collator = True # hack to avoid warning
|
self.use_dpo_data_collator = True # hack to avoid warning
|
||||||
|
self.generate_during_eval = False # disable at evaluation
|
||||||
self.label_pad_token_id = IGNORE_INDEX
|
self.label_pad_token_id = IGNORE_INDEX
|
||||||
self.padding_value = 0
|
self.padding_value = 0
|
||||||
self.beta = beta
|
self.beta = beta
|
||||||
|
@ -58,3 +58,9 @@ def run_dpo(
|
|||||||
trainer.save_model()
|
trainer.save_model()
|
||||||
if trainer.is_world_process_zero() and model_args.plot_loss:
|
if trainer.is_world_process_zero() and model_args.plot_loss:
|
||||||
plot_loss(training_args.output_dir, keys=["loss", "eval_loss"])
|
plot_loss(training_args.output_dir, keys=["loss", "eval_loss"])
|
||||||
|
|
||||||
|
# Evaluation
|
||||||
|
if training_args.do_eval:
|
||||||
|
metrics = trainer.evaluate(metric_key_prefix="eval")
|
||||||
|
trainer.log_metrics("eval", metrics)
|
||||||
|
trainer.save_metrics("eval", metrics)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user