K00B404 commited on
Commit
2741722
·
verified ·
1 Parent(s): b590fb0

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +58 -0
app.py ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from all_models import models
3
+ from externalmod import gr_Interface_load
4
+ import asyncio
5
+ import os
6
+ from datetime import datetime
7
+
8
+ # Load the models
9
+ HF_TOKEN = os.getenv("HF_TOKEN", None)
10
+
11
+ def load_models(models):
12
+ loaded_models = {}
13
+ for model in models:
14
+ try:
15
+ loaded_models[model] = gr_Interface_load(f'models/{model}', hf_token=HF_TOKEN)
16
+ except Exception as e:
17
+ print(f"Error loading {model}: {e}")
18
+ return loaded_models
19
+
20
+ models_load = load_models(models)
21
+
22
+ # Generate image function
23
+ async def infer(model_str, prompt, seed=-1):
24
+ task = asyncio.create_task(
25
+ asyncio.to_thread(models_load[model_str].fn, prompt=prompt, seed=seed, token=HF_TOKEN)
26
+ )
27
+ await asyncio.sleep(0)
28
+ result = await asyncio.wait_for(task, timeout=300)
29
+ return result
30
+
31
+ def generate_image(model_name, prompt, seed):
32
+ loop = asyncio.new_event_loop()
33
+ asyncio.set_event_loop(loop)
34
+ try:
35
+ return loop.run_until_complete(infer(model_name, prompt, seed))
36
+ finally:
37
+ loop.close()
38
+
39
+ # Interface
40
+ with gr.Blocks() as demo:
41
+ with gr.Column():
42
+ model_choice = gr.Dropdown(
43
+ choices=models, label="Select Model", value=models[0]
44
+ )
45
+ prompt_input = gr.Textbox(label="Enter your prompt")
46
+ seed_input = gr.Slider(
47
+ label="Seed", minimum=-1, maximum=100000, step=1, value=-1
48
+ )
49
+ generate_button = gr.Button("Generate Image")
50
+ output_image = gr.Image(label="Generated Image", show_download_button=True)
51
+
52
+ generate_button.click(
53
+ fn=generate_image,
54
+ inputs=[model_choice, prompt_input, seed_input],
55
+ outputs=[output_image],
56
+ )
57
+
58
+ demo.launch()