alikayh commited on
Commit
f47ceb8
·
verified ·
1 Parent(s): 0ce99cc

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +96 -0
app.py ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2
+ # SECUREPYTHO با Unsloth — 100% امن + توکن مخفی
3
+ # فقط Run All بزن — توکن رو ازت می‌گیره و هیچ جا نشون نمی‌ده
4
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
5
+
6
+ # ۱. نصب Unsloth
7
+ import subprocess
8
+ print("نصب Unsloth و کتابخونه‌ها...")
9
+ subprocess.run([
10
+ "pip", "install", "-q",
11
+ "unsloth[colab-new]@git+https://github.com/unslothai/unsloth.git"
12
+ ], check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
13
+
14
+ subprocess.run([
15
+ "pip", "install", "-q", "--no-deps",
16
+ "xformers<0.0.27", "trl", "peft", "accelerate", "bitsandbytes"
17
+ ], check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
18
+
19
+ # ۲. گرفتن توکن از کاربر (کاملاً مخفی!)
20
+ from getpass import getpass
21
+ from huggingface_hub import login
22
+
23
+ token = getpass("🤫 توکن Hugging Face (Write) رو وارد کن و Enter بزن (هیچ جا نشون داده نمی‌شه): ")
24
+ login(token=token)
25
+ print("✅ لاگین شدی داداش!")
26
+
27
+ # ۳. آپلود دیتاست
28
+ from google.colab import files
29
+ print("دیتاست JSONL یا CSV رو آپلود کن...")
30
+ uploaded = files.upload()
31
+
32
+ # ۴. فاین‌تیون با Unsloth
33
+ from unsloth import FastLanguageModel
34
+ import torch
35
+ from datasets import load_dataset
36
+ from trl import SFTTrainer
37
+ from transformers import TrainingArguments
38
+
39
+ repo_name = "alikayh/SecurePytho" # عوض کن اگه خواستی
40
+
41
+ # مدل 8B اما فقط 6 گیگ رم!
42
+ model, tokenizer = FastLanguageModel.from_pretrained(
43
+ model_name = "unsloth/llama-3-8b-bnb-4bit",
44
+ max_seq_length = 2048,
45
+ dtype = None,
46
+ load_in_4bit = True
47
+ )
48
+
49
+ model = FastLanguageModel.get_peft_model(
50
+ model,
51
+ r = 64,
52
+ target_modules = ["q_proj", "k_proj", "v_proj", "o_proj",
53
+ "gate_proj", "up_proj", "down_proj"],
54
+ lora_alpha = 128,
55
+ lora_dropout = 0.05,
56
+ bias = "none",
57
+ use_gradient_checkpointing = "unsloth",
58
+ random_state = 42,
59
+ )
60
+
61
+ # دیتاست
62
+ filename = list(uploaded.keys())[0]
63
+ if filename.endswith(".csv"):
64
+ dataset = load_dataset("csv", data_files=filename)["train"]
65
+ else:
66
+ dataset = load_dataset("json", data_files=filename)["train"]
67
+
68
+ trainer = SFTTrainer(
69
+ model = model,
70
+ tokenizer = tokenizer,
71
+ train_dataset = dataset,
72
+ dataset_text_field = "text",
73
+ max_seq_length = 2048,
74
+ args = TrainingArguments(
75
+ per_device_train_batch_size = 4,
76
+ gradient_accumulation_steps = 8,
77
+ warmup_steps = 10,
78
+ learning_rate = 2e-4,
79
+ fp16 = True,
80
+ logging_steps = 10,
81
+ output_dir = repo_name,
82
+ optim = "adamw_8bit",
83
+ seed = 42,
84
+ num_train_epochs = 3,
85
+ push_to_hub = True,
86
+ hub_model_id = repo_name,
87
+ report_to = "none",
88
+ ),
89
+ )
90
+
91
+ print("شروع فاین‌تیون با Unsloth — فقط ۸–۱۰ دقیقه صبر کن داداش!")
92
+ trainer.train()
93
+
94
+ print("تموم شد! SecurePytho آماده‌ست و روی HF آپلود شد:")
95
+ print(f"https://huggingface.co/{repo_name}")
96
+ print("توکنت هیچ جا ذخیره نشد — 100% امن!")