superlazycoder/zeroGPU2
0
1import gradio as gr2import numpy as np3import random4from diffusers import DiffusionPipeline5import torch6import spaces7 8device = "cuda"9 10MAX_SEED = np.iinfo(np.int32).max11MAX_IMAGE_SIZE = 102412 13@spaces.GPU14def infer(prompt, negative_prompt, seed, randomize_seed, width, height, guidance_scale, num_inference_steps):15 16 if randomize_seed:17 seed = random.randint(0, MAX_SEED)18 19 generator = torch.Generator().manual_seed(seed)20 21 pipe = DiffusionPipeline.from_pretrained("stabilityai/sdxl-turbo", torch_dtype=torch.float16, variant="fp16", use_safetensors=True)22 pipe.enable_xformers_memory_efficient_attention()23 pipe = pipe.to(device)24 25 image = pipe(26 prompt = prompt, 27 negative_prompt = negative_prompt,28 guidance_scale = guidance_scale, 29 num_inference_steps = num_inference_steps, 30 width = width, 31 height = height,32 generator = generator33 ).images[0] 34 35 return image36 37 38 39@spaces.GPU40def reject(prompt, negative_prompt, seed, randomize_seed, width, height, guidance_scale, num_inference_steps):41 42 if randomize_seed:43 seed = random.randint(0, MAX_SEED)44 45 generator = torch.Generator().manual_seed(seed)46 47 pipe = DiffusionPipeline.from_pretrained("stabilityai/sdxl-turbo", torch_dtype=torch.float16, variant="fp16", use_safetensors=True)48 pipe.enable_xformers_memory_efficient_attention()49 pipe = pipe.to(device)50 51 image = pipe(52 prompt = prompt, 53 negative_prompt = negative_prompt,54 guidance_scale = guidance_scale, 55 num_inference_steps = num_inference_steps, 56 width = width, 57 height = height,58 generator = generator59 ).images[0] 60 61 return image62 63 64@spaces.GPU65def accept(textOutput):66 67 return gr.Button.update(visible=True)68 69 70examples = [71 "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k",72 "An astronaut riding a green horse",73 "A delicious ceviche cheesecake slice",74]75 76css="""77#col-container {78 margin: 0 auto;79 max-width: 520px;80}81"""82 83 84power_device = "GPU"85 86with gr.Blocks(css=css) as demo:87 88 with gr.Column(elem_id="col-container"):89 gr.Markdown(f"""90 # Text-to-Image Gradio Template91 Currently running on {power_device}.92 """)93 94 with gr.Row():95 96 prompt = gr.Text(97 label="Prompt",98 show_label=False,99 max_lines=1,100 placeholder="Enter your prompt",101 container=False,102 )103 104 run_button = gr.Button("Run", scale=0)105 106 left_button = gr.Button("Left", scale=0)107 right_button = gr.Button("Right", scale=0)108 109 result = gr.Image(label="Result", show_label=False)110 conv_id_element = gr.Text(value="Hello", visible=False)111 112 with gr.Accordion("Advanced Settings", open=False):113 114 negative_prompt = gr.Text(115 label="Negative prompt",116 max_lines=1,117 placeholder="Enter a negative prompt",118 visible=False,119 )120 121 seed = gr.Slider(122 label="Seed",123 minimum=0,124 maximum=MAX_SEED,125 step=1,126 value=0,127 )128 129 randomize_seed = gr.Checkbox(label="Randomize seed", value=True)130 131 with gr.Row():132 133 width = gr.Slider(134 label="Width",135 minimum=256,136 maximum=MAX_IMAGE_SIZE,137 step=32,138 value=512,139 )140 141 height = gr.Slider(142 label="Height",143 minimum=256,144 maximum=MAX_IMAGE_SIZE,145 step=32,146 value=512,147 )148 149 with gr.Row():150 151 guidance_scale = gr.Slider(152 label="Guidance scale",153 minimum=0.0,154 maximum=10.0,155 step=0.1,156 value=0.0,157 )158 159 num_inference_steps = gr.Slider(160 label="Number of inference steps",161 minimum=1,162 maximum=12,163 step=1,164 value=2,165 )166 167 gr.Examples(168 examples = examples,169 inputs = [prompt]170 )171 172 left_button.click(173 fn = reject,174 inputs = [prompt, negative_prompt, seed, randomize_seed, width, height, guidance_scale, num_inference_steps],175 outputs = [result] 176 )177 178 right_button.click(179 fn = accept,180 inputs = [right_button],181 outputs = [conv_id_element] 182 )183 184demo.queue().launch()