jkorstad commited on
Commit
4a92e3f
·
verified ·
1 Parent(s): bd86d91

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +41 -56
app.py CHANGED
@@ -1,46 +1,39 @@
1
  import gradio as gr
2
  import numpy as np
3
  import random
4
- from diffusers import DiffusionPipeline
5
  import torch
 
 
 
6
 
 
7
  device = "cuda" if torch.cuda.is_available() else "cpu"
8
 
9
- if torch.cuda.is_available():
10
- torch.cuda.max_memory_allocated(device=device)
11
- pipe = DiffusionPipeline.from_pretrained("stabilityai/sdxl-turbo", torch_dtype=torch.float16, variant="fp16", use_safetensors=True)
12
- pipe.enable_xformers_memory_efficient_attention()
13
- pipe = pipe.to(device)
14
- else:
15
- pipe = DiffusionPipeline.from_pretrained("stabilityai/sdxl-turbo", use_safetensors=True)
16
- pipe = pipe.to(device)
17
 
18
  MAX_SEED = np.iinfo(np.int32).max
19
- MAX_IMAGE_SIZE = 1024
20
-
21
- def infer(prompt, negative_prompt, seed, randomize_seed, width, height, guidance_scale, num_inference_steps):
22
 
 
 
23
  if randomize_seed:
24
  seed = random.randint(0, MAX_SEED)
25
-
26
  generator = torch.Generator().manual_seed(seed)
27
-
28
  image = pipe(
29
  prompt = prompt,
30
- negative_prompt = negative_prompt,
31
- guidance_scale = guidance_scale,
32
- num_inference_steps = num_inference_steps,
33
- width = width,
34
  height = height,
35
- generator = generator
 
 
36
  ).images[0]
37
-
38
- return image
39
-
40
  examples = [
41
- "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k",
42
- "An astronaut riding a green horse",
43
- "A delicious ceviche cheesecake slice",
 
44
  ]
45
 
46
  css="""
@@ -50,17 +43,12 @@ css="""
50
  }
51
  """
52
 
53
- if torch.cuda.is_available():
54
- power_device = "GPU"
55
- else:
56
- power_device = "CPU"
57
-
58
  with gr.Blocks(css=css) as demo:
59
 
60
  with gr.Column(elem_id="col-container"):
61
- gr.Markdown(f"""
62
- # Text-to-Image Gradio Template
63
- Currently running on {power_device}.
64
  """)
65
 
66
  with gr.Row():
@@ -76,16 +64,9 @@ with gr.Blocks(css=css) as demo:
76
  run_button = gr.Button("Run", scale=0)
77
 
78
  result = gr.Image(label="Result", show_label=False)
79
-
80
  with gr.Accordion("Advanced Settings", open=False):
81
 
82
- negative_prompt = gr.Text(
83
- label="Negative prompt",
84
- max_lines=1,
85
- placeholder="Enter a negative prompt",
86
- visible=False,
87
- )
88
-
89
  seed = gr.Slider(
90
  label="Seed",
91
  minimum=0,
@@ -103,7 +84,7 @@ with gr.Blocks(css=css) as demo:
103
  minimum=256,
104
  maximum=MAX_IMAGE_SIZE,
105
  step=32,
106
- value=512,
107
  )
108
 
109
  height = gr.Slider(
@@ -111,36 +92,40 @@ with gr.Blocks(css=css) as demo:
111
  minimum=256,
112
  maximum=MAX_IMAGE_SIZE,
113
  step=32,
114
- value=512,
115
  )
116
 
117
  with gr.Row():
118
-
119
  guidance_scale = gr.Slider(
120
- label="Guidance scale",
121
- minimum=0.0,
122
- maximum=10.0,
123
  step=0.1,
124
- value=0.0,
125
  )
126
-
127
  num_inference_steps = gr.Slider(
128
  label="Number of inference steps",
129
  minimum=1,
130
- maximum=12,
131
  step=1,
132
- value=2,
133
  )
134
 
135
  gr.Examples(
136
  examples = examples,
137
- inputs = [prompt]
 
 
 
138
  )
139
 
140
- run_button.click(
 
141
  fn = infer,
142
- inputs = [prompt, negative_prompt, seed, randomize_seed, width, height, guidance_scale, num_inference_steps],
143
- outputs = [result]
144
  )
145
 
146
- demo.queue().launch()
 
1
  import gradio as gr
2
  import numpy as np
3
  import random
 
4
  import torch
5
+ import spaces
6
+ from diffusers import DiffusionPipeline, FlowMatchEulerDiscreteScheduler
7
+ from transformers import CLIPTextModel, CLIPTokenizer,T5EncoderModel, T5TokenizerFast
8
 
9
+ dtype = torch.bfloat16
10
  device = "cuda" if torch.cuda.is_available() else "cpu"
11
 
12
+ pipe = DiffusionPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", torch_dtype=torch.bfloat16).to(device)
 
 
 
 
 
 
 
13
 
14
  MAX_SEED = np.iinfo(np.int32).max
15
+ MAX_IMAGE_SIZE = 2048
 
 
16
 
17
+ @spaces.GPU(duration=190)
18
+ def infer(prompt, seed=42, randomize_seed=False, width=1024, height=1024, guidance_scale=5.0, num_inference_steps=28, progress=gr.Progress(track_tqdm=True)):
19
  if randomize_seed:
20
  seed = random.randint(0, MAX_SEED)
 
21
  generator = torch.Generator().manual_seed(seed)
 
22
  image = pipe(
23
  prompt = prompt,
24
+ width = width,
 
 
 
25
  height = height,
26
+ num_inference_steps = num_inference_steps,
27
+ generator = generator,
28
+ guidance_scale=guidance_scale
29
  ).images[0]
30
+ return image, seed
31
+
 
32
  examples = [
33
+ "a cat holding a sign that says hello world",
34
+ "A scene full of classic video game characters as stickers on a black water bottle",
35
+ "A futuristic biocity that is located in the former site of Portsmouth, New Hampshire. It has a mix of old and new buildings, green spaces, and water features. It also has six large artificial floating islands off of its coastline,(zenithal angle), ((by Iwan Baan)), coastal city,blue sky and white clouds,the sun is shining brightly,ultra-wide angle,",
36
+ "Depict a breathtaking scene of a meteor rain showering down from a starry night sky. The meteors should vary in size and brightness, streaking across the sky with vibrant tails of light, creating a dazzling display. Below, a serene landscape—perhaps a tranquil lake reflecting the celestial spectacle, or a rugged mountain range—should enhance the sense of wonder. The foreground can include silhouettes of trees or figures gazing up in awe at the cosmic event. The overall atmosphere should evoke feelings of magic and inspiration, capturing the beauty and mystery of the universe.",
37
  ]
38
 
39
  css="""
 
43
  }
44
  """
45
 
 
 
 
 
 
46
  with gr.Blocks(css=css) as demo:
47
 
48
  with gr.Column(elem_id="col-container"):
49
+ gr.Markdown(f"""# FLUX.1 [dev]
50
+ 12B param rectified flow transformer guidance-distilled from [FLUX.1 [pro]](https://blackforestlabs.ai/)
51
+ [[non-commercial license](https://huggingface.co/black-forest-labs/FLUX.1-dev/blob/main/LICENSE.md)] [[blog](https://blackforestlabs.ai/announcing-black-forest-labs/)] [[model](https://huggingface.co/black-forest-labs/FLUX.1-dev)]
52
  """)
53
 
54
  with gr.Row():
 
64
  run_button = gr.Button("Run", scale=0)
65
 
66
  result = gr.Image(label="Result", show_label=False)
67
+
68
  with gr.Accordion("Advanced Settings", open=False):
69
 
 
 
 
 
 
 
 
70
  seed = gr.Slider(
71
  label="Seed",
72
  minimum=0,
 
84
  minimum=256,
85
  maximum=MAX_IMAGE_SIZE,
86
  step=32,
87
+ value=1024,
88
  )
89
 
90
  height = gr.Slider(
 
92
  minimum=256,
93
  maximum=MAX_IMAGE_SIZE,
94
  step=32,
95
+ value=1024,
96
  )
97
 
98
  with gr.Row():
99
+
100
  guidance_scale = gr.Slider(
101
+ label="Guidance Scale",
102
+ minimum=1,
103
+ maximum=15,
104
  step=0.1,
105
+ value=3.5,
106
  )
107
+
108
  num_inference_steps = gr.Slider(
109
  label="Number of inference steps",
110
  minimum=1,
111
+ maximum=50,
112
  step=1,
113
+ value=28,
114
  )
115
 
116
  gr.Examples(
117
  examples = examples,
118
+ fn = infer,
119
+ inputs = [prompt],
120
+ outputs = [result, seed],
121
+ cache_examples="lazy"
122
  )
123
 
124
+ gr.on(
125
+ triggers=[run_button.click, prompt.submit],
126
  fn = infer,
127
+ inputs = [prompt, seed, randomize_seed, width, height, guidance_scale, num_inference_steps],
128
+ outputs = [result, seed]
129
  )
130
 
131
+ demo.launch()