madDegen commited on
Commit
6a55852
·
verified ·
1 Parent(s): 70b5d6f

consolidate: Evo Unsloth LoRA training pipeline

Browse files
Files changed (1) hide show
  1. evo/training_pipeline.py +61 -0
evo/training_pipeline.py ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Agent Q3 [Evo] — Training Pipeline
3
+ Unsloth LoRA fine-tuning on Llama-3.2-3B-Instruct.
4
+ Reads from HF dataset madDegen/agent-q3, pushes adapter to madDegen/agent-q3-loras.
5
+ """
6
+ import os
7
+ from datasets import load_dataset
8
+ from unsloth import FastLanguageModel
9
+ from trl import SFTTrainer
10
+ from transformers import TrainingArguments
11
+
12
+ BASE_MODEL = os.getenv("BASE_MODEL", "unsloth/Llama-3.2-3B-Instruct-bnb-4bit")
13
+ HF_DATASET = os.getenv("HF_DATASET", "madDegen/agent-q3")
14
+ ADAPTER_REPO = os.getenv("ADAPTER_REPO","madDegen/agent-q3-loras")
15
+ MAX_SEQ_LEN = int(os.getenv("MAX_SEQ_LEN", 2048))
16
+ LORA_RANK = int(os.getenv("LORA_RANK", 16))
17
+
18
+ def run():
19
+ model, tokenizer = FastLanguageModel.from_pretrained(
20
+ model_name=BASE_MODEL,
21
+ max_seq_length=MAX_SEQ_LEN,
22
+ load_in_4bit=True,
23
+ )
24
+ model = FastLanguageModel.get_peft_model(
25
+ model,
26
+ r=LORA_RANK,
27
+ target_modules=["q_proj","k_proj","v_proj","o_proj","gate_proj","up_proj","down_proj"],
28
+ lora_alpha=16,
29
+ lora_dropout=0,
30
+ bias="none",
31
+ use_gradient_checkpointing="unsloth",
32
+ )
33
+
34
+ dataset = load_dataset(HF_DATASET, split="train")
35
+
36
+ trainer = SFTTrainer(
37
+ model=model,
38
+ tokenizer=tokenizer,
39
+ train_dataset=dataset,
40
+ dataset_text_field="text",
41
+ max_seq_length=MAX_SEQ_LEN,
42
+ args=TrainingArguments(
43
+ per_device_train_batch_size=2,
44
+ gradient_accumulation_steps=4,
45
+ warmup_steps=10,
46
+ max_steps=100,
47
+ learning_rate=2e-4,
48
+ fp16=True,
49
+ logging_steps=10,
50
+ output_dir="./evo_checkpoints",
51
+ optim="adamw_8bit",
52
+ seed=42,
53
+ ),
54
+ )
55
+ trainer.train()
56
+ model.push_to_hub(ADAPTER_REPO, token=os.getenv("HF_TOKEN"))
57
+ tokenizer.push_to_hub(ADAPTER_REPO, token=os.getenv("HF_TOKEN"))
58
+ print(f"Adapter pushed to {ADAPTER_REPO}")
59
+
60
+ if __name__ == "__main__":
61
+ run()