(args, train_data, val_data)
| 235 | |
| 236 | |
| 237 | def run_training(args, train_data, val_data): |
| 238 | print("Loading the model") |
| 239 | # disable caching mechanism when using gradient checkpointing |
| 240 | model = AutoModelForCausalLM.from_pretrained( |
| 241 | args.model_path, |
| 242 | use_auth_token=True, |
| 243 | use_cache=not args.no_gradient_checkpointing, |
| 244 | load_in_8bit=True, |
| 245 | device_map={"": Accelerator().process_index}, |
| 246 | ) |
| 247 | model = prepare_model_for_int8_training(model) |
| 248 | |
| 249 | lora_config = LoraConfig( |
| 250 | r=args.lora_r, |
| 251 | lora_alpha=args.lora_alpha, |
| 252 | lora_dropout=args.lora_dropout, |
| 253 | bias="none", |
| 254 | task_type="CAUSAL_LM", |
| 255 | target_modules = ["c_proj", "c_attn", "q_attn"] |
| 256 | ) |
| 257 | |
| 258 | model = get_peft_model(model, lora_config) |
| 259 | |
| 260 | print_trainable_parameters(model) |
| 261 | |
| 262 | train_data.start_iteration = 0 |
| 263 | |
| 264 | print("Starting main loop") |
| 265 | |
| 266 | training_args = TrainingArguments( |
| 267 | output_dir=args.output_dir, |
| 268 | dataloader_drop_last=True, |
| 269 | evaluation_strategy="steps", |
| 270 | save_strategy="steps", |
| 271 | load_best_model_at_end=True, |
| 272 | max_steps=args.max_steps, |
| 273 | eval_steps=args.eval_freq, |
| 274 | save_steps=args.save_freq, |
| 275 | logging_steps=args.log_freq, |
| 276 | per_device_train_batch_size=args.batch_size, |
| 277 | per_device_eval_batch_size=args.batch_size, |
| 278 | learning_rate=args.learning_rate, |
| 279 | lr_scheduler_type=args.lr_scheduler_type, |
| 280 | warmup_steps=args.num_warmup_steps, |
| 281 | gradient_accumulation_steps=args.gradient_accumulation_steps, |
| 282 | gradient_checkpointing=not args.no_gradient_checkpointing, |
| 283 | fp16=not args.no_fp16, |
| 284 | bf16=args.bf16, |
| 285 | weight_decay=args.weight_decay, |
| 286 | run_name="StarCoder-finetuned", |
| 287 | report_to="wandb", |
| 288 | ddp_find_unused_parameters=False, |
| 289 | ) |
| 290 | |
| 291 | trainer = Trainer(model=model, args=training_args, train_dataset=train_data, eval_dataset=val_data, callbacks=[SavePeftModelCallback, LoadBestPeftModelCallback]) |
| 292 | |
| 293 | print("Training...") |
| 294 | trainer.train() |
no test coverage detected