Spaces:
Running
on
Zero
Running
on
Zero
import gradio as gr | |
from transformers import pipeline, AutoTokenizer, TextIteratorStreamer | |
import torch | |
import spaces | |
from threading import Thread | |
import os | |
def load_model(model_name): | |
return pipeline("text-generation", model=model_name, device_map="cuda", torch_dtype=torch.bfloat16, trust_remote_code=True, token=os.environ["token"]) | |
def generate( | |
model_name, | |
user_input, | |
temperature=0.4, | |
top_p=0.95, | |
min_p=0.1, | |
top_k=50, | |
max_new_tokens=256, | |
): | |
pipe = load_model(model_name) | |
# Set tokenize correctly. Otherwise ticking the box breaks it. | |
if model_name == "M4-ai/tau-1.8B": | |
prompt = user_input | |
else: | |
prompt = f"<|im_start|>user\n{user_input}<|im_end|>\n<|im_start|>assistant\n" | |
streamer = TextIteratorStreamer(pipe.tokenizer, timeout=240.0, skip_prompt=True, skip_special_tokens=True) | |
generation_kwargs = dict(text_inputs=prompt, streamer=streamer, max_new_tokens=max_new_tokens, do_sample=True, top_p=top_p, min_p=min_p, top_k=top_k, | |
temperature=temperature, num_beams=1, repetition_penalty=1.1) | |
t = Thread(target=pipe.__call__, kwargs=generation_kwargs) | |
t.start() | |
outputs = [] | |
for chunk in streamer: | |
outputs.append(chunk) | |
yield "".join(outputs) | |
model_choices = ["Locutusque/llama-3-neural-chat-v2.2-8b", "Locutusque/Llama-3-Yggdrasil-2.0-8B", "Locutusque/Llama-3-NeuralYggdrasil-8B", "M4-ai/tau-1.8B", "Locutusque/Llama-3-NeuralHercules-5.0-8B", "QuasarResearch/Llama-3-OpenCerebrum-2.0-SFT-Optimized", "Locutusque/Llama-3-Hercules-5.0-8B"] | |
# What at the best options? | |
g = gr.Interface( | |
fn=generate, | |
inputs=[ | |
gr.components.Dropdown(choices=model_choices, label="Model", value=model_choices[0], interactive=True), | |
gr.components.Textbox(lines=2, label="Prompt", value="Write me a Python program that calculates the factorial of a given number."), | |
gr.components.Slider(minimum=0, maximum=1, value=0.8, label="Temperature"), | |
gr.components.Slider(minimum=0, maximum=1, value=0.95, label="Top p"), | |
gr.components.Slider(minimum=0, maximum=1, value=0.1, label="Min P"), | |
gr.components.Slider(minimum=0, maximum=100, step=1, value=15, label="Top k"), | |
gr.components.Slider(minimum=1, maximum=2048, step=1, value=1024, label="Max tokens"), | |
], | |
outputs=[gr.Textbox(lines=10, label="Output")], | |
title="Locutusque's Language Models", | |
description="Try out Locutusque's language models here! Credit goes to Mediocreatmybest for this space. You may also find some experimental preview models that have not been made public here.", | |
concurrency_limit=1 | |
) | |
g.launch(max_threads=4) | |