Spaces:
Runtime error
Runtime error
File size: 2,027 Bytes
1d425f0 |
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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
import os
import torch
from fastapi import FastAPI, Request
from fastapi.responses import FileResponse, JSONResponse
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel
import uvicorn
# ------------------------------
# Config
# ------------------------------
BASE_MODEL = "deepseek-ai/deepseek-coder-6.7b-base"
ADAPTER_PATH = "Agasthya0/colabmind-coder-6.7b-ml-qlora"
# ------------------------------
# Load Model + Tokenizer
# ------------------------------
print("π Loading tokenizer...")
tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL)
print("π§ Loading base model in 4-bit...")
model = AutoModelForCausalLM.from_pretrained(
BASE_MODEL,
load_in_4bit=True,
device_map="auto",
torch_dtype=torch.float16
)
print("π Attaching LoRA adapter...")
model = PeftModel.from_pretrained(model, ADAPTER_PATH)
# ------------------------------
# Inference Function
# ------------------------------
def generate_code(prompt: str):
if not prompt.strip():
return "β οΈ Please enter a prompt."
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=512,
temperature=0.2,
top_p=0.9,
do_sample=True,
pad_token_id=tokenizer.eos_token_id
)
return tokenizer.decode(outputs[0], skip_special_tokens=True)
# ------------------------------
# FastAPI App
# ------------------------------
app = FastAPI()
@app.get("/")
def serve_frontend():
return FileResponse("index.html")
@app.post("/run/predict")
async def predict(request: Request):
data = await request.json()
prompt = data.get("data", [""])[0]
output = generate_code(prompt)
return JSONResponse({"data": [output]})
# ------------------------------
# Run (for local debugging, Spaces ignores this)
# ------------------------------
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=7860)
|