my-sd/extensions-builtin/sd_forge_hypertile/scripts/forge_hypertile.py
lllyasviel ae51178629 allow extensions to sort themselves in UI
and other installed extensions will be on top now (including some resolution related UI extensions)
2024-02-17 08:15:29 -08:00

51 lines
1.6 KiB
Python

import gradio as gr
from modules import scripts
from ldm_patched.contrib.external_hypertile import HyperTile
opHyperTile = HyperTile()
class HyperTileForForge(scripts.Script):
sorting_priority = 13
def title(self):
return "HyperTile Integrated"
def show(self, is_img2img):
return scripts.AlwaysVisible
def ui(self, *args, **kwargs):
with gr.Accordion(open=False, label=self.title()):
enabled = gr.Checkbox(label='Enabled', value=False)
tile_size = gr.Slider(label='Tile Size', minimum=1, maximum=2048, step=1, value=256)
swap_size = gr.Slider(label='Swap Size', minimum=1, maximum=128, step=1, value=2)
max_depth = gr.Slider(label='Max Depth', minimum=0, maximum=10, step=1, value=0)
scale_depth = gr.Checkbox(label='Scale Depth', value=False)
return enabled, tile_size, swap_size, max_depth, scale_depth
def process_before_every_sampling(self, p, *script_args, **kwargs):
enabled, tile_size, swap_size, max_depth, scale_depth = script_args
tile_size, swap_size, max_depth = int(tile_size), int(swap_size), int(max_depth)
if not enabled:
return
unet = p.sd_model.forge_objects.unet
unet = opHyperTile.patch(unet, tile_size, swap_size, max_depth, scale_depth)[0]
p.sd_model.forge_objects.unet = unet
p.extra_generation_params.update(dict(
HyperTile_enabled=enabled,
HyperTile_tile_size=tile_size,
HyperTile_swap_size=swap_size,
HyperTile_max_depth=max_depth,
HyperTile_scale_depth=scale_depth,
))
return