hmorad commited on
Commit
62debb9
·
1 Parent(s): 7f92837

Add Gradio chatbot for fine-tuned Zephyr model new space

Browse files
Files changed (2) hide show
  1. app.py +6 -14
  2. requirements.txt +0 -1
app.py CHANGED
@@ -1,29 +1,21 @@
1
  import gradio as gr
2
  import torch
3
- from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
4
  from peft import PeftModel
5
 
6
  # Model setup
7
  base_model = "HuggingFaceH4/zephyr-7b-beta"
8
- model_path = r"hmorad/zephyr-geo-finetuned/tree/main/checkpoint-161" # Update to your repo ID
9
-
10
- # Quantization config
11
- bnb_config = BitsAndBytesConfig(
12
- load_in_4bit=True,
13
- bnb_4bit_compute_dtype=torch.float16,
14
- bnb_4bit_use_double_quant=True,
15
- bnb_4bit_quant_type="nf4"
16
- )
17
 
18
  # Load tokenizer
19
  tokenizer = AutoTokenizer.from_pretrained(base_model)
20
  tokenizer.pad_token = tokenizer.eos_token
21
 
22
- # Load base model
23
  base = AutoModelForCausalLM.from_pretrained(
24
  base_model,
25
- quantization_config=bnb_config,
26
- device_map="auto",
27
  trust_remote_code=True
28
  )
29
 
@@ -33,7 +25,7 @@ model.eval()
33
 
34
  def generate_response(prompt, max_new_tokens=200):
35
  input_text = f"user: {prompt}\nassistant:"
36
- inputs = tokenizer(input_text, return_tensors="pt").to("cuda" if torch.cuda.is_available() else "cpu")
37
  with torch.no_grad():
38
  output = model.generate(
39
  **inputs,
 
1
  import gradio as gr
2
  import torch
3
+ from transformers import AutoTokenizer, AutoModelForCausalLM
4
  from peft import PeftModel
5
 
6
  # Model setup
7
  base_model = "HuggingFaceH4/zephyr-7b-beta"
8
+ model_path = "your-username/zephyr-geo-finetuned" # Update with your Hugging Face repo ID
 
 
 
 
 
 
 
 
9
 
10
  # Load tokenizer
11
  tokenizer = AutoTokenizer.from_pretrained(base_model)
12
  tokenizer.pad_token = tokenizer.eos_token
13
 
14
+ # Load base model on CPU
15
  base = AutoModelForCausalLM.from_pretrained(
16
  base_model,
17
+ torch_dtype=torch.float16, # Use FP16 to reduce memory
18
+ device_map="cpu", # Force CPU
19
  trust_remote_code=True
20
  )
21
 
 
25
 
26
  def generate_response(prompt, max_new_tokens=200):
27
  input_text = f"user: {prompt}\nassistant:"
28
+ inputs = tokenizer(input_text, return_tensors="pt").to("cpu")
29
  with torch.no_grad():
30
  output = model.generate(
31
  **inputs,
requirements.txt CHANGED
@@ -1,6 +1,5 @@
1
  torch>=2.0.0
2
  transformers==4.52.4
3
  peft==0.15.2
4
- bitsandbytes==0.44.0
5
  gradio==4.44.0
6
  huggingface_hub>=0.30.0
 
1
  torch>=2.0.0
2
  transformers==4.52.4
3
  peft==0.15.2
 
4
  gradio==4.44.0
5
  huggingface_hub>=0.30.0