| |
| |
| import importlib |
| from transformers import Trainer, TrainingArguments |
| import torch |
|
|
|
|
| class Exp_Pretrain(Trainer): |
| def __init__(self, args, train_dataset,data_collator=None, eval_dataset=None): |
| |
| model = self._build_model(args) |
|
|
| |
| training_args = TrainingArguments( |
| output_dir=args.output_dir, |
| per_device_train_batch_size=args.per_device_train_batch_size, |
| per_device_eval_batch_size=args.per_device_eval_batch_size, |
| learning_rate=args.learning_rate, |
| weight_decay=args.weight_decay, |
| logging_dir=args.output_dir, |
| logging_steps=args.logging_steps, |
| save_steps=args.save_steps, |
| eval_strategy="steps" if eval_dataset else "no", |
| save_total_limit=2, |
| gradient_accumulation_steps=args.gradient_accumulation_steps, |
| fp16=args.fp16, |
| dataloader_num_workers=args.dataloader_num_workers, |
| dataloader_pin_memory=args.dataloader_pin_memory, |
| num_train_epochs=args.num_train_epochs, |
| report_to=args.report_to, |
| remove_unused_columns=False, |
| disable_tqdm=False, |
| ) |
|
|
| super().__init__( |
| model=model, |
| args=training_args, |
| train_dataset=train_dataset, |
| eval_dataset=eval_dataset, |
| compute_metrics=self._compute_metrics if eval_dataset else None, |
| ) |
|
|
| def _build_model(self, args): |
| """Load the model dynamically based on the configuration.""" |
| module = importlib.import_module("models." + args.model) |
| model = module.Model( |
| args |
| ).cuda() |
| return model |
| |
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|