File size: 4,526 Bytes
fb7c72e
 
 
 
 
 
7b932b1
7dc4c93
 
 
cdaf17f
 
 
 
 
15a3cdd
9a96d60
cdaf17f
7c1a22d
c21f92d
cdaf17f
 
 
 
7c1a22d
c21f92d
cdaf17f
 
 
 
7c1a22d
c21f92d
cdaf17f
 
 
7c1a22d
cdaf17f
 
7c1a22d
 
 
 
 
e7333b2
93db32d
e7333b2
21b96c0
e7333b2
cdaf17f
c21f92d
25e7c41
9a96d60
e7333b2
c21f92d
ed90fbc
7c1a22d
1a8741b
 
6df9545
 
 
 
 
8656444
e7333b2
 
9a96d60
bfee72a
 
296081a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import gradio as gr
import torch
import numpy as np
import modin.pandas as pd
from PIL import Image
from diffusers import DiffusionPipeline 


device = 'cuda' if torch.cuda.is_available() else 'cpu'

if torch.cuda.is_available():
    PYTORCH_CUDA_ALLOC_CONF={'max_split_size_mb': 6000}
    torch.cuda.max_memory_allocated(device=device)
    torch.cuda.empty_cache()
    
    pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16, variant="fp16", use_safetensors=True)
    pipe.enable_xformers_memory_efficient_attention()
    pipe = pipe.to(device)
    pipe.unet = torch.compile(pipe.unet, mode="reduce-overhead", fullgraph=True)
    #torch.cuda.empty_cache()
    
    refiner = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-refiner-1.0", use_safetensors=True, torch_dtype=torch.float16, variant="fp16")
    refiner.enable_xformers_memory_efficient_attention()
    refiner = refiner.to(device)
    refiner.unet = torch.compile(refiner.unet, mode="reduce-overhead", fullgraph=True)
    #torch.cuda.empty_cache()
    
    upscaler = DiffusionPipeline.from_pretrained("stabilityai/sd-x2-latent-upscaler", torch_dtype=torch.float16, use_safetensors=True)
    upscaler.enable_xformers_memory_efficient_attention()
    upscaler = upscaler.to(device)
    upscaler.unet = torch.compile(upscaler.unet, mode="reduce-overhead", fullgraph=True)
    #torch.cuda.empty_cache()
else: 
    pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", use_safetensors=True)
    pipe = pipe.to(device)
    pipe.unet = torch.compile(pipe.unet, mode="reduce-overhead", fullgraph=True)
    refiner = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-refiner-1.0", use_safetensors=True)
    refiner = refiner.to(device)
    refiner.unet = torch.compile(refiner.unet, mode="reduce-overhead", fullgraph=True)

n_steps = 40
high_noise_frac = 0.8
       
def genie (prompt, negative_prompt, height, width, scale, steps, seed, upscaling, prompt_2, negative_prompt_2):
    generator = torch.Generator(device=device).manual_seed(seed)
    int_image = pipe(prompt, prompt_2=prompt_2, negative_prompt=negative_prompt, negative_prompt_2=negative_prompt_2, num_inference_steps=steps, height=height, width=width, guidance_scale=scale, num_images_per_prompt=1, generator=generator, output_type="latent").images
    if upscaling == 'Yes':
        image = refiner(prompt=prompt, prompt_2=prompt_2, negative_prompt=negative_prompt, negative_prompt_2=negative_prompt_2, image=int_image).images[0]
        upscaled = upscaler(prompt=prompt, negative_prompt=negative_prompt, image=image, num_inference_steps=5, guidance_scale=0).images[0]
        #torch.cuda.empty_cache()
        return (image, upscaled)
    else:
        image = refiner(prompt=prompt, prompt_2=prompt_2, negative_prompt=negative_prompt, negative_prompt_2=negative_prompt_2, image=int_image).images[0]   
        #torch.cuda.empty_cache()
    return (image, image)

gr.Interface(fn=genie, inputs=[gr.Textbox(label='What you want the AI to generate. 77 Token Limit. A Token is Any Word, Number, Symbol, or Punctuation. Everything Over 77 Will Be Truncated!'), 
    gr.Textbox(label='What you Do Not want the AI to generate. 77 Token Limit'), 
    gr.Slider(512, 1024, 768, step=128, label='Height'),
    gr.Slider(512, 1024, 768, step=128, label='Width'),
    gr.Slider(1, 15, 10, step=.25, label='Guidance Scale: How Closely the AI follows the Prompt'), 
    gr.Slider(25, maximum=100, value=50, step=25, label='Number of Iterations'), 
    gr.Slider(minimum=1, step=1, maximum=999999999999999999, randomize=True, label='Seed'),
    gr.Radio(['Yes', 'No'], value='No', label='Upscale?'),
    gr.Textbox(label='Embedded Prompt'),
    gr.Textbox(label='Embedded Negative Prompt')], 
    outputs=['image', 'image'],
    title="Stable Diffusion XL 1.0 GPU", 
    description="SDXL 1.0 GPU. <br><br><b>WARNING: Capable of producing NSFW (Softcore) images.</b>", 
    article = "If You Enjoyed this Demo and would like to Donate, you can send to any of these Wallets. <br>BTC: bc1qzdm9j73mj8ucwwtsjx4x4ylyfvr6kp7svzjn84 <br>3LWRoKYx6bCLnUrKEdnPo3FCSPQUSFDjFP <br>DOGE: DK6LRc4gfefdCTRk9xPD239N31jh9GjKez <br>SHIB (BEP20): 0xbE8f2f3B71DFEB84E5F7E3aae1909d60658aB891 <br>PayPal: https://www.paypal.me/ManjushriBodhisattva <br>ETH: 0xbE8f2f3B71DFEB84E5F7E3aae1909d60658aB891 <br>Code Monkey: <a href=\"https://huggingface.co/Manjushri\">Manjushri</a>").launch(debug=True, max_threads=80)