Skip to content
This repository was archived by the owner on May 1, 2025. It is now read-only.

Commit c44da33

Browse files
author
Nghi Bui
committed
update evaluator and trainerg
1 parent e4faff9 commit c44da33

File tree

5 files changed

+18
-8
lines changed

5 files changed

+18
-8
lines changed

codetf/common/__init__.py

Whitespace-only changes.

codetf/performance/model_evaluator.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,18 @@ def __init__(self, model_class, num_workers=5):
2323

2424

2525
def evaluate_pass_k(self, problems, unit_tests, batch_size=1, max_length=600,
26-
top_p=0.95, k=[1,10,100],
26+
top_p=0.95, k=[1,10,100], temperature=1.2,
2727
num_return_sequences=200, sequences_per_chunk=10, num_workers=1):
2828
# Load dataset
29-
data_loader = Dat aLoader(problems, batch_size=batch_size)
29+
# Please keep batch_size = 1 to avoid any unexpected error
30+
data_loader = DataLoader(problems, batch_size=batch_size)
3031
data_loader = self.accelerator.prepare(data_loader)
31-
32+
model_name = type(self.model_class).__name__
3233
# Initialize stopping criteria
3334
gen_kwargs = {
3435
"do_sample": True,
3536
"top_p": top_p,
37+
"temperature": temperature,
3638
"stopping_criteria": StoppingCriteriaList([EndOfFunctionCriteria(0, EOF_STRINGS, self.model_class.get_tokenizer())]),
3739
}
3840

@@ -54,7 +56,6 @@ def evaluate_pass_k(self, problems, unit_tests, batch_size=1, max_length=600,
5456
input_ids = prompt_ids[0, :attention_masks[0].sum().item()]
5557

5658
input_data = self.model_class.get_tokenizer().decode(input_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True)
57-
5859
batch_generated_ids = self.model_class.get_model().generate(
5960
input_ids=input_ids.unsqueeze(0),
6061
attention_mask=attention_masks[0, :attention_masks[0].sum().item()].unsqueeze(0),
@@ -66,14 +67,16 @@ def evaluate_pass_k(self, problems, unit_tests, batch_size=1, max_length=600,
6667
gen_codes = self.model_class.get_tokenizer().batch_decode(batch_generated_ids,
6768
skip_special_tokens=True, clean_up_tokenization_spaces=True)
6869

69-
for item in gen_codes:
70-
cleaned = remove_last_block(item)
71-
solutions_per_chunk.append(cleaned)
70+
for i,item in enumerate(gen_codes):
71+
result = remove_last_block(item)
72+
if model_name == "Seq2SeqModel":
73+
result = f"{input_data} {result}"
74+
75+
solutions_per_chunk.append(result)
7276

7377
solutions.append(solutions_per_chunk)
7478
dataloader_pbar.set_description(f"Processing step {step+1}/{len(data_loader)}")
7579

76-
7780
pass_at_k, _ = self.code_eval.compute(
7881
references=unit_tests, predictions=solutions, k=k, num_workers=num_workers
7982
)

codetf/trainer/base_trainer.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ def init_trainer(self):
5252

5353
def train(self):
5454
self.trainer.train()
55+
# self.trainer.save_model(self.checkpoints_path)
5556

5657
def evaluate(self, dataset=None):
5758
self.trainer.evaluate(dataset)
@@ -70,8 +71,10 @@ def get_default_codet5_hyperparameters(self):
7071
sharded_ddp=hyperparameters_config["sharded_ddp"],
7172
logging_steps=hyperparameters_config["logging_steps"],
7273
evaluation_strategy=hyperparameters_config["evaluation_strategy"],
74+
save_strategy=hyperparameters_config["save_strategy"],
7375
gradient_checkpointing=hyperparameters_config["gradient_checkpointing"],
7476
auto_find_batch_size=hyperparameters_config["auto_find_batch_size"],
77+
load_best_model_at_end=hyperparameters_config["load_best_model_at_end"],
7578
output_dir=self.checkpoints_path
7679
)
7780
# return hyperparameters_config
@@ -91,8 +94,10 @@ def get_default_causal_lm_hyperparameters(self):
9194
sharded_ddp=hyperparameters_config["sharded_ddp"],
9295
logging_steps=hyperparameters_config["logging_steps"],
9396
evaluation_strategy=hyperparameters_config["evaluation_strategy"],
97+
save_strategy=hyperparameters_config["save_strategy"],
9498
gradient_checkpointing=hyperparameters_config["gradient_checkpointing"],
9599
auto_find_batch_size=hyperparameters_config["auto_find_batch_size"],
100+
load_best_model_at_end=hyperparameters_config["load_best_model_at_end"],
96101
output_dir=self.checkpoints_path
97102
)
98103
# return hyperparameters_config

codetf/trainer/causal_lm_trainer.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ def __init__(self, train_dataset, validation_dataset=None, tokenizer=None,
2121
self.trainer = self.init_trainer()
2222

2323
if peft:
24+
self.peft = peft
2425
self.model = prepare_model_for_int8_training(self.model)
2526
if peft == "lora":
2627
peft_config = self.get_default_lora_config_for_codet5()

codetf/trainer/codet5_trainer.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ def __init__(self, train_dataset, validation_dataset=None, tokenizer=None,
3838
self.trainer = self.init_trainer()
3939

4040
if peft:
41+
self.peft = peft
4142
self.model = prepare_model_for_int8_training(self.model)
4243
if peft == "lora":
4344
peft_config = self.get_default_lora_config_for_codet5()

0 commit comments

Comments
 (0)