From 65d7a6869a843f315db86e84b68eeb425ba63f4d Mon Sep 17 00:00:00 2001 From: "Wang, Yi A" Date: Thu, 18 Jan 2024 01:00:56 -0800 Subject: [PATCH 1/2] add seed in DPO for reproduce the training result. disable hpu graph for training if gradient_checkpointing is used Signed-off-by: Wang, Yi A --- examples/trl/dpo.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/examples/trl/dpo.py b/examples/trl/dpo.py index f1a68791d5..5bd2bed648 100644 --- a/examples/trl/dpo.py +++ b/examples/trl/dpo.py @@ -9,6 +9,7 @@ from optimum.habana import GaudiConfig, GaudiTrainingArguments from optimum.habana.trl import GaudiDPOTrainer +from optimum.habana.utils import set_seed # Define and parse arguments. @@ -80,6 +81,7 @@ class ScriptArguments: "https://github.com/huggingface/transformers/issues/22482#issuecomment-1595790992" }, ) + seed: Optional[int] = field(default=0, metadata={"help": "the seed"}) def get_stack_exchange_paired( @@ -151,9 +153,12 @@ def return_prompt_and_responses(samples) -> Dict[str, str]: run_name="dpo_llama2", use_habana=True, use_lazy_mode=True, - use_hpu_graphs_for_training=True, + use_hpu_graphs_for_training=not script_args.gradient_checkpointing, use_hpu_graphs_for_inference=True, + seed=script_args.seed, ) + # initial seed for reproducible experiments + set_seed(training_args.seed) # 2. load a pretrained model model = AutoModelForCausalLM.from_pretrained( script_args.model_name_or_path, From fd7b0e1d17c8ffeb7ee01687832efccf0d9b757e Mon Sep 17 00:00:00 2001 From: regisss <15324346+regisss@users.noreply.github.com> Date: Mon, 22 Jan 2024 22:59:47 +0100 Subject: [PATCH 2/2] Refinements --- examples/trl/dpo.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/examples/trl/dpo.py b/examples/trl/dpo.py index 5bd2bed648..f54a5b63f0 100644 --- a/examples/trl/dpo.py +++ b/examples/trl/dpo.py @@ -81,7 +81,9 @@ class ScriptArguments: "https://github.com/huggingface/transformers/issues/22482#issuecomment-1595790992" }, ) - seed: Optional[int] = field(default=0, metadata={"help": "the seed"}) + seed: Optional[int] = field( + default=0, metadata={"help": "Random seed that will be set at the beginning of training."} + ) def get_stack_exchange_paired( @@ -131,6 +133,7 @@ def return_prompt_and_responses(samples) -> Dict[str, str]: if __name__ == "__main__": parser = HfArgumentParser(ScriptArguments) script_args = parser.parse_args_into_dataclasses()[0] + # 1. initialize training arguments: training_args = GaudiTrainingArguments( per_device_train_batch_size=script_args.per_device_train_batch_size, @@ -157,8 +160,10 @@ def return_prompt_and_responses(samples) -> Dict[str, str]: use_hpu_graphs_for_inference=True, seed=script_args.seed, ) - # initial seed for reproducible experiments + + # Set seed before initializing model. set_seed(training_args.seed) + # 2. load a pretrained model model = AutoModelForCausalLM.from_pretrained( script_args.model_name_or_path,