forked from anapnoe/stable-diffusion-webui-ux
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
26 changed files
with
2,555 additions
and
2,755 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 change: 1 addition & 0 deletions
1
extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_moonlight_orange.css
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
218 changes: 109 additions & 109 deletions
218
extensions-builtin/hypertile/scripts/hypertile_script.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,109 +1,109 @@ | ||
import hypertile | ||
from modules import scripts, script_callbacks, shared | ||
from scripts.hypertile_xyz import add_axis_options | ||
|
||
|
||
class ScriptHypertile(scripts.Script): | ||
name = "Hypertile" | ||
|
||
def title(self): | ||
return self.name | ||
|
||
def show(self, is_img2img): | ||
return scripts.AlwaysVisible | ||
|
||
def process(self, p, *args): | ||
hypertile.set_hypertile_seed(p.all_seeds[0]) | ||
|
||
configure_hypertile(p.width, p.height, enable_unet=shared.opts.hypertile_enable_unet) | ||
|
||
self.add_infotext(p) | ||
|
||
def before_hr(self, p, *args): | ||
|
||
enable = shared.opts.hypertile_enable_unet_secondpass or shared.opts.hypertile_enable_unet | ||
|
||
# exclusive hypertile seed for the second pass | ||
if enable: | ||
hypertile.set_hypertile_seed(p.all_seeds[0]) | ||
|
||
configure_hypertile(p.hr_upscale_to_x, p.hr_upscale_to_y, enable_unet=enable) | ||
|
||
if enable and not shared.opts.hypertile_enable_unet: | ||
p.extra_generation_params["Hypertile U-Net second pass"] = True | ||
|
||
self.add_infotext(p, add_unet_params=True) | ||
|
||
def add_infotext(self, p, add_unet_params=False): | ||
def option(name): | ||
value = getattr(shared.opts, name) | ||
default_value = shared.opts.get_default(name) | ||
return None if value == default_value else value | ||
|
||
if shared.opts.hypertile_enable_unet: | ||
p.extra_generation_params["Hypertile U-Net"] = True | ||
|
||
if shared.opts.hypertile_enable_unet or add_unet_params: | ||
p.extra_generation_params["Hypertile U-Net max depth"] = option('hypertile_max_depth_unet') | ||
p.extra_generation_params["Hypertile U-Net max tile size"] = option('hypertile_max_tile_unet') | ||
p.extra_generation_params["Hypertile U-Net swap size"] = option('hypertile_swap_size_unet') | ||
|
||
if shared.opts.hypertile_enable_vae: | ||
p.extra_generation_params["Hypertile VAE"] = True | ||
p.extra_generation_params["Hypertile VAE max depth"] = option('hypertile_max_depth_vae') | ||
p.extra_generation_params["Hypertile VAE max tile size"] = option('hypertile_max_tile_vae') | ||
p.extra_generation_params["Hypertile VAE swap size"] = option('hypertile_swap_size_vae') | ||
|
||
|
||
def configure_hypertile(width, height, enable_unet=True): | ||
hypertile.hypertile_hook_model( | ||
shared.sd_model.first_stage_model, | ||
width, | ||
height, | ||
swap_size=shared.opts.hypertile_swap_size_vae, | ||
max_depth=shared.opts.hypertile_max_depth_vae, | ||
tile_size_max=shared.opts.hypertile_max_tile_vae, | ||
enable=shared.opts.hypertile_enable_vae, | ||
) | ||
|
||
hypertile.hypertile_hook_model( | ||
shared.sd_model.model, | ||
width, | ||
height, | ||
swap_size=shared.opts.hypertile_swap_size_unet, | ||
max_depth=shared.opts.hypertile_max_depth_unet, | ||
tile_size_max=shared.opts.hypertile_max_tile_unet, | ||
enable=enable_unet, | ||
is_sdxl=shared.sd_model.is_sdxl | ||
) | ||
|
||
|
||
def on_ui_settings(): | ||
import gradio as gr | ||
|
||
options = { | ||
"hypertile_explanation": shared.OptionHTML(""" | ||
<a href='https://github.com/tfernd/HyperTile'>Hypertile</a> optimizes the self-attention layer within U-Net and VAE models, | ||
resulting in a reduction in computation time ranging from 1 to 4 times. The larger the generated image is, the greater the | ||
benefit. | ||
"""), | ||
|
||
"hypertile_enable_unet": shared.OptionInfo(False, "Enable Hypertile U-Net", infotext="Hypertile U-Net").info("enables hypertile for all modes, including hires fix second pass; noticeable change in details of the generated picture"), | ||
"hypertile_enable_unet_secondpass": shared.OptionInfo(False, "Enable Hypertile U-Net for hires fix second pass", infotext="Hypertile U-Net second pass").info("enables hypertile just for hires fix second pass - regardless of whether the above setting is enabled"), | ||
"hypertile_max_depth_unet": shared.OptionInfo(3, "Hypertile U-Net max depth", gr.Slider, {"minimum": 0, "maximum": 3, "step": 1}, infotext="Hypertile U-Net max depth").info("larger = more neural network layers affected; minor effect on performance"), | ||
"hypertile_max_tile_unet": shared.OptionInfo(256, "Hypertile U-Net max tile size", gr.Slider, {"minimum": 0, "maximum": 512, "step": 16}, infotext="Hypertile U-Net max tile size").info("larger = worse performance"), | ||
"hypertile_swap_size_unet": shared.OptionInfo(3, "Hypertile U-Net swap size", gr.Slider, {"minimum": 0, "maximum": 64, "step": 1}, infotext="Hypertile U-Net swap size"), | ||
|
||
"hypertile_enable_vae": shared.OptionInfo(False, "Enable Hypertile VAE", infotext="Hypertile VAE").info("minimal change in the generated picture"), | ||
"hypertile_max_depth_vae": shared.OptionInfo(3, "Hypertile VAE max depth", gr.Slider, {"minimum": 0, "maximum": 3, "step": 1}, infotext="Hypertile VAE max depth"), | ||
"hypertile_max_tile_vae": shared.OptionInfo(128, "Hypertile VAE max tile size", gr.Slider, {"minimum": 0, "maximum": 512, "step": 16}, infotext="Hypertile VAE max tile size"), | ||
"hypertile_swap_size_vae": shared.OptionInfo(3, "Hypertile VAE swap size ", gr.Slider, {"minimum": 0, "maximum": 64, "step": 1}, infotext="Hypertile VAE swap size"), | ||
} | ||
|
||
for name, opt in options.items(): | ||
opt.section = ('hypertile', "Hypertile") | ||
shared.opts.add_option(name, opt) | ||
|
||
|
||
script_callbacks.on_ui_settings(on_ui_settings) | ||
script_callbacks.on_before_ui(add_axis_options) | ||
import hypertile | ||
from modules import scripts, script_callbacks, shared | ||
from scripts.hypertile_xyz import add_axis_options | ||
|
||
|
||
class ScriptHypertile(scripts.Script): | ||
name = "Hypertile" | ||
|
||
def title(self): | ||
return self.name | ||
|
||
def show(self, is_img2img): | ||
return scripts.AlwaysVisible | ||
|
||
def process(self, p, *args): | ||
hypertile.set_hypertile_seed(p.all_seeds[0]) | ||
|
||
configure_hypertile(p.width, p.height, enable_unet=shared.opts.hypertile_enable_unet) | ||
|
||
self.add_infotext(p) | ||
|
||
def before_hr(self, p, *args): | ||
|
||
enable = shared.opts.hypertile_enable_unet_secondpass or shared.opts.hypertile_enable_unet | ||
|
||
# exclusive hypertile seed for the second pass | ||
if enable: | ||
hypertile.set_hypertile_seed(p.all_seeds[0]) | ||
|
||
configure_hypertile(p.hr_upscale_to_x, p.hr_upscale_to_y, enable_unet=enable) | ||
|
||
if enable and not shared.opts.hypertile_enable_unet: | ||
p.extra_generation_params["Hypertile U-Net second pass"] = True | ||
|
||
self.add_infotext(p, add_unet_params=True) | ||
|
||
def add_infotext(self, p, add_unet_params=False): | ||
def option(name): | ||
value = getattr(shared.opts, name) | ||
default_value = shared.opts.get_default(name) | ||
return None if value == default_value else value | ||
|
||
if shared.opts.hypertile_enable_unet: | ||
p.extra_generation_params["Hypertile U-Net"] = True | ||
|
||
if shared.opts.hypertile_enable_unet or add_unet_params: | ||
p.extra_generation_params["Hypertile U-Net max depth"] = option('hypertile_max_depth_unet') | ||
p.extra_generation_params["Hypertile U-Net max tile size"] = option('hypertile_max_tile_unet') | ||
p.extra_generation_params["Hypertile U-Net swap size"] = option('hypertile_swap_size_unet') | ||
|
||
if shared.opts.hypertile_enable_vae: | ||
p.extra_generation_params["Hypertile VAE"] = True | ||
p.extra_generation_params["Hypertile VAE max depth"] = option('hypertile_max_depth_vae') | ||
p.extra_generation_params["Hypertile VAE max tile size"] = option('hypertile_max_tile_vae') | ||
p.extra_generation_params["Hypertile VAE swap size"] = option('hypertile_swap_size_vae') | ||
|
||
|
||
def configure_hypertile(width, height, enable_unet=True): | ||
hypertile.hypertile_hook_model( | ||
shared.sd_model.first_stage_model, | ||
width, | ||
height, | ||
swap_size=shared.opts.hypertile_swap_size_vae, | ||
max_depth=shared.opts.hypertile_max_depth_vae, | ||
tile_size_max=shared.opts.hypertile_max_tile_vae, | ||
enable=shared.opts.hypertile_enable_vae, | ||
) | ||
|
||
hypertile.hypertile_hook_model( | ||
shared.sd_model.model, | ||
width, | ||
height, | ||
swap_size=shared.opts.hypertile_swap_size_unet, | ||
max_depth=shared.opts.hypertile_max_depth_unet, | ||
tile_size_max=shared.opts.hypertile_max_tile_unet, | ||
enable=enable_unet, | ||
is_sdxl=shared.sd_model.is_sdxl | ||
) | ||
|
||
|
||
def on_ui_settings(): | ||
import gradio as gr | ||
|
||
options = { | ||
"hypertile_explanation": shared.OptionHTML(""" | ||
<a href='https://github.com/tfernd/HyperTile'>Hypertile</a> optimizes the self-attention layer within U-Net and VAE models, | ||
resulting in a reduction in computation time ranging from 1 to 4 times. The larger the generated image is, the greater the | ||
benefit. | ||
"""), | ||
|
||
"hypertile_enable_unet": shared.OptionInfo(False, "Enable Hypertile U-Net", infotext="Hypertile U-Net").info("enables hypertile for all modes, including hires fix second pass; noticeable change in details of the generated picture"), | ||
"hypertile_enable_unet_secondpass": shared.OptionInfo(False, "Enable Hypertile U-Net for hires fix second pass", infotext="Hypertile U-Net second pass").info("enables hypertile just for hires fix second pass - regardless of whether the above setting is enabled"), | ||
"hypertile_max_depth_unet": shared.OptionInfo(3, "Hypertile U-Net max depth", gr.Slider, {"minimum": 0, "maximum": 3, "step": 1}, infotext="Hypertile U-Net max depth").info("larger = more neural network layers affected; minor effect on performance"), | ||
"hypertile_max_tile_unet": shared.OptionInfo(256, "Hypertile U-Net max tile size", gr.Slider, {"minimum": 0, "maximum": 512, "step": 16}, infotext="Hypertile U-Net max tile size").info("larger = worse performance"), | ||
"hypertile_swap_size_unet": shared.OptionInfo(3, "Hypertile U-Net swap size", gr.Slider, {"minimum": 0, "maximum": 64, "step": 1}, infotext="Hypertile U-Net swap size"), | ||
|
||
"hypertile_enable_vae": shared.OptionInfo(False, "Enable Hypertile VAE", infotext="Hypertile VAE").info("minimal change in the generated picture"), | ||
"hypertile_max_depth_vae": shared.OptionInfo(3, "Hypertile VAE max depth", gr.Slider, {"minimum": 0, "maximum": 3, "step": 1}, infotext="Hypertile VAE max depth"), | ||
"hypertile_max_tile_vae": shared.OptionInfo(128, "Hypertile VAE max tile size", gr.Slider, {"minimum": 0, "maximum": 512, "step": 16}, infotext="Hypertile VAE max tile size"), | ||
"hypertile_swap_size_vae": shared.OptionInfo(3, "Hypertile VAE swap size ", gr.Slider, {"minimum": 0, "maximum": 64, "step": 1}, infotext="Hypertile VAE swap size"), | ||
} | ||
|
||
for name, opt in options.items(): | ||
opt.section = ('hypertile', "Hypertile") | ||
shared.opts.add_option(name, opt) | ||
|
||
|
||
script_callbacks.on_ui_settings(on_ui_settings) | ||
script_callbacks.on_before_ui(add_axis_options) |
Oops, something went wrong.