File size: 3,480 Bytes
fb7c72e
 
 
 
 
 
 
 
 
 
 
 
9a96d60
8d78d08
7b932b1
6df9545
9a96d60
1b1ec40
93db32d
9a96d60
93db32d
 
1c08fd3
93db32d
9a96d60
 
1b1ec40
9a96d60
 
 
 
 
 
 
 
 
 
25e7c41
9a96d60
 
 
1b1ec40
9a96d60
 
c55678d
9a96d60
ed90fbc
93db32d
1a8741b
 
6df9545
 
 
 
 
9a96d60
 
3154c91
cb65275
93db32d
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
import gradio as gr
import torch
import numpy as np
import modin.pandas as pd
from PIL import Image
from diffusers import DiffusionPipeline 
from huggingface_hub import login
import os

login(token=os.environ.get('HF_KEY'))

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

def genie (prompt, negative_prompt, height, width, scale, steps, seed, upscaler):
    torch.cuda.max_memory_allocated(device='cuda')
    pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-0.9", torch_dtype=torch.float16, variant="fp16", use_safetensors=True)
    pipe = pipe.to(device)
    pipe.enable_xformers_memory_efficient_attention()
    torch.cuda.empty_cache()
    generator = torch.Generator(device=device).manual_seed(seed)
    int_image = pipe(prompt, negative_prompt=negative_prompt, num_inference_steps=steps, height=height, width=width, guidance_scale=scale, num_images_per_prompt=1, generator=generator, output_type="latent").images
    torch.cuda.empty_cache()
    if upscaler == 'Yes':
        torch.cuda.max_memory_allocated(device='cuda')
        pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-refiner-0.9", torch_dtype=torch.float16, variant="fp16", use_safetensors=True)
        pipe = pipe.to(device)
        pipe.enable_xformers_memory_efficient_attention()
        image = pipe(prompt=prompt, image=int_image).images[0]
        torch.cuda.empty_cache()
        torch.cuda.max_memory_allocated(device='cuda')
        pipe = DiffusionPipeline.from_pretrained("stabilityai/sd-x2-latent-upscaler", torch_dtype=torch.float16, use_safetensors=True)
        pipe.to("cuda")
        pipe.enable_xformers_memory_efficient_attention()
        upscaled = pipe(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:
        torch.cuda.empty_cache()
        torch.cuda.max_memory_allocated(device=device)
        pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-refiner-0.9", torch_dtype=torch.float16, variant="fp16", use_safetensors=True)
        pipe = pipe.to(device)
        pipe.enable_xformers_memory_efficient_attention()
        image = pipe(prompt=prompt, negative_prompt=negative_prompt, 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'], label='Upscale?')], 
    outputs=['image', 'image'],
    title="Stable Diffusion XL 0.9 GPU", 
    description="SDXL 0.9 GPU. <br><br><b>WARNING: Capable of producing NSFW (Softcore) images.</b>", 
    article = "Code Monkey: <a href=\"https://huggingface.co/Manjushri\">Manjushri</a>").launch(debug=True, max_threads=80)