Spaces:
Running
Running
File size: 7,471 Bytes
f575d14 cf1dbe1 4fd7f9a cf1dbe1 f575d14 1e9dd50 d1bc90c 1e9dd50 d1bc90c 1e9dd50 f575d14 ac07e15 cf1dbe1 15704fd cf1dbe1 f575d14 5519c1a cf1dbe1 f575d14 1e9dd50 f575d14 5519c1a f0ff983 f575d14 f0ff983 76b9a66 1e9dd50 818d649 5519c1a 818d649 f575d14 f0ff983 f575d14 76b9a66 f575d14 1e9dd50 f575d14 |
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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
import gradio as gr
from convert_url_to_diffusers_sdxl_gr import (
convert_url_to_diffusers_repo,
SCHEDULER_CONFIG_MAP,
)
vaes = [
"",
"https://huggingface.co/madebyollin/sdxl-vae-fp16-fix/blob/main/sdxl.vae.safetensors",
"https://huggingface.co/nubby/blessed-sdxl-vae-fp16-fix/blob/main/sdxl_vae-fp16fix-blessed.safetensors",
"https://huggingface.co/John6666/safetensors_converting_test/blob/main/xlVAEC_e7.safetensors",
"https://huggingface.co/John6666/safetensors_converting_test/blob/main/xlVAEC_f1.safetensors",
]
loras = [
"",
"https://huggingface.co/SPO-Diffusion-Models/SPO-SDXL_4k-p_10ep_LoRA/blob/main/spo_sdxl_10ep_4k-data_lora_diffusers.safetensors",
"https://huggingface.co/wangfuyun/PCM_Weights/blob/main/sdxl/pcm_sdxl_smallcfg_2step_converted.safetensors",
"https://huggingface.co/wangfuyun/PCM_Weights/blob/main/sdxl/pcm_sdxl_smallcfg_4step_converted.safetensors",
"https://huggingface.co/wangfuyun/PCM_Weights/blob/main/sdxl/pcm_sdxl_smallcfg_8step_converted.safetensors",
"https://huggingface.co/wangfuyun/PCM_Weights/blob/main/sdxl/pcm_sdxl_normalcfg_8step_converted.safetensors",
"https://huggingface.co/wangfuyun/PCM_Weights/blob/main/sdxl/pcm_sdxl_normalcfg_16step_converted.safetensors",
"https://huggingface.co/ByteDance/Hyper-SD/blob/main/Hyper-SDXL-1step-lora.safetensors",
"https://huggingface.co/ByteDance/Hyper-SD/blob/main/Hyper-SDXL-2steps-lora.safetensors",
"https://huggingface.co/ByteDance/Hyper-SD/blob/main/Hyper-SDXL-4steps-lora.safetensors",
"https://huggingface.co/ByteDance/Hyper-SD/blob/main/Hyper-SDXL-8steps-CFG-lora.safetensors",
"https://huggingface.co/ByteDance/Hyper-SD/blob/main/Hyper-SDXL-12steps-CFG-lora.safetensors",
"https://huggingface.co/latent-consistency/lcm-lora-sdxl/blob/main/pytorch_lora_weights.safetensors",
]
schedulers = list(SCHEDULER_CONFIG_MAP.keys())
preset_dict = {
"Default": [True, "", "Euler a", "", 1.0, "", 1.0, "", 1.0, "", 1.0, "", 1.0],
"Bake in standard VAE": [True, "https://huggingface.co/madebyollin/sdxl-vae-fp16-fix/blob/main/sdxl.vae.safetensors",
"Euler a", "", 1.0, "", 1.0, "", 1.0, "", 1.0, "", 1.0],
"Hyper-SDXL / SPO": [True, "https://huggingface.co/madebyollin/sdxl-vae-fp16-fix/blob/main/sdxl.vae.safetensors",
"TCD", "https://huggingface.co/ByteDance/Hyper-SD/blob/main/Hyper-SDXL-8steps-CFG-lora.safetensors", 1.0,
"https://huggingface.co/SPO-Diffusion-Models/SPO-SDXL_4k-p_10ep_LoRA/blob/main/spo_sdxl_10ep_4k-data_lora_diffusers.safetensors",
1.0, "", 1.0, "", 1.0, "", 1.0],
}
def set_presets(preset: str="Default"):
p = []
if preset in preset_dict.keys(): p = preset_dict[preset]
else: p = preset_dict["Default"]
return p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8], p[9], p[10], p[11], p[12]
css = """"""
with gr.Blocks(theme="NoCrypt/miku@>=1.2.2", css=css) as demo:
gr.Markdown("# Download and convert any Stable Diffusion XL safetensors to Diffusers and create your repo")
gr.Markdown(
f"""
- [A CLI version of this tool (without uploading-related function) is available here](https://huggingface.co/spaces/John6666/sdxl-to-diffusers-v2/tree/main/local).
**⚠️IMPORTANT NOTICE⚠️**<br>
From an information security standpoint, it is dangerous to expose your access token or key to others.
If you do use it, I recommend that you duplicate this space on your own account before doing so.
Keys and tokens could be set to SECRET (HF_TOKEN, CIVITAI_API_KEY) if it's placed in your own space.
It saves you the trouble of typing them in.<br>
<br>
**The steps are the following**:
- Paste a write-access token from [hf.co/settings/tokens](https://huggingface.co/settings/tokens).
- Input a model download url from the Hub or Civitai or other sites.
- If you want to download a model from Civitai, paste a Civitai API Key.
- Input your HF user ID. e.g. 'yourid'.
- Input your new repo name. If empty, auto-complete. e.g. 'newrepo'.
- Set the parameters. If not sure, just use the defaults.
- Click "Submit".
- Patiently wait until the output changes. It takes approximately 2 to 3 minutes (downloading from HF).
"""
)
with gr.Column():
dl_url = gr.Textbox(label="URL to download", placeholder="https://huggingface.co/bluepen5805/blue_pencil-XL/blob/main/blue_pencil-XL-v7.0.0.safetensors", value="", max_lines=1)
hf_user = gr.Textbox(label="Your HF user ID", placeholder="username", value="", max_lines=1)
hf_repo = gr.Textbox(label="New repo name", placeholder="reponame", info="If empty, auto-complete", value="", max_lines=1)
hf_token = gr.Textbox(label="Your HF write token", placeholder="hf_...", value="", max_lines=1)
civitai_key = gr.Textbox(label="Your Civitai API Key (Optional)", info="If you download model from Civitai...", placeholder="", value="", max_lines=1)
is_upload_sf = gr.Checkbox(label="Upload single safetensors file into new repo", value=False)
is_private = gr.Checkbox(label="Create private repo", value=True)
presets = gr.Radio(label="Presets", choices=list(preset_dict.keys()), value="Default")
with gr.Accordion("Advanced settings", open=False):
is_half = gr.Checkbox(label="Half precision", value=True)
vae = gr.Dropdown(label="VAE", choices=vaes, value="", allow_custom_value=True)
scheduler = gr.Dropdown(label="Scheduler (Sampler)", choices=schedulers, value="Euler a")
lora1 = gr.Dropdown(label="LoRA1", choices=loras, value="", allow_custom_value=True)
lora1s = gr.Slider(minimum=-2, maximum=2, step=0.01, value=1.00, label="LoRA1 weight scale")
lora2 = gr.Dropdown(label="LoRA2", choices=loras, value="", allow_custom_value=True)
lora2s = gr.Slider(minimum=-2, maximum=2, step=0.01, value=1.00, label="LoRA2 weight scale")
lora3 = gr.Dropdown(label="LoRA3", choices=loras, value="", allow_custom_value=True)
lora3s = gr.Slider(minimum=-2, maximum=2, step=0.01, value=1.00, label="LoRA3 weight scale")
lora4 = gr.Dropdown(label="LoRA4", choices=loras, value="", allow_custom_value=True)
lora4s = gr.Slider(minimum=-2, maximum=2, step=0.01, value=1.00, label="LoRA4 weight scale")
lora5 = gr.Dropdown(label="LoRA5", choices=loras, value="", allow_custom_value=True)
lora5s = gr.Slider(minimum=-2, maximum=2, step=0.01, value=1.00, label="LoRA5 weight scale")
run_button = gr.Button(value="Submit")
repo_urls = gr.CheckboxGroup(visible=False, choices=[], value=None)
output_md = gr.Markdown(label="Output")
gr.DuplicateButton(value="Duplicate Space")
gr.on(
triggers=[run_button.click],
fn=convert_url_to_diffusers_repo,
inputs=[dl_url, hf_user, hf_repo, hf_token, civitai_key, is_private, is_upload_sf, repo_urls, is_half, vae, scheduler,
lora1, lora1s, lora2, lora2s, lora3, lora3s, lora4, lora4s, lora5, lora5s],
outputs=[repo_urls, output_md],
)
presets.change(
fn=set_presets,
inputs=[presets],
outputs=[is_half, vae, scheduler, lora1, lora1s, lora2, lora2s, lora3, lora3s, lora4, lora4s, lora5, lora5s],
queue=False,
)
demo.queue()
demo.launch()
|