ciyidogan commited on
Commit
430e8dc
·
verified ·
1 Parent(s): d0e6741

Update fine_tune_inference_test.py

Browse files
Files changed (1) hide show
  1. fine_tune_inference_test.py +87 -1
fine_tune_inference_test.py CHANGED
@@ -73,4 +73,90 @@ def chat(msg: Message):
73
 
74
  full_prompt = ""
75
  for turn in chat_history:
76
- full_prompt += f"Kullanıcı: {turn['user']}\nAsistan: {turn['bot]()_
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
 
74
  full_prompt = ""
75
  for turn in chat_history:
76
+ full_prompt += f"Kullanıcı: {turn['user']}\nAsistan: {turn['bot']}\n"
77
+ full_prompt += f"Kullanıcı: {user_input}\nAsistan:"
78
+
79
+ result = pipe(full_prompt, max_new_tokens=200, do_sample=True, temperature=0.7)
80
+ answer = result[0]["generated_text"][len(full_prompt):].strip()
81
+ chat_history.append({"user": user_input, "bot": answer})
82
+ log(f"🗨️ Soru: {user_input} → Yanıt: {answer[:60]}...")
83
+ return {"answer": answer, "chat_history": chat_history}
84
+ except Exception as e:
85
+ log(f"❌ /chat sırasında hata oluştu: {e}")
86
+ return {"error": str(e)}
87
+
88
+ def setup_model():
89
+ try:
90
+ global pipe
91
+
92
+ log("📦 Fine-tune zip indiriliyor...")
93
+ zip_path = hf_hub_download(
94
+ repo_id=FINE_TUNE_REPO,
95
+ filename=FINE_TUNE_ZIP,
96
+ repo_type="model",
97
+ token=HF_TOKEN
98
+ )
99
+
100
+ extract_dir = "/app/extracted"
101
+ os.makedirs(extract_dir, exist_ok=True)
102
+
103
+ with zipfile.ZipFile(zip_path, "r") as zip_ref:
104
+ zip_ref.extractall(extract_dir)
105
+ log("📂 Zip başarıyla açıldı.")
106
+
107
+ log("🔁 Tokenizer yükleniyor...")
108
+ tokenizer = AutoTokenizer.from_pretrained(os.path.join(extract_dir, "output"))
109
+
110
+ log("🧠 Base model indiriliyor...")
111
+ base_model = AutoModelForCausalLM.from_pretrained(
112
+ MODEL_BASE,
113
+ torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32
114
+ )
115
+
116
+ log("➕ LoRA adapter uygulanıyor...")
117
+ model = PeftModel.from_pretrained(base_model, os.path.join(extract_dir, "output"))
118
+
119
+ log("📚 RAG dataseti yükleniyor...")
120
+ rag = load_dataset(
121
+ RAG_DATA_REPO,
122
+ data_files=RAG_DATA_FILE,
123
+ split="train",
124
+ token=HF_TOKEN
125
+ )
126
+ log(f"🔍 RAG boyutu: {len(rag)}")
127
+
128
+ log("🚀 Pipeline oluşturuluyor...")
129
+ pipe = pipeline(
130
+ "text-generation",
131
+ model=model,
132
+ tokenizer=tokenizer,
133
+ torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32,
134
+ device=0 if torch.cuda.is_available() else -1
135
+ )
136
+ log("✅ Model ve pipeline başarıyla yüklendi.")
137
+ except Exception as e:
138
+ log(f"❌ setup_model() sırasında hata oluştu: {e}")
139
+
140
+ # ✅ Sağlık kontrolü (Hugging Face runtime için şart)
141
+ @app.get("/health")
142
+ def health():
143
+ return {"status": "ok"}
144
+
145
+ def run_health_server():
146
+ try:
147
+ log("🩺 Health check endpoint başlatılıyor...")
148
+ uvicorn.run(app, host="0.0.0.0", port=7860)
149
+ except Exception as e:
150
+ log(f"❌ Health server başlatılamadı: {e}")
151
+
152
+ # ✅ Uygulama başlangıcı
153
+ threading.Thread(target=setup_model, daemon=True).start()
154
+
155
+ # 🧘 Eğitim sonrası uygulama restart olmasın diye bekleme
156
+ log("⌛ Model yükleniyor, istekler için hazır olunacak...")
157
+ while True:
158
+ try:
159
+ import time
160
+ time.sleep(60)
161
+ except Exception as e:
162
+ log(f"❌ Ana bekleme döngüsünde hata: {e}")