pacman1337 commited on
Commit
e60e339
Β·
verified Β·
1 Parent(s): faa6cda

Upload train.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. train.py +137 -0
train.py ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """
3
+ RAYAP-CODER Training Script
4
+ D1337 SOVEREIGN LABS - DO NOT EMBARRASS US
5
+ """
6
+
7
+ import os
8
+ import torch
9
+ from datasets import load_dataset
10
+ from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
11
+ from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training
12
+ from trl import SFTTrainer, SFTConfig
13
+ from huggingface_hub import login
14
+
15
+ # ============================================================
16
+ # CONFIG - Token from Space Secrets
17
+ # ============================================================
18
+ HF_TOKEN = os.environ.get("HF_TOKEN")
19
+ if not HF_TOKEN:
20
+ raise ValueError("HF_TOKEN not set! Add it to Space Secrets.")
21
+ BASE_MODEL = "huihui-ai/Qwen3-30B-A3B-abliterated"
22
+ DATASET = "pacman1337/rayap-coder-dataset"
23
+ OUTPUT = "pacman1337/rayap-coder-30b"
24
+
25
+ # ============================================================
26
+ # MAIN
27
+ # ============================================================
28
+ def main():
29
+ print("=" * 60)
30
+ print("RAYAP-CODER TRAINING")
31
+ print("D1337 SOVEREIGN LABS")
32
+ print("Palo Alto | CrowdStrike | SentinelOne | Trend Micro | d1337.ai")
33
+ print("=" * 60)
34
+
35
+ # Login
36
+ login(token=HF_TOKEN)
37
+
38
+ # Load dataset
39
+ print("\n[1/5] Loading dataset...")
40
+ dataset = load_dataset(DATASET, split="train")
41
+ print(f"Dataset: {len(dataset)} examples")
42
+
43
+ # Quantization (4-bit for memory)
44
+ print("\n[2/5] Loading model (4-bit quantized)...")
45
+ bnb_config = BitsAndBytesConfig(
46
+ load_in_4bit=True,
47
+ bnb_4bit_quant_type="nf4",
48
+ bnb_4bit_compute_dtype=torch.bfloat16,
49
+ bnb_4bit_use_double_quant=True
50
+ )
51
+
52
+ model = AutoModelForCausalLM.from_pretrained(
53
+ BASE_MODEL,
54
+ quantization_config=bnb_config,
55
+ device_map="auto",
56
+ trust_remote_code=True,
57
+ torch_dtype=torch.bfloat16,
58
+ attn_implementation="flash_attention_2"
59
+ )
60
+
61
+ tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL, trust_remote_code=True)
62
+ tokenizer.pad_token = tokenizer.eos_token
63
+ tokenizer.padding_side = "right"
64
+
65
+ # Prepare for training
66
+ print("\n[3/5] Preparing LoRA...")
67
+ model = prepare_model_for_kbit_training(model)
68
+
69
+ lora_config = LoraConfig(
70
+ r=64,
71
+ lora_alpha=128,
72
+ lora_dropout=0.05,
73
+ target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"],
74
+ bias="none",
75
+ task_type="CAUSAL_LM"
76
+ )
77
+
78
+ model = get_peft_model(model, lora_config)
79
+ model.print_trainable_parameters()
80
+
81
+ # Training args
82
+ print("\n[4/5] Training...")
83
+ training_args = SFTConfig(
84
+ output_dir="./rayap-coder-checkpoints",
85
+ per_device_train_batch_size=2,
86
+ gradient_accumulation_steps=4,
87
+ num_train_epochs=3,
88
+ learning_rate=2e-4,
89
+ lr_scheduler_type="cosine",
90
+ warmup_ratio=0.1,
91
+ bf16=True,
92
+ gradient_checkpointing=True,
93
+ max_seq_length=4096,
94
+ logging_steps=5,
95
+ save_strategy="epoch",
96
+ optim="adamw_torch",
97
+ push_to_hub=True,
98
+ hub_model_id=OUTPUT,
99
+ hub_token=HF_TOKEN,
100
+ report_to="none"
101
+ )
102
+
103
+ def format_chat(example):
104
+ return tokenizer.apply_chat_template(example["messages"], tokenize=False)
105
+
106
+ trainer = SFTTrainer(
107
+ model=model,
108
+ train_dataset=dataset,
109
+ args=training_args,
110
+ formatting_func=format_chat,
111
+ tokenizer=tokenizer
112
+ )
113
+
114
+ # TRAIN
115
+ trainer.train()
116
+
117
+ # Push
118
+ print("\n[5/5] Pushing to Hub...")
119
+ trainer.save_model()
120
+ trainer.push_to_hub()
121
+
122
+ print(f"""
123
+ ╔═══════════════════════════════════════════════════════════════╗
124
+ β•‘ TRAINING COMPLETE! β•‘
125
+ ╠═══════════════════════════════════════════════════════════════╣
126
+ β•‘ Model: https://huggingface.co/{OUTPUT}
127
+ β•‘
128
+ β•‘ D1337 SOVEREIGN LABS
129
+ β•‘ Palo Alto | CrowdStrike | SentinelOne | Trend Micro | d1337.ai
130
+ β•‘
131
+ β•‘ Update endpoint LORA_MODULES:
132
+ β•‘ rayap-coder=pacman1337/rayap-coder-30b
133
+ β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•
134
+ """)
135
+
136
+ if __name__ == "__main__":
137
+ main()