luiscosio commited on
Commit
2311842
·
verified ·
1 Parent(s): 2f199c0

Upload train_qwen3_codeforces_v3.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. train_qwen3_codeforces_v3.py +83 -0
train_qwen3_codeforces_v3.py ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # /// script
2
+ # dependencies = [
3
+ # "trl>=0.12.0",
4
+ # "peft>=0.7.0",
5
+ # "transformers>=4.36.0",
6
+ # "accelerate>=0.24.0",
7
+ # "datasets",
8
+ # "torch",
9
+ # ]
10
+ # ///
11
+
12
+ from datasets import load_dataset
13
+ from peft import LoraConfig
14
+ from trl import SFTTrainer, SFTConfig
15
+
16
+ # Load dataset
17
+ print("Loading dataset...")
18
+ dataset = load_dataset("open-r1/codeforces-cots", "solutions_py_decontaminated", split="train")
19
+ print(f"Dataset loaded: {len(dataset)} examples")
20
+
21
+ # Take subset for training (full dataset is very large)
22
+ dataset = dataset.shuffle(seed=42).select(range(min(5000, len(dataset))))
23
+ print(f"Using {len(dataset)} examples")
24
+
25
+ # Create train/eval split
26
+ print("Creating train/eval split...")
27
+ dataset_split = dataset.train_test_split(test_size=0.1, seed=42)
28
+ train_dataset = dataset_split["train"]
29
+ eval_dataset = dataset_split["test"]
30
+ print(f"Train: {len(train_dataset)} examples")
31
+ print(f"Eval: {len(eval_dataset)} examples")
32
+
33
+ # Training configuration
34
+ config = SFTConfig(
35
+ output_dir="qwen3-0.6b-codeforces-sft",
36
+ push_to_hub=True,
37
+ hub_model_id="luiscosio/qwen3-0.6b-codeforces-sft",
38
+ hub_strategy="every_save",
39
+ num_train_epochs=3,
40
+ per_device_train_batch_size=2,
41
+ gradient_accumulation_steps=8,
42
+ gradient_checkpointing=True,
43
+ learning_rate=2e-4,
44
+ logging_steps=10,
45
+ save_strategy="steps",
46
+ save_steps=100,
47
+ save_total_limit=3,
48
+ eval_strategy="steps",
49
+ eval_steps=100,
50
+ warmup_ratio=0.1,
51
+ lr_scheduler_type="cosine",
52
+ bf16=True,
53
+ max_length=2048,
54
+ report_to="none",
55
+ )
56
+
57
+ # LoRA configuration
58
+ peft_config = LoraConfig(
59
+ r=16,
60
+ lora_alpha=32,
61
+ lora_dropout=0.05,
62
+ bias="none",
63
+ task_type="CAUSAL_LM",
64
+ target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"],
65
+ )
66
+
67
+ # Initialize and train
68
+ print("Initializing trainer...")
69
+ trainer = SFTTrainer(
70
+ model="Qwen/Qwen3-0.6B",
71
+ train_dataset=train_dataset,
72
+ eval_dataset=eval_dataset,
73
+ args=config,
74
+ peft_config=peft_config,
75
+ )
76
+
77
+ print("Starting training...")
78
+ trainer.train()
79
+
80
+ print("Pushing to Hub...")
81
+ trainer.push_to_hub()
82
+
83
+ print("Complete! Model at: https://huggingface.co/luiscosio/qwen3-0.6b-codeforces-sft")