Spaces:
Paused
Paused
File size: 1,505 Bytes
93b7ac9 5e0ac8c 93b7ac9 75e84aa 93b7ac9 a59d9c8 5006645 a59d9c8 5006645 a59d9c8 93b7ac9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | import spaces
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
import torch
import os
token = os.environ.get("HF_TOKEN")
BASE_MODEL = "unsloth/Llama-3.2-3B-bnb-4bit"
ADAPTER = "Ganesh3108/Second-model"
# only load tokenizer at module level — it's not a CUDA op
tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL, token=token)
model = None # lazy-loaded
def load_model():
global model
if model is None:
base_model = AutoModelForCausalLM.from_pretrained(
BASE_MODEL,
torch_dtype=torch.float16,
device_map={"": 0}, # or "auto"
token=token,
)
model = PeftModel.from_pretrained(base_model, ADAPTER)
model.eval()
return model
@spaces.GPU
def chat(message, history):
m = load_model() # loads on first call, when GPU is actually attached
inputs = tokenizer(message, return_tensors="pt").to("cuda")
with torch.no_grad():
outputs = m.generate(
**inputs,
max_new_tokens=150,
do_sample=True,
temperature=1.5,
top_p=0.9,
repetition_penalty=1.2,
no_repeat_ngram_size=3,
eos_token_id=tokenizer.eos_token_id,
pad_token_id=tokenizer.eos_token_id,
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
return response[len(message):].strip()
demo = gr.ChatInterface(chat, title="My Bro")
demo.launch() |