Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import torch | |
| from transformers import AutoTokenizer, AutoModelForCausalLM | |
| from peft import PeftModel | |
| # Base and adapter model paths | |
| base_model = "HuggingFaceH4/zephyr-7b-beta" | |
| adapter_path = "hmorad/zephyr-geo-finetuned" # or use "hmorad/zephyr-geo-finetuned" if uploaded and public | |
| # Load tokenizer | |
| tokenizer = AutoTokenizer.from_pretrained(base_model) | |
| tokenizer.pad_token = tokenizer.eos_token | |
| tokenizer.padding_side = "left" | |
| # Load base model | |
| base = AutoModelForCausalLM.from_pretrained( | |
| base_model, | |
| torch_dtype=torch.float32, # Use float32 on CPU | |
| device_map="auto", # This will place it correctly even on CPU | |
| trust_remote_code=True | |
| ) | |
| # Load LoRA adapter | |
| model = PeftModel.from_pretrained(base, adapter_path) | |
| model.eval() | |
| # Generation function | |
| def generate_response(prompt, max_new_tokens=200): | |
| input_text = f"<|system|>\nYou are a helpful assistant for geospatial data.\n<|user|>\n{prompt}\n<|assistant|>\n" | |
| inputs = tokenizer(input_text, return_tensors="pt", padding=True).to("cpu") | |
| with torch.no_grad(): | |
| output = model.generate( | |
| input_ids=inputs["input_ids"], | |
| attention_mask=inputs["attention_mask"], | |
| max_new_tokens=max_new_tokens, | |
| temperature=0.6, | |
| do_sample=True, | |
| top_k=50, | |
| top_p=0.9, | |
| pad_token_id=tokenizer.eos_token_id | |
| ) | |
| decoded = tokenizer.decode(output[0], skip_special_tokens=True) | |
| response = decoded.split("<|assistant|>")[-1].strip() | |
| return response | |
| # Gradio interface | |
| iface = gr.Interface( | |
| fn=generate_response, | |
| inputs=gr.Textbox( | |
| lines=4, | |
| placeholder="Enter your geospatial query (e.g., 'Convert this shapefile to PostGIS')", | |
| label="Your Query" | |
| ), | |
| outputs=gr.Textbox(label="Response"), | |
| title="Geospatial Data Chatbot", | |
| description="Ask technical questions about raster/vector data, GIS tools, or formats like .tif/.shp/PostGIS.", | |
| ) | |
| if __name__ == "__main__": | |
| iface.launch() | |