ericlewis commited on
Commit
91e66d3
·
verified ·
1 Parent(s): 7eb4ff1

Upload train_360m_full_sft.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. train_360m_full_sft.py +93 -0
train_360m_full_sft.py ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # /// script
2
+ # requires-python = ">=3.10"
3
+ # dependencies = [
4
+ # "trl>=0.12.0",
5
+ # "peft>=0.7.0",
6
+ # "transformers>=4.36.0",
7
+ # "accelerate>=0.24.0",
8
+ # "trackio",
9
+ # "datasets",
10
+ # ]
11
+ # ///
12
+ """
13
+ SFT training for SmolLM2-360M on the FULL 195K recipe dataset.
14
+ Scaling up from 100K to test if more data improves exact match accuracy.
15
+ """
16
+
17
+ from datasets import load_dataset
18
+ from peft import LoraConfig
19
+ from trl import SFTTrainer, SFTConfig
20
+
21
+ # Load the full training set (195K) and validation set (5K)
22
+ train_dataset = load_dataset(
23
+ "ericlewis/infinite-craft-recipes",
24
+ data_files="data/train_full.jsonl",
25
+ split="train",
26
+ )
27
+ eval_dataset = load_dataset(
28
+ "ericlewis/infinite-craft-recipes",
29
+ data_files="data/val_5k.jsonl",
30
+ split="train",
31
+ )
32
+
33
+ print(f"Train: {len(train_dataset)}, Eval: {len(eval_dataset)}")
34
+
35
+ peft_config = LoraConfig(
36
+ r=16,
37
+ lora_alpha=32,
38
+ lora_dropout=0.05,
39
+ bias="none",
40
+ task_type="CAUSAL_LM",
41
+ target_modules=[
42
+ "q_proj", "k_proj", "v_proj", "o_proj",
43
+ "gate_proj", "up_proj", "down_proj",
44
+ ],
45
+ )
46
+
47
+ config = SFTConfig(
48
+ output_dir="infinite-craft-smollm2-360m-full",
49
+ push_to_hub=True,
50
+ hub_model_id="ericlewis/infinite-craft-smollm2-360m-full",
51
+ hub_strategy="every_save",
52
+ hub_private_repo=False,
53
+
54
+ # 3 epochs over 195K = ~585K examples
55
+ num_train_epochs=3,
56
+ per_device_train_batch_size=32,
57
+ gradient_accumulation_steps=4,
58
+ learning_rate=3e-4,
59
+ max_length=96,
60
+
61
+ # Logging & saving
62
+ logging_steps=50,
63
+ save_strategy="steps",
64
+ save_steps=1000,
65
+ save_total_limit=3,
66
+
67
+ # Eval
68
+ eval_strategy="steps",
69
+ eval_steps=1000,
70
+
71
+ # Schedule
72
+ warmup_ratio=0.05,
73
+ lr_scheduler_type="cosine",
74
+
75
+ # Precision
76
+ bf16=True,
77
+
78
+ # Tracking
79
+ report_to="trackio",
80
+ project="infinite-craft",
81
+ run_name="smollm2-360m-full-195k-3ep",
82
+ )
83
+
84
+ trainer = SFTTrainer(
85
+ model="HuggingFaceTB/SmolLM2-360M-Instruct",
86
+ train_dataset=train_dataset,
87
+ eval_dataset=eval_dataset,
88
+ peft_config=peft_config,
89
+ args=config,
90
+ )
91
+
92
+ trainer.train()
93
+ trainer.push_to_hub()