saiful-ai-dev commited on
Commit
3cfed9e
·
verified ·
1 Parent(s): 3720298

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -51
app.py CHANGED
@@ -1,62 +1,42 @@
1
  import gradio as gr
2
- from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
3
- import torch
4
- from threading import Thread
5
-
6
- # ১. মডেল এবং টোকেনাইজার সেটআপ (Qwen 2.5 3B)
7
- model_id = "Qwen/Qwen2.5-3B-Instruct"
 
 
 
8
 
9
- print("⏳ এআই টিউটর লোড হচ্ছে...")
10
- tokenizer = AutoTokenizer.from_pretrained(model_id)
11
- # সিপিপিইউ-তে মেমরি বাঁচাতে low_cpu_mem_usage ব্যবহার করা হয়েছে
12
- model = AutoModelForCausalLM.from_pretrained(
13
- model_id,
14
- torch_dtype=torch.float32,
15
- device_map="auto",
16
- low_cpu_mem_usage=True
17
  )
18
 
19
  def respond(message, history):
20
- # ২. প্রম্পট তৈরি (২০৪৮ কনটেক্সট হ্যান্ডেল করতে সক্ষম)
21
- messages = [
22
- {"role": "system", "content": "You are Motion Mind X, a helpful SSC/HSC tutor from Bangladesh. Respond clearly in Bengali or English."},
23
- {"role": "user", "content": message},
24
- ]
25
 
26
- input_ids = tokenizer.apply_chat_template(
27
- messages,
28
- add_generation_prompt=True,
29
- return_tensors="pt"
30
- ).to(model.device)
31
-
32
- # ৩. স্ট্রিমিং সেটআপ
33
- streamer = TextIteratorStreamer(tokenizer, timeout=10.0, skip_prompt=True, skip_special_tokens=True)
34
-
35
- generate_kwargs = dict(
36
- input_ids=input_ids,
37
- streamer=streamer,
38
- max_new_tokens=1024, # উত্তর সর্বোচ্চ ১০২৪ টোকেন পর্যন্ত হবে
39
- do_sample=True,
40
- top_p=0.95,
41
- temperature=0.7,
42
  )
43
-
44
- # থ্রেডিং ব্যবহার করে স্ট্রিমিং চালানো (যাতে ইন্টারফেস ফ্রিজ না হয়)
45
- t = Thread(target=model.generate, kwargs=generate_kwargs)
46
- t.start()
47
-
48
  partial_message = ""
49
- for new_token in streamer:
50
- partial_message += new_token
51
- yield partial_message
52
-
53
- # ৪. ইন্টারফেস (Gradio ChatInterface)
54
- demo = gr.ChatInterface(
55
- respond,
56
- title="Motion Mind X 🚀",
57
- description="Streaming Enabled | 2048 Context | SSC/HSC AI Tutor",
58
- theme="soft"
59
- )
60
 
61
  if __name__ == "__main__":
62
  demo.launch()
 
1
  import gradio as gr
2
+ from huggingface_hub import hf_hub_download
3
+ from llama_cpp import Llama
4
+
5
+ # ১. তোমার GGUF মডেল ডাউনলোড
6
+ print("⏳ মডেল ডাউনলোড হচ্ছে...")
7
+ model_path = hf_hub_download(
8
+ repo_id="saiful-ai-dev/MotionMindX",
9
+ filename="Qwen2.5-3B-Instruct-Q4_K_M.gguf"
10
+ )
11
 
12
+ # ২. মডেল সেটআপ (২০৪৮ কনটেক্সট)
13
+ llm = Llama(
14
+ model_path=model_path,
15
+ n_ctx=2048,
16
+ n_threads=2
 
 
 
17
  )
18
 
19
  def respond(message, history):
20
+ # স্ট্রিমিং ফরম্যাট
21
+ prompt = f"<|im_start|>system\nYou are Motion Mind X, a helpful tutor for SSC/HSC students in Bangladesh.<|im_end|>\n<|im_start|>user\n{message}<|im_end|>\n<|im_start|>assistant\n"
 
 
 
22
 
23
+ # ৩. স্ট্রিমিং জেনারেশন
24
+ response_stream = llm(
25
+ prompt,
26
+ max_tokens=1024,
27
+ stop=["<|im_end|>"],
28
+ stream=True
 
 
 
 
 
 
 
 
 
 
29
  )
30
+
 
 
 
 
31
  partial_message = ""
32
+ for chunk in response_stream:
33
+ if "text" in chunk["choices"][0]:
34
+ token = chunk["choices"][0]["text"]
35
+ partial_message += token
36
+ yield partial_message # টাইপ রাইটারের মতো লেখা দেখাবে
37
+
38
+ # ৪. ইন্টারফেস
39
+ demo = gr.ChatInterface(respond, title="Motion Mind X 🚀 (GGUF Streaming)")
 
 
 
40
 
41
  if __name__ == "__main__":
42
  demo.launch()