Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline | |
| from peft import PeftModel, PeftConfig | |
| import torch | |
| import os | |
| # Hugging Face access token (stored in HF Spaces secrets) | |
| hf_token = os.getenv("HF_TOKEN") | |
| adapter_path = "imnim/multi-label-email-classifier" | |
| # Load PEFT config | |
| peft_config = PeftConfig.from_pretrained(adapter_path, token=hf_token) | |
| # Load base model (fallback to float32 if bfloat16 fails) | |
| try: | |
| base_model = AutoModelForCausalLM.from_pretrained( | |
| peft_config.base_model_name_or_path, | |
| torch_dtype=torch.bfloat16, | |
| device_map="auto", | |
| token=hf_token | |
| ) | |
| except: | |
| base_model = AutoModelForCausalLM.from_pretrained( | |
| peft_config.base_model_name_or_path, | |
| torch_dtype=torch.float32, | |
| device_map="auto", | |
| token=hf_token | |
| ) | |
| tokenizer = AutoTokenizer.from_pretrained(peft_config.base_model_name_or_path, token=hf_token) | |
| model = PeftModel.from_pretrained(base_model, adapter_path, token=hf_token) | |
| pipe = pipeline("text-generation", model=model, tokenizer=tokenizer) | |
| # Define classification function | |
| def classify_email(subject, body): | |
| prompt = f"""### Subject:\n{subject}\n\n### Body:\n{body}\n\n### Labels:""" | |
| result = pipe(prompt, max_new_tokens=50, do_sample=True, top_k=50, top_p=0.95) | |
| full_text = result[0]["generated_text"] | |
| label_section = full_text.split("### Labels:")[1].strip() | |
| return label_section | |
| # Gradio UI | |
| demo = gr.Interface( | |
| fn=classify_email, | |
| inputs=["text", "text"], | |
| outputs="text", | |
| title="Multi-label Email Classifier", | |
| description="Enter subject and body to get label prediction" | |
| ) | |
| demo.launch() | |