luiscosio commited on
Commit
6b779ab
·
verified ·
1 Parent(s): b8428e9

Upload train_qwen3_codeforces.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. train_qwen3_codeforces.py +72 -0
train_qwen3_codeforces.py ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # /// script
2
+ # dependencies = ["trl>=0.12.0", "peft>=0.7.0", "trackio", "transformers", "datasets", "accelerate", "torch"]
3
+ # ///
4
+
5
+ from datasets import load_dataset
6
+ from peft import LoraConfig
7
+ from trl import SFTTrainer, SFTConfig
8
+
9
+ # Load the Codeforces CoTs dataset (decontaminated version)
10
+ print("Loading dataset...")
11
+ dataset = load_dataset("open-r1/codeforces-cots", "solutions_py_decontaminated", split="train")
12
+ print(f"Dataset size: {len(dataset)} examples")
13
+
14
+ # Create train/eval split
15
+ dataset_split = dataset.train_test_split(test_size=0.05, seed=42)
16
+ print(f"Train: {len(dataset_split['train'])}, Eval: {len(dataset_split['test'])}")
17
+
18
+ # LoRA config for efficient fine-tuning
19
+ peft_config = LoraConfig(
20
+ r=16,
21
+ lora_alpha=32,
22
+ lora_dropout=0.05,
23
+ target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"],
24
+ bias="none",
25
+ task_type="CAUSAL_LM",
26
+ )
27
+
28
+ # Training config
29
+ training_args = SFTConfig(
30
+ output_dir="qwen3-0.6b-codeforces-sft",
31
+ push_to_hub=True,
32
+ hub_model_id="luiscosio/qwen3-0.6b-codeforces-sft",
33
+ hub_strategy="every_save",
34
+ num_train_epochs=3,
35
+ per_device_train_batch_size=2,
36
+ gradient_accumulation_steps=8,
37
+ gradient_checkpointing=True,
38
+ learning_rate=2e-4,
39
+ lr_scheduler_type="cosine",
40
+ warmup_ratio=0.1,
41
+ eval_strategy="steps",
42
+ eval_steps=200,
43
+ save_strategy="steps",
44
+ save_steps=200,
45
+ save_total_limit=3,
46
+ logging_steps=10,
47
+ report_to="trackio",
48
+ run_name="qwen3-0.6b-codeforces-sft",
49
+ bf16=True,
50
+ optim="adamw_torch_fused",
51
+ max_grad_norm=1.0,
52
+ max_length=2048,
53
+ )
54
+
55
+ # Initialize trainer
56
+ print("Initializing trainer...")
57
+ trainer = SFTTrainer(
58
+ model="Qwen/Qwen3-0.6B",
59
+ train_dataset=dataset_split["train"],
60
+ eval_dataset=dataset_split["test"],
61
+ peft_config=peft_config,
62
+ args=training_args,
63
+ )
64
+
65
+ # Train
66
+ print("Starting training...")
67
+ trainer.train()
68
+
69
+ # Push final model to Hub
70
+ print("Pushing to Hub...")
71
+ trainer.push_to_hub()
72
+ print("Training complete!")