kasim90 commited on
Commit
0d4ee70
·
verified ·
1 Parent(s): 8c9c2d1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +53 -7
app.py CHANGED
@@ -1,10 +1,56 @@
1
- import os
 
 
 
2
 
3
- # GLIBCXX güncellemesi
4
- os.system("apt update && apt install -y libstdc++6")
 
5
 
6
- # bitsandbytes kütüphanesini tekrar yükleme
7
- os.system("pip install --upgrade bitsandbytes")
 
 
8
 
9
- # PyTorch'u CUDA destekli yükleme (Hugging Face GPU için)
10
- os.system("pip install --upgrade --no-cache-dir torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, Trainer
3
+ from peft import LoraConfig, get_peft_model
4
+ from datasets import load_dataset
5
 
6
+ # === 1️⃣ MODEL VE TOKENIZER YÜKLEME ===
7
+ MODEL_NAME = "mistralai/Mistral-7B-v0.1" # Hugging Face model adı
8
+ tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
9
 
10
+ # === 2️⃣ CPU OPTİMİZASYONU ===
11
+ device = "cpu" # CPU kullanıyoruz
12
+ torch_dtype = torch.float32 # float32 seçtik çünkü CPU'da bf16 genelde yok
13
+ model = AutoModelForCausalLM.from_pretrained(MODEL_NAME, torch_dtype=torch_dtype)
14
 
15
+ # === 3️⃣ LoRA AYARLARI ===
16
+ lora_config = LoraConfig(
17
+ r=8, # Düşük rank LoRA kullanımı
18
+ lora_alpha=32, # Alpha değeri
19
+ lora_dropout=0.1, # Dropout oranı
20
+ bias="none",
21
+ target_modules=["q_proj", "v_proj"], # Sadece attention katmanlarına LoRA uygula
22
+ )
23
+ model = get_peft_model(model, lora_config)
24
+
25
+ # === 4️⃣ VERİ SETİ ===
26
+ dataset = load_dataset("oscar", "unshuffled_deduplicated_tr") # OSCAR Türkçe veri seti
27
+ train_data = dataset["train"].shuffle(seed=42).select(range(10000)) # Küçük subset
28
+
29
+ # === 5️⃣ TOKENLEŞTİRME FONKSİYONU ===
30
+ def tokenize_function(examples):
31
+ return tokenizer(examples["text"], truncation=True, padding="max_length", max_length=512)
32
+
33
+ tokenized_datasets = train_data.map(tokenize_function, batched=True)
34
+
35
+ # === 6️⃣ EĞİTİM AYARLARI ===
36
+ training_args = TrainingArguments(
37
+ output_dir="./mistral_lora_cpu",
38
+ per_device_train_batch_size=1, # Küçük batch size
39
+ gradient_accumulation_steps=16, # Daha büyük effective batch için
40
+ learning_rate=5e-4, # AdamW yerine SGD kullanacağımız için yüksek LR
41
+ num_train_epochs=1, # İlk deneme için sadece 1 epoch
42
+ save_steps=500,
43
+ save_total_limit=2,
44
+ logging_dir="./logs",
45
+ logging_steps=10,
46
+ optim="sgd", # AdamW yerine SGD kullan
47
+ )
48
+
49
+ # === 7️⃣ MODEL EĞİTİMİ ===
50
+ trainer = Trainer(
51
+ model=model,
52
+ args=training_args,
53
+ train_dataset=tokenized_datasets,
54
+ )
55
+
56
+ trainer.train()