From ce973c2732b396a8b68873627c82337b48bb95b0 Mon Sep 17 00:00:00 2001 From: Sai Prabhakar Date: Sat, 4 Jan 2025 19:40:47 -0800 Subject: [PATCH] bug fix and cleanup --- .gitignore | 3 +- DPO_trainer.py | 89 +- README.md | 60 +- SALT_trainer.py | 102 +- SFT_trainer.py | 41 +- .../data-00000-of-00001.arrow | Bin 0 -> 1038304 bytes .../dataset_info.json | 16 + .../avs/sub_eval_w_simulated_edits/state.json | 13 + dpo.py | 1600 +++++++---------- poetry.lock | 409 ++++- pyproject.toml | 1 + simulate_edits.ipynb | 316 ++++ trainer.py | 299 +-- 13 files changed, 1683 insertions(+), 1266 deletions(-) create mode 100644 data/avs/sub_eval_w_simulated_edits/data-00000-of-00001.arrow create mode 100644 data/avs/sub_eval_w_simulated_edits/dataset_info.json create mode 100644 data/avs/sub_eval_w_simulated_edits/state.json create mode 100644 simulate_edits.ipynb diff --git a/.gitignore b/.gitignore index 4795535..bbe3324 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ data/* results/* .ipynb_checkpoints/ .DS_Store -*.zip \ No newline at end of file +*.zip +data/*/*/cache* diff --git a/DPO_trainer.py b/DPO_trainer.py index b42fa8e..2d06ca3 100644 --- a/DPO_trainer.py +++ b/DPO_trainer.py @@ -1,57 +1,60 @@ from transformers import HfArgumentParser -from trainer import ScriptArguments, load_dataset, trainer import wandb +from trainer import ScriptArguments, load_dataset, trainer parser = HfArgumentParser(ScriptArguments) -# for DPO script_args = parser.parse_args_into_dataclasses( args=[ - '--per_device_train_batch_size', '1', - '--per_device_eval_batch_size', '1', - '--gradient_accumulation_steps', '1', - '--model_name_or_path', 'sshleifer/tiny-gpt2', - # '--model_name_or_path', 'results/avs/BASE_model/gpt2', - # '--model_name_or_path', 'gpt2', - # '--model_name_or_path', 'meta-llama/Llama-2-7b-hf', - '--load_in_4bit', - '--use_peft', - # '--learning_rate', '1e-3', - '--learning_rate', '1e-4', - # '--report_to', 'wandb', - '--run_name', 'DPO-avs-gpt2', - '--max_length', '1024', - '--max_prompt_length', '768', - '--num_train_epochs', '5', - '--max_steps', '-1', - '--evaluation_strategy', 'epoch', - '--eval_steps', '-1', - # '--eval_first_step', - '--logging_strategy', 'steps', - '--log_steps', '20', - '--logging_first_step', - # '--save_strategy', 'epoch', - '--save_strategy', 'steps', - '--save_steps', '10000000', - # '--save_total_limit', '3', - # '--load_best_model_at_end', - # '--metric_for_best_model', 'metrics_policy_rouge1', - # '--alignment_function', 'dpo', - '--output_dir', './results/avs/DPO_model/DPO-avs-gpt2(1|1|0.3)', - '--alpha1', '1.0', #sft loss - '--alpha2', '1.0', #dpo loss - '--beta', '0.3', - ])[0] + '--per_device_train_batch_size', '2', + '--per_device_eval_batch_size', '2', + '--gradient_accumulation_steps', '4', + '--model_name_or_path', 'gpt2', + # '--model_name_or_path', 'sshleifer/tiny-gpt2', + # '--model_name_or_path', 'huggy llama/llama-7b', + # '--model_name_or_path', 'meta-llama/Llama-2-7b-hf', + '--load_in_4bit', + '--use_peft', + '--learning_rate', '1e-4', + # '--report_to', 'wandb', + '--run_name', 'DPO-avs-gpt2', + '--max_length', '1024', + '--max_prompt_length', '768', + '--num_train_epochs', '1', + '--max_steps', '-1', + '--evaluation_strategy', 'epoch', + '--eval_steps', '-1', + '--logging_strategy', 'steps', + '--log_steps', '10', + '--logging_first_step', + '--save_strategy', 'epoch', + '--save_steps', '-1', + '--save_total_limit', '3', + '--load_best_model_at_end', + '--metric_for_best_model', 'metrics_policy_rouge1', + '--output_dir', './results/avs/DPO_model/DPO-avs-gpt2(1|1|0.3)', + "--alpha1", "1.0", # sft loss + "--alpha2", "1.0", # dpo loss + "--beta", "0.3", + ] + )[0] # Initialize wandb if reporting to wandb -if script_args.report_to == 'wandb': +if script_args.report_to == "wandb": wandb.init(project=script_args.run_name) -# 2. Load training dataset -# train_dataset = load_dataset("train", sanity_check=script_args.sanity_check) -train_dataset = load_dataset("sub_eval", sanity_check=script_args.sanity_check, alignment_function=script_args.alignment_function) +data_subset = "sub_eval_w_simulated_edits" +train_dataset = load_dataset( + data_subset, + sanity_check=script_args.sanity_check, + alignment_function=script_args.alignment_function, +) # 3. Load evaluation dataset -eval_dataset = load_dataset("sub_eval", sanity_check=script_args.sanity_check, alignment_function=script_args.alignment_function) +eval_dataset = load_dataset( + data_subset, + sanity_check=True, + alignment_function=script_args.alignment_function, +) -dpo_trainer = trainer(script_args, train_dataset, eval_dataset) \ No newline at end of file +dpo_trainer = trainer(script_args, train_dataset, eval_dataset) diff --git a/README.md b/README.md index a42661e..b63115e 100644 --- a/README.md +++ b/README.md @@ -1,48 +1,17 @@ # LearnFromHumanEdit -## Installation -If using `conda`, you can get this to work as follows: +## Poetry installation -``` -conda create -n salt python=3.8 -conda activate salt -``` +`poetry install` -We have experimented with 11.7 and 10.2 cuda version, but this release should work with more recent versions as well. -``` -conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=10.2 -c pytorch -``` -or +- Add HG auth token to the project by creating a `hg_secret` file +- `python -m spacy download en_core_web_sm` +- If you encountered a problem with poetry installation with torch versions (python 3.10) do: -``` -conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia -``` - -Install other packages: -``` -conda install -c conda-forge matplotlib -conda install -c conda-forge spacy -conda install -c conda-forge scipy -python -m spacy download en_core_web_sm -pip install nltk -pip install ipdb -pip install rouge -pip install rouge-score -pip install trl -pip install minineedle -pip install nltk +```poetry run pip install torch==2.1.1 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121``` -pip install datasets -pip install transformers -``` -If you want to use qlora for llm: -``` -pip install -q -U bitsandbytes -pip install -q -U git+https://github.com/huggingface/peft.git -pip install -q -U git+https://github.com/huggingface/accelerate.git -``` -## Run the trainer +## Run training ``` python DPO_trainer.py @@ -51,18 +20,5 @@ python SALT_trainer.py ``` ## TODO -- Adapt the codes *_trainer.py - - Save output models - - Save outputs -- Modify the classes in dpo.py and rename it to be more generic - Add link to paper and bib -- Add dataset -- Do we need wandb instructions - - - -## Poetry installation - -If you encountered a problem with poetry installation with torch versions (python 3.10) - -`poetry run pip install torch==2.1.1 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121` \ No newline at end of file +- Add full dataset \ No newline at end of file diff --git a/SALT_trainer.py b/SALT_trainer.py index 6788ae5..c3a5b71 100644 --- a/SALT_trainer.py +++ b/SALT_trainer.py @@ -1,56 +1,64 @@ from transformers import HfArgumentParser +import wandb from trainer import ScriptArguments, load_dataset, trainer parser = HfArgumentParser(ScriptArguments) -# for SALT -script_args = parser.parse_args_into_dataclasses(args=['--per_device_train_batch_size', '1', - '--per_device_eval_batch_size', '1', - '--gradient_accumulation_steps', '1', - '--model_name_or_path', 'sshleifer/tiny-gpt2', - # '--model_name_or_path', 'gpt2', - # '--model_name_or_path', 'results/avs/BASE_model/gpt2', - # '--model_name_or_path', 'huggy llama/llama-7b', - # '--model_name_or_path', 'meta-llama/Llama-2-7b-hf', - '--load_in_4bit', - '--use_peft', - '--learning_rate', '1e-3', - # '--learning_rate', '1e-4', - # '--report_to', 'wandb', - # '--run_name', 'SALT-avs-llama2', - '--max_length', '1024', - '--max_prompt_length', '768', - '--num_train_epochs', '5', - '--max_steps', '-1', - '--evaluation_strategy', 'epoch', - '--eval_steps', '-1', - # '--eval_first_step', - '--logging_strategy', 'steps', - '--log_steps', '2', - '--logging_first_step', - # '--save_strategy', 'epoch', - '--save_strategy', 'steps', - '--save_steps', '10000000', - # '--save_total_limit', '3', - # '--load_best_model_at_end', - # '--metric_for_best_model', 'metrics_policy_rouge1', - '--alignment_function', 'salt', - '--output_dir', './results/avs/SALT_model/SALT-avs-llama2(1|-0.1|-0.1|1|1.1|1.1)', - '--omega1', '1.0', #salt chosen likelihood loss weight - '--omega2', '0.1', #salt rejected unlikelihood loss weight - '--S_generated_C_weight', '1.0', #sequence alignment weights - '--S_generated_D_weight', '-0.1', #sequence alignment weights - '--S_generated_S_weight', '-0.1', #sequence alignment weights - '--S_edited_C_weight', '1.0', #sequence alignment weights - '--S_edited_I_weight', '1.1', #sequence alignment weights - '--S_edited_S_weight', '1.1', #sequence alignment weights - ])[0] +script_args = parser.parse_args_into_dataclasses( + args=[ + "--per_device_train_batch_size", "2", + "--per_device_eval_batch_size", "2", + "--gradient_accumulation_steps", "4", + '--model_name_or_path', 'gpt2', + # "--model_name_or_path", "sshleifer/tiny-gpt2", + # '--model_name_or_path', 'huggy llama/llama-7b', + # '--model_name_or_path', 'meta-llama/Llama-2-7b-hf', + "--load_in_4bit", + "--use_peft", + "--learning_rate", "1e-4", + '--run_name', 'SALT-avs-gpt2', + "--max_length", "1024", + "--max_prompt_length", "768", + "--num_train_epochs", "1", + "--max_steps", "11", + "--evaluation_strategy", "epoch", + "--eval_steps", "-1", + "--logging_strategy", "steps", + "--log_steps", "10", + "--logging_first_step", + "--save_strategy", "epoch", + '--save_steps', '-1', + '--save_total_limit', '3', + '--load_best_model_at_end', + '--metric_for_best_model', 'metrics_policy_rouge1', + "--output_dir", "./results/avs/SALT_model/SALT-avs-llama2(1|-0.1|-0.1|1|1.1|1.1)", + "--omega1", "1.0", # salt chosen likelihood loss weight + "--omega2", "0.1", # salt rejected unlikelihood loss weight + "--S_generated_C_weight", "1.0", # sequence alignment weights + "--S_generated_D_weight", "-0.1", # sequence alignment weights + "--S_generated_S_weight", "-0.1", # sequence alignment weights + "--S_edited_C_weight", "1.0", # sequence alignment weights + "--S_edited_I_weight", "1.1", # sequence alignment weights + "--S_edited_S_weight", "1.1", # sequence alignment weights + ] +)[0] -# 2. Load training dataset -# train_dataset = load_dataset("train", sanity_check=script_args.sanity_check) -train_dataset = load_dataset("sub_eval", sanity_check=script_args.sanity_check, alignment_function=script_args.alignment_function) +# Initialize wandb if reporting to wandb +if script_args.report_to == "wandb": + wandb.init(project=script_args.run_name) + +data_subset = "sub_eval_w_simulated_edits" +train_dataset = load_dataset( + data_subset, + sanity_check=script_args.sanity_check, + alignment_function=script_args.alignment_function, +) # 3. Load evaluation dataset -eval_dataset = load_dataset("sub_eval", sanity_check=script_args.sanity_check, alignment_function=script_args.alignment_function) +eval_dataset = load_dataset( + data_subset, + sanity_check=True, + alignment_function=script_args.alignment_function, +) -dpo_trainer = trainer(script_args, train_dataset, eval_dataset) \ No newline at end of file +dpo_trainer = trainer(script_args, train_dataset, eval_dataset) diff --git a/SFT_trainer.py b/SFT_trainer.py index 304ff2b..c71589d 100644 --- a/SFT_trainer.py +++ b/SFT_trainer.py @@ -1,56 +1,57 @@ from transformers import HfArgumentParser -from trainer import ScriptArguments, load_dataset, trainer import wandb +from trainer import ScriptArguments, load_dataset, trainer parser = HfArgumentParser(ScriptArguments) -#for SFT script_args = parser.parse_args_into_dataclasses( args=[ - '--per_device_train_batch_size', '1', - '--per_device_eval_batch_size', '1', - '--gradient_accumulation_steps', '1', - # '--model_name_or_path', 'gpt2', - '--model_name_or_path', 'sshleifer/tiny-gpt2', + '--per_device_train_batch_size', '2', + '--per_device_eval_batch_size', '2', + '--gradient_accumulation_steps', '4', + '--model_name_or_path', 'gpt2', + # '--model_name_or_path', 'sshleifer/tiny-gpt2', # '--model_name_or_path', 'huggy llama/llama-7b', # '--model_name_or_path', 'meta-llama/Llama-2-7b-hf', '--load_in_4bit', '--use_peft', - # '--learning_rate', '1e-3', '--learning_rate', '1e-4', # '--report_to', 'wandb', - # '--report_to', 'tensorboard', '--run_name', 'SFT-avs-gpt2', '--max_length', '1024', '--max_prompt_length', '768', '--num_train_epochs', '1', - '--max_steps', '-1', + '--max_steps', '30', '--evaluation_strategy', 'epoch', '--eval_steps', '-1', - # '--eval_first_step', '--logging_strategy', 'steps', - '--log_steps', '1', + '--log_steps', '10', '--logging_first_step', '--save_strategy', 'epoch', '--save_steps', '-1', '--save_total_limit', '3', '--load_best_model_at_end', '--metric_for_best_model', 'metrics_policy_rouge1', - '--alignment_function', 'sft', '--output_dir', './results/avs/SFT_model/gpt2', - # '--output_dir', './results/SFT_model/llama2_7b', ] )[0] # Initialize wandb if reporting to wandb -if script_args.report_to == 'wandb': +if script_args.report_to == "wandb": wandb.init(project=script_args.run_name) -# 2. Load training dataset -# train_dataset = load_dataset("train", sanity_check=script_args.sanity_check) -train_dataset = load_dataset("sub_eval", sanity_check=script_args.sanity_check, alignment_function=script_args.alignment_function) +data_subset = "sub_eval_w_simulated_edits" +train_dataset = load_dataset( + data_subset, + sanity_check=script_args.sanity_check, + alignment_function=script_args.alignment_function, +) # 3. Load evaluation dataset -eval_dataset = load_dataset("sub_eval", sanity_check=script_args.sanity_check, alignment_function=script_args.alignment_function) +eval_dataset = load_dataset( + data_subset, + sanity_check=True, + alignment_function=script_args.alignment_function, +) -dpo_trainer = trainer(script_args, train_dataset, eval_dataset) \ No newline at end of file +dpo_trainer = trainer(script_args, train_dataset, eval_dataset) diff --git a/data/avs/sub_eval_w_simulated_edits/data-00000-of-00001.arrow b/data/avs/sub_eval_w_simulated_edits/data-00000-of-00001.arrow new file mode 100644 index 0000000000000000000000000000000000000000..52a396fdda0e0f78d0ffb8b618f54841e3f79ad6 GIT binary patch literal 1038304 zcmce4U_df#`uySiJJg=ml{#s~?JqaM!;YgF8ewT MY4)iv#K~Gt9sgoY+PPm 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%0Aq$yBP?UPNrWrg%Bg#<( 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¼~`-*jPRIUxb)jZky_z&e`B^Cpf{B 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 self.max_length: if self.truncation_mode == "keep_start": - prompt_tokens = {k: v[: self.max_prompt_length] for k, v in prompt_tokens.items()} + prompt_tokens = { + k: v[: self.max_prompt_length] for k, v in prompt_tokens.items() + } elif self.truncation_mode == "keep_end": - prompt_tokens = {k: v[-self.max_prompt_length :] for k, v in prompt_tokens.items()} + prompt_tokens = { + k: v[-self.max_prompt_length :] for k, v in prompt_tokens.items() + } else: raise ValueError(f"Unknown truncation mode: {self.truncation_mode}") # if that's still too long, truncate the response if len(prompt_tokens["input_ids"]) + longer_response_length > self.max_length: - chosen_tokens = {k: v[: self.max_length - self.max_prompt_length] for k, v in chosen_tokens.items()} - rejected_tokens = {k: v[: self.max_length - self.max_prompt_length] for k, v in rejected_tokens.items()} - + chosen_tokens = { + k: v[: self.max_length - self.max_prompt_length] + for k, v in chosen_tokens.items() + } + rejected_tokens = { + k: v[: self.max_length - self.max_prompt_length] + for k, v in rejected_tokens.items() + } + # Create labels - chosen_sequence_tokens = {k: prompt_tokens[k] + chosen_tokens[k] for k in chosen_tokens} - rejected_sequence_tokens = {k: prompt_tokens[k] + rejected_tokens[k] for k in rejected_tokens} + chosen_sequence_tokens = { + k: prompt_tokens[k] + chosen_tokens[k] for k in chosen_tokens + } + rejected_sequence_tokens = { + k: prompt_tokens[k] + rejected_tokens[k] for k in rejected_tokens + } chosen_sequence_tokens["labels"] = chosen_sequence_tokens["input_ids"][:] - chosen_sequence_tokens["labels"][: len(prompt_tokens["input_ids"])] = [self.label_pad_token_id] * len( - prompt_tokens["input_ids"] - ) + chosen_sequence_tokens["labels"][: len(prompt_tokens["input_ids"])] = [ + self.label_pad_token_id + ] * len(prompt_tokens["input_ids"]) rejected_sequence_tokens["labels"] = rejected_sequence_tokens["input_ids"][:] - rejected_sequence_tokens["labels"][: len(prompt_tokens["input_ids"])] = [self.label_pad_token_id] * len( - prompt_tokens["input_ids"] - ) + rejected_sequence_tokens["labels"][: len(prompt_tokens["input_ids"])] = [ + self.label_pad_token_id + ] * len(prompt_tokens["input_ids"]) batch = {} @@ -139,7 +165,11 @@ def collate(self, batch): # first, pad everything to the same length padded_batch = {} for k in batch[0].keys(): - if k.endswith("_input_ids") or k.endswith("_attention_mask") or k.endswith("_labels"): + if ( + k.endswith("_input_ids") + or k.endswith("_attention_mask") + or k.endswith("_labels") + ): # adapted from https://stackoverflow.com/questions/73256206 if "prompt" in k: to_pad = [torch.LongTensor(ex[k][::-1]) for ex in batch] @@ -154,7 +184,9 @@ def collate(self, batch): else: raise ValueError(f"Unexpected key in batch '{k}'") - padded_batch[k] = pad_sequence(to_pad, batch_first=True, padding_value=padding_value) + padded_batch[k] = pad_sequence( + to_pad, batch_first=True, padding_value=padding_value + ) # for the prompt, flip back so padding is on left side if "prompt" in k: padded_batch[k] = padded_batch[k].flip(dims=[1]) @@ -176,27 +208,16 @@ def __call__(self, features: List[Dict[str, Any]]) -> Dict[str, Any]: # return collated batch return self.collate(tokenized_batch) - -class DPOTrainer(Trainer): + +class BaseTrainer(Trainer): r""" Initialize DPOTrainer. Args: model (`transformers.PreTrainedModel`): The model to train, preferably an `AutoModelForSequenceClassification`. - ref_model (`PreTrainedModelWrapper`): - Hugging Face transformer model with a casual language modelling head. Used for implicit reward computation and loss. - beta (`float`, defaults to 0.1): - The beta factor in DPO loss. Higher beta means less divergence from the initial policy. - alpha1 (`float`, defaults to 0): - The alpha factor in Edit-DPO loss (alpha1 * chosen-SFT-loss + alpha2 * DPO-loss). - alpha2 (`float`, defaults to 1): - The alpha factor in Edit-DPO loss (alpha1 * chosen-SFT-loss + alpha2 * DPO-loss). - omega1 (`float`, defaults to 1): - The omeg1a factor in SALT loss: -self.omega1 * policy_chosen_salt_logps - self.omega2 * policy_rejected_salt_logps - omega2 (`float`, defaults to 1): - The omega2 factor in SALT loss: -self.omega1 * policy_chosen_salt_logps - self.omega2 * policy_rejected_salt_logps + output_dir (`str`, defaults to `'./'`): args (`transformers.TrainingArguments`): The arguments to use for training. data_collator (`transformers.DataCollator`): @@ -228,26 +249,12 @@ class DPOTrainer(Trainer): The maximum length of the prompt. This argument is required if you want to use the default data collator. peft_config (`Dict`, defaults to `None`): The PEFT configuration to use for training. If you pass a PEFT configuration, the model will be wrapped in a PEFT model. - alignment_function (`str`, defaults to `None`): - which alignment_function will be used """ def __init__( self, model: Union[PreTrainedModel, nn.Module] = None, - ref_model: Union[PreTrainedModel, nn.Module] = None, - beta: float = 0.1, - alpha1: float = 0.0, - alpha2: float = 1.0, - # omega1: float = 1.0, - # omega2: float = 1.0, - # S_generated_C_weight: float = 1.0, - # S_generated_D_weight: float = -0.1, - # S_generated_S_weight: float = -0.1, - # S_edited_C_weight: float = 1.0, - # S_edited_I_weight: float = 1.0, - # S_edited_S_weight: float = 1.0, - output_dir: str = './', + output_dir: str = "./", args: TrainingArguments = None, data_collator: Optional[DataCollator] = None, label_pad_token_id: int = -100, @@ -262,27 +269,32 @@ def __init__( None, None, ), - preprocess_logits_for_metrics: Optional[Callable[[torch.Tensor, torch.Tensor], torch.Tensor]] = None, + preprocess_logits_for_metrics: Optional[ + Callable[[torch.Tensor, torch.Tensor], torch.Tensor] + ] = None, max_length: Optional[int] = None, max_prompt_length: Optional[int] = None, peft_config: Optional[Dict] = None, # alignment_function: Optional[str] = None, ): - if not is_peft_available() and peft_config is not None: + self.peft_config = peft_config + if not is_peft_available() and self.peft_config is not None: raise ValueError( "PEFT is not installed and you passed a `peft_config` in the trainer's kwargs, please install it to use the PEFT models" ) - elif is_peft_available() and peft_config is not None: - if getattr(model, "is_loaded_in_8bit", False) or getattr(model, "is_loaded_in_4bit", False): + elif is_peft_available() and self.peft_config is not None: + if getattr(model, "is_loaded_in_8bit", False) or getattr( + model, "is_loaded_in_4bit", False + ): model = prepare_model_for_int8_training(model) - self.ref_model = prepare_model_for_int8_training(ref_model) - else: - self.ref_model = ref_model - model = get_peft_model(model, peft_config) - self.ref_model = get_peft_model(self.ref_model, peft_config) + # self.ref_model = prepare_model_for_int8_training(ref_model) + # else: + # self.ref_model = ref_model + model = get_peft_model(model, self.peft_config) + # self.ref_model = get_peft_model(self.ref_model, self.peft_config) model.print_trainable_parameters() - else: - self.ref_model = ref_model + # else: + # self.ref_model = ref_model if data_collator is None: if tokenizer is None: @@ -329,27 +341,9 @@ def __init__( self.label_pad_token_id = label_pad_token_id self.padding_value = padding_value - self.beta = beta - self.alpha1 = alpha1 - self.alpha2 = alpha2 - self.omega1 = omega1 - self.omega2 = omega2 - - # self.S_generated_C_weight = S_generated_C_weight - # self.S_generated_D_weight = S_generated_D_weight - # self.S_generated_S_weight = S_generated_S_weight - # self.S_edited_C_weight = S_edited_C_weight - # self.S_edited_I_weight = S_edited_I_weight - # self.S_edited_S_weight = S_edited_S_weight - self.output_dir = output_dir - # if alignment_function is None: - # self.alignment_function = 'dpo' - # else: - # self.alignment_function = alignment_function - - self.generate_max_length=max_length + self.generate_max_length = max_length self._stored_metrics = defaultdict(lambda: defaultdict(list)) @@ -369,50 +363,192 @@ def __init__( # Since we inherit from trainer we always have access to an accelerator if hasattr(self, "accelerator"): model = self.accelerator.prepare_model(model, evaluation_mode=True) - self.ref_model = self.accelerator.prepare_model(self.ref_model, evaluation_mode=True) + # self.ref_model = self.accelerator.prepare_model(self.ref_model, evaluation_mode=True) else: raise AttributeError( "Your `Trainer` does not have an `accelerator` object. Consider upgrading `transformers`." ) - # def sequence_alignment(self, batch: Dict[str, Union[List, torch.LongTensor]]) -> Dict[str, torch.LongTensor]: - # rejected_salt_weight = [] - # chosen_salt_weight = [] - - # chosen_align_mask = batch['chosen_labels'] != -100 - # chosen_input_ids = batch['chosen_input_ids'] * chosen_align_mask - - # rejected_align_mask = batch['rejected_labels'] != -100 - # rejected_input_ids = batch['rejected_input_ids'] * rejected_align_mask - - # for S_generated, S_edited in zip(rejected_input_ids.tolist(), chosen_input_ids.tolist()): - # # Create the instance - # alignment = needle.NeedlemanWunsch(S_generated, S_edited) #needle.NeedlemanWunsch, smith.SmithWaterman - # alignment.gap_character = -100 - # # Make the alignment - # alignment.align() - # # Get the score - # alignment.get_score() - # # Get the sequences aligned as lists - # al_generated, al_edited = alignment.get_aligned_sequences("list_of_int") - # w_generated, w_edited = needle.get_position_status(al_generated, - # al_edited, - # S_generated_C_weight = self.S_generated_C_weight, - # S_generated_D_weight = self.S_generated_D_weight, - # S_generated_S_weight = self.S_generated_S_weight, - # S_edited_C_weight = self.S_edited_C_weight, - # S_edited_I_weight = self.S_edited_I_weight, - # S_edited_S_weight = self.S_edited_S_weight) - - # rejected_salt_weight.append(w_generated) - # chosen_salt_weight.append(w_edited) - - # batch['rejected_salt_weight'] = torch.tensor(rejected_salt_weight, dtype=torch.float32).to(self.accelerator.device) - # batch['chosen_salt_weight'] = torch.tensor(chosen_salt_weight, dtype=torch.float32).to(self.accelerator.device) - - # return batch - - def concatenated_inputs(self, batch: Dict[str, Union[List, torch.LongTensor]]) -> Dict[str, torch.LongTensor]: + def training_step( + self, model: nn.Module, inputs: Dict[str, Union[torch.Tensor, Any]] + ) -> torch.Tensor: + """ + Perform a training step on a batch of inputs. + + Subclass and override to inject custom behavior. + + Args: + model (`nn.Module`): + The model to train. + inputs (`Dict[str, Union[torch.Tensor, Any]]`): + The inputs and targets of the model. + + The dictionary will be unpacked before being fed to the model. Most models expect the targets under the + argument `labels`. Check your model's documentation for all accepted arguments. + + Return: + `torch.Tensor`: The tensor with training loss on this batch. + """ + model.train() + inputs = self._prepare_inputs(inputs) + + # torch.autograd.set_detect_anomaly(True) + with self.compute_loss_context_manager(): + loss = self.compute_loss(model, inputs) + + if self.args.n_gpu > 1: + loss = loss.mean() # mean() to average on multi-gpu parallel training + + # with torch.autograd.detect_anomaly(): + self.accelerator.backward(loss) + + return loss.detach() / self.args.gradient_accumulation_steps + + def prediction_step( + self, + model: Union[PreTrainedModel, nn.Module], + inputs: Dict[str, Union[torch.Tensor, Any]], + prediction_loss_only: bool, + ignore_keys: Optional[List[str]] = None, + ): + if not self.use_dpo_data_collator: + warnings.warn( + "prediction_step is only implemented for DPODataCollatorWithPadding, and you passed a datacollator that is different than " + "DPODataCollatorWithPadding - you might see unexpected behavior. Alternatively, you can implement your own prediction_step method if you are using a custom data collator" + ) + if ignore_keys is None: + if hasattr(model, "config"): + ignore_keys = getattr(model.config, "keys_to_ignore_at_inference", []) + else: + ignore_keys = [] + + with torch.no_grad(): + loss, metrics = self.get_batch_metrics(model, inputs, train_eval="eval") + + # force log the metrics + if self.accelerator.is_main_process: + self.store_metrics(metrics, train_eval="eval") + + if prediction_loss_only: + return (loss.detach(), None, None) + + # logits for the chosen and rejected samples from model + logits_dict = { + "logits_test/chosen": metrics["logits_test/chosen"], + "logits_test/rejected": metrics["logits_test/rejected"], + } + logits = tuple(v for k, v in logits_dict.items() if k not in ignore_keys) + logits = torch.stack(logits).mean(axis=1) + labels = torch.zeros(logits.shape[0]) + + return (loss.detach(), logits, labels) + + def store_metrics( + self, metrics: Dict[str, float], train_eval: Literal["train", "eval"] = "train" + ) -> None: + for key, value in metrics.items(): + self._stored_metrics[train_eval][key].append(value) + + def log(self, logs: Dict[str, float]) -> None: + """ + Log `logs` on the various objects watching training, including stored metrics. + + Args: + logs (`Dict[str, float]`): + The values to log. + """ + # logs either has 'loss' or 'eval_loss' + train_eval = "train" if "loss" in logs else "eval" + # Add averaged stored metrics to logs + for key, metrics in self._stored_metrics[train_eval].items(): + logs[key] = torch.tensor(metrics).mean().item() + del self._stored_metrics[train_eval] + return super().log(logs) + + +class DPOTrainer(BaseTrainer): + r""" + Initialize DPOTrainer. + + Args: + model (`transformers.PreTrainedModel`): + The model to train, preferably an `AutoModelForSequenceClassification`. + ref_model (`PreTrainedModelWrapper`): + Hugging Face transformer model with a casual language modelling head. Used for implicit reward computation and loss. + beta (`float`, defaults to 0.1): + The beta factor in DPO loss. Higher beta means less divergence from the initial policy. + alpha1 (`float`, defaults to 0): + The alpha factor in Edit-DPO loss (alpha1 * chosen-SFT-loss + alpha2 * DPO-loss). + alpha2 (`float`, defaults to 1): + The alpha factor in Edit-DPO loss (alpha1 * chosen-SFT-loss + alpha2 * DPO-loss). + args (`transformers.TrainingArguments`): + The arguments to use for training. + data_collator (`transformers.DataCollator`): + The data collator to use for training. If None is specified, the default data collator (`DPODataCollatorWithPadding`) will be used + which will pad the sequences to the maximum length of the sequences in the batch, given a dataset of paired sequences. + label_pad_token_id (`int`, defaults to `-100`): + The label pad token id. This argument is required if you want to use the default data collator. + padding_value (`int`, defaults to `0`): + The padding value. This argument is required if you want to use the default data collator. + truncation_mode (`str`, defaults to `keep_end`): + The truncation mode to use, either `keep_end` or `keep_start`. This argument is required if you want to use the default data collator. + train_dataset (`datasets.Dataset`): + The dataset to use for training. + eval_dataset (`datasets.Dataset`): + The dataset to use for evaluation. + tokenizer (`transformers.PreTrainedTokenizerBase`): + The tokenizer to use for training. This argument is required if you want to use the default data collator. + model_init (`Callable[[], transformers.PreTrainedModel]`): + The model initializer to use for training. If None is specified, the default model initializer will be used. + callbacks (`List[transformers.TrainerCallback]`): + The callbacks to use for training. + optimizers (`Tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR]`): + The optimizer and scheduler to use for training. + preprocess_logits_for_metrics (`Callable[[torch.Tensor, torch.Tensor], torch.Tensor]`): + The function to use to preprocess the logits before computing the metrics. + max_length (`int`, defaults to `None`): + The maximum length of the sequences in the batch. This argument is required if you want to use the default data collator. + max_prompt_length (`int`, defaults to `None`): + The maximum length of the prompt. This argument is required if you want to use the default data collator. + peft_config (`Dict`, defaults to `None`): + The PEFT configuration to use for training. If you pass a PEFT configuration, the model will be wrapped in a PEFT model. + """ + + def __init__( + self, + ref_model: Union[PreTrainedModel, nn.Module] = None, + beta: float = 0.1, + alpha1: float = 0.0, + alpha2: float = 1.0, + **kwargs, + ): + super().__init__(**kwargs) + if not is_peft_available() and self.peft_config is not None: + raise ValueError( + "PEFT is not installed and you passed a `peft_config` in the trainer's kwargs, please install it to use the PEFT models" + ) + elif is_peft_available() and self.peft_config is not None: + if getattr(self.model, "is_loaded_in_8bit", False) or getattr( + self.model, "is_loaded_in_4bit", False + ): + self.ref_model = prepare_model_for_int8_training(ref_model) + else: + self.ref_model = ref_model + self.ref_model = get_peft_model(self.ref_model, self.peft_config) + else: + self.ref_model = ref_model + self.beta = beta + self.alpha1 = alpha1 + self.alpha2 = alpha2 + + # Since we inherit from trainer we always have access to an accelerator + self.ref_model = self.accelerator.prepare_model( + self.ref_model, evaluation_mode=True + ) + + def concatenated_inputs( + self, batch: Dict[str, Union[List, torch.LongTensor]] + ) -> Dict[str, torch.LongTensor]: """Concatenate the chosen and rejected inputs into a single tensor. Args: @@ -421,20 +557,23 @@ def concatenated_inputs(self, batch: Dict[str, Union[List, torch.LongTensor]]) - Returns: A dictionary containing the concatenated inputs under the key 'concatenated_input_ids'. """ - - # if self.alignment_function == 'salt': - # batch = self.sequence_alignment(batch) - - max_length = max(batch["chosen_input_ids"].shape[1], batch["rejected_input_ids"].shape[1]) + max_length = max( + batch["chosen_input_ids"].shape[1], batch["rejected_input_ids"].shape[1] + ) concatenated_batch = {} for k in batch: if k.startswith("chosen") and isinstance(batch[k], torch.Tensor): - pad_value = self.label_pad_token_id if "labels" in k else self.padding_value + pad_value = ( + self.label_pad_token_id if "labels" in k else self.padding_value + ) concatenated_key = k.replace("chosen", "concatenated") - concatenated_batch[concatenated_key] = pad_to_length(batch[k], max_length, pad_value=pad_value) - for k in batch: - if k.startswith("rejected") and isinstance(batch[k], torch.Tensor): - pad_value = self.label_pad_token_id if "labels" in k else self.padding_value + concatenated_batch[concatenated_key] = pad_to_length( + batch[k], max_length, pad_value=pad_value + ) + elif k.startswith("rejected") and isinstance(batch[k], torch.Tensor): + pad_value = ( + self.label_pad_token_id if "labels" in k else self.padding_value + ) concatenated_key = k.replace("rejected", "concatenated") concatenated_batch[concatenated_key] = torch.cat( ( @@ -443,7 +582,7 @@ def concatenated_inputs(self, batch: Dict[str, Union[List, torch.LongTensor]]) - ), dim=0, ).to(self.accelerator.device) - + return concatenated_batch def dpo_loss( @@ -478,8 +617,12 @@ def dpo_loss( logits = pi_logratios - ref_logratios dpo_losses = -F.logsigmoid(self.beta * logits) - chosen_rewards = self.beta * (policy_chosen_logps - reference_chosen_logps).detach() - rejected_rewards = self.beta * (policy_rejected_logps - reference_rejected_logps).detach() + chosen_rewards = ( + self.beta * (policy_chosen_logps - reference_chosen_logps).detach() + ) + rejected_rewards = ( + self.beta * (policy_rejected_logps - reference_rejected_logps).detach() + ) rewards_mask = pi_logratios != 0 return dpo_losses, chosen_rewards, rejected_rewards, rewards_mask @@ -501,7 +644,9 @@ def _get_batch_logps( A tensor of shape (batch_size,) containing the average/sum log probabilities of the given labels under the given logits. """ if logits.shape[:-1] != labels.shape: - raise ValueError("Logits (batch and sequence length dim) and labels must have the same shape.") + raise ValueError( + "Logits (batch and sequence length dim) and labels must have the same shape." + ) labels = labels[:, 1:].clone() logits = logits[:, :-1, :] @@ -510,7 +655,9 @@ def _get_batch_logps( # dummy token; we'll ignore the losses on these tokens later labels[labels == self.label_pad_token_id] = 0 - per_token_logps = torch.gather(logits.log_softmax(-1), dim=2, index=labels.unsqueeze(2)).squeeze(2) + per_token_logps = torch.gather( + logits.log_softmax(-1), dim=2, index=labels.unsqueeze(2) + ).squeeze(2) if average_log_prob: return (per_token_logps * loss_mask).sum(-1) / loss_mask.sum(-1) @@ -519,7 +666,9 @@ def _get_batch_logps( def concatenated_forward( self, model: nn.Module, batch: Dict[str, Union[List, torch.LongTensor]] - ) -> Tuple[torch.FloatTensor, torch.FloatTensor, torch.FloatTensor, torch.FloatTensor]: + ) -> Tuple[ + torch.FloatTensor, torch.FloatTensor, torch.FloatTensor, torch.FloatTensor + ]: """Run the given model on the given batch of inputs, concatenating the chosen and rejected inputs together. We do this to avoid doing two forward passes, because it's faster for FSDP. @@ -529,7 +678,7 @@ def concatenated_forward( concatenated_batch["concatenated_input_ids"], attention_mask=concatenated_batch["concatenated_attention_mask"], ).logits.to(torch.float32) - + all_logps = self._get_batch_logps( all_logits, concatenated_batch["concatenated_labels"], @@ -584,33 +733,61 @@ def get_batch_metrics( # losses = (-1) * self.omega1 * policy_chosen_salt_logps + (-1) * self.omega2 * policy_rejected_salt_logps prefix = "eval_" if train_eval == "eval" else "" - metrics[f"{prefix}rewards/chosen"] = chosen_rewards[rewards_mask].cpu().numpy().mean() - metrics[f"{prefix}rewards/rejected"] = rejected_rewards[rewards_mask].cpu().numpy().mean() - metrics[f"{prefix}rewards/accuracies"] = reward_accuracies[rewards_mask].cpu().numpy().mean() - metrics[f"{prefix}rewards/margins"] = (chosen_rewards - rejected_rewards)[rewards_mask].cpu().numpy().mean() - metrics[f"{prefix}logps/rejected"] = policy_rejected_logps[rewards_mask].detach().cpu().numpy().mean() - metrics[f"{prefix}logps/chosen"] = policy_chosen_logps[rewards_mask].detach().cpu().numpy().mean() - metrics[f"{prefix}logits/rejected"] = policy_rejected_logits[rewards_mask].detach().cpu().numpy().mean() - metrics[f"{prefix}logits/chosen"] = policy_chosen_logits[rewards_mask].detach().cpu().numpy().mean() + metrics[f"{prefix}rewards/chosen"] = ( + chosen_rewards[rewards_mask].cpu().numpy().mean() + ) + metrics[f"{prefix}rewards/rejected"] = ( + rejected_rewards[rewards_mask].cpu().numpy().mean() + ) + metrics[f"{prefix}rewards/accuracies"] = ( + reward_accuracies[rewards_mask].cpu().numpy().mean() + ) + metrics[f"{prefix}rewards/margins"] = ( + (chosen_rewards - rejected_rewards)[rewards_mask].cpu().numpy().mean() + ) + metrics[f"{prefix}logps/rejected"] = ( + policy_rejected_logps[rewards_mask].detach().cpu().numpy().mean() + ) + metrics[f"{prefix}logps/chosen"] = ( + policy_chosen_logps[rewards_mask].detach().cpu().numpy().mean() + ) + metrics[f"{prefix}logits/rejected"] = ( + policy_rejected_logits[rewards_mask].detach().cpu().numpy().mean() + ) + metrics[f"{prefix}logits/chosen"] = ( + policy_chosen_logits[rewards_mask].detach().cpu().numpy().mean() + ) if train_eval == "eval": - policy_output_decoded, reference_output_decoded = self.get_batch_samples(model, batch) + policy_output_decoded, reference_output_decoded = self.get_batch_samples( + model, batch + ) # Create a DataFrame from the dictionary - batch.update({ - 'policy_output': policy_output_decoded, - 'reference_output': reference_output_decoded - }) + batch.update( + { + "policy_output": policy_output_decoded, + "reference_output": reference_output_decoded, + } + ) # eval generated summary for policy - eval_dict = ngram_eval.run_all_evaluation(batch['chosen_response_only'], policy_output_decoded) + eval_dict = ngram_eval.run_all_evaluation( + batch["chosen_response_only"], policy_output_decoded + ) + + eval_dict = { + "eval_metrics_policy_" + k: round(v, 4) for k, v in eval_dict.items() + } - eval_dict = {'eval_metrics_policy_'+k: round(v, 4) for k, v in eval_dict.items()} - # eval generated summary for ref model - ref_eval_dict = ngram_eval.run_all_evaluation(batch['chosen_response_only'], reference_output_decoded) - ref_eval_dict = {'eval_metrics_ref_'+k: round(v, 4) for k, v in ref_eval_dict.items()} - + ref_eval_dict = ngram_eval.run_all_evaluation( + batch["chosen_response_only"], reference_output_decoded + ) + ref_eval_dict = { + "eval_metrics_ref_" + k: round(v, 4) for k, v in ref_eval_dict.items() + } + eval_dict.update(ref_eval_dict) metrics.update(eval_dict) @@ -638,49 +815,18 @@ def compute_loss( return (loss, metrics) return loss - def training_step(self, model: nn.Module, inputs: Dict[str, Union[torch.Tensor, Any]]) -> torch.Tensor: - """ - Perform a training step on a batch of inputs. - - Subclass and override to inject custom behavior. - - Args: - model (`nn.Module`): - The model to train. - inputs (`Dict[str, Union[torch.Tensor, Any]]`): - The inputs and targets of the model. + def get_batch_samples( + self, model, batch: Dict[str, torch.LongTensor] + ) -> Tuple[str, str]: + """Generate samples from the model and reference model for the given batch of inputs.""" - The dictionary will be unpacked before being fed to the model. Most models expect the targets under the - argument `labels`. Check your model's documentation for all accepted arguments. - - Return: - `torch.Tensor`: The tensor with training loss on this batch. - """ - model.train() - inputs = self._prepare_inputs(inputs) - - # torch.autograd.set_detect_anomaly(True) - with self.compute_loss_context_manager(): - loss = self.compute_loss(model, inputs) - - if self.args.n_gpu > 1: - loss = loss.mean() # mean() to average on multi-gpu parallel training - - # with torch.autograd.detect_anomaly(): - self.accelerator.backward(loss) - - return loss.detach() / self.args.gradient_accumulation_steps - - def get_batch_samples(self, model, batch: Dict[str, torch.LongTensor]) -> Tuple[str, str]: - """Generate samples from the model and reference model for the given batch of inputs.""" - - policy_output = model.generate( - input_ids=batch["prompt_input_ids"], - attention_mask=batch["prompt_attention_mask"], - max_length=self.generate_max_length, - do_sample=False, - pad_token_id=self.tokenizer.pad_token_id, - ) + policy_output = model.generate( + input_ids=batch["prompt_input_ids"], + attention_mask=batch["prompt_attention_mask"], + max_length=self.generate_max_length, + do_sample=False, + pad_token_id=self.tokenizer.pad_token_id, + ) reference_output = self.ref_model.generate( input_ids=batch["prompt_input_ids"], @@ -690,93 +836,33 @@ def get_batch_samples(self, model, batch: Dict[str, torch.LongTensor]) -> Tuple[ pad_token_id=self.tokenizer.pad_token_id, ) - policy_output = pad_to_length(policy_output, self.generate_max_length, self.tokenizer.pad_token_id) - reference_output = pad_to_length(reference_output, self.generate_max_length, self.tokenizer.pad_token_id) + policy_output = pad_to_length( + policy_output, self.generate_max_length, self.tokenizer.pad_token_id + ) + reference_output = pad_to_length( + reference_output, self.generate_max_length, self.tokenizer.pad_token_id + ) - policy_output = policy_output[:, batch["prompt_input_ids"].shape[-1]:] - reference_output = reference_output[:, batch["prompt_input_ids"].shape[-1]:] + policy_output = policy_output[:, batch["prompt_input_ids"].shape[-1] :] + reference_output = reference_output[:, batch["prompt_input_ids"].shape[-1] :] - policy_output_decoded = self.tokenizer.batch_decode(policy_output, skip_special_tokens=True) - reference_output_decoded = self.tokenizer.batch_decode(reference_output, skip_special_tokens=True) + policy_output_decoded = self.tokenizer.batch_decode( + policy_output, skip_special_tokens=True + ) + reference_output_decoded = self.tokenizer.batch_decode( + reference_output, skip_special_tokens=True + ) return policy_output_decoded, reference_output_decoded - def prediction_step( - self, - model: Union[PreTrainedModel, nn.Module], - inputs: Dict[str, Union[torch.Tensor, Any]], - prediction_loss_only: bool, - ignore_keys: Optional[List[str]] = None, - ): - if not self.use_dpo_data_collator: - warnings.warn( - "prediction_step is only implemented for DPODataCollatorWithPadding, and you passed a datacollator that is different than " - "DPODataCollatorWithPadding - you might see unexpected behavior. Alternatively, you can implement your own prediction_step method if you are using a custom data collator" - ) - if ignore_keys is None: - if hasattr(model, "config"): - ignore_keys = getattr(model.config, "keys_to_ignore_at_inference", []) - else: - ignore_keys = [] - - with torch.no_grad(): - loss, metrics = self.get_batch_metrics(model, inputs, train_eval="eval") - - # force log the metrics - if self.accelerator.is_main_process: - self.store_metrics(metrics, train_eval="eval") - - if prediction_loss_only: - return (loss.detach(), None, None) - - # logits for the chosen and rejected samples from model - logits_dict = { - "logits_test/chosen": metrics["logits_test/chosen"], - "logits_test/rejected": metrics["logits_test/rejected"], - } - logits = tuple(v for k, v in logits_dict.items() if k not in ignore_keys) - logits = torch.stack(logits).mean(axis=1) - labels = torch.zeros(logits.shape[0]) - - return (loss.detach(), logits, labels) - - def store_metrics(self, metrics: Dict[str, float], train_eval: Literal["train", "eval"] = "train") -> None: - for key, value in metrics.items(): - self._stored_metrics[train_eval][key].append(value) - - def log(self, logs: Dict[str, float]) -> None: - """ - Log `logs` on the various objects watching training, including stored metrics. - - Args: - logs (`Dict[str, float]`): - The values to log. - """ - # logs either has 'loss' or 'eval_loss' - train_eval = "train" if "loss" in logs else "eval" - # Add averaged stored metrics to logs - for key, metrics in self._stored_metrics[train_eval].items(): - logs[key] = torch.tensor(metrics).mean().item() - del self._stored_metrics[train_eval] - return super().log(logs) - - -class SALTTrainer(Trainer): +class SALTTrainer(BaseTrainer): r""" Initialize DPOTrainer. Args: model (`transformers.PreTrainedModel`): The model to train, preferably an `AutoModelForSequenceClassification`. - ref_model (`PreTrainedModelWrapper`): - Hugging Face transformer model with a casual language modelling head. Used for implicit reward computation and loss. - beta (`float`, defaults to 0.1): - The beta factor in DPO loss. Higher beta means less divergence from the initial policy. - alpha1 (`float`, defaults to 0): - The alpha factor in Edit-DPO loss (alpha1 * chosen-SFT-loss + alpha2 * DPO-loss). - alpha2 (`float`, defaults to 1): - The alpha factor in Edit-DPO loss (alpha1 * chosen-SFT-loss + alpha2 * DPO-loss). omega1 (`float`, defaults to 1): The omeg1a factor in SALT loss: -self.omega1 * policy_chosen_salt_logps - self.omega2 * policy_rejected_salt_logps omega2 (`float`, defaults to 1): @@ -818,11 +904,6 @@ class SALTTrainer(Trainer): def __init__( self, - model: Union[PreTrainedModel, nn.Module] = None, - ref_model: Union[PreTrainedModel, nn.Module] = None, - # beta: float = 0.1, - # alpha1: float = 0.0, - # alpha2: float = 1.0, omega1: float = 1.0, omega2: float = 1.0, S_generated_C_weight: float = 1.0, @@ -831,94 +912,11 @@ def __init__( S_edited_C_weight: float = 1.0, S_edited_I_weight: float = 1.0, S_edited_S_weight: float = 1.0, - output_dir: str = './', - args: TrainingArguments = None, - data_collator: Optional[DataCollator] = None, - label_pad_token_id: int = -100, - padding_value: int = 0, - truncation_mode: str = "keep_end", - train_dataset: Optional[Dataset] = None, - eval_dataset: Optional[Union[Dataset, Dict[str, Dataset]]] = None, - tokenizer: Optional[PreTrainedTokenizerBase] = None, - model_init: Optional[Callable[[], PreTrainedModel]] = None, - callbacks: Optional[List[TrainerCallback]] = None, - optimizers: Tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR] = ( - None, - None, - ), - preprocess_logits_for_metrics: Optional[Callable[[torch.Tensor, torch.Tensor], torch.Tensor]] = None, - max_length: Optional[int] = None, - max_prompt_length: Optional[int] = None, - peft_config: Optional[Dict] = None, - # alignment_function: Optional[str] = None, + **kwargs, ): - if not is_peft_available() and peft_config is not None: - raise ValueError( - "PEFT is not installed and you passed a `peft_config` in the trainer's kwargs, please install it to use the PEFT models" - ) - elif is_peft_available() and peft_config is not None: - if getattr(model, "is_loaded_in_8bit", False) or getattr(model, "is_loaded_in_4bit", False): - model = prepare_model_for_int8_training(model) - self.ref_model = prepare_model_for_int8_training(ref_model) - else: - self.ref_model = ref_model - model = get_peft_model(model, peft_config) - self.ref_model = get_peft_model(self.ref_model, peft_config) - model.print_trainable_parameters() - else: - self.ref_model = ref_model - - if data_collator is None: - if tokenizer is None: - raise ValueError( - "max_length or a tokenizer must be specified when using the default DPODataCollatorWithPadding" - ) - if max_length is None: - warnings.warn( - "When using DPODataCollatorWithPadding, you should set `max_length` in the DPOTrainer's init" - " it will be set to `512` by default, but you should do it yourself in the future.", - UserWarning, - ) - max_length = 512 - if max_prompt_length is None: - warnings.warn( - "When using DPODataCollatorWithPadding, you should set `max_prompt_length` in the DPOTrainer's init" - " it will be set to `128` by default, but you should do it yourself in the future.", - UserWarning, - ) - max_prompt_length = 128 - - data_collator = DPODataCollatorWithPadding( - tokenizer, - max_length=max_length, - max_prompt_length=max_prompt_length, - label_pad_token_id=label_pad_token_id, - padding_value=padding_value, - truncation_mode=truncation_mode, - ) - - if args.remove_unused_columns: - args.remove_unused_columns = False - # warn users - warnings.warn( - "When using DPODataCollatorWithPadding, you should set `remove_unused_columns=False` in your TrainingArguments" - " we have set it for you, but you should do it yourself in the future.", - UserWarning, - ) - - self.use_dpo_data_collator = True - else: - self.use_dpo_data_collator = False - - self.label_pad_token_id = label_pad_token_id - self.padding_value = padding_value - - # self.beta = beta - # self.alpha1 = alpha1 - # self.alpha2 = alpha2 + super().__init__(**kwargs) self.omega1 = omega1 self.omega2 = omega2 - self.S_generated_C_weight = S_generated_C_weight self.S_generated_D_weight = S_generated_D_weight self.S_generated_S_weight = S_generated_S_weight @@ -926,52 +924,25 @@ def __init__( self.S_edited_I_weight = S_edited_I_weight self.S_edited_S_weight = S_edited_S_weight - self.output_dir = output_dir - - # if alignment_function is None: - # self.alignment_function = 'dpo' - # else: - # self.alignment_function = alignment_function - - self.generate_max_length=max_length - - self._stored_metrics = defaultdict(lambda: defaultdict(list)) + def sequence_alignment( + self, batch: Dict[str, Union[List, torch.LongTensor]] + ) -> Dict[str, torch.LongTensor]: + rejected_salt_weight = [] + chosen_salt_weight = [] - super().__init__( - model=model, - args=args, - data_collator=data_collator, - train_dataset=train_dataset, - eval_dataset=eval_dataset, - tokenizer=tokenizer, - model_init=model_init, - callbacks=callbacks, - optimizers=optimizers, - preprocess_logits_for_metrics=preprocess_logits_for_metrics, - ) + chosen_align_mask = batch["chosen_labels"] != -100 + chosen_input_ids = batch["chosen_input_ids"] * chosen_align_mask - # Since we inherit from trainer we always have access to an accelerator - if hasattr(self, "accelerator"): - model = self.accelerator.prepare_model(model, evaluation_mode=True) - self.ref_model = self.accelerator.prepare_model(self.ref_model, evaluation_mode=True) - else: - raise AttributeError( - "Your `Trainer` does not have an `accelerator` object. Consider upgrading `transformers`." - ) + rejected_align_mask = batch["rejected_labels"] != -100 + rejected_input_ids = batch["rejected_input_ids"] * rejected_align_mask - def sequence_alignment(self, batch: Dict[str, Union[List, torch.LongTensor]]) -> Dict[str, torch.LongTensor]: - rejected_salt_weight = [] - chosen_salt_weight = [] - - chosen_align_mask = batch['chosen_labels'] != -100 - chosen_input_ids = batch['chosen_input_ids'] * chosen_align_mask - - rejected_align_mask = batch['rejected_labels'] != -100 - rejected_input_ids = batch['rejected_input_ids'] * rejected_align_mask - - for S_generated, S_edited in zip(rejected_input_ids.tolist(), chosen_input_ids.tolist()): + for S_generated, S_edited in zip( + rejected_input_ids.tolist(), chosen_input_ids.tolist() + ): # Create the instance - alignment = needle.NeedlemanWunsch(S_generated, S_edited) #needle.NeedlemanWunsch, smith.SmithWaterman + alignment = needle.NeedlemanWunsch( + S_generated, S_edited + ) # needle.NeedlemanWunsch, smith.SmithWaterman alignment.gap_character = -100 # Make the alignment alignment.align() @@ -979,24 +950,32 @@ def sequence_alignment(self, batch: Dict[str, Union[List, torch.LongTensor]]) -> alignment.get_score() # Get the sequences aligned as lists al_generated, al_edited = alignment.get_aligned_sequences("list_of_int") - w_generated, w_edited = needle.get_position_status(al_generated, - al_edited, - S_generated_C_weight = self.S_generated_C_weight, - S_generated_D_weight = self.S_generated_D_weight, - S_generated_S_weight = self.S_generated_S_weight, - S_edited_C_weight = self.S_edited_C_weight, - S_edited_I_weight = self.S_edited_I_weight, - S_edited_S_weight = self.S_edited_S_weight) - + w_generated, w_edited = needle.get_position_status( + al_generated, + al_edited, + S_generated_C_weight=self.S_generated_C_weight, + S_generated_D_weight=self.S_generated_D_weight, + S_generated_S_weight=self.S_generated_S_weight, + S_edited_C_weight=self.S_edited_C_weight, + S_edited_I_weight=self.S_edited_I_weight, + S_edited_S_weight=self.S_edited_S_weight, + ) + rejected_salt_weight.append(w_generated) chosen_salt_weight.append(w_edited) - batch['rejected_salt_weight'] = torch.tensor(rejected_salt_weight, dtype=torch.float32).to(self.accelerator.device) - batch['chosen_salt_weight'] = torch.tensor(chosen_salt_weight, dtype=torch.float32).to(self.accelerator.device) - + batch["rejected_salt_weight"] = torch.tensor( + rejected_salt_weight, dtype=torch.float32 + ).to(self.accelerator.device) + batch["chosen_salt_weight"] = torch.tensor( + chosen_salt_weight, dtype=torch.float32 + ).to(self.accelerator.device) + return batch - def concatenated_inputs(self, batch: Dict[str, Union[List, torch.LongTensor]]) -> Dict[str, torch.LongTensor]: + def concatenated_inputs( + self, batch: Dict[str, Union[List, torch.LongTensor]] + ) -> Dict[str, torch.LongTensor]: """Concatenate the chosen and rejected inputs into a single tensor. Args: @@ -1008,17 +987,24 @@ def concatenated_inputs(self, batch: Dict[str, Union[List, torch.LongTensor]]) - # if self.alignment_function == 'salt': batch = self.sequence_alignment(batch) - - max_length = max(batch["chosen_input_ids"].shape[1], batch["rejected_input_ids"].shape[1]) + + max_length = max( + batch["chosen_input_ids"].shape[1], batch["rejected_input_ids"].shape[1] + ) concatenated_batch = {} for k in batch: if k.startswith("chosen") and isinstance(batch[k], torch.Tensor): - pad_value = self.label_pad_token_id if "labels" in k else self.padding_value + pad_value = ( + self.label_pad_token_id if "labels" in k else self.padding_value + ) concatenated_key = k.replace("chosen", "concatenated") - concatenated_batch[concatenated_key] = pad_to_length(batch[k], max_length, pad_value=pad_value) - for k in batch: - if k.startswith("rejected") and isinstance(batch[k], torch.Tensor): - pad_value = self.label_pad_token_id if "labels" in k else self.padding_value + concatenated_batch[concatenated_key] = pad_to_length( + batch[k], max_length, pad_value=pad_value + ) + elif k.startswith("rejected") and isinstance(batch[k], torch.Tensor): + pad_value = ( + self.label_pad_token_id if "labels" in k else self.padding_value + ) concatenated_key = k.replace("rejected", "concatenated") concatenated_batch[concatenated_key] = torch.cat( ( @@ -1027,46 +1013,8 @@ def concatenated_inputs(self, batch: Dict[str, Union[List, torch.LongTensor]]) - ), dim=0, ).to(self.accelerator.device) - - return concatenated_batch - # def dpo_loss( - # self, - # policy_chosen_logps: torch.FloatTensor, - # policy_rejected_logps: torch.FloatTensor, - # reference_chosen_logps: torch.FloatTensor, - # reference_rejected_logps: torch.FloatTensor, - # reference_free: bool = False, - # ) -> Tuple[torch.FloatTensor, torch.FloatTensor, torch.FloatTensor]: - # """Compute the DPO loss for a batch of policy and reference model log probabilities. - - # Args: - # policy_chosen_logps: Log probabilities of the policy model for the chosen responses. Shape: (batch_size,) - # policy_rejected_logps: Log probabilities of the policy model for the rejected responses. Shape: (batch_size,) - # reference_chosen_logps: Log probabilities of the reference model for the chosen responses. Shape: (batch_size,) - # reference_rejected_logps: Log probabilities of the reference model for the rejected responses. Shape: (batch_size,) - # beta: Temperature parameter for the DPO loss, typically something in the range of 0.1 to 0.5. We ignore the reference model as beta -> 0. - # reference_free: If True, we ignore the _provided_ reference model and implicitly use a reference model that assigns equal probability to all responses. - - # Returns: - # A tuple of three tensors: (losses, chosen_rewards, rejected_rewards). - # The losses tensor contains the DPO loss for each example in the batch. - # The chosen_rewards and rejected_rewards tensors contain the rewards for the chosen and rejected responses, respectively. - # """ - # pi_logratios = policy_chosen_logps - policy_rejected_logps - # ref_logratios = reference_chosen_logps - reference_rejected_logps - - # if reference_free: - # ref_logratios = 0 - - # logits = pi_logratios - ref_logratios - - # dpo_losses = -F.logsigmoid(self.beta * logits) - # chosen_rewards = self.beta * (policy_chosen_logps - reference_chosen_logps).detach() - # rejected_rewards = self.beta * (policy_rejected_logps - reference_rejected_logps).detach() - # rewards_mask = pi_logratios != 0 - - # return dpo_losses, chosen_rewards, rejected_rewards, rewards_mask + return concatenated_batch def _get_batch_logps( self, @@ -1085,7 +1033,9 @@ def _get_batch_logps( A tensor of shape (batch_size,) containing the average/sum log probabilities of the given labels under the given logits. """ if logits.shape[:-1] != labels.shape: - raise ValueError("Logits (batch and sequence length dim) and labels must have the same shape.") + raise ValueError( + "Logits (batch and sequence length dim) and labels must have the same shape." + ) labels = labels[:, 1:].clone() logits = logits[:, :-1, :] @@ -1094,7 +1044,9 @@ def _get_batch_logps( # dummy token; we'll ignore the losses on these tokens later labels[labels == self.label_pad_token_id] = 0 - per_token_logps = torch.gather(logits.log_softmax(-1), dim=2, index=labels.unsqueeze(2)).squeeze(2) + per_token_logps = torch.gather( + logits.log_softmax(-1), dim=2, index=labels.unsqueeze(2) + ).squeeze(2) if average_log_prob: return (per_token_logps * loss_mask).sum(-1) / loss_mask.sum(-1) @@ -1109,7 +1061,9 @@ def _get_batch_chosen_salt_logps( average_log_prob: bool = True, ) -> torch.FloatTensor: if logits.shape[:-1] != labels.shape: - raise ValueError("Logits (batch and sequence length dim) and labels must have the same shape.") + raise ValueError( + "Logits (batch and sequence length dim) and labels must have the same shape." + ) labels = labels[:, 1:].clone() labels_weight = labels_weight[:, 1:].clone() @@ -1118,16 +1072,22 @@ def _get_batch_chosen_salt_logps( # dummy token; we'll ignore the losses on these tokens later labels[labels == self.label_pad_token_id] = 0 - per_token_logps = torch.gather(logits.log_softmax(-1), dim=2, index=labels.unsqueeze(2)).squeeze(2) + per_token_logps = torch.gather( + logits.log_softmax(-1), dim=2, index=labels.unsqueeze(2) + ).squeeze(2) + + zero_for_here = torch.tensor( + 0, dtype=labels_weight.dtype, device=labels_weight.device + ) + likelihood_weight = torch.where( + labels_weight > zero_for_here, labels_weight, zero_for_here + ) + + likelihood_weight = likelihood_weight * loss_mask + per_token_logps = per_token_logps * likelihood_weight - zero_for_here = torch.tensor(0, dtype=labels_weight.dtype, device=labels_weight.device) - likelihood_weight = torch.where(labels_weight > zero_for_here, labels_weight, zero_for_here) - - likelihood_weight = likelihood_weight*loss_mask - per_token_logps = per_token_logps*likelihood_weight - if average_log_prob: - likelihood_token_num = (likelihood_weight!=0).sum() + likelihood_token_num = (likelihood_weight != 0).sum() if likelihood_token_num == 0: return torch.tensor(0, device=logits.device) else: @@ -1135,7 +1095,6 @@ def _get_batch_chosen_salt_logps( else: return per_token_logps.sum(-1).mean() - def _get_batch_rejected_salt_logps( self, logits: torch.FloatTensor, @@ -1145,7 +1104,9 @@ def _get_batch_rejected_salt_logps( calculate_liklihood_token_log_prob: bool = False, ) -> torch.FloatTensor: if logits.shape[:-1] != labels.shape: - raise ValueError("Logits (batch and sequence length dim) and labels must have the same shape.") + raise ValueError( + "Logits (batch and sequence length dim) and labels must have the same shape." + ) labels = labels[:, 1:].clone() labels_weight = labels_weight[:, 1:].clone() @@ -1156,44 +1117,62 @@ def _get_batch_rejected_salt_logps( # likelihood loss for rejected if calculate_liklihood_token_log_prob: - likelihood_per_token_logps = torch.gather(logits.log_softmax(-1), dim=2, index=labels.unsqueeze(2)).squeeze(2) - - zero_for_here = torch.tensor(0, dtype=labels_weight.dtype, device=labels_weight.device) - likelihood_weight = torch.where(labels_weight > zero_for_here, labels_weight, zero_for_here) - - likelihood_weight = likelihood_weight*loss_mask - likelihood_per_token_logps = likelihood_per_token_logps*likelihood_weight - + likelihood_per_token_logps = torch.gather( + logits.log_softmax(-1), dim=2, index=labels.unsqueeze(2) + ).squeeze(2) + + zero_for_here = torch.tensor( + 0, dtype=labels_weight.dtype, device=labels_weight.device + ) + likelihood_weight = torch.where( + labels_weight > zero_for_here, labels_weight, zero_for_here + ) + + likelihood_weight = likelihood_weight * loss_mask + likelihood_per_token_logps = likelihood_per_token_logps * likelihood_weight + if average_log_prob: - likelihood_token_num = (likelihood_weight!=0).sum() + likelihood_token_num = (likelihood_weight != 0).sum() if likelihood_token_num == 0: likelihood_per_token_logps = torch.tensor(0, device=logits.device) else: - likelihood_per_token_logps = (likelihood_per_token_logps.sum(-1) / likelihood_token_num).mean() + likelihood_per_token_logps = ( + likelihood_per_token_logps.sum(-1) / likelihood_token_num + ).mean() else: likelihood_per_token_logps = likelihood_per_token_logps.sum(-1).mean() # unlikelihood loss for rejected - probs = F.softmax(logits, dim=-1) - #torch.log1p(x) := log(x+1) - #log_one_minus_probs = torch.log1p(-probs) + probs = F.softmax(logits, dim=-1) + # torch.log1p(x) := log(x+1) + # log_one_minus_probs = torch.log1p(-probs) one_minus_probs = 1.0 - probs - one_minus_probs = one_minus_probs + (one_minus_probs==0).float() * 1e-8 + one_minus_probs = one_minus_probs + (one_minus_probs == 0).float() * 1e-8 log_one_minus_probs = torch.log(one_minus_probs) - unlikelihood_per_token_logps = torch.gather(log_one_minus_probs.log_softmax(-1), dim=2, index=labels.unsqueeze(2)).squeeze(2) + unlikelihood_per_token_logps = torch.gather( + log_one_minus_probs.log_softmax(-1), dim=2, index=labels.unsqueeze(2) + ).squeeze(2) + + zero_for_here = torch.tensor( + 0, dtype=labels_weight.dtype, device=labels_weight.device + ) + unlikelihood_weight = torch.where( + labels_weight < zero_for_here, -1 * labels_weight, zero_for_here + ) - zero_for_here = torch.tensor(0, dtype=labels_weight.dtype, device=labels_weight.device) - unlikelihood_weight = torch.where(labels_weight < zero_for_here, -1 * labels_weight, zero_for_here) - - unlikelihood_weight = unlikelihood_weight*loss_mask - unlikelihood_per_token_logps = unlikelihood_per_token_logps*unlikelihood_weight + unlikelihood_weight = unlikelihood_weight * loss_mask + unlikelihood_per_token_logps = ( + unlikelihood_per_token_logps * unlikelihood_weight + ) if average_log_prob: - unlikelihood_token_num = (unlikelihood_weight!=0).sum() + unlikelihood_token_num = (unlikelihood_weight != 0).sum() if unlikelihood_token_num == 0: unlikelihood_per_token_logps = torch.tensor(0.0, device=logits.device) else: - unlikelihood_per_token_logps = (unlikelihood_per_token_logps.sum(-1) / unlikelihood_token_num).mean() + unlikelihood_per_token_logps = ( + unlikelihood_per_token_logps.sum(-1) / unlikelihood_token_num + ).mean() else: unlikelihood_per_token_logps = unlikelihood_per_token_logps.sum(-1).mean() @@ -1202,10 +1181,11 @@ def _get_batch_rejected_salt_logps( else: return unlikelihood_per_token_logps - def concatenated_forward( self, model: nn.Module, batch: Dict[str, Union[List, torch.LongTensor]] - ) -> Tuple[torch.FloatTensor, torch.FloatTensor, torch.FloatTensor, torch.FloatTensor]: + ) -> Tuple[ + torch.FloatTensor, torch.FloatTensor, torch.FloatTensor, torch.FloatTensor + ]: """Run the given model on the given batch of inputs, concatenating the chosen and rejected inputs together. We do this to avoid doing two forward passes, because it's faster for FSDP. @@ -1215,7 +1195,7 @@ def concatenated_forward( concatenated_batch["concatenated_input_ids"], attention_mask=concatenated_batch["concatenated_attention_mask"], ).logits.to(torch.float32) - + all_logps = self._get_batch_logps( all_logits, concatenated_batch["concatenated_labels"], @@ -1226,22 +1206,37 @@ def concatenated_forward( chosen_logits = all_logits[: batch["chosen_input_ids"].shape[0]] rejected_logits = all_logits[batch["chosen_input_ids"].shape[0] :] - + # if self.alignment_function in ['salt']: chosen_salt_logps = self._get_batch_chosen_salt_logps( chosen_logits, - concatenated_batch["concatenated_labels"][: batch["chosen_input_ids"].shape[0]], - concatenated_batch["concatenated_salt_weight"][: batch["chosen_input_ids"].shape[0]], + concatenated_batch["concatenated_labels"][ + : batch["chosen_input_ids"].shape[0] + ], + concatenated_batch["concatenated_salt_weight"][ + : batch["chosen_input_ids"].shape[0] + ], average_log_prob=True, ) rejected_salt_logps = self._get_batch_rejected_salt_logps( rejected_logits, - concatenated_batch["concatenated_labels"][batch["chosen_input_ids"].shape[0] :], - concatenated_batch["concatenated_salt_weight"][batch["chosen_input_ids"].shape[0] :], + concatenated_batch["concatenated_labels"][ + batch["chosen_input_ids"].shape[0] : + ], + concatenated_batch["concatenated_salt_weight"][ + batch["chosen_input_ids"].shape[0] : + ], average_log_prob=True, - calculate_liklihood_token_log_prob=False + calculate_liklihood_token_log_prob=False, + ) + return ( + chosen_logps, + rejected_logps, + chosen_logits, + rejected_logits, + chosen_salt_logps, + rejected_salt_logps, ) - return (chosen_logps, rejected_logps, chosen_logits, rejected_logits, chosen_salt_logps, rejected_salt_logps) def get_batch_metrics( self, @@ -1258,68 +1253,47 @@ def get_batch_metrics( policy_chosen_logits, policy_rejected_logits, policy_chosen_salt_logps, - policy_rejected_salt_logps + policy_rejected_salt_logps, ) = self.concatenated_forward(model, batch) - # with torch.no_grad(): - # ( - # reference_chosen_logps, - # reference_rejected_logps, - # _, - # _, - # _, - # _, - # ) = self.concatenated_forward(self.ref_model, batch) - - # dpo_losses, chosen_rewards, rejected_rewards, rewards_mask = self.dpo_loss( - # policy_chosen_logps, - # policy_rejected_logps, - # reference_chosen_logps, - # reference_rejected_logps, - # ) - # reward_accuracies = (chosen_rewards > rejected_rewards).float() - - # if self.alignment_function == 'dpo': - # losses = (-1) * self.alpha1 * policy_chosen_logps + self.alpha2 * dpo_losses - # losses = losses.mean() - # elif self.alignment_function == 'sft': - # losses = (-1) * policy_chosen_logps - # losses = losses.mean() - # elif self.alignment_function == 'salt': pi_logratios = policy_chosen_logps - policy_rejected_logps rewards_mask = pi_logratios != 0 - losses = (-1) * self.omega1 * policy_chosen_salt_logps + (-1) * self.omega2 * policy_rejected_salt_logps + losses = (-1) * self.omega1 * policy_chosen_salt_logps + ( + -1 + ) * self.omega2 * policy_rejected_salt_logps prefix = "eval_" if train_eval == "eval" else "" - # metrics[f"{prefix}rewards/chosen"] = chosen_rewards[rewards_mask].cpu().numpy().mean() - # metrics[f"{prefix}rewards/rejected"] = rejected_rewards[rewards_mask].cpu().numpy().mean() - # metrics[f"{prefix}rewards/accuracies"] = reward_accuracies[rewards_mask].cpu().numpy().mean() - # metrics[f"{prefix}rewards/margins"] = (chosen_rewards - rejected_rewards)[rewards_mask].cpu().numpy().mean() - metrics[f"{prefix}logps/rejected"] = policy_rejected_logps[rewards_mask].detach().cpu().numpy().mean() - metrics[f"{prefix}logps/chosen"] = policy_chosen_logps[rewards_mask].detach().cpu().numpy().mean() - metrics[f"{prefix}logits/rejected"] = policy_rejected_logits[rewards_mask].detach().cpu().numpy().mean() - metrics[f"{prefix}logits/chosen"] = policy_chosen_logits[rewards_mask].detach().cpu().numpy().mean() + metrics[f"{prefix}logps/rejected"] = ( + policy_rejected_logps[rewards_mask].detach().cpu().numpy().mean() + ) + metrics[f"{prefix}logps/chosen"] = ( + policy_chosen_logps[rewards_mask].detach().cpu().numpy().mean() + ) + metrics[f"{prefix}logits/rejected"] = ( + policy_rejected_logits[rewards_mask].detach().cpu().numpy().mean() + ) + metrics[f"{prefix}logits/chosen"] = ( + policy_chosen_logits[rewards_mask].detach().cpu().numpy().mean() + ) if train_eval == "eval": - policy_output_decoded, reference_output_decoded = self.get_batch_samples(model, batch) + policy_output_decoded = self.get_batch_samples(model, batch) # Create a DataFrame from the dictionary - batch.update({ - 'policy_output': policy_output_decoded, - 'reference_output': reference_output_decoded - }) + batch.update( + { + "policy_output": policy_output_decoded, + } + ) # eval generated summary for policy - eval_dict = ngram_eval.run_all_evaluation(batch['chosen_response_only'], policy_output_decoded) + eval_dict = ngram_eval.run_all_evaluation( + batch["chosen_response_only"], policy_output_decoded + ) - eval_dict = {'eval_metrics_policy_'+k: round(v, 4) for k, v in eval_dict.items()} - - # eval generated summary for ref model - ref_eval_dict = ngram_eval.run_all_evaluation(batch['chosen_response_only'], reference_output_decoded) - ref_eval_dict = {'eval_metrics_ref_'+k: round(v, 4) for k, v in ref_eval_dict.items()} - - eval_dict.update(ref_eval_dict) - metrics.update(eval_dict) + eval_dict = { + "eval_metrics_policy_" + k: round(v, 4) for k, v in eval_dict.items() + } return losses, metrics @@ -1335,7 +1309,6 @@ def compute_loss( "DPODataCollatorWithPadding - you might see unexpected behavior. Alternatively, you can implement your own prediction_step method if you are using a custom data collator" ) loss, metrics = self.get_batch_metrics(model, inputs, train_eval="train") - # print(loss, metrics) # force log the metrics if self.accelerator.is_main_process: @@ -1345,40 +1318,9 @@ def compute_loss( return (loss, metrics) return loss - def training_step(self, model: nn.Module, inputs: Dict[str, Union[torch.Tensor, Any]]) -> torch.Tensor: - """ - Perform a training step on a batch of inputs. - - Subclass and override to inject custom behavior. - - Args: - model (`nn.Module`): - The model to train. - inputs (`Dict[str, Union[torch.Tensor, Any]]`): - The inputs and targets of the model. - - The dictionary will be unpacked before being fed to the model. Most models expect the targets under the - argument `labels`. Check your model's documentation for all accepted arguments. - - Return: - `torch.Tensor`: The tensor with training loss on this batch. - """ - model.train() - inputs = self._prepare_inputs(inputs) - - # torch.autograd.set_detect_anomaly(True) - with self.compute_loss_context_manager(): - loss = self.compute_loss(model, inputs) - - if self.args.n_gpu > 1: - loss = loss.mean() # mean() to average on multi-gpu parallel training - - # with torch.autograd.detect_anomaly(): - self.accelerator.backward(loss) - - return loss.detach() / self.args.gradient_accumulation_steps - - def get_batch_samples(self, model, batch: Dict[str, torch.LongTensor]) -> Tuple[str, str]: + def get_batch_samples( + self, model, batch: Dict[str, torch.LongTensor] + ) -> Tuple[str, str]: """Generate samples from the model and reference model for the given batch of inputs.""" policy_output = model.generate( @@ -1389,104 +1331,24 @@ def get_batch_samples(self, model, batch: Dict[str, torch.LongTensor]) -> Tuple[ pad_token_id=self.tokenizer.pad_token_id, ) - reference_output = self.ref_model.generate( - input_ids=batch["prompt_input_ids"], - attention_mask=batch["prompt_attention_mask"], - max_length=self.generate_max_length, - do_sample=False, - pad_token_id=self.tokenizer.pad_token_id, + policy_output = pad_to_length( + policy_output, self.generate_max_length, self.tokenizer.pad_token_id ) - - policy_output = pad_to_length(policy_output, self.generate_max_length, self.tokenizer.pad_token_id) - reference_output = pad_to_length(reference_output, self.generate_max_length, self.tokenizer.pad_token_id) - - policy_output = policy_output[:, batch["prompt_input_ids"].shape[-1]:] - reference_output = reference_output[:, batch["prompt_input_ids"].shape[-1]:] - - policy_output_decoded = self.tokenizer.batch_decode(policy_output, skip_special_tokens=True) - reference_output_decoded = self.tokenizer.batch_decode(reference_output, skip_special_tokens=True) - - return policy_output_decoded, reference_output_decoded - - def prediction_step( - self, - model: Union[PreTrainedModel, nn.Module], - inputs: Dict[str, Union[torch.Tensor, Any]], - prediction_loss_only: bool, - ignore_keys: Optional[List[str]] = None, - ): - if not self.use_dpo_data_collator: - warnings.warn( - "prediction_step is only implemented for DPODataCollatorWithPadding, and you passed a datacollator that is different than " - "DPODataCollatorWithPadding - you might see unexpected behavior. Alternatively, you can implement your own prediction_step method if you are using a custom data collator" - ) - if ignore_keys is None: - if hasattr(model, "config"): - ignore_keys = getattr(model.config, "keys_to_ignore_at_inference", []) - else: - ignore_keys = [] - - with torch.no_grad(): - loss, metrics = self.get_batch_metrics(model, inputs, train_eval="eval") - - # force log the metrics - if self.accelerator.is_main_process: - self.store_metrics(metrics, train_eval="eval") - - if prediction_loss_only: - return (loss.detach(), None, None) - - # logits for the chosen and rejected samples from model - logits_dict = { - "logits_test/chosen": metrics["logits_test/chosen"], - "logits_test/rejected": metrics["logits_test/rejected"], - } - logits = tuple(v for k, v in logits_dict.items() if k not in ignore_keys) - logits = torch.stack(logits).mean(axis=1) - labels = torch.zeros(logits.shape[0]) - - return (loss.detach(), logits, labels) - - def store_metrics(self, metrics: Dict[str, float], train_eval: Literal["train", "eval"] = "train") -> None: - for key, value in metrics.items(): - self._stored_metrics[train_eval][key].append(value) - - def log(self, logs: Dict[str, float]) -> None: - """ - Log `logs` on the various objects watching training, including stored metrics. - - Args: - logs (`Dict[str, float]`): - The values to log. - """ - # logs either has 'loss' or 'eval_loss' - train_eval = "train" if "loss" in logs else "eval" - # Add averaged stored metrics to logs - for key, metrics in self._stored_metrics[train_eval].items(): - logs[key] = torch.tensor(metrics).mean().item() - del self._stored_metrics[train_eval] - return super().log(logs) + policy_output = policy_output[:, batch["prompt_input_ids"].shape[-1] :] + policy_output_decoded = self.tokenizer.batch_decode( + policy_output, skip_special_tokens=True + ) + return policy_output_decoded -class SFTTrainer(Trainer): +class SFTTrainer(BaseTrainer): r""" Initialize DPOTrainer. Args: model (`transformers.PreTrainedModel`): The model to train, preferably an `AutoModelForSequenceClassification`. - ref_model (`PreTrainedModelWrapper`): - Hugging Face transformer model with a casual language modelling head. Used for implicit reward computation and loss. - beta (`float`, defaults to 0.1): - The beta factor in DPO loss. Higher beta means less divergence from the initial policy. - alpha1 (`float`, defaults to 0): - The alpha factor in Edit-DPO loss (alpha1 * chosen-SFT-loss + alpha2 * DPO-loss). - alpha2 (`float`, defaults to 1): - The alpha factor in Edit-DPO loss (alpha1 * chosen-SFT-loss + alpha2 * DPO-loss). - omega1 (`float`, defaults to 1): - The omeg1a factor in SALT loss: -self.omega1 * policy_chosen_salt_logps - self.omega2 * policy_rejected_salt_logps - omega2 (`float`, defaults to 1): - The omega2 factor in SALT loss: -self.omega1 * policy_chosen_salt_logps - self.omega2 * policy_rejected_salt_logps + output_dir (`str`, defaults to `'./'`): args (`transformers.TrainingArguments`): The arguments to use for training. data_collator (`transformers.DataCollator`): @@ -1518,154 +1380,14 @@ class SFTTrainer(Trainer): The maximum length of the prompt. This argument is required if you want to use the default data collator. peft_config (`Dict`, defaults to `None`): The PEFT configuration to use for training. If you pass a PEFT configuration, the model will be wrapped in a PEFT model. - alignment_function (`str`, defaults to `None`): - which alignment_function will be used """ - def __init__( - self, - model: Union[PreTrainedModel, nn.Module] = None, - # ref_model: Union[PreTrainedModel, nn.Module] = None, - # beta: float = 0.1, - # alpha1: float = 0.0, - # alpha2: float = 1.0, - # omega1: float = 1.0, - # omega2: float = 1.0, - # S_generated_C_weight: float = 1.0, - # S_generated_D_weight: float = -0.1, - # S_generated_S_weight: float = -0.1, - # S_edited_C_weight: float = 1.0, - # S_edited_I_weight: float = 1.0, - # S_edited_S_weight: float = 1.0, - output_dir: str = './', - args: TrainingArguments = None, - data_collator: Optional[DataCollator] = None, - label_pad_token_id: int = -100, - padding_value: int = 0, - truncation_mode: str = "keep_end", - train_dataset: Optional[Dataset] = None, - eval_dataset: Optional[Union[Dataset, Dict[str, Dataset]]] = None, - tokenizer: Optional[PreTrainedTokenizerBase] = None, - model_init: Optional[Callable[[], PreTrainedModel]] = None, - callbacks: Optional[List[TrainerCallback]] = None, - optimizers: Tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR] = ( - None, - None, - ), - preprocess_logits_for_metrics: Optional[Callable[[torch.Tensor, torch.Tensor], torch.Tensor]] = None, - max_length: Optional[int] = None, - max_prompt_length: Optional[int] = None, - peft_config: Optional[Dict] = None, - # alignment_function: Optional[str] = None, - ): - if not is_peft_available() and peft_config is not None: - raise ValueError( - "PEFT is not installed and you passed a `peft_config` in the trainer's kwargs, please install it to use the PEFT models" - ) - elif is_peft_available() and peft_config is not None: - if getattr(model, "is_loaded_in_8bit", False) or getattr(model, "is_loaded_in_4bit", False): - model = prepare_model_for_int8_training(model) - # self.ref_model = prepare_model_for_int8_training(ref_model) - # else: - # self.ref_model = ref_model - model = get_peft_model(model, peft_config) - # self.ref_model = get_peft_model(self.ref_model, peft_config) - model.print_trainable_parameters() - # else: - # self.ref_model = ref_model + def __init__(self, **kwargs): + super().__init__(**kwargs) - if data_collator is None: - if tokenizer is None: - raise ValueError( - "max_length or a tokenizer must be specified when using the default DPODataCollatorWithPadding" - ) - if max_length is None: - warnings.warn( - "When using DPODataCollatorWithPadding, you should set `max_length` in the DPOTrainer's init" - " it will be set to `512` by default, but you should do it yourself in the future.", - UserWarning, - ) - max_length = 512 - if max_prompt_length is None: - warnings.warn( - "When using DPODataCollatorWithPadding, you should set `max_prompt_length` in the DPOTrainer's init" - " it will be set to `128` by default, but you should do it yourself in the future.", - UserWarning, - ) - max_prompt_length = 128 - - data_collator = DPODataCollatorWithPadding( - tokenizer, - max_length=max_length, - max_prompt_length=max_prompt_length, - label_pad_token_id=label_pad_token_id, - padding_value=padding_value, - truncation_mode=truncation_mode, - ) - - if args.remove_unused_columns: - args.remove_unused_columns = False - # warn users - warnings.warn( - "When using DPODataCollatorWithPadding, you should set `remove_unused_columns=False` in your TrainingArguments" - " we have set it for you, but you should do it yourself in the future.", - UserWarning, - ) - - self.use_dpo_data_collator = True - else: - self.use_dpo_data_collator = False - - self.label_pad_token_id = label_pad_token_id - self.padding_value = padding_value - - # self.beta = beta - # self.alpha1 = alpha1 - # self.alpha2 = alpha2 - # self.omega1 = omega1 - # self.omega2 = omega2 - - # self.S_generated_C_weight = S_generated_C_weight - # self.S_generated_D_weight = S_generated_D_weight - # self.S_generated_S_weight = S_generated_S_weight - # self.S_edited_C_weight = S_edited_C_weight - # self.S_edited_I_weight = S_edited_I_weight - # self.S_edited_S_weight = S_edited_S_weight - - self.output_dir = output_dir - - # if alignment_function is None: - # self.alignment_function = 'dpo' - # else: - # self.alignment_function = alignment_function - - self.generate_max_length=max_length - - self._stored_metrics = defaultdict(lambda: defaultdict(list)) - - super().__init__( - model=model, - args=args, - data_collator=data_collator, - train_dataset=train_dataset, - eval_dataset=eval_dataset, - tokenizer=tokenizer, - model_init=model_init, - callbacks=callbacks, - optimizers=optimizers, - preprocess_logits_for_metrics=preprocess_logits_for_metrics, - ) - - # Since we inherit from trainer we always have access to an accelerator - if hasattr(self, "accelerator"): - model = self.accelerator.prepare_model(model, evaluation_mode=True) - # self.ref_model = self.accelerator.prepare_model(self.ref_model, evaluation_mode=True) - else: - raise AttributeError( - "Your `Trainer` does not have an `accelerator` object. Consider upgrading `transformers`." - ) - - def concatenated_inputs(self, batch: Dict[str, Union[List, torch.LongTensor]]) -> Dict[str, torch.LongTensor]: + def concatenated_inputs( + self, batch: Dict[str, Union[List, torch.LongTensor]] + ) -> Dict[str, torch.LongTensor]: """Concatenate the chosen and rejected inputs into a single tensor. Args: @@ -1674,17 +1396,24 @@ def concatenated_inputs(self, batch: Dict[str, Union[List, torch.LongTensor]]) - Returns: A dictionary containing the concatenated inputs under the key 'concatenated_input_ids'. """ - - max_length = max(batch["chosen_input_ids"].shape[1], batch["rejected_input_ids"].shape[1]) + + max_length = max( + batch["chosen_input_ids"].shape[1], batch["rejected_input_ids"].shape[1] + ) concatenated_batch = {} for k in batch: if k.startswith("chosen") and isinstance(batch[k], torch.Tensor): - pad_value = self.label_pad_token_id if "labels" in k else self.padding_value + pad_value = ( + self.label_pad_token_id if "labels" in k else self.padding_value + ) concatenated_key = k.replace("chosen", "concatenated") - concatenated_batch[concatenated_key] = pad_to_length(batch[k], max_length, pad_value=pad_value) - for k in batch: - if k.startswith("rejected") and isinstance(batch[k], torch.Tensor): - pad_value = self.label_pad_token_id if "labels" in k else self.padding_value + concatenated_batch[concatenated_key] = pad_to_length( + batch[k], max_length, pad_value=pad_value + ).to(self.accelerator.device) + elif k.startswith("rejected") and isinstance(batch[k], torch.Tensor): + pad_value = ( + self.label_pad_token_id if "labels" in k else self.padding_value + ) concatenated_key = k.replace("rejected", "concatenated") concatenated_batch[concatenated_key] = torch.cat( ( @@ -1693,7 +1422,7 @@ def concatenated_inputs(self, batch: Dict[str, Union[List, torch.LongTensor]]) - ), dim=0, ).to(self.accelerator.device) - + return concatenated_batch def _get_batch_logps( @@ -1713,7 +1442,9 @@ def _get_batch_logps( A tensor of shape (batch_size,) containing the average/sum log probabilities of the given labels under the given logits. """ if logits.shape[:-1] != labels.shape: - raise ValueError("Logits (batch and sequence length dim) and labels must have the same shape.") + raise ValueError( + "Logits (batch and sequence length dim) and labels must have the same shape." + ) labels = labels[:, 1:].clone() logits = logits[:, :-1, :] @@ -1722,7 +1453,9 @@ def _get_batch_logps( # dummy token; we'll ignore the losses on these tokens later labels[labels == self.label_pad_token_id] = 0 - per_token_logps = torch.gather(logits.log_softmax(-1), dim=2, index=labels.unsqueeze(2)).squeeze(2) + per_token_logps = torch.gather( + logits.log_softmax(-1), dim=2, index=labels.unsqueeze(2) + ).squeeze(2) if average_log_prob: return (per_token_logps * loss_mask).sum(-1) / loss_mask.sum(-1) @@ -1731,7 +1464,9 @@ def _get_batch_logps( def concatenated_forward( self, model: nn.Module, batch: Dict[str, Union[List, torch.LongTensor]] - ) -> Tuple[torch.FloatTensor, torch.FloatTensor, torch.FloatTensor, torch.FloatTensor]: + ) -> Tuple[ + torch.FloatTensor, torch.FloatTensor, torch.FloatTensor, torch.FloatTensor + ]: """Run the given model on the given batch of inputs, concatenating the chosen and rejected inputs together. We do this to avoid doing two forward passes, because it's faster for FSDP. @@ -1741,7 +1476,7 @@ def concatenated_forward( concatenated_batch["concatenated_input_ids"], attention_mask=concatenated_batch["concatenated_attention_mask"], ).logits.to(torch.float32) - + all_logps = self._get_batch_logps( all_logits, concatenated_batch["concatenated_labels"], @@ -1752,7 +1487,7 @@ def concatenated_forward( chosen_logits = all_logits[: batch["chosen_input_ids"].shape[0]] rejected_logits = all_logits[batch["chosen_input_ids"].shape[0] :] - + return (chosen_logps, rejected_logps, chosen_logits, rejected_logits) def get_batch_metrics( @@ -1770,66 +1505,44 @@ def get_batch_metrics( policy_chosen_logits, policy_rejected_logits, ) = self.concatenated_forward(model, batch) - # with torch.no_grad(): - # ( - # reference_chosen_logps, - # reference_rejected_logps, - # _, - # _, - # _, - # _, - # ) = self.concatenated_forward(self.ref_model, batch) - - # dpo_losses, chosen_rewards, rejected_rewards, rewards_mask = self.dpo_loss( - # policy_chosen_logps, - # policy_rejected_logps, - # reference_chosen_logps, - # reference_rejected_logps, - # ) - # reward_accuracies = (chosen_rewards > rejected_rewards).float() - - # if self.alignment_function == 'dpo': - # losses = (-1) * self.alpha1 * policy_chosen_logps + self.alpha2 * dpo_losses - # losses = losses.mean() - # elif self.alignment_function == 'sft': pi_logratios = policy_chosen_logps - policy_rejected_logps rewards_mask = pi_logratios != 0 losses = (-1) * policy_chosen_logps losses = losses.mean() - # elif self.alignment_function == 'salt': - - - # losses = (-1) * self.omega1 * policy_chosen_salt_logps + (-1) * self.omega2 * policy_rejected_salt_logps prefix = "eval_" if train_eval == "eval" else "" - # metrics[f"{prefix}rewards/chosen"] = chosen_rewards[rewards_mask].cpu().numpy().mean() - # metrics[f"{prefix}rewards/rejected"] = rejected_rewards[rewards_mask].cpu().numpy().mean() - # metrics[f"{prefix}rewards/accuracies"] = reward_accuracies[rewards_mask].cpu().numpy().mean() - # metrics[f"{prefix}rewards/margins"] = (chosen_rewards - rejected_rewards)[rewards_mask].cpu().numpy().mean() - metrics[f"{prefix}logps/rejected"] = policy_rejected_logps[rewards_mask].detach().cpu().numpy().mean() - metrics[f"{prefix}logps/chosen"] = policy_chosen_logps[rewards_mask].detach().cpu().numpy().mean() - metrics[f"{prefix}logits/rejected"] = policy_rejected_logits[rewards_mask].detach().cpu().numpy().mean() - metrics[f"{prefix}logits/chosen"] = policy_chosen_logits[rewards_mask].detach().cpu().numpy().mean() + metrics[f"{prefix}logps/rejected"] = ( + policy_rejected_logps[rewards_mask].detach().cpu().numpy().mean() + ) + metrics[f"{prefix}logps/chosen"] = ( + policy_chosen_logps[rewards_mask].detach().cpu().numpy().mean() + ) + metrics[f"{prefix}logits/rejected"] = ( + policy_rejected_logits[rewards_mask].detach().cpu().numpy().mean() + ) + metrics[f"{prefix}logits/chosen"] = ( + policy_chosen_logits[rewards_mask].detach().cpu().numpy().mean() + ) if train_eval == "eval": policy_output_decoded = self.get_batch_samples(model, batch) # Create a DataFrame from the dictionary - batch.update({ - 'policy_output': policy_output_decoded, - # 'reference_output': reference_output_decoded - }) + batch.update( + { + "policy_output": policy_output_decoded, + } + ) # eval generated summary for policy - eval_dict = ngram_eval.run_all_evaluation(batch['chosen_response_only'], policy_output_decoded) + eval_dict = ngram_eval.run_all_evaluation( + batch["chosen_response_only"], policy_output_decoded + ) + + eval_dict = { + "eval_metrics_policy_" + k: round(v, 4) for k, v in eval_dict.items() + } - eval_dict = {'eval_metrics_policy_'+k: round(v, 4) for k, v in eval_dict.items()} - - # eval generated summary for ref model - # ref_eval_dict = ngram_eval.run_all_evaluation(batch['chosen_response_only'], reference_output_decoded) - # ref_eval_dict = {'eval_metrics_ref_'+k: round(v, 4) for k, v in ref_eval_dict.items()} - - # eval_dict.update(ref_eval_dict) metrics.update(eval_dict) return losses, metrics @@ -1855,40 +1568,9 @@ def compute_loss( return (loss, metrics) return loss - def training_step(self, model: nn.Module, inputs: Dict[str, Union[torch.Tensor, Any]]) -> torch.Tensor: - """ - Perform a training step on a batch of inputs. - - Subclass and override to inject custom behavior. - - Args: - model (`nn.Module`): - The model to train. - inputs (`Dict[str, Union[torch.Tensor, Any]]`): - The inputs and targets of the model. - - The dictionary will be unpacked before being fed to the model. Most models expect the targets under the - argument `labels`. Check your model's documentation for all accepted arguments. - - Return: - `torch.Tensor`: The tensor with training loss on this batch. - """ - model.train() - inputs = self._prepare_inputs(inputs) - - # torch.autograd.set_detect_anomaly(True) - with self.compute_loss_context_manager(): - loss = self.compute_loss(model, inputs) - - if self.args.n_gpu > 1: - loss = loss.mean() # mean() to average on multi-gpu parallel training - - # with torch.autograd.detect_anomaly(): - self.accelerator.backward(loss) - - return loss.detach() / self.args.gradient_accumulation_steps - - def get_batch_samples(self, model, batch: Dict[str, torch.LongTensor]) -> Tuple[str, str]: + def get_batch_samples( + self, model, batch: Dict[str, torch.LongTensor] + ) -> Tuple[str, str]: """Generate samples from the model and reference model for the given batch of inputs.""" policy_output = model.generate( @@ -1899,81 +1581,11 @@ def get_batch_samples(self, model, batch: Dict[str, torch.LongTensor]) -> Tuple[ pad_token_id=self.tokenizer.pad_token_id, ) - # reference_output = self.ref_model.generate( - # input_ids=batch["prompt_input_ids"], - # attention_mask=batch["prompt_attention_mask"], - # max_length=self.generate_max_length, - # do_sample=False, - # pad_token_id=self.tokenizer.pad_token_id, - # ) - - policy_output = pad_to_length(policy_output, self.generate_max_length, self.tokenizer.pad_token_id) - # reference_output = pad_to_length(reference_output, self.generate_max_length, self.tokenizer.pad_token_id) - - policy_output = policy_output[:, batch["prompt_input_ids"].shape[-1]:] - # reference_output = reference_output[:, batch["prompt_input_ids"].shape[-1]:] - - policy_output_decoded = self.tokenizer.batch_decode(policy_output, skip_special_tokens=True) - # reference_output_decoded = self.tokenizer.batch_decode(reference_output, skip_special_tokens=True) - - return policy_output_decoded#, reference_output_decoded - - def prediction_step( - self, - model: Union[PreTrainedModel, nn.Module], - inputs: Dict[str, Union[torch.Tensor, Any]], - prediction_loss_only: bool, - ignore_keys: Optional[List[str]] = None, - ): - if not self.use_dpo_data_collator: - warnings.warn( - "prediction_step is only implemented for DPODataCollatorWithPadding, and you passed a datacollator that is different than " - "DPODataCollatorWithPadding - you might see unexpected behavior. Alternatively, you can implement your own prediction_step method if you are using a custom data collator" - ) - if ignore_keys is None: - if hasattr(model, "config"): - ignore_keys = getattr(model.config, "keys_to_ignore_at_inference", []) - else: - ignore_keys = [] - - with torch.no_grad(): - loss, metrics = self.get_batch_metrics(model, inputs, train_eval="eval") - - # force log the metrics - if self.accelerator.is_main_process: - self.store_metrics(metrics, train_eval="eval") - - if prediction_loss_only: - return (loss.detach(), None, None) - - # logits for the chosen and rejected samples from model - logits_dict = { - "logits_test/chosen": metrics["logits_test/chosen"], - "logits_test/rejected": metrics["logits_test/rejected"], - } - logits = tuple(v for k, v in logits_dict.items() if k not in ignore_keys) - logits = torch.stack(logits).mean(axis=1) - labels = torch.zeros(logits.shape[0]) - - return (loss.detach(), logits, labels) - - def store_metrics(self, metrics: Dict[str, float], train_eval: Literal["train", "eval"] = "train") -> None: - for key, value in metrics.items(): - self._stored_metrics[train_eval][key].append(value) - - def log(self, logs: Dict[str, float]) -> None: - """ - Log `logs` on the various objects watching training, including stored metrics. - - Args: - logs (`Dict[str, float]`): - The values to log. - """ - # logs either has 'loss' or 'eval_loss' - train_eval = "train" if "loss" in logs else "eval" - # Add averaged stored metrics to logs - for key, metrics in self._stored_metrics[train_eval].items(): - logs[key] = torch.tensor(metrics).mean().item() - del self._stored_metrics[train_eval] - return super().log(logs) - + policy_output = pad_to_length( + policy_output, self.generate_max_length, self.tokenizer.pad_token_id + ) + policy_output = policy_output[:, batch["prompt_input_ids"].shape[-1] :] + policy_output_decoded = self.tokenizer.batch_decode( + policy_output, skip_special_tokens=True + ) + return policy_output_decoded diff --git a/poetry.lock b/poetry.lock index 0100cc5..1234eb7 100644 --- a/poetry.lock +++ b/poetry.lock @@ -176,6 +176,17 @@ files = [ {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] +[[package]] +name = "appnope" +version = "0.1.4" +description = "Disable App Nap on macOS >= 10.9" +optional = false +python-versions = ">=3.6" +files = [ + {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, + {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, +] + [[package]] name = "asttokens" version = "3.0.0" @@ -309,6 +320,85 @@ files = [ {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, ] +[[package]] +name = "cffi" +version = "1.17.1" +description = "Foreign Function Interface for Python calling C code." +optional = false +python-versions = ">=3.8" +files = [ + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, +] + +[package.dependencies] +pycparser = "*" + [[package]] name = "charset-normalizer" version = "3.4.1" @@ -455,6 +545,23 @@ files = [ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] +[[package]] +name = "comm" +version = "0.2.2" +description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." +optional = false +python-versions = ">=3.8" +files = [ + {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, + {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, +] + +[package.dependencies] +traitlets = ">=4" + +[package.extras] +test = ["pytest"] + [[package]] name = "confection" version = "0.1.5" @@ -635,6 +742,41 @@ tests-numpy2 = ["Pillow (>=9.4.0)", "absl-py", "decorator", "decord (==0.6.0)", torch = ["torch"] vision = ["Pillow (>=9.4.0)"] +[[package]] +name = "debugpy" +version = "1.8.11" +description = "An implementation of the Debug Adapter Protocol for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "debugpy-1.8.11-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:2b26fefc4e31ff85593d68b9022e35e8925714a10ab4858fb1b577a8a48cb8cd"}, + {file = "debugpy-1.8.11-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61bc8b3b265e6949855300e84dc93d02d7a3a637f2aec6d382afd4ceb9120c9f"}, + {file = "debugpy-1.8.11-cp310-cp310-win32.whl", hash = "sha256:c928bbf47f65288574b78518449edaa46c82572d340e2750889bbf8cd92f3737"}, + {file = "debugpy-1.8.11-cp310-cp310-win_amd64.whl", hash = "sha256:8da1db4ca4f22583e834dcabdc7832e56fe16275253ee53ba66627b86e304da1"}, + {file = "debugpy-1.8.11-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:85de8474ad53ad546ff1c7c7c89230db215b9b8a02754d41cb5a76f70d0be296"}, + {file = "debugpy-1.8.11-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ffc382e4afa4aee367bf413f55ed17bd91b191dcaf979890af239dda435f2a1"}, + {file = "debugpy-1.8.11-cp311-cp311-win32.whl", hash = "sha256:40499a9979c55f72f4eb2fc38695419546b62594f8af194b879d2a18439c97a9"}, + {file = "debugpy-1.8.11-cp311-cp311-win_amd64.whl", hash = "sha256:987bce16e86efa86f747d5151c54e91b3c1e36acc03ce1ddb50f9d09d16ded0e"}, + {file = "debugpy-1.8.11-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:84e511a7545d11683d32cdb8f809ef63fc17ea2a00455cc62d0a4dbb4ed1c308"}, + {file = "debugpy-1.8.11-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce291a5aca4985d82875d6779f61375e959208cdf09fcec40001e65fb0a54768"}, + {file = "debugpy-1.8.11-cp312-cp312-win32.whl", hash = "sha256:28e45b3f827d3bf2592f3cf7ae63282e859f3259db44ed2b129093ca0ac7940b"}, + {file = "debugpy-1.8.11-cp312-cp312-win_amd64.whl", hash = "sha256:44b1b8e6253bceada11f714acf4309ffb98bfa9ac55e4fce14f9e5d4484287a1"}, + {file = "debugpy-1.8.11-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:8988f7163e4381b0da7696f37eec7aca19deb02e500245df68a7159739bbd0d3"}, + {file = "debugpy-1.8.11-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c1f6a173d1140e557347419767d2b14ac1c9cd847e0b4c5444c7f3144697e4e"}, + {file = "debugpy-1.8.11-cp313-cp313-win32.whl", hash = "sha256:bb3b15e25891f38da3ca0740271e63ab9db61f41d4d8541745cfc1824252cb28"}, + {file = "debugpy-1.8.11-cp313-cp313-win_amd64.whl", hash = "sha256:d8768edcbeb34da9e11bcb8b5c2e0958d25218df7a6e56adf415ef262cd7b6d1"}, + {file = "debugpy-1.8.11-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:ad7efe588c8f5cf940f40c3de0cd683cc5b76819446abaa50dc0829a30c094db"}, + {file = "debugpy-1.8.11-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:189058d03a40103a57144752652b3ab08ff02b7595d0ce1f651b9acc3a3a35a0"}, + {file = "debugpy-1.8.11-cp38-cp38-win32.whl", hash = "sha256:32db46ba45849daed7ccf3f2e26f7a386867b077f39b2a974bb5c4c2c3b0a280"}, + {file = "debugpy-1.8.11-cp38-cp38-win_amd64.whl", hash = "sha256:116bf8342062246ca749013df4f6ea106f23bc159305843491f64672a55af2e5"}, + {file = "debugpy-1.8.11-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:654130ca6ad5de73d978057eaf9e582244ff72d4574b3e106fb8d3d2a0d32458"}, + {file = "debugpy-1.8.11-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23dc34c5e03b0212fa3c49a874df2b8b1b8fda95160bd79c01eb3ab51ea8d851"}, + {file = "debugpy-1.8.11-cp39-cp39-win32.whl", hash = "sha256:52d8a3166c9f2815bfae05f386114b0b2d274456980d41f320299a8d9a5615a7"}, + {file = "debugpy-1.8.11-cp39-cp39-win_amd64.whl", hash = "sha256:52c3cf9ecda273a19cc092961ee34eb9ba8687d67ba34cc7b79a521c1c64c4c0"}, + {file = "debugpy-1.8.11-py2.py3-none-any.whl", hash = "sha256:0e22f846f4211383e6a416d04b4c13ed174d24cc5d43f5fd52e7821d0ebc8920"}, + {file = "debugpy-1.8.11.tar.gz", hash = "sha256:6ad2688b69235c43b020e04fecccdf6a96c8943ca9c2fb340b8adc103c655e57"}, +] + [[package]] name = "decorator" version = "5.1.1" @@ -1109,6 +1251,39 @@ decorator = {version = "*", markers = "python_version > \"3.6\" and python_versi ipython = {version = ">=7.31.1", markers = "python_version > \"3.6\" and python_version < \"3.11\""} tomli = {version = "*", markers = "python_version > \"3.6\" and python_version < \"3.11\""} +[[package]] +name = "ipykernel" +version = "6.29.5" +description = "IPython Kernel for Jupyter" +optional = false +python-versions = ">=3.8" +files = [ + {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, + {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, +] + +[package.dependencies] +appnope = {version = "*", markers = "platform_system == \"Darwin\""} +comm = ">=0.1.1" +debugpy = ">=1.6.5" +ipython = ">=7.23.1" +jupyter-client = ">=6.1.12" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +matplotlib-inline = ">=0.1" +nest-asyncio = "*" +packaging = "*" +psutil = "*" +pyzmq = ">=24" +tornado = ">=6.1" +traitlets = ">=5.4.0" + +[package.extras] +cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] +pyqt5 = ["pyqt5"] +pyside6 = ["pyside6"] +test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] + [[package]] name = "ipython" version = "8.31.0" @@ -1194,6 +1369,48 @@ files = [ {file = "joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e"}, ] +[[package]] +name = "jupyter-client" +version = "8.6.3" +description = "Jupyter protocol implementation and client libraries" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, + {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, +] + +[package.dependencies] +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +python-dateutil = ">=2.8.2" +pyzmq = ">=23.0" +tornado = ">=6.2" +traitlets = ">=5.3" + +[package.extras] +docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] + +[[package]] +name = "jupyter-core" +version = "5.7.2" +description = "Jupyter core package. A base package on which Jupyter projects rely." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, + {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, +] + +[package.dependencies] +platformdirs = ">=2.5" +pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} +traitlets = ">=5.3" + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] +test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout"] + [[package]] name = "kiwisolver" version = "1.4.8" @@ -1775,6 +1992,17 @@ files = [ {file = "murmurhash-1.0.11.tar.gz", hash = "sha256:87ff68a255e54e7648d0729ff4130f43f7f38f03288a376e567934e16db93767"}, ] +[[package]] +name = "nest-asyncio" +version = "1.6.0" +description = "Patch asyncio to allow nested event loops" +optional = false +python-versions = ">=3.5" +files = [ + {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, + {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, +] + [[package]] name = "nltk" version = "3.9.1" @@ -2414,6 +2642,17 @@ files = [ [package.extras] test = ["cffi", "hypothesis", "pandas", "pytest", "pytz"] +[[package]] +name = "pycparser" +version = "2.22" +description = "C parser in Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, +] + [[package]] name = "pydantic" version = "2.10.4" @@ -2599,6 +2838,33 @@ files = [ {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, ] +[[package]] +name = "pywin32" +version = "308" +description = "Python for Window Extensions" +optional = false +python-versions = "*" +files = [ + {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, + {file = "pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e"}, + {file = "pywin32-308-cp310-cp310-win_arm64.whl", hash = "sha256:a5ab5381813b40f264fa3495b98af850098f814a25a63589a8e9eb12560f450c"}, + {file = "pywin32-308-cp311-cp311-win32.whl", hash = "sha256:5d8c8015b24a7d6855b1550d8e660d8daa09983c80e5daf89a273e5c6fb5095a"}, + {file = "pywin32-308-cp311-cp311-win_amd64.whl", hash = "sha256:575621b90f0dc2695fec346b2d6302faebd4f0f45c05ea29404cefe35d89442b"}, + {file = "pywin32-308-cp311-cp311-win_arm64.whl", hash = "sha256:100a5442b7332070983c4cd03f2e906a5648a5104b8a7f50175f7906efd16bb6"}, + {file = "pywin32-308-cp312-cp312-win32.whl", hash = "sha256:587f3e19696f4bf96fde9d8a57cec74a57021ad5f204c9e627e15c33ff568897"}, + {file = "pywin32-308-cp312-cp312-win_amd64.whl", hash = "sha256:00b3e11ef09ede56c6a43c71f2d31857cf7c54b0ab6e78ac659497abd2834f47"}, + {file = "pywin32-308-cp312-cp312-win_arm64.whl", hash = "sha256:9b4de86c8d909aed15b7011182c8cab38c8850de36e6afb1f0db22b8959e3091"}, + {file = "pywin32-308-cp313-cp313-win32.whl", hash = "sha256:1c44539a37a5b7b21d02ab34e6a4d314e0788f1690d65b48e9b0b89f31abbbed"}, + {file = "pywin32-308-cp313-cp313-win_amd64.whl", hash = "sha256:fd380990e792eaf6827fcb7e187b2b4b1cede0585e3d0c9e84201ec27b9905e4"}, + {file = "pywin32-308-cp313-cp313-win_arm64.whl", hash = "sha256:ef313c46d4c18dfb82a2431e3051ac8f112ccee1a34f29c263c583c568db63cd"}, + {file = "pywin32-308-cp37-cp37m-win32.whl", hash = "sha256:1f696ab352a2ddd63bd07430080dd598e6369152ea13a25ebcdd2f503a38f1ff"}, + {file = "pywin32-308-cp37-cp37m-win_amd64.whl", hash = "sha256:13dcb914ed4347019fbec6697a01a0aec61019c1046c2b905410d197856326a6"}, + {file = "pywin32-308-cp38-cp38-win32.whl", hash = "sha256:5794e764ebcabf4ff08c555b31bd348c9025929371763b2183172ff4708152f0"}, + {file = "pywin32-308-cp38-cp38-win_amd64.whl", hash = "sha256:3b92622e29d651c6b783e368ba7d6722b1634b8e70bd376fd7610fe1992e19de"}, + {file = "pywin32-308-cp39-cp39-win32.whl", hash = "sha256:7873ca4dc60ab3287919881a7d4f88baee4a6e639aa6962de25a98ba6b193341"}, + {file = "pywin32-308-cp39-cp39-win_amd64.whl", hash = "sha256:71b3322d949b4cc20776436a9c9ba0eeedcbc9c650daa536df63f0ff111bb920"}, +] + [[package]] name = "pyyaml" version = "6.0.2" @@ -2661,6 +2927,127 @@ files = [ {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] +[[package]] +name = "pyzmq" +version = "26.2.0" +description = "Python bindings for 0MQ" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:ddf33d97d2f52d89f6e6e7ae66ee35a4d9ca6f36eda89c24591b0c40205a3629"}, + {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dacd995031a01d16eec825bf30802fceb2c3791ef24bcce48fa98ce40918c27b"}, + {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89289a5ee32ef6c439086184529ae060c741334b8970a6855ec0b6ad3ff28764"}, + {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5506f06d7dc6ecf1efacb4a013b1f05071bb24b76350832c96449f4a2d95091c"}, + {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ea039387c10202ce304af74def5021e9adc6297067f3441d348d2b633e8166a"}, + {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a2224fa4a4c2ee872886ed00a571f5e967c85e078e8e8c2530a2fb01b3309b88"}, + {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:28ad5233e9c3b52d76196c696e362508959741e1a005fb8fa03b51aea156088f"}, + {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1c17211bc037c7d88e85ed8b7d8f7e52db6dc8eca5590d162717c654550f7282"}, + {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b8f86dd868d41bea9a5f873ee13bf5551c94cf6bc51baebc6f85075971fe6eea"}, + {file = "pyzmq-26.2.0-cp310-cp310-win32.whl", hash = "sha256:46a446c212e58456b23af260f3d9fb785054f3e3653dbf7279d8f2b5546b21c2"}, + {file = "pyzmq-26.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:49d34ab71db5a9c292a7644ce74190b1dd5a3475612eefb1f8be1d6961441971"}, + {file = "pyzmq-26.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:bfa832bfa540e5b5c27dcf5de5d82ebc431b82c453a43d141afb1e5d2de025fa"}, + {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:8f7e66c7113c684c2b3f1c83cdd3376103ee0ce4c49ff80a648643e57fb22218"}, + {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3a495b30fc91db2db25120df5847d9833af237546fd59170701acd816ccc01c4"}, + {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77eb0968da535cba0470a5165468b2cac7772cfb569977cff92e240f57e31bef"}, + {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ace4f71f1900a548f48407fc9be59c6ba9d9aaf658c2eea6cf2779e72f9f317"}, + {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92a78853d7280bffb93df0a4a6a2498cba10ee793cc8076ef797ef2f74d107cf"}, + {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:689c5d781014956a4a6de61d74ba97b23547e431e9e7d64f27d4922ba96e9d6e"}, + {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0aca98bc423eb7d153214b2df397c6421ba6373d3397b26c057af3c904452e37"}, + {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f3496d76b89d9429a656293744ceca4d2ac2a10ae59b84c1da9b5165f429ad3"}, + {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5c2b3bfd4b9689919db068ac6c9911f3fcb231c39f7dd30e3138be94896d18e6"}, + {file = "pyzmq-26.2.0-cp311-cp311-win32.whl", hash = "sha256:eac5174677da084abf378739dbf4ad245661635f1600edd1221f150b165343f4"}, + {file = "pyzmq-26.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:5a509df7d0a83a4b178d0f937ef14286659225ef4e8812e05580776c70e155d5"}, + {file = "pyzmq-26.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0e6091b157d48cbe37bd67233318dbb53e1e6327d6fc3bb284afd585d141003"}, + {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:ded0fc7d90fe93ae0b18059930086c51e640cdd3baebdc783a695c77f123dcd9"}, + {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17bf5a931c7f6618023cdacc7081f3f266aecb68ca692adac015c383a134ca52"}, + {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55cf66647e49d4621a7e20c8d13511ef1fe1efbbccf670811864452487007e08"}, + {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4661c88db4a9e0f958c8abc2b97472e23061f0bc737f6f6179d7a27024e1faa5"}, + {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea7f69de383cb47522c9c208aec6dd17697db7875a4674c4af3f8cfdac0bdeae"}, + {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:7f98f6dfa8b8ccaf39163ce872bddacca38f6a67289116c8937a02e30bbe9711"}, + {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e3e0210287329272539eea617830a6a28161fbbd8a3271bf4150ae3e58c5d0e6"}, + {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6b274e0762c33c7471f1a7471d1a2085b1a35eba5cdc48d2ae319f28b6fc4de3"}, + {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:29c6a4635eef69d68a00321e12a7d2559fe2dfccfa8efae3ffb8e91cd0b36a8b"}, + {file = "pyzmq-26.2.0-cp312-cp312-win32.whl", hash = "sha256:989d842dc06dc59feea09e58c74ca3e1678c812a4a8a2a419046d711031f69c7"}, + {file = "pyzmq-26.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a50625acdc7801bc6f74698c5c583a491c61d73c6b7ea4dee3901bb99adb27a"}, + {file = "pyzmq-26.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d29ab8592b6ad12ebbf92ac2ed2bedcfd1cec192d8e559e2e099f648570e19b"}, + {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9dd8cd1aeb00775f527ec60022004d030ddc51d783d056e3e23e74e623e33726"}, + {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:28c812d9757fe8acecc910c9ac9dafd2ce968c00f9e619db09e9f8f54c3a68a3"}, + {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d80b1dd99c1942f74ed608ddb38b181b87476c6a966a88a950c7dee118fdf50"}, + {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c997098cc65e3208eca09303630e84d42718620e83b733d0fd69543a9cab9cb"}, + {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ad1bc8d1b7a18497dda9600b12dc193c577beb391beae5cd2349184db40f187"}, + {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bea2acdd8ea4275e1278350ced63da0b166421928276c7c8e3f9729d7402a57b"}, + {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:23f4aad749d13698f3f7b64aad34f5fc02d6f20f05999eebc96b89b01262fb18"}, + {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a4f96f0d88accc3dbe4a9025f785ba830f968e21e3e2c6321ccdfc9aef755115"}, + {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ced65e5a985398827cc9276b93ef6dfabe0273c23de8c7931339d7e141c2818e"}, + {file = "pyzmq-26.2.0-cp313-cp313-win32.whl", hash = "sha256:31507f7b47cc1ead1f6e86927f8ebb196a0bab043f6345ce070f412a59bf87b5"}, + {file = "pyzmq-26.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:70fc7fcf0410d16ebdda9b26cbd8bf8d803d220a7f3522e060a69a9c87bf7bad"}, + {file = "pyzmq-26.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:c3789bd5768ab5618ebf09cef6ec2b35fed88709b104351748a63045f0ff9797"}, + {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:034da5fc55d9f8da09015d368f519478a52675e558c989bfcb5cf6d4e16a7d2a"}, + {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c92d73464b886931308ccc45b2744e5968cbaade0b1d6aeb40d8ab537765f5bc"}, + {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:794a4562dcb374f7dbbfb3f51d28fb40123b5a2abadee7b4091f93054909add5"}, + {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aee22939bb6075e7afededabad1a56a905da0b3c4e3e0c45e75810ebe3a52672"}, + {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ae90ff9dad33a1cfe947d2c40cb9cb5e600d759ac4f0fd22616ce6540f72797"}, + {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:43a47408ac52647dfabbc66a25b05b6a61700b5165807e3fbd40063fcaf46386"}, + {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:25bf2374a2a8433633c65ccb9553350d5e17e60c8eb4de4d92cc6bd60f01d306"}, + {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:007137c9ac9ad5ea21e6ad97d3489af654381324d5d3ba614c323f60dab8fae6"}, + {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:470d4a4f6d48fb34e92d768b4e8a5cc3780db0d69107abf1cd7ff734b9766eb0"}, + {file = "pyzmq-26.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3b55a4229ce5da9497dd0452b914556ae58e96a4381bb6f59f1305dfd7e53fc8"}, + {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9cb3a6460cdea8fe8194a76de8895707e61ded10ad0be97188cc8463ffa7e3a8"}, + {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8ab5cad923cc95c87bffee098a27856c859bd5d0af31bd346035aa816b081fe1"}, + {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ed69074a610fad1c2fda66180e7b2edd4d31c53f2d1872bc2d1211563904cd9"}, + {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cccba051221b916a4f5e538997c45d7d136a5646442b1231b916d0164067ea27"}, + {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:0eaa83fc4c1e271c24eaf8fb083cbccef8fde77ec8cd45f3c35a9a123e6da097"}, + {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9edda2df81daa129b25a39b86cb57dfdfe16f7ec15b42b19bfac503360d27a93"}, + {file = "pyzmq-26.2.0-cp37-cp37m-win32.whl", hash = "sha256:ea0eb6af8a17fa272f7b98d7bebfab7836a0d62738e16ba380f440fceca2d951"}, + {file = "pyzmq-26.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4ff9dc6bc1664bb9eec25cd17506ef6672d506115095411e237d571e92a58231"}, + {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2eb7735ee73ca1b0d71e0e67c3739c689067f055c764f73aac4cc8ecf958ee3f"}, + {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a534f43bc738181aa7cbbaf48e3eca62c76453a40a746ab95d4b27b1111a7d2"}, + {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:aedd5dd8692635813368e558a05266b995d3d020b23e49581ddd5bbe197a8ab6"}, + {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8be4700cd8bb02cc454f630dcdf7cfa99de96788b80c51b60fe2fe1dac480289"}, + {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fcc03fa4997c447dce58264e93b5aa2d57714fbe0f06c07b7785ae131512732"}, + {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:402b190912935d3db15b03e8f7485812db350d271b284ded2b80d2e5704be780"}, + {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8685fa9c25ff00f550c1fec650430c4b71e4e48e8d852f7ddcf2e48308038640"}, + {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:76589c020680778f06b7e0b193f4b6dd66d470234a16e1df90329f5e14a171cd"}, + {file = "pyzmq-26.2.0-cp38-cp38-win32.whl", hash = "sha256:8423c1877d72c041f2c263b1ec6e34360448decfb323fa8b94e85883043ef988"}, + {file = "pyzmq-26.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:76589f2cd6b77b5bdea4fca5992dc1c23389d68b18ccc26a53680ba2dc80ff2f"}, + {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:b1d464cb8d72bfc1a3adc53305a63a8e0cac6bc8c5a07e8ca190ab8d3faa43c2"}, + {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4da04c48873a6abdd71811c5e163bd656ee1b957971db7f35140a2d573f6949c"}, + {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d049df610ac811dcffdc147153b414147428567fbbc8be43bb8885f04db39d98"}, + {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05590cdbc6b902101d0e65d6a4780af14dc22914cc6ab995d99b85af45362cc9"}, + {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c811cfcd6a9bf680236c40c6f617187515269ab2912f3d7e8c0174898e2519db"}, + {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6835dd60355593de10350394242b5757fbbd88b25287314316f266e24c61d073"}, + {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc6bee759a6bddea5db78d7dcd609397449cb2d2d6587f48f3ca613b19410cfc"}, + {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c530e1eecd036ecc83c3407f77bb86feb79916d4a33d11394b8234f3bd35b940"}, + {file = "pyzmq-26.2.0-cp39-cp39-win32.whl", hash = "sha256:367b4f689786fca726ef7a6c5ba606958b145b9340a5e4808132cc65759abd44"}, + {file = "pyzmq-26.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:e6fa2e3e683f34aea77de8112f6483803c96a44fd726d7358b9888ae5bb394ec"}, + {file = "pyzmq-26.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:7445be39143a8aa4faec43b076e06944b8f9d0701b669df4af200531b21e40bb"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:706e794564bec25819d21a41c31d4df2d48e1cc4b061e8d345d7fb4dd3e94072"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b435f2753621cd36e7c1762156815e21c985c72b19135dac43a7f4f31d28dd1"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:160c7e0a5eb178011e72892f99f918c04a131f36056d10d9c1afb223fc952c2d"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c4a71d5d6e7b28a47a394c0471b7e77a0661e2d651e7ae91e0cab0a587859ca"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:90412f2db8c02a3864cbfc67db0e3dcdbda336acf1c469526d3e869394fe001c"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2ea4ad4e6a12e454de05f2949d4beddb52460f3de7c8b9d5c46fbb7d7222e02c"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fc4f7a173a5609631bb0c42c23d12c49df3966f89f496a51d3eb0ec81f4519d6"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:878206a45202247781472a2d99df12a176fef806ca175799e1c6ad263510d57c"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17c412bad2eb9468e876f556eb4ee910e62d721d2c7a53c7fa31e643d35352e6"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:0d987a3ae5a71c6226b203cfd298720e0086c7fe7c74f35fa8edddfbd6597eed"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:39887ac397ff35b7b775db7201095fc6310a35fdbae85bac4523f7eb3b840e20"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fdb5b3e311d4d4b0eb8b3e8b4d1b0a512713ad7e6a68791d0923d1aec433d919"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:226af7dcb51fdb0109f0016449b357e182ea0ceb6b47dfb5999d569e5db161d5"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bed0e799e6120b9c32756203fb9dfe8ca2fb8467fed830c34c877e25638c3fc"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:29c7947c594e105cb9e6c466bace8532dc1ca02d498684128b339799f5248277"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cdeabcff45d1c219636ee2e54d852262e5c2e085d6cb476d938aee8d921356b3"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35cffef589bcdc587d06f9149f8d5e9e8859920a071df5a2671de2213bef592a"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18c8dc3b7468d8b4bdf60ce9d7141897da103c7a4690157b32b60acb45e333e6"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7133d0a1677aec369d67dd78520d3fa96dd7f3dcec99d66c1762870e5ea1a50a"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6a96179a24b14fa6428cbfc08641c779a53f8fcec43644030328f44034c7f1f4"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4f78c88905461a9203eac9faac157a2a0dbba84a0fd09fd29315db27be40af9f"}, + {file = "pyzmq-26.2.0.tar.gz", hash = "sha256:070672c258581c8e4f640b5159297580a9974b026043bd4ab0470be9ed324f1f"}, +] + +[package.dependencies] +cffi = {version = "*", markers = "implementation_name == \"pypy\""} + [[package]] name = "regex" version = "2024.11.6" @@ -3564,6 +3951,26 @@ optional = false python-versions = "*" files = [] +[[package]] +name = "tornado" +version = "6.4.2" +description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +optional = false +python-versions = ">=3.8" +files = [ + {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1"}, + {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803"}, + {file = "tornado-6.4.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a017d239bd1bb0919f72af256a970624241f070496635784d9bf0db640d3fec"}, + {file = "tornado-6.4.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c36e62ce8f63409301537222faffcef7dfc5284f27eec227389f2ad11b09d946"}, + {file = "tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca9eb02196e789c9cb5c3c7c0f04fb447dc2adffd95265b2c7223a8a615ccbf"}, + {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:304463bd0772442ff4d0f5149c6f1c2135a1fae045adf070821c6cdc76980634"}, + {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:c82c46813ba483a385ab2a99caeaedf92585a1f90defb5693351fa7e4ea0bf73"}, + {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:932d195ca9015956fa502c6b56af9eb06106140d844a335590c1ec7f5277d10c"}, + {file = "tornado-6.4.2-cp38-abi3-win32.whl", hash = "sha256:2876cef82e6c5978fde1e0d5b1f919d756968d5b4282418f3146b79b58556482"}, + {file = "tornado-6.4.2-cp38-abi3-win_amd64.whl", hash = "sha256:908b71bf3ff37d81073356a5fadcc660eb10c1476ee6e2725588626ce7e5ca38"}, + {file = "tornado-6.4.2.tar.gz", hash = "sha256:92bad5b4746e9879fd7bf1eb21dce4e3fc5128d71601f80005afa39237ad620b"}, +] + [[package]] name = "tqdm" version = "4.67.1" @@ -4145,4 +4552,4 @@ propcache = ">=0.2.0" [metadata] lock-version = "2.0" python-versions = "3.10.14" -content-hash = "136d9e9bd1d079768c3bf593298a0c4177c24d18a902ce887ead6041e86825a7" +content-hash = "55791edfe74f0cc89467e02f12d8c245756c5d16cf08d6c2a9c4c2d972ddc773" diff --git a/pyproject.toml b/pyproject.toml index 7c8d91b..19cdc4c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,6 +26,7 @@ matplotlib = "^3.10.0" datasets = "^3.2.0" tensorboard = "^2.18.0" wandb = "^0.19.1" +ipykernel = "^6.29.5" [build-system] diff --git a/simulate_edits.ipynb b/simulate_edits.ipynb new file mode 100644 index 0000000..d7b95ff --- /dev/null +++ b/simulate_edits.ipynb @@ -0,0 +1,316 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "f172922b-e66f-469b-bd44-cd8694782835", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/sai.prabhakar/LearnFromHumanEdit/.venv/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + } + ], + "source": [ + "from datasets import Dataset, load_from_disk" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "f3e19045", + "metadata": {}, + "outputs": [], + "source": [ + "dataset = load_from_disk(\"data/avs/\" + \"sub_eval\")" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "1828d067", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Map: 100%|██████████| 128/128 [00:00<00:00, 1720.25 examples/s]\n" + ] + } + ], + "source": [ + "from typing import Dict, Optional\n", + "import random\n", + "import copy\n", + "from trainer import extract_prompt\n", + "\n", + "def delete_random_words(sentence, max_words_to_delete=10) -> Dict[str, str]:\n", + " # skip_deleting = random.randint(1, 10) > 7\n", + " # if skip_deleting:\n", + " # return sentence\n", + "\n", + " words = sentence.split() \n", + " num_words_to_delete = random.randint(3, min(round(len(words)/3), max_words_to_delete))\n", + " words_idx_to_delete = [random.randint(1, len(words) - 1) for _ in range(num_words_to_delete)]\n", + " words = [word for idx, word in enumerate(words) if idx not in words_idx_to_delete]\n", + " new_sentence = \" \".join(words)\n", + " return new_sentence\n", + "\n", + "def insert_errors(sample) -> Dict[str, str]:\n", + " prompt = extract_prompt(sample[\"chosen\"])\n", + " prompt = prompt\n", + " chosen = sample[\"chosen\"][len(prompt) :]\n", + " rejected = sample[\"rejected\"][len(prompt) :]\n", + "\n", + " rejected = delete_random_words(rejected)\n", + " chosen = delete_random_words(chosen)\n", + " new_sample = copy.deepcopy(sample)\n", + "\n", + " new_sample[\"rejected\"] = prompt + \" \" + rejected\n", + " new_sample[\"chosen\"] = prompt + \" \" + chosen\n", + "\n", + " return new_sample\n", + "\n", + "errored_dataset = dataset.map(insert_errors)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "3b8d4c99", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Saving the dataset (1/1 shards): 100%|██████████| 128/128 [00:00<00:00, 24366.67 examples/s]\n" + ] + } + ], + "source": [ + "errored_dataset.save_to_disk(\"data/avs/\" + \"sub_eval_w_simulated_edits\")" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "f36b0938", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "False\n", + "False\n", + "False\n", + "False\n", + "False\n", + "False\n", + "False\n", + "False\n", + "False\n", + "False\n" + ] + } + ], + "source": [ + "for i in range(10):\n", + " print(errored_dataset[i][\"rejected\"] == errored_dataset[i][\"chosen\"])\n", + " # print(dataset[i][\"rejected\"])\n", + " # print(dataset[i][\"chosen\"])\n", + " # print()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b5043b72", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "652c774c", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "3bdd450c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Alignment of SEQUENCE 1 and SEQUENCE 2:\n", + "\t123456789\n", + "\t123456-100109\n", + "\n", + "['C', 'C', 'C', 'C', 'C', 'C', 'D', 'S', 'C']\n" + ] + } + ], + "source": [ + "from sequence_alignment import needle\n", + "\n", + "\n", + "def get_position_status1(al_generated, \n", + " al_edited):\n", + " assert len(al_generated)==len(al_edited)\n", + " \n", + " position_status = []\n", + " for i in range(len(al_generated)):\n", + " if al_generated[i] == al_edited[i]:\n", + " position_status.append('C')\n", + " # S_generated_position_weight.append(S_generated_C_weight)\n", + " # S_edited_position_weight.append(S_edited_C_weight)\n", + " elif al_generated[i] == -100:\n", + " position_status.append('I')\n", + " # S_edited_position_weight.append(S_edited_I_weight)\n", + " elif al_edited[i] == -100:\n", + " position_status.append('D')\n", + " # S_generated_position_weight.append(S_generated_D_weight)\n", + " else:\n", + " # print(\"S\", al_generated[i], al_edited[i])\n", + " position_status.append('S')\n", + " # S_generated_position_weight.append(S_generated_S_weight)\n", + " # S_edited_position_weight.append(S_edited_S_weight)\n", + " \n", + " return position_status\n", + "\n", + "S_generated = [1, 2, 3, 4, 5, 6, 7, 8, 9]\n", + "S_edited = [1, 2, 3, 4, 5, 6, 10, 9]\n", + "\n", + "alignment = needle.NeedlemanWunsch(S_generated, S_edited)\n", + "alignment.gap_character = -100\n", + "alignment.align()\n", + "alignment.get_score()\n", + "al_generated, al_edited = alignment.get_aligned_sequences(\"list_of_int\")\n", + "\n", + "p_status = get_position_status1(al_generated, al_edited)\n", + "print(alignment)\n", + "print(p_status)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ad7320a2", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "da366b41", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "5f01b121", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/sai.prabhakar/LearnFromHumanEdit/.venv/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n", + "[nltk_data] Downloading package wordnet to\n", + "[nltk_data] /home/sai.prabhakar/nltk_data...\n", + "[nltk_data] Package wordnet is already up-to-date!\n" + ] + } + ], + "source": [ + "from dpo import *" + ] + }, + { + "cell_type": "markdown", + "id": "30cf504e", + "metadata": {}, + "source": [ + "SFTTrainer()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "910719d3", + "metadata": {}, + "outputs": [], + "source": [ + "SFTTrainer()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c7c50971", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"\\n Initialize DPOTrainer.\\n\\n Args:\\n model (`transformers.PreTrainedModel`):\\n The model to train, preferably an `AutoModelForSequenceClassification`.\\n output_dir (`str`, defaults to `'./'`):\\n args (`transformers.TrainingArguments`):\\n The arguments to use for training.\\n data_collator (`transformers.DataCollator`):\\n The data collator to use for training. If None is specified, the default data collator (`DPODataCollatorWithPadding`) will be used\\n which will pad the sequences to the maximum length of the sequences in the batch, given a dataset of paired sequences.\\n label_pad_token_id (`int`, defaults to `-100`):\\n The label pad token id. This argument is required if you want to use the default data collator.\\n padding_value (`int`, defaults to `0`):\\n The padding value. This argument is required if you want to use the default data collator.\\n truncation_mode (`str`, defaults to `keep_end`):\\n The truncation mode to use, either `keep_end` or `keep_start`. This argument is required if you want to use the default data collator.\\n train_dataset (`datasets.Dataset`):\\n The dataset to use for training.\\n eval_dataset (`datasets.Dataset`):\\n The dataset to use for evaluation.\\n tokenizer (`transformers.PreTrainedTokenizerBase`):\\n The tokenizer to use for training. This argument is required if you want to use the default data collator.\\n model_init (`Callable[[], transformers.PreTrainedModel]`):\\n The model initializer to use for training. If None is specified, the default model initializer will be used.\\n callbacks (`List[transformers.TrainerCallback]`):\\n The callbacks to use for training.\\n optimizers (`Tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR]`):\\n The optimizer and scheduler to use for training.\\n preprocess_logits_for_metrics (`Callable[[torch.Tensor, torch.Tensor], torch.Tensor]`):\\n The function to use to preprocess the logits before computing the metrics.\\n max_length (`int`, defaults to `None`):\\n The maximum length of the sequences in the batch. This argument is required if you want to use the default data collator.\\n max_prompt_length (`int`, defaults to `None`):\\n The maximum length of the prompt. This argument is required if you want to use the default data collator.\\n peft_config (`Dict`, defaults to `None`):\\n The PEFT configuration to use for training. If you pass a PEFT configuration, the model will be wrapped in a PEFT model.\\n \"" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "BaseTrainer.__doc__" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1b18b5c3", + "metadata": {}, + "outputs": [], + "source": [ + "DPOTrainer()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/trainer.py b/trainer.py index ffc2ae0..3e45665 100644 --- a/trainer.py +++ b/trainer.py @@ -1,10 +1,16 @@ import os -os.environ['CUDA_VISIBLE_DEVICES'] = "0" + +os.environ["CUDA_VISIBLE_DEVICES"] = "0" from dataclasses import dataclass, field from typing import Dict, Optional import torch -from datasets import Dataset, load_from_disk#, load_dataset, load_metric -from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, BitsAndBytesConfig +from datasets import Dataset, load_from_disk # , load_dataset, load_metric +from transformers import ( + AutoModelForCausalLM, + AutoTokenizer, + TrainingArguments, + BitsAndBytesConfig, +) # from transformers.trainer_utils import EvalPrediction# , EvalLoopOutput # from transformers.trainer_pt_utils import find_batch_size, nested_concat @@ -21,13 +27,19 @@ def extract_prompt(prompt_and_response): search_term = "\n\nGenerate the corresponding Discharge Instructions according to the input article:" search_term_idx = prompt_and_response.rfind(search_term) - assert search_term_idx != -1, f"Prompt and response does not contain '{search_term}'" + assert ( + search_term_idx != -1 + ), f"Prompt and response does not contain '{search_term}'" return prompt_and_response[: search_term_idx + len(search_term)] def load_dataset( - split: str, sanity_check: bool = False, alignment_function: str = 'sft', - silent: bool = False, cache_dir: str = None) -> Dataset: + split: str, + sanity_check: bool = False, + alignment_function: str = "sft", + silent: bool = False, + cache_dir: str = None, +) -> Dataset: """Load the dataset from Hugging Face and convert it to the necessary format. The dataset is converted to a dictionary with the following structure: @@ -41,13 +53,11 @@ def load_dataset( Conversation \n\nSummary """ # dataset = load_dataset("Anthropic/hh-rlhf", split=split, cache_dir=cache_dir) - # dataset = load_from_disk('data/eden/DPO/' + split) - if alignment_function in ['sft', 'dpo', 'salt']: - dataset = load_from_disk('data/avs/' + split) - + if alignment_function in ["sft", "dpo", "salt"]: + dataset = load_from_disk("data/avs/" + split) + if sanity_check: - print('only train on 1000 samples') - dataset = dataset.select(range(min(len(dataset), 1000))) + dataset = dataset.select(range(min(len(dataset), 10))) def split_prompt_and_responses(sample) -> Dict[str, str]: prompt = extract_prompt(sample["chosen"]) @@ -57,7 +67,11 @@ def split_prompt_and_responses(sample) -> Dict[str, str]: "rejected": sample["rejected"][len(prompt) :], } - return dataset.map(split_prompt_and_responses) + dataset = dataset.map(split_prompt_and_responses) + + return dataset + + # Define and parse arguments. @dataclass class ScriptArguments: @@ -66,50 +80,148 @@ class ScriptArguments: """ # data parameters - beta: Optional[float] = field(default=0.1, metadata={"help": "the beta parameter for DPO loss"}) - alpha1: Optional[float] = field(default=0.0, metadata={"help": "the alpha parameter for Edit-DPO loss"}) - alpha2: Optional[float] = field(default=1.0, metadata={"help": "the alpha parameter for Edit-DPO loss"}) - omega1: Optional[float] = field(default=1.0, metadata={"help": "the omega parameter for SALT loss"}) - omega2: Optional[float] = field(default=1.0, metadata={"help": "the omega parameter for SALT loss"}) - S_generated_C_weight: Optional[float] = field(default=1.0, metadata={"help": "sequence alignment weights"}) - S_generated_D_weight: Optional[float] = field(default=-0.1, metadata={"help": "sequence alignment weights"}) - S_generated_S_weight: Optional[float] = field(default=-0.1, metadata={"help": "sequence alignment weights"}) - S_edited_C_weight: Optional[float] = field(default=1.0, metadata={"help": "sequence alignment weights"}) - S_edited_I_weight: Optional[float] = field(default=1.0, metadata={"help": "sequence alignment weights"}) - S_edited_S_weight: Optional[float] = field(default=1.0, metadata={"help": "sequence alignment weights"}) + beta: Optional[float] = field( + default=0.1, metadata={"help": "the beta parameter for DPO loss"} + ) + alpha1: Optional[float] = field( + default=0.0, metadata={"help": "the alpha parameter for Edit-DPO loss"} + ) + alpha2: Optional[float] = field( + default=1.0, metadata={"help": "the alpha parameter for Edit-DPO loss"} + ) + omega1: Optional[float] = field( + default=1.0, metadata={"help": "the omega parameter for SALT loss"} + ) + omega2: Optional[float] = field( + default=1.0, metadata={"help": "the omega parameter for SALT loss"} + ) + S_generated_C_weight: Optional[float] = field( + default=1.0, metadata={"help": "sequence alignment weights"} + ) + S_generated_D_weight: Optional[float] = field( + default=-0.1, metadata={"help": "sequence alignment weights"} + ) + S_generated_S_weight: Optional[float] = field( + default=-0.1, metadata={"help": "sequence alignment weights"} + ) + S_edited_C_weight: Optional[float] = field( + default=1.0, metadata={"help": "sequence alignment weights"} + ) + S_edited_I_weight: Optional[float] = field( + default=1.0, metadata={"help": "sequence alignment weights"} + ) + S_edited_S_weight: Optional[float] = field( + default=1.0, metadata={"help": "sequence alignment weights"} + ) # training parameters - model_name_or_path: Optional[str] = field(default="gpt2", metadata={"help": "the model name"}) - learning_rate: Optional[float] = field(default=1e-3, metadata={"help": "optimizer learning rate"}) - per_device_train_batch_size: Optional[int] = field(default=4, metadata={"help": "batch size per device"}) - per_device_eval_batch_size: Optional[int] = field(default=1, metadata={"help": "batch size per device"}) + model_name_or_path: Optional[str] = field( + default="gpt2", metadata={"help": "the model name"} + ) + learning_rate: Optional[float] = field( + default=1e-3, metadata={"help": "optimizer learning rate"} + ) + per_device_train_batch_size: Optional[int] = field( + default=4, metadata={"help": "batch size per device"} + ) + per_device_eval_batch_size: Optional[int] = field( + default=1, metadata={"help": "batch size per device"} + ) gradient_accumulation_steps: Optional[int] = field( default=1, metadata={"help": "the number of gradient accumulation steps"} ) - max_length: Optional[int] = field(default=512, metadata={"help": "max length of each sample"}) - max_prompt_length: Optional[int] = field(default=128, metadata={"help": "max length of each sample's prompt"}) - label_pad_token_id: Optional[int] = field(default=-100, metadata={"help": "label for non response tokens"}) - max_steps: Optional[int] = field(default=1000, metadata={"help": "max number of training steps"}) - num_train_epochs: Optional[int] = field(default=1, metadata={"help": "the number of training epochs"}) - evaluation_strategy: Optional[str] = field(default=None, metadata={"help": "the evaluation strategy, None, epoch, or steps"}) - eval_steps: Optional[int] = field(default=500, metadata={"help": "Number of update steps between two evaluations if evaluation_strategy=steps"}) - eval_first_step: Optional[bool] = field(default=False, metadata={"help": "Wether to eval first step"}) - logging_strategy: Optional[str] = field(default=None, metadata={"help": "the logging strategy, None, epoch, or steps"}) - log_steps: Optional[int] = field(default=500, metadata={"help": "Number of update steps between two logging if logging_strategy=steps"}) - logging_first_step: Optional[bool] = field(default=False, metadata={"help": "Wether to log first step"}) - save_strategy: Optional[str] = field(default=None, metadata={"help": "the saving strategy, None, epoch, or steps"}) - save_steps: Optional[int] = field(default=500, metadata={"help": "Number of update steps between two saving if save_strategy=steps"}) - load_in_8bit: Optional[bool] = field(default=False, metadata={"help": "load the model in 8 bits precision"}) - load_in_4bit: Optional[bool] = field(default=False, metadata={"help": "load the model in 4 bits precision"}) - use_peft: Optional[bool] = field(default=False, metadata={"help": "Wether to use PEFT or not to train adapters"}) - alignment_function: Optional[str] = field(default='dpo', metadata={"help": "alignment function will be used"}) - output_dir: Optional[str] = field(default='./test', metadata={"help": "output path"}) - run_name: Optional[str] = field(default='test', metadata={"help": "A descriptor for the run. Typically used for wandb and mlflow logging."}) - save_total_limit: Optional[int] = field(default=1, metadata={"help": "If a value is passed, will limit the total amount of checkpoints."}) - load_best_model_at_end: Optional[bool] = field(default=False, metadata={"help": "Whether or not to load the best model found during training at the end of training."}) - metric_for_best_model: Optional[str] = field(default=None, metadata={"help": "Use in conjunction with load_best_model_at_end to specify the metric to use to compare two different models."}) + max_length: Optional[int] = field( + default=512, metadata={"help": "max length of each sample"} + ) + max_prompt_length: Optional[int] = field( + default=128, metadata={"help": "max length of each sample's prompt"} + ) + label_pad_token_id: Optional[int] = field( + default=-100, metadata={"help": "label for non response tokens"} + ) + max_steps: Optional[int] = field( + default=1000, metadata={"help": "max number of training steps"} + ) + num_train_epochs: Optional[int] = field( + default=1, metadata={"help": "the number of training epochs"} + ) + evaluation_strategy: Optional[str] = field( + default=None, + metadata={"help": "the evaluation strategy, None, epoch, or steps"}, + ) + eval_steps: Optional[int] = field( + default=500, + metadata={ + "help": "Number of update steps between two evaluations if evaluation_strategy=steps" + }, + ) + eval_first_step: Optional[bool] = field( + default=False, metadata={"help": "Wether to eval first step"} + ) + logging_strategy: Optional[str] = field( + default=None, metadata={"help": "the logging strategy, None, epoch, or steps"} + ) + log_steps: Optional[int] = field( + default=500, + metadata={ + "help": "Number of update steps between two logging if logging_strategy=steps" + }, + ) + logging_first_step: Optional[bool] = field( + default=False, metadata={"help": "Wether to log first step"} + ) + save_strategy: Optional[str] = field( + default=None, metadata={"help": "the saving strategy, None, epoch, or steps"} + ) + save_steps: Optional[int] = field( + default=500, + metadata={ + "help": "Number of update steps between two saving if save_strategy=steps" + }, + ) + load_in_8bit: Optional[bool] = field( + default=False, metadata={"help": "load the model in 8 bits precision"} + ) + load_in_4bit: Optional[bool] = field( + default=False, metadata={"help": "load the model in 4 bits precision"} + ) + use_peft: Optional[bool] = field( + default=False, metadata={"help": "Wether to use PEFT or not to train adapters"} + ) + alignment_function: Optional[str] = field( + default="dpo", metadata={"help": "alignment function will be used"} + ) + output_dir: Optional[str] = field( + default="./test", metadata={"help": "output path"} + ) + run_name: Optional[str] = field( + default="test", + metadata={ + "help": "A descriptor for the run. Typically used for wandb and mlflow logging." + }, + ) + save_total_limit: Optional[int] = field( + default=1, + metadata={ + "help": "If a value is passed, will limit the total amount of checkpoints." + }, + ) + load_best_model_at_end: Optional[bool] = field( + default=False, + metadata={ + "help": "Whether or not to load the best model found during training at the end of training." + }, + ) + metric_for_best_model: Optional[str] = field( + default=None, + metadata={ + "help": "Use in conjunction with load_best_model_at_end to specify the metric to use to compare two different models." + }, + ) # instrumentation - sanity_check: Optional[bool] = field(default=False, metadata={"help": "only train on 1000 samples"}) + sanity_check: Optional[bool] = field( + default=False, metadata={"help": "only train on 1000 samples"} + ) report_to: Optional[str] = field( default=None, metadata={ @@ -129,13 +241,14 @@ class ScriptArguments: def trainer(script_args, train_dataset, eval_dataset): - with open('hg_secret', 'r') as f: + with open("hg_secret", "r") as f: hg_auth_token = f.read() - # 1. load a pretrained model if script_args.load_in_8bit and script_args.load_in_4bit: - raise ValueError("You can't load the model in 8 bits and 4 bits at the same time") + raise ValueError( + "You can't load the model in 8 bits and 4 bits at the same time" + ) elif script_args.load_in_8bit or script_args.load_in_4bit: quantization_config = BitsAndBytesConfig( load_in_8bit=script_args.load_in_8bit, load_in_4bit=script_args.load_in_4bit @@ -146,17 +259,12 @@ def trainer(script_args, train_dataset, eval_dataset): device_map = None quantization_config = None - - - model = AutoModelForCausalLM.from_pretrained(script_args.model_name_or_path, - use_auth_token = hg_auth_token, - quantization_config=quantization_config, - device_map=device_map, - ) - - - # model = get_peft_model(model, lora_config) - # model.print_trainable_parameters() + model = AutoModelForCausalLM.from_pretrained( + script_args.model_name_or_path, + use_auth_token=hg_auth_token, + quantization_config=quantization_config, + device_map=device_map, + ) if script_args.ignore_bias_buffers: # torch distributed hack @@ -165,18 +273,18 @@ def trainer(script_args, train_dataset, eval_dataset): ] # model_ref = AutoModelForCausalLM.from_pretrained(script_args.model_name_or_path) - model_ref = AutoModelForCausalLM.from_pretrained(script_args.model_name_or_path, - use_auth_token = hg_auth_token, - quantization_config=quantization_config, - device_map=device_map, - ) + model_ref = AutoModelForCausalLM.from_pretrained( + script_args.model_name_or_path, + use_auth_token=hg_auth_token, + quantization_config=quantization_config, + device_map=device_map, + ) - tokenizer = AutoTokenizer.from_pretrained(script_args.model_name_or_path, use_auth_token=hg_auth_token) + tokenizer = AutoTokenizer.from_pretrained( + script_args.model_name_or_path, use_auth_token=hg_auth_token + ) tokenizer.pad_token = tokenizer.eos_token - # if not os.path.exists("./logs"): - # os.makedirs("./logs") - # 4. initialize training arguments: training_args = TrainingArguments( per_device_train_batch_size=script_args.per_device_train_batch_size, @@ -195,7 +303,6 @@ def trainer(script_args, train_dataset, eval_dataset): save_steps=script_args.save_steps, output_dir=script_args.output_dir, report_to=script_args.report_to, - # report_to=["tensorboard"], run_name=script_args.run_name, save_total_limit=script_args.save_total_limit, load_best_model_at_end=script_args.load_best_model_at_end, @@ -217,20 +324,12 @@ def trainer(script_args, train_dataset, eval_dataset): if script_args.alignment_function == "dpo": trainer = DPOTrainer( - model, - model_ref, + model=model, + ref_model=model_ref, args=training_args, beta=script_args.beta, alpha1=script_args.alpha1, alpha2=script_args.alpha2, - # omega1=script_args.omega1, - # omega2=script_args.omega2, - # S_generated_C_weight=script_args.S_generated_C_weight, - # S_generated_D_weight=script_args.S_generated_D_weight, - # S_generated_S_weight=script_args.S_generated_S_weight, - # S_edited_C_weight=script_args.S_edited_C_weight, - # S_edited_I_weight=script_args.S_edited_I_weight, - # S_edited_S_weight=script_args.S_edited_S_weight, output_dir=script_args.output_dir, train_dataset=train_dataset, eval_dataset=eval_dataset, @@ -238,16 +337,11 @@ def trainer(script_args, train_dataset, eval_dataset): max_length=script_args.max_length, max_prompt_length=script_args.max_prompt_length, peft_config=lora_config, - # alignment_function=script_args.alignment_function, ) elif script_args.alignment_function == "salt": trainer = SALTTrainer( - model, - model_ref, + model=model, args=training_args, - # beta=script_args.beta, - # alpha1=script_args.alpha1, - # alpha2=script_args.alpha2, omega1=script_args.omega1, omega2=script_args.omega2, S_generated_C_weight=script_args.S_generated_C_weight, @@ -263,24 +357,11 @@ def trainer(script_args, train_dataset, eval_dataset): max_length=script_args.max_length, max_prompt_length=script_args.max_prompt_length, peft_config=lora_config, - # alignment_function=script_args.alignment_function, ) elif script_args.alignment_function == "sft": trainer = SFTTrainer( - model, - # model_ref, + model=model, args=training_args, - # beta=script_args.beta, - # alpha1=script_args.alpha1, - # alpha2=script_args.alpha2, - # omega1=script_args.omega1, - # omega2=script_args.omega2, - # S_generated_C_weight=script_args.S_generated_C_weight, - # S_generated_D_weight=script_args.S_generated_D_weight, - # S_generated_S_weight=script_args.S_generated_S_weight, - # S_edited_C_weight=script_args.S_edited_C_weight, - # S_edited_I_weight=script_args.S_edited_I_weight, - # S_edited_S_weight=script_args.S_edited_S_weight, output_dir=script_args.output_dir, train_dataset=train_dataset, eval_dataset=eval_dataset, @@ -288,13 +369,15 @@ def trainer(script_args, train_dataset, eval_dataset): max_length=script_args.max_length, max_prompt_length=script_args.max_prompt_length, peft_config=lora_config, - # alignment_function=script_args.alignment_function, ) - + else: + raise ValueError("Invalid alignment function") # if script_args.eval_first_step or 1: # print('evaluating') # print(trainer.evaluate()) # 6. train - trainer.train() \ No newline at end of file + trainer.train() + + trainer.evaluate()