DevSh116 commited on
Commit
1c04ff4
·
verified ·
1 Parent(s): c573417

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -14
app.py CHANGED
@@ -1,3 +1,4 @@
 
1
  import torch
2
  import gradio as gr
3
  from transformers import AutoModelForCausalLM, AutoTokenizer
@@ -8,7 +9,9 @@ from peft import PeftModel
8
  # ---------------------------------
9
  BASE_MODEL = "meta-llama/Meta-Llama-3-8B-Instruct"
10
  LORA_PATH = "vastu_lora_adapter_975"
11
- DEVICE = "cpu" # FORCE CPU for HF Spaces
 
 
12
 
13
  SYSTEM_PROMPT = """You are a strict and authoritative Vastu Shastra expert.
14
  You clearly classify every placement as IDEAL, ACCEPTABLE, or INADVISABLE.
@@ -18,24 +21,32 @@ Avoid unnecessary philosophy. Be precise and actionable.
18
  """
19
 
20
  # ---------------------------------
21
- # LOAD MODEL (CPU)
22
  # ---------------------------------
23
  @torch.inference_mode()
24
  def load_model():
 
 
 
 
 
 
 
25
  base_model = AutoModelForCausalLM.from_pretrained(
26
  BASE_MODEL,
 
27
  torch_dtype=torch.float32,
28
- device_map={"": DEVICE},
29
  low_cpu_mem_usage=True,
30
  trust_remote_code=True,
31
  )
32
 
33
- tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL)
34
- tokenizer.pad_token = tokenizer.eos_token
 
 
35
 
36
- model = PeftModel.from_pretrained(base_model, LORA_PATH)
37
  model.eval()
38
-
39
  return model, tokenizer
40
 
41
 
@@ -47,10 +58,8 @@ model, tokenizer = load_model()
47
  def generate_response(user_prompt):
48
  prompt = f"""### System:
49
  {SYSTEM_PROMPT}
50
-
51
  ### User:
52
  {user_prompt}
53
-
54
  ### Response:
55
  """
56
 
@@ -58,9 +67,9 @@ def generate_response(user_prompt):
58
 
59
  outputs = model.generate(
60
  **inputs,
61
- max_new_tokens=128, # 🔥 reduced
62
- do_sample=False, # 🔥 deterministic
63
- temperature=0.3, # 🔥 stable
64
  repetition_penalty=1.1,
65
  pad_token_id=tokenizer.eos_token_id,
66
  )
@@ -68,8 +77,9 @@ def generate_response(user_prompt):
68
  decoded = tokenizer.decode(outputs[0], skip_special_tokens=True)
69
  return decoded.split("### Response:")[-1].strip()
70
 
 
71
  # ---------------------------------
72
- # GRADIO UI (ASYNC CHAT)
73
  # ---------------------------------
74
  with gr.Blocks(title="🧭 Vastu AI Advisor (CPU)") as demo:
75
  gr.Markdown("# 🧭 Vastu AI Advisor")
@@ -91,4 +101,9 @@ with gr.Blocks(title="🧭 Vastu AI Advisor (CPU)") as demo:
91
 
92
  msg.submit(chat, [msg, chatbot], [chatbot, msg])
93
 
94
- demo.launch()
 
 
 
 
 
 
1
+ import os
2
  import torch
3
  import gradio as gr
4
  from transformers import AutoModelForCausalLM, AutoTokenizer
 
9
  # ---------------------------------
10
  BASE_MODEL = "meta-llama/Meta-Llama-3-8B-Instruct"
11
  LORA_PATH = "vastu_lora_adapter_975"
12
+ DEVICE = "cpu"
13
+
14
+ HF_TOKEN = os.getenv("HF_TOKEN") # 🔥 REQUIRED
15
 
16
  SYSTEM_PROMPT = """You are a strict and authoritative Vastu Shastra expert.
17
  You clearly classify every placement as IDEAL, ACCEPTABLE, or INADVISABLE.
 
21
  """
22
 
23
  # ---------------------------------
24
+ # LOAD MODEL (CPU SAFE)
25
  # ---------------------------------
26
  @torch.inference_mode()
27
  def load_model():
28
+ tokenizer = AutoTokenizer.from_pretrained(
29
+ BASE_MODEL,
30
+ token=HF_TOKEN,
31
+ trust_remote_code=True,
32
+ )
33
+ tokenizer.pad_token = tokenizer.eos_token
34
+
35
  base_model = AutoModelForCausalLM.from_pretrained(
36
  BASE_MODEL,
37
+ token=HF_TOKEN, # 🔥 REQUIRED
38
  torch_dtype=torch.float32,
39
+ device_map="cpu", # 🔥 FIXED
40
  low_cpu_mem_usage=True,
41
  trust_remote_code=True,
42
  )
43
 
44
+ model = PeftModel.from_pretrained(
45
+ base_model,
46
+ LORA_PATH,
47
+ )
48
 
 
49
  model.eval()
 
50
  return model, tokenizer
51
 
52
 
 
58
  def generate_response(user_prompt):
59
  prompt = f"""### System:
60
  {SYSTEM_PROMPT}
 
61
  ### User:
62
  {user_prompt}
 
63
  ### Response:
64
  """
65
 
 
67
 
68
  outputs = model.generate(
69
  **inputs,
70
+ max_new_tokens=128,
71
+ do_sample=False,
72
+ temperature=0.3,
73
  repetition_penalty=1.1,
74
  pad_token_id=tokenizer.eos_token_id,
75
  )
 
77
  decoded = tokenizer.decode(outputs[0], skip_special_tokens=True)
78
  return decoded.split("### Response:")[-1].strip()
79
 
80
+
81
  # ---------------------------------
82
+ # GRADIO UI
83
  # ---------------------------------
84
  with gr.Blocks(title="🧭 Vastu AI Advisor (CPU)") as demo:
85
  gr.Markdown("# 🧭 Vastu AI Advisor")
 
101
 
102
  msg.submit(chat, [msg, chatbot], [chatbot, msg])
103
 
104
+
105
+ demo.launch(
106
+ server_name="0.0.0.0", # 🔥 REQUIRED FOR HF SPACES
107
+ server_port=7860,
108
+ )
109
+