ONYX-APP commited on
Commit
f192668
·
verified ·
1 Parent(s): 1fa09da

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -26
app.py CHANGED
@@ -5,42 +5,38 @@ import kagglehub
5
  from threading import Thread
6
  from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
7
 
8
- # 🚀 الحل الجذري حسب تعليمات كاجل الجديدة
9
- # نستخدم اسم المتغير KAGGLE_API_TOKEN كما طلبت الرسالة تماماً
10
- os.environ["KAGGLE_API_TOKEN"] = "KGAT_e7d58c8edc599a3341c98d2f1295795f"
11
-
12
- # 🚀 تسريع CPU
13
  torch.set_num_threads(os.cpu_count())
14
 
15
- print("--- 📥 Downloading Model from Kaggle ---")
16
- try:
17
- # استخدام المسار الصحيح للنسخة المستقرة
18
- model_path = kagglehub.model_download("ruicompany/onyx-gpt2large/transformers/1gb-stable")
19
- print(f"--- ✅ Success! Model Path: {model_path} ---")
20
- except Exception as e:
21
- print(f"--- ❌ Download Failed: {e} ---")
22
- # محاولة أخيرة بالمسار الافتراضي في حال وجود مشكلة في تسمية النسخة
23
- model_path = kagglehub.model_download("ruicompany/onyx-gpt2large/transformers/default")
24
 
25
- # تحميل الـ Tokenizer والـ Model من المسار المحلي
26
  tokenizer = AutoTokenizer.from_pretrained(model_path)
27
  if tokenizer.pad_token is None:
28
  tokenizer.pad_token = tokenizer.eos_token
29
 
 
30
  model = AutoModelForCausalLM.from_pretrained(
31
  model_path,
32
- device_map="cpu",
33
- torch_dtype=torch.float32,
34
  low_cpu_mem_usage=True
35
  )
36
 
 
 
 
 
 
37
  def chat_onyx(message, history):
 
 
 
38
  prompt = ""
39
- for user_msg, assistant_msg in history:
40
  prompt += f"User: {user_msg}\nAssistant: {assistant_msg}\n"
41
  prompt += f"User: {message}\nAssistant:"
42
 
43
- inputs = tokenizer(prompt, return_tensors="pt").to("cpu")
44
 
45
  streamer = TextIteratorStreamer(
46
  tokenizer,
@@ -51,11 +47,12 @@ def chat_onyx(message, history):
51
  generation_kwargs = dict(
52
  **inputs,
53
  streamer=streamer,
54
- max_new_tokens=150,
55
  do_sample=True,
56
- top_k=50,
57
- top_p=0.95,
58
- temperature=0.7,
 
59
  pad_token_id=tokenizer.eos_token_id
60
  )
61
 
@@ -67,10 +64,9 @@ def chat_onyx(message, history):
67
  partial += new_text
68
  yield partial
69
 
70
- # واجهة Gradio الاحترافية
71
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
72
- gr.Markdown("# 💎 ONYX AI - GPT2 Large Mode")
73
- gr.Markdown(f"**Eng. Rawan**, ONYX is initializing via Kaggle API Token.")
74
  gr.ChatInterface(fn=chat_onyx)
75
 
76
  if __name__ == "__main__":
 
5
  from threading import Thread
6
  from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
7
 
8
+ # 🚀 تسريع المعالجة
 
 
 
 
9
  torch.set_num_threads(os.cpu_count())
10
 
11
+ print("--- 📥 Downloading Model ---")
12
+ model_path = kagglehub.model_download("ruicompany/onyx-gpt2large/transformers/1gb-stable")
 
 
 
 
 
 
 
13
 
 
14
  tokenizer = AutoTokenizer.from_pretrained(model_path)
15
  if tokenizer.pad_token is None:
16
  tokenizer.pad_token = tokenizer.eos_token
17
 
18
+ # 🛠 تحميل الموديل مع تفعيل تحسينات الـ CPU
19
  model = AutoModelForCausalLM.from_pretrained(
20
  model_path,
21
+ torch_dtype=torch.float32, # منخليه float32 عشان الـ Quantization يشتغل صح
 
22
  low_cpu_mem_usage=True
23
  )
24
 
25
+ # 🔥 السر الجوهري: تحويل الموديل لنسخة سريعة جداً للـ CPU
26
+ model = torch.quantization.quantize_dynamic(
27
+ model, {torch.nn.Linear}, dtype=torch.qint8
28
+ )
29
+
30
  def chat_onyx(message, history):
31
+ # 🧠 تقليص الذاكرة: آخر 5 رسايل بس عشان ما يتقل الـ Prompt
32
+ recent_history = history[-5:] if len(history) > 5 else history
33
+
34
  prompt = ""
35
+ for user_msg, assistant_msg in recent_history:
36
  prompt += f"User: {user_msg}\nAssistant: {assistant_msg}\n"
37
  prompt += f"User: {message}\nAssistant:"
38
 
39
+ inputs = tokenizer(prompt, return_tensors="pt")
40
 
41
  streamer = TextIteratorStreamer(
42
  tokenizer,
 
47
  generation_kwargs = dict(
48
  **inputs,
49
  streamer=streamer,
50
+ max_new_tokens=100, # تقليل العدد لزيادة سرعة الاستجابة اللحظية
51
  do_sample=True,
52
+ top_k=40,
53
+ top_p=0.9,
54
+ temperature=0.6, # تقليل الحرارة بيعطي إجابات أسرع وأدق
55
+ use_cache=True, # 👈 ضروري جداً للستريمينغ
56
  pad_token_id=tokenizer.eos_token_id
57
  )
58
 
 
64
  partial += new_text
65
  yield partial
66
 
67
+ # واجهة Gradio
68
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
69
+ gr.Markdown("# 💎 ONYX AI - Turbo Mode")
 
70
  gr.ChatInterface(fn=chat_onyx)
71
 
72
  if __name__ == "__main__":