FarelDeveloper commited on
Commit
53d54ab
·
verified ·
1 Parent(s): 7637f83

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -19
app.py CHANGED
@@ -3,30 +3,28 @@ import torch
3
  from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
4
  from threading import Thread
5
 
6
- # Menggunakan Phi-3.5-mini-instruct (3.8B Parameter)
7
- model_id = "microsoft/Phi-3.5-mini-instruct"
8
 
9
- print("Memuat Tokenizer & Model Phi-3.5 ke RAM (Bakal butuh waktu agak lama)...")
10
  tokenizer = AutoTokenizer.from_pretrained(model_id)
11
  model = AutoModelForCausalLM.from_pretrained(
12
  model_id,
13
- dtype=torch.float32, # Menggunakan 'dtype' (versi baru yang direkomendasikan)
14
- device_map="cpu" # Sekarang aman karena accelerate sudah dipasang
15
  )
16
- print("Phi-3.5 Berhasil Dimuat dan Siap Beraksi!")
17
 
18
- def chat_phi(message, history):
19
  conversation = []
20
 
21
- # Menyusun riwayat percakapan terdahulu
22
  for user_msg, ai_msg in history:
23
  conversation.append({"role": "user", "content": user_msg})
24
  conversation.append({"role": "assistant", "content": ai_msg})
25
 
26
- # Memasukkan prompt baru dari user
27
  conversation.append({"role": "user", "content": message})
28
 
29
- # Mengonversi pesan sesuai dengan template chat khusus dari Microsoft Phi
30
  input_ids = tokenizer.apply_chat_template(
31
  conversation,
32
  tokenize=True,
@@ -34,18 +32,16 @@ def chat_phi(message, history):
34
  return_tensors="pt"
35
  ).to("cpu")
36
 
37
- # Menggunakan Streamer agar output teks muncul mengetik secara real-time
38
  streamer = TextIteratorStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
39
 
40
  generation_kwargs = dict(
41
  input_ids=input_ids,
42
  streamer=streamer,
43
- max_new_tokens=512,
44
- temperature=0.7,
45
  top_p=0.9
46
  )
47
 
48
- # Menjalankan inferensi di background thread agar UI tidak mengalami freeze/stuck
49
  thread = Thread(target=model.generate, kwargs=generation_kwargs)
50
  thread.start()
51
 
@@ -54,12 +50,12 @@ def chat_phi(message, history):
54
  partial_text += new_text
55
  yield partial_text
56
 
57
- # Mengaktifkan antarmuka Chatbot menggunakan UI Gradio yang baru
58
  demo = ui.ChatInterface(
59
- fn=chat_phi,
60
- title="🧠 Phi-3.5 Mini Instruct Chatbot",
61
- description="Merasakan kekuatan model penalaran 3.8B buatan Microsoft, berjalan stabil langsung dari CPU Hugging Face Space Gratisan."
62
- ) # Baris theme="soft" DIHAPUS agar tidak error
63
 
64
  if __name__ == "__main__":
65
  demo.launch()
 
3
  from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
4
  from threading import Thread
5
 
6
+ # Model PALING KECIL BANGET & PALING KENCENG di CPU Space
7
+ model_id = "HuggingFaceTB/SmolLM2-135M-Instruct"
8
 
9
+ print("Memuat Model Paling Kecil di Dunia (SmolLM2-135M)...")
10
  tokenizer = AutoTokenizer.from_pretrained(model_id)
11
  model = AutoModelForCausalLM.from_pretrained(
12
  model_id,
13
+ dtype=torch.float32,
14
+ device_map="cpu"
15
  )
16
+ print("Model Terkecil Siap Beraksi Tanpa Delay!")
17
 
18
+ def chat_smol(message, history):
19
  conversation = []
20
 
21
+ # Masukkan riwayat chat
22
  for user_msg, ai_msg in history:
23
  conversation.append({"role": "user", "content": user_msg})
24
  conversation.append({"role": "assistant", "content": ai_msg})
25
 
 
26
  conversation.append({"role": "user", "content": message})
27
 
 
28
  input_ids = tokenizer.apply_chat_template(
29
  conversation,
30
  tokenize=True,
 
32
  return_tensors="pt"
33
  ).to("cpu")
34
 
 
35
  streamer = TextIteratorStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
36
 
37
  generation_kwargs = dict(
38
  input_ids=input_ids,
39
  streamer=streamer,
40
+ max_new_tokens=250, # Dibatasi biar makin instan jawabannya
41
+ temperature=0.6,
42
  top_p=0.9
43
  )
44
 
 
45
  thread = Thread(target=model.generate, kwargs=generation_kwargs)
46
  thread.start()
47
 
 
50
  partial_text += new_text
51
  yield partial_text
52
 
53
+ # Tampilan UI Chatbot Gradio
54
  demo = ui.ChatInterface(
55
+ fn=chat_smol,
56
+ title="⚡ Ultra Micro Chatbot (SmolLM2)",
57
+ description="Menggunakan model 135M Parameter. Ini adalah spek paling ringan, dijamin langsung merespon secepat kilat tanpa loading lama!"
58
+ )
59
 
60
  if __name__ == "__main__":
61
  demo.launch()