MrA7A commited on
Commit
e19fcf7
·
verified ·
1 Parent(s): 2f6b695

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -6
app.py CHANGED
@@ -8,6 +8,7 @@ from peft import PeftModel
8
  from huggingface_hub import login, hf_hub_download
9
  from fastapi.responses import Response
10
  import sys
 
11
 
12
  logging.basicConfig(level=logging.INFO)
13
  logger = logging.getLogger(__name__)
@@ -30,14 +31,19 @@ def load_base_model():
30
  tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL_ID, token=HF_TOKEN)
31
  if tokenizer.pad_token is None:
32
  tokenizer.pad_token = tokenizer.eos_token
33
- base = AutoModelForCausalLM.from_pretrained(BASE_MODEL_ID, trust_remote_code=True, device_map="cpu", torch_dtype=torch.float32, token=HF_TOKEN)
 
 
 
 
 
 
34
  return tokenizer, base
35
 
36
  def load_lora_model(base_model):
37
  cfg_path = hf_hub_download(repo_id=LORA_REPO, filename="adapter_config.json", token=HF_TOKEN)
38
  with open(cfg_path) as f:
39
  cfg = json.load(f)
40
- # Clean any extra keys
41
  cfg.pop("layer_replication", None)
42
  cfg.pop("alpha_pattern", None)
43
  model = PeftModel.from_pretrained(base_model, LORA_REPO, token=HF_TOKEN)
@@ -55,24 +61,31 @@ def load_model():
55
  tokenizer, model = load_model()
56
 
57
  def generate_response(prompt):
58
- safe = prompt.replace('"','').replace("\\","")
59
  text = f"""<|im_start|>system\nYou are a cybersecurity expert.<|im_end|>\n<|im_start|>user\n{safe}<|im_end|>\n<|im_start|>assistant\n"""
60
  inputs = tokenizer(text, return_tensors="pt").to("cpu")
61
  with torch.no_grad():
62
- out = model.generate(**inputs, max_new_tokens=512, do_sample=True, temperature=0.7, top_p=0.9, eos_token_id=tokenizer.eos_token_id, pad_token_id=tokenizer.pad_token_id)
 
 
 
 
 
 
 
 
63
  decoded = tokenizer.decode(out[0], skip_special_tokens=False)
64
  if "<|im_start|>assistant" in decoded:
65
  return decoded.split("<|im_start|>assistant\n")[1].split("<|im_end|>")[0].strip()
66
  return decoded
67
 
68
- # Use custom FastAPI app with proper response
69
- import fastapi
70
  app = fastapi.FastAPI()
71
 
72
  @app.get("/ping")
73
  def ping():
74
  return Response(status_code=204)
75
 
 
76
  gr_app = gr.Interface(
77
  fn=generate_response,
78
  inputs=gr.Textbox(lines=5, label="Prompt"),
 
8
  from huggingface_hub import login, hf_hub_download
9
  from fastapi.responses import Response
10
  import sys
11
+ import fastapi
12
 
13
  logging.basicConfig(level=logging.INFO)
14
  logger = logging.getLogger(__name__)
 
31
  tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL_ID, token=HF_TOKEN)
32
  if tokenizer.pad_token is None:
33
  tokenizer.pad_token = tokenizer.eos_token
34
+ base = AutoModelForCausalLM.from_pretrained(
35
+ BASE_MODEL_ID,
36
+ trust_remote_code=True,
37
+ device_map="cpu",
38
+ torch_dtype=torch.float32,
39
+ token=HF_TOKEN
40
+ )
41
  return tokenizer, base
42
 
43
  def load_lora_model(base_model):
44
  cfg_path = hf_hub_download(repo_id=LORA_REPO, filename="adapter_config.json", token=HF_TOKEN)
45
  with open(cfg_path) as f:
46
  cfg = json.load(f)
 
47
  cfg.pop("layer_replication", None)
48
  cfg.pop("alpha_pattern", None)
49
  model = PeftModel.from_pretrained(base_model, LORA_REPO, token=HF_TOKEN)
 
61
  tokenizer, model = load_model()
62
 
63
  def generate_response(prompt):
64
+ safe = prompt.replace('"', '').replace("\\", "")
65
  text = f"""<|im_start|>system\nYou are a cybersecurity expert.<|im_end|>\n<|im_start|>user\n{safe}<|im_end|>\n<|im_start|>assistant\n"""
66
  inputs = tokenizer(text, return_tensors="pt").to("cpu")
67
  with torch.no_grad():
68
+ out = model.generate(
69
+ **inputs,
70
+ max_new_tokens=512,
71
+ do_sample=True,
72
+ temperature=0.7,
73
+ top_p=0.9,
74
+ eos_token_id=tokenizer.eos_token_id,
75
+ pad_token_id=tokenizer.pad_token_id
76
+ )
77
  decoded = tokenizer.decode(out[0], skip_special_tokens=False)
78
  if "<|im_start|>assistant" in decoded:
79
  return decoded.split("<|im_start|>assistant\n")[1].split("<|im_end|>")[0].strip()
80
  return decoded
81
 
 
 
82
  app = fastapi.FastAPI()
83
 
84
  @app.get("/ping")
85
  def ping():
86
  return Response(status_code=204)
87
 
88
+ # Use correct path prefix to avoid 404 for static files
89
  gr_app = gr.Interface(
90
  fn=generate_response,
91
  inputs=gr.Textbox(lines=5, label="Prompt"),