Spaces:
Sleeping
Sleeping
import os | |
import gradio as gr | |
from transformers import AutoModel, AutoTokenizer | |
def get_code_generative_models(): | |
models_dir = os.path.join(os.getcwd(), "models") | |
models = [] | |
for model_name in os.listdir(models_dir): | |
model_path = os.path.join(models_dir, model_name) | |
if os.path.isdir(model_path): | |
model_info = AutoModel.from_pretrained(model_path) | |
if "config.json" in [f.name for f in model_info.files]: | |
models.append((model_name, model_path)) | |
return models | |
def model_inference(model_name, model_path, input_data): | |
tokenizer = AutoTokenizer.from_pretrained(model_path) | |
model = AutoModel.from_pretrained(model_path) | |
inputs = tokenizer(input_data, return_tensors="pt") | |
outputs = model(**inputs) | |
result = outputs.last_hidden_state[:, 0, :] | |
return result.tolist() | |
def main(): | |
models = get_code_generative_models() | |
with gr.Blocks() as demo: | |
gr.Markdown("### Select Model and Input") | |
with gr.Row(): | |
model_name = gr.Dropdown(label="Model", choices=[m[0] for m in models]) | |
input_data = gr.Textbox(label="Input") | |
model_path = gr.State(None) | |
def update_model_path(model_name): | |
model_path.set(next(filter(lambda m: m[0] == model_name, models))[1]) | |
input_data.change(update_model_path, inputs=model_name, outputs=model_path) | |
output = gr.Textbox(label="Output") | |
def infer(model_name, input_data): | |
return model_inference(model_name, model_path, input_data) | |
output.change(fn=infer, inputs=[model_name, input_data], outputs=output) | |
interface = demo.launch() | |
if __name__ == "__main__": | |
main() |