| import gradio as gr |
| from transformers import AutoTokenizer, AutoModelForCausalLM |
| import torch |
|
|
| |
| model_name = "deepseek-ai/deepseek-coder-1.3b-instruct" |
|
|
| |
| tokenizer = AutoTokenizer.from_pretrained(model_name) |
| tokenizer.pad_token = tokenizer.eos_token |
|
|
| |
| model = AutoModelForCausalLM.from_pretrained( |
| model_name, |
| torch_dtype=torch.float32, |
| low_cpu_mem_usage=True |
| ) |
|
|
| model.to("cpu") |
| model.eval() |
|
|
| |
| def generate_code(prompt): |
| if not prompt.strip(): |
| return "Please enter a prompt." |
|
|
| formatted_prompt = f"""You are a professional programmer. |
| Write clean, complete, and correct code. |
| |
| Instruction: |
| {prompt} |
| |
| Response: |
| """ |
|
|
| inputs = tokenizer( |
| formatted_prompt, |
| return_tensors="pt", |
| truncation=True, |
| max_length=512 |
| ) |
|
|
| with torch.no_grad(): |
| outputs = model.generate( |
| **inputs, |
| max_new_tokens=120, |
| temperature=0.2, |
| top_p=0.9, |
| do_sample=True, |
| repetition_penalty=1.2, |
| eos_token_id=tokenizer.eos_token_id, |
| pad_token_id=tokenizer.eos_token_id |
| ) |
|
|
| output_text = tokenizer.decode(outputs[0], skip_special_tokens=True) |
|
|
| |
| result = output_text.replace(formatted_prompt, "").strip() |
|
|
| return result |
|
|
| |
| iface = gr.Interface( |
| fn=generate_code, |
| inputs=gr.Textbox( |
| lines=5, |
| placeholder="Example: Create a login page using HTML and CSS" |
| ), |
| outputs=gr.Textbox(lines=12), |
| title="DeepSeek Coder AI (Optimized)", |
| description="Code generator running on Hugging Face Spaces (CPU optimized)." |
| ) |
|
|
| iface.launch() |