#### COMMENT IN TO RECALCULATE MAX LENGTHS #### # from numpy import percentile # # lets find the p95 length of the prompt # prompt_length = int(percentile([len(tokenizer(x)["input_ids"]) for x in train_dataset["prompt"]], 95)) # max_seq_length_chosen = int(percentile([len(tokenizer(x["prompt"] + x["chosen"])["input_ids"]) for x in train_dataset], 95)) # max_seq_length_rejected = int(percentile([len(tokenizer(x["prompt"] + x["rejected"])["input_ids"]) for x in train_dataset], 95)) # max_seq_length = max(max_seq_length_chosen, max_seq_length_rejected) # # filter datasets to remove samples that are too long # train_dataset = train_dataset.filter(lambda x: len(tokenizer(x["prompt"] + x["chosen"])["input_ids"]) <= max_seq_length) # eval_dataset = eval_dataset.filter(lambda x: len(tokenizer(x["prompt"] + x["chosen"])["input_ids"]) <= max_seq_length) # print(f"len(train_dataset): {len(train_dataset)}") # print(f"len(eval_dataset): {len(eval_dataset)}") # # Up the lengths to next multiple of 2, why 2? Don't know # prompt_length = ((prompt_length + 1) // 2) * 2 # max_seq_length = ((max_seq_length + 1) // 2) * 2 # print(f"p95 prompt length: {prompt_length}") # print(f"p95 prompt + chosen length: {max_seq_length}") prompt_length = 1024 max_seq_length = 1512