oExz commited on
Commit
f2a25f3
·
verified ·
1 Parent(s): 16b1b18

Upload train_qwen.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. train_qwen.py +84 -0
train_qwen.py ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # /// script
2
+ # dependencies = [
3
+ # "trl>=0.12.0",
4
+ # "peft>=0.7.0",
5
+ # "trackio",
6
+ # "datasets",
7
+ # "transformers>=4.40.0",
8
+ # "torch>=2.0.0",
9
+ # "huggingface-hub",
10
+ # "accelerate",
11
+ # ]
12
+ # ///
13
+
14
+ import os
15
+ from datasets import load_dataset
16
+ from peft import LoraConfig
17
+ from trl import SFTTrainer, SFTConfig
18
+ import trackio
19
+
20
+ hf_token = os.getenv("HF_TOKEN")
21
+ if hf_token:
22
+ os.environ.setdefault("HF_HUB_TOKEN", hf_token)
23
+
24
+ DATASET = os.getenv("DATASET", "oExz/reasoning-distill-claude-opus-4-7-max-qwen-format")
25
+ BASE_MODEL = os.getenv("BASE_MODEL", "Qwen/Qwen3.5-4B")
26
+ OUTPUT_REPO = os.getenv("OUTPUT_REPO", "oExz/qwen3.5-4b-reasoning-lora")
27
+
28
+ print(f"Loading dataset {DATASET}...")
29
+ dataset = load_dataset(DATASET)
30
+ train_ds = dataset["train"]
31
+ eval_ds = dataset["eval"]
32
+ print(f"Train: {len(train_ds)}, Eval: {len(eval_ds)}")
33
+
34
+ print(f"Loading base model {BASE_MODEL}...")
35
+
36
+ peft_config = LoraConfig(
37
+ r=16,
38
+ lora_alpha=32,
39
+ target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
40
+ lora_dropout=0.05,
41
+ bias="none",
42
+ task_type="CAUSAL_LM",
43
+ )
44
+
45
+ trackio.init(
46
+ project="qwen-reasoning-finetune",
47
+ space_id="oExz/trackio",
48
+ )
49
+
50
+ trainer = SFTTrainer(
51
+ model=BASE_MODEL,
52
+ train_dataset=train_ds,
53
+ eval_dataset=eval_ds,
54
+ peft_config=peft_config,
55
+ args=SFTConfig(
56
+ output_dir="/tmp/qwen-lora",
57
+ push_to_hub=True,
58
+ hub_model_id=OUTPUT_REPO,
59
+ hub_strategy="every_save",
60
+ num_train_epochs=2,
61
+ per_device_train_batch_size=1,
62
+ gradient_accumulation_steps=8,
63
+ learning_rate=2e-4,
64
+ lr_scheduler_type="cosine",
65
+ warmup_ratio=0.1,
66
+ eval_strategy="steps",
67
+ eval_steps=50,
68
+ save_strategy="steps",
69
+ save_steps=50,
70
+ logging_steps=10,
71
+ report_to="trackio",
72
+ run_name="qwen3.5-4b-reasoning-qlora",
73
+ max_length=2048,
74
+ bf16=True,
75
+ gradient_checkpointing=True,
76
+ ),
77
+ )
78
+
79
+ print("Starting training...")
80
+ trainer.train()
81
+ print("Training complete, pushing to hub...")
82
+ trainer.push_to_hub()
83
+ print("Done!")
84
+ trackio.finish()