包含: - hair_service_sd: 换发型/换发色算法服务 (端口 8801) - photo_service: LoRA 训练调度服务 (端口 32678) - stable-diffusion-webui: SD WebUI 推理服务 (端口 57860) - kohya_ss_home: 训练环境代码 - meidaojia: 监控测试脚本 - setup.sh: 一键部署脚本 (conda环境恢复 + 配置生成 + 完整性检查) - start_all_services.sh: 启动3个服务 - configure.ini.template: 路径模板化 (BASE_DIR自动推导) - conda_envs/py310.yml: py310 环境定义 大文件 (weights/, models/, data/, conda_envs/*.tar.gz 等) 通过 .gitignore 排除, 由网盘单独上传。
84 lines
2.6 KiB
Python
Executable File
84 lines
2.6 KiB
Python
Executable File
import gradio as gr
|
|
|
|
from modules import scripts, ui_tempdir, patches
|
|
|
|
|
|
def add_classes_to_gradio_component(comp):
|
|
"""
|
|
this adds gradio-* to the component for css styling (ie gradio-button to gr.Button), as well as some others
|
|
"""
|
|
|
|
comp.elem_classes = [f"gradio-{comp.get_block_name()}", *(comp.elem_classes or [])]
|
|
|
|
if getattr(comp, 'multiselect', False):
|
|
comp.elem_classes.append('multiselect')
|
|
|
|
|
|
def IOComponent_init(self, *args, **kwargs):
|
|
self.webui_tooltip = kwargs.pop('tooltip', None)
|
|
|
|
if scripts.scripts_current is not None:
|
|
scripts.scripts_current.before_component(self, **kwargs)
|
|
|
|
scripts.script_callbacks.before_component_callback(self, **kwargs)
|
|
|
|
res = original_IOComponent_init(self, *args, **kwargs)
|
|
|
|
add_classes_to_gradio_component(self)
|
|
|
|
scripts.script_callbacks.after_component_callback(self, **kwargs)
|
|
|
|
if scripts.scripts_current is not None:
|
|
scripts.scripts_current.after_component(self, **kwargs)
|
|
|
|
return res
|
|
|
|
|
|
def Block_get_config(self):
|
|
config = original_Block_get_config(self)
|
|
|
|
webui_tooltip = getattr(self, 'webui_tooltip', None)
|
|
if webui_tooltip:
|
|
config["webui_tooltip"] = webui_tooltip
|
|
|
|
config.pop('example_inputs', None)
|
|
|
|
return config
|
|
|
|
|
|
def BlockContext_init(self, *args, **kwargs):
|
|
if scripts.scripts_current is not None:
|
|
scripts.scripts_current.before_component(self, **kwargs)
|
|
|
|
scripts.script_callbacks.before_component_callback(self, **kwargs)
|
|
|
|
res = original_BlockContext_init(self, *args, **kwargs)
|
|
|
|
add_classes_to_gradio_component(self)
|
|
|
|
scripts.script_callbacks.after_component_callback(self, **kwargs)
|
|
|
|
if scripts.scripts_current is not None:
|
|
scripts.scripts_current.after_component(self, **kwargs)
|
|
|
|
return res
|
|
|
|
|
|
def Blocks_get_config_file(self, *args, **kwargs):
|
|
config = original_Blocks_get_config_file(self, *args, **kwargs)
|
|
|
|
for comp_config in config["components"]:
|
|
if "example_inputs" in comp_config:
|
|
comp_config["example_inputs"] = {"serialized": []}
|
|
|
|
return config
|
|
|
|
|
|
original_IOComponent_init = patches.patch(__name__, obj=gr.components.IOComponent, field="__init__", replacement=IOComponent_init)
|
|
original_Block_get_config = patches.patch(__name__, obj=gr.blocks.Block, field="get_config", replacement=Block_get_config)
|
|
original_BlockContext_init = patches.patch(__name__, obj=gr.blocks.BlockContext, field="__init__", replacement=BlockContext_init)
|
|
original_Blocks_get_config_file = patches.patch(__name__, obj=gr.blocks.Blocks, field="get_config_file", replacement=Blocks_get_config_file)
|
|
|
|
|
|
ui_tempdir.install_ui_tempdir_override()
|