Spaces:
Sleeping
Sleeping
CPU ve ZeroGPU'da çalışacak şekilde uyarla
Browse files
app.py
CHANGED
|
@@ -5,11 +5,11 @@ Model uçtan uca çalışır: metni alır, maskelenmiş metni döndürür.
|
|
| 5 |
ve kullanıcıya ayrıca gösterilir — ham model davranışı gizlenmez.
|
| 6 |
"""
|
| 7 |
|
|
|
|
| 8 |
import re
|
| 9 |
import time
|
| 10 |
|
| 11 |
import gradio as gr
|
| 12 |
-
import spaces
|
| 13 |
import torch
|
| 14 |
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 15 |
|
|
@@ -51,18 +51,38 @@ TALIMATLAR = {
|
|
| 51 |
"Serbest (aşağıya yaz)": "",
|
| 52 |
}
|
| 53 |
|
| 54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 55 |
tokenizer = AutoTokenizer.from_pretrained(MODEL_ADI)
|
| 56 |
model = AutoModelForCausalLM.from_pretrained(
|
| 57 |
-
MODEL_ADI,
|
| 58 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
IM_END_ID = tokenizer.convert_tokens_to_ids(IM_END)
|
| 60 |
-
print("Model hazır.")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 61 |
|
| 62 |
|
| 63 |
-
|
| 64 |
-
# Bu yüzden üretim modül düzeyinde yapılamaz — ısınma çağrısı kaldırıldı.
|
| 65 |
-
@spaces.GPU(duration=20)
|
| 66 |
@torch.inference_mode()
|
| 67 |
def maskele(metin, talimat):
|
| 68 |
"""Maskelenmiş metni ve geçen süreyi döndürür."""
|
|
|
|
| 5 |
ve kullanıcıya ayrıca gösterilir — ham model davranışı gizlenmez.
|
| 6 |
"""
|
| 7 |
|
| 8 |
+
import os
|
| 9 |
import re
|
| 10 |
import time
|
| 11 |
|
| 12 |
import gradio as gr
|
|
|
|
| 13 |
import torch
|
| 14 |
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 15 |
|
|
|
|
| 51 |
"Serbest (aşağıya yaz)": "",
|
| 52 |
}
|
| 53 |
|
| 54 |
+
# ZeroGPU donanımında `spaces` paketi vardır ve GPU yalnızca dekore edilmiş
|
| 55 |
+
# fonksiyon çalışırken tahsis edilir. cpu-basic'te paket yoktur; aynı kod
|
| 56 |
+
# dekoratörsüz ve CPU'da çalışsın diye ikisi de destekleniyor.
|
| 57 |
+
try:
|
| 58 |
+
import spaces
|
| 59 |
+
ZEROGPU = True
|
| 60 |
+
except ImportError:
|
| 61 |
+
spaces = None
|
| 62 |
+
ZEROGPU = False
|
| 63 |
+
|
| 64 |
+
if not ZEROGPU:
|
| 65 |
+
torch.set_num_threads(os.cpu_count() or 2)
|
| 66 |
+
|
| 67 |
+
print("Model yükleniyor… ZeroGPU:", ZEROGPU)
|
| 68 |
tokenizer = AutoTokenizer.from_pretrained(MODEL_ADI)
|
| 69 |
model = AutoModelForCausalLM.from_pretrained(
|
| 70 |
+
MODEL_ADI,
|
| 71 |
+
dtype=torch.bfloat16 if (ZEROGPU or torch.cuda.is_available())
|
| 72 |
+
else torch.float32,
|
| 73 |
+
).eval()
|
| 74 |
+
if ZEROGPU or torch.cuda.is_available():
|
| 75 |
+
model = model.to("cuda")
|
| 76 |
IM_END_ID = tokenizer.convert_tokens_to_ids(IM_END)
|
| 77 |
+
print("Model hazır. Cihaz:", next(model.parameters()).device)
|
| 78 |
+
|
| 79 |
+
|
| 80 |
+
def gpu_gerekiyorsa(fn):
|
| 81 |
+
"""ZeroGPU'da @spaces.GPU uygular, CPU'da fonksiyonu olduğu gibi bırakır."""
|
| 82 |
+
return spaces.GPU(duration=20)(fn) if ZEROGPU else fn
|
| 83 |
|
| 84 |
|
| 85 |
+
@gpu_gerekiyorsa
|
|
|
|
|
|
|
| 86 |
@torch.inference_mode()
|
| 87 |
def maskele(metin, talimat):
|
| 88 |
"""Maskelenmiş metni ve geçen süreyi döndürür."""
|