import gradio as gr import spaces import torch from transformers import pipeline MODELS = { "Qwen2.5-0.5B": "Qwen/Qwen2.5-0.5B-Instruct", "Qwen2.5-1B": "Qwen/Qwen2.5-1B-Instruct", "Llama-3.2-1B": "meta-llama/Llama-3.2-1B-Instruct", "Gemma-3-1B": "google/gemma-3-1b-it", } loaded = {} def get_model(name): if name not in loaded: loaded[name] = pipeline( "text-generation", model=MODELS[name], torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32, device_map="auto" if torch.cuda.is_available() else None, ) return loaded[name] @spaces.GPU def generate(model, prompt, max_tokens, temperature): pipe = get_model(model) result = pipe( prompt, max_new_tokens=max_tokens, temperature=temperature, do_sample=temperature > 0, return_full_text=False, ) return result[0]["generated_text"] demo = gr.Interface( fn=generate, inputs=[ gr.Dropdown( choices=list(MODELS.keys()), value="Qwen2.5-0.5B", label="Model", ), gr.Textbox(lines=8, label="Prompt"), gr.Slider(1, 512, value=128, step=1, label="Max Tokens"), gr.Slider(0.0, 2.0, value=0.7, step=0.1, label="Temperature"), ], outputs=gr.Textbox(lines=12, label="Response"), title="Micro Tier LLM API", ) if __name__ == "__main__": demo.launch()