mirror of
https://github.com/LostRuins/koboldcpp.git
synced 2026-09-19 09:15:18 +02:00
added qwen image support (+1 squashed commits)
Squashed commits: [92df28061] added qwen image support (+1 squashed commits) Squashed commits: [1485c71ed] wip adding qwen image
This commit is contained in:
+40
-36
@@ -290,8 +290,8 @@ class sd_load_model_inputs(ctypes.Structure):
|
||||
("taesd", ctypes.c_bool),
|
||||
("tiled_vae_threshold", ctypes.c_int),
|
||||
("t5xxl_filename", ctypes.c_char_p),
|
||||
("clipl_filename", ctypes.c_char_p),
|
||||
("clipg_filename", ctypes.c_char_p),
|
||||
("clip1_filename", ctypes.c_char_p),
|
||||
("clip2_filename", ctypes.c_char_p),
|
||||
("vae_filename", ctypes.c_char_p),
|
||||
("lora_filename", ctypes.c_char_p),
|
||||
("lora_multiplier", ctypes.c_float),
|
||||
@@ -1700,7 +1700,7 @@ def sd_quant_option(value):
|
||||
except Exception:
|
||||
return 0
|
||||
|
||||
def sd_load_model(model_filename,vae_filename,lora_filename,t5xxl_filename,clipl_filename,clipg_filename,photomaker_filename):
|
||||
def sd_load_model(model_filename,vae_filename,lora_filename,t5xxl_filename,clip1_filename,clip2_filename,photomaker_filename):
|
||||
global args
|
||||
inputs = sd_load_model_inputs()
|
||||
inputs.model_filename = model_filename.encode("UTF-8")
|
||||
@@ -1726,8 +1726,8 @@ def sd_load_model(model_filename,vae_filename,lora_filename,t5xxl_filename,clipl
|
||||
inputs.lora_filename = lora_filename.encode("UTF-8")
|
||||
inputs.lora_multiplier = args.sdloramult
|
||||
inputs.t5xxl_filename = t5xxl_filename.encode("UTF-8")
|
||||
inputs.clipl_filename = clipl_filename.encode("UTF-8")
|
||||
inputs.clipg_filename = clipg_filename.encode("UTF-8")
|
||||
inputs.clip1_filename = clip1_filename.encode("UTF-8")
|
||||
inputs.clip2_filename = clip2_filename.encode("UTF-8")
|
||||
inputs.photomaker_filename = photomaker_filename.encode("UTF-8")
|
||||
inputs.img_hard_limit = args.sdclamped
|
||||
inputs.img_soft_limit = args.sdclampedsoft
|
||||
@@ -4661,8 +4661,8 @@ def show_gui():
|
||||
sd_loramult_var = ctk.StringVar(value="1.0")
|
||||
sd_vae_var = ctk.StringVar()
|
||||
sd_t5xxl_var = ctk.StringVar()
|
||||
sd_clipl_var = ctk.StringVar()
|
||||
sd_clipg_var = ctk.StringVar()
|
||||
sd_clip1_var = ctk.StringVar()
|
||||
sd_clip2_var = ctk.StringVar()
|
||||
sd_photomaker_var = ctk.StringVar()
|
||||
sd_flash_attention_var = ctk.IntVar(value=0)
|
||||
sd_offload_cpu_var = ctk.IntVar(value=0)
|
||||
@@ -5427,9 +5427,9 @@ def show_gui():
|
||||
makefileentry(images_tab, "Image LoRA:", "Select SD lora file",sd_lora_var, 20, width=160, singlerow=True, filetypes=[("*.safetensors *.gguf", "*.safetensors *.gguf")],tooltiptxt="Select a .safetensors or .gguf SD LoRA model file to be loaded. Should be unquantized!")
|
||||
makelabelentry(images_tab, "Multiplier:" , sd_loramult_var, 20, 50,padx=390,singleline=True,tooltip="What mutiplier value to apply the SD LoRA with.",labelpadx=330)
|
||||
|
||||
makefileentry(images_tab, "T5-XXL File:", "Select Optional T5-XXL model file (SD3 or flux)",sd_t5xxl_var, 24, width=280, singlerow=True, filetypes=[("*.safetensors *.gguf","*.safetensors *.gguf")],tooltiptxt="Select a .safetensors t5xxl file to be loaded.")
|
||||
makefileentry(images_tab, "Clip-L File:", "Select Optional Clip-L model file (SD3 or flux)",sd_clipl_var, 26, width=280, singlerow=True, filetypes=[("*.safetensors *.gguf","*.safetensors *.gguf")],tooltiptxt="Select a .safetensors t5xxl file to be loaded.")
|
||||
makefileentry(images_tab, "Clip-G File:", "Select Optional Clip-G model file (SD3)",sd_clipg_var, 28, width=280, singlerow=True, filetypes=[("*.safetensors *.gguf","*.safetensors *.gguf")],tooltiptxt="Select a .safetensors t5xxl file to be loaded.")
|
||||
makefileentry(images_tab, "T5-XXL File:", "Select T5-XXL model file (SD3, Flux, WAN)",sd_t5xxl_var, 24, width=280, singlerow=True, filetypes=[("*.safetensors *.gguf","*.safetensors *.gguf")],tooltiptxt="Select a .safetensors t5xxl file to be loaded.")
|
||||
makefileentry(images_tab, "Clip-1 File:", "Select First Clip model file (Clip-L for SD3 or Flux, or other vision encoder)",sd_clip1_var, 26, width=280, singlerow=True, filetypes=[("*.safetensors *.gguf","*.safetensors *.gguf")],tooltiptxt="Select a .safetensors Clip-1 file to be loaded.\nThis is Clip-L for SD3 and Flux, or Clip Vision for WAN and QwenImage")
|
||||
makefileentry(images_tab, "Clip-2 File:", "Select Second Clip model file (Clip-G for SD3)",sd_clip2_var, 28, width=280, singlerow=True, filetypes=[("*.safetensors *.gguf","*.safetensors *.gguf")],tooltiptxt="Select a .safetensors Clip-2 file to be loaded.\nThis is Clip-G for SD3")
|
||||
makefileentry(images_tab, "PhotoMaker:", "Select Optional PhotoMaker model file (SDXL)",sd_photomaker_var, 30, width=280, singlerow=True, filetypes=[("*.safetensors *.gguf","*.safetensors *.gguf")],tooltiptxt="PhotoMaker is a model that allows face cloning.\nSelect a .safetensors PhotoMaker file to be loaded (SDXL only).")
|
||||
|
||||
sdvaeitem1,sdvaeitem2,sdvaeitem3 = makefileentry(images_tab, "Image VAE:", "Select Optional SD VAE file",sd_vae_var, 40, width=280, singlerow=True, filetypes=[("*.safetensors *.gguf", "*.safetensors *.gguf")],tooltiptxt="Select a .safetensors or .gguf SD VAE file to be loaded.")
|
||||
@@ -5711,10 +5711,10 @@ def show_gui():
|
||||
args.sdconvdirect = sd_convdirect_option(sd_convdirect_var.get())
|
||||
if sd_t5xxl_var.get() != "":
|
||||
args.sdt5xxl = sd_t5xxl_var.get()
|
||||
if sd_clipl_var.get() != "":
|
||||
args.sdclipl = sd_clipl_var.get()
|
||||
if sd_clipg_var.get() != "":
|
||||
args.sdclipg = sd_clipg_var.get()
|
||||
if sd_clip1_var.get() != "":
|
||||
args.sdclip1 = sd_clip1_var.get()
|
||||
if sd_clip2_var.get() != "":
|
||||
args.sdclip2 = sd_clip2_var.get()
|
||||
if sd_photomaker_var.get() != "":
|
||||
args.sdphotomaker = sd_photomaker_var.get()
|
||||
args.sdquant = sd_quant_option(sd_quant_var.get())
|
||||
@@ -5941,8 +5941,8 @@ def show_gui():
|
||||
sd_convdirect_var.set(sd_convdirect_option(dict.get("sdconvdirect")))
|
||||
sd_vae_var.set(dict["sdvae"] if ("sdvae" in dict and dict["sdvae"]) else "")
|
||||
sd_t5xxl_var.set(dict["sdt5xxl"] if ("sdt5xxl" in dict and dict["sdt5xxl"]) else "")
|
||||
sd_clipl_var.set(dict["sdclipl"] if ("sdclipl" in dict and dict["sdclipl"]) else "")
|
||||
sd_clipg_var.set(dict["sdclipg"] if ("sdclipg" in dict and dict["sdclipg"]) else "")
|
||||
sd_clip1_var.set(dict["sdclip1"] if ("sdclip1" in dict and dict["sdclip1"]) else "")
|
||||
sd_clip2_var.set(dict["sdclip2"] if ("sdclip2" in dict and dict["sdclip2"]) else "")
|
||||
sd_photomaker_var.set(dict["sdphotomaker"] if ("sdphotomaker" in dict and dict["sdphotomaker"]) else "")
|
||||
sd_vaeauto_var.set(1 if ("sdvaeauto" in dict and dict["sdvaeauto"]) else 0)
|
||||
sd_tiled_vae_var.set(str(dict["sdtiledvae"]) if ("sdtiledvae" in dict and dict["sdtiledvae"]) else str(default_vae_tile_threshold))
|
||||
@@ -6317,6 +6317,10 @@ def convert_invalid_args(args):
|
||||
dict["sdtiledvae"] = (0 if (dict["sdnotile"]) else default_vae_tile_threshold) # convert legacy option
|
||||
if 'sdquant' in dict and type(dict['sdquant']) is bool:
|
||||
dict['sdquant'] = 2 if dict['sdquant'] else 0
|
||||
if "sdclipl" in dict and "sdclip1" not in dict:
|
||||
dict["sdclip1"] = dict["sdclipl"]
|
||||
if "sdclipg" in dict and "sdclip2" not in dict:
|
||||
dict["sdclip2"] = dict["sdclipg"]
|
||||
return args
|
||||
|
||||
def setuptunnel(global_memory, has_sd):
|
||||
@@ -7011,14 +7015,14 @@ def kcpp_main_process(launch_args, g_memory=None, gui_launcher=False):
|
||||
dlfile = download_model_from_url(args.sdt5xxl,[".gguf",".safetensors"],min_file_size=500000)
|
||||
if dlfile:
|
||||
args.sdt5xxl = dlfile
|
||||
if args.sdclipl and args.sdclipl!="":
|
||||
dlfile = download_model_from_url(args.sdclipl,[".gguf",".safetensors"],min_file_size=500000)
|
||||
if args.sdclip1 and args.sdclip1!="":
|
||||
dlfile = download_model_from_url(args.sdclip1,[".gguf",".safetensors"],min_file_size=500000)
|
||||
if dlfile:
|
||||
args.sdclipl = dlfile
|
||||
if args.sdclipg and args.sdclipg!="":
|
||||
dlfile = download_model_from_url(args.sdclipg,[".gguf",".safetensors"],min_file_size=500000)
|
||||
args.sdclip1 = dlfile
|
||||
if args.sdclip2 and args.sdclip2!="":
|
||||
dlfile = download_model_from_url(args.sdclip2,[".gguf",".safetensors"],min_file_size=500000)
|
||||
if dlfile:
|
||||
args.sdclipg = dlfile
|
||||
args.sdclip2 = dlfile
|
||||
if args.sdphotomaker and args.sdphotomaker!="":
|
||||
dlfile = download_model_from_url(args.sdphotomaker,[".gguf",".safetensors"],min_file_size=500000)
|
||||
if dlfile:
|
||||
@@ -7303,8 +7307,8 @@ def kcpp_main_process(launch_args, g_memory=None, gui_launcher=False):
|
||||
imglora = ""
|
||||
imgvae = ""
|
||||
imgt5xxl = ""
|
||||
imgclipl = ""
|
||||
imgclipg = ""
|
||||
imgclip1 = ""
|
||||
imgclip2 = ""
|
||||
imgphotomaker = ""
|
||||
if args.sdlora:
|
||||
if os.path.exists(args.sdlora):
|
||||
@@ -7321,16 +7325,16 @@ def kcpp_main_process(launch_args, g_memory=None, gui_launcher=False):
|
||||
imgt5xxl = os.path.abspath(args.sdt5xxl)
|
||||
else:
|
||||
print("Missing SD T5-XXL model file...")
|
||||
if args.sdclipl:
|
||||
if os.path.exists(args.sdclipl):
|
||||
imgclipl = os.path.abspath(args.sdclipl)
|
||||
if args.sdclip1:
|
||||
if os.path.exists(args.sdclip1):
|
||||
imgclip1 = os.path.abspath(args.sdclip1)
|
||||
else:
|
||||
print("Missing SD Clip-L model file...")
|
||||
if args.sdclipg:
|
||||
if os.path.exists(args.sdclipg):
|
||||
imgclipg = os.path.abspath(args.sdclipg)
|
||||
print("Missing SD Clip-1 model file...")
|
||||
if args.sdclip2:
|
||||
if os.path.exists(args.sdclip2):
|
||||
imgclip2 = os.path.abspath(args.sdclip2)
|
||||
else:
|
||||
print("Missing SD Clip-G model file...")
|
||||
print("Missing SD Clip-2 model file...")
|
||||
if args.sdphotomaker:
|
||||
if os.path.exists(args.sdphotomaker):
|
||||
imgphotomaker = os.path.abspath(args.sdphotomaker)
|
||||
@@ -7342,7 +7346,7 @@ def kcpp_main_process(launch_args, g_memory=None, gui_launcher=False):
|
||||
friendlysdmodelname = os.path.basename(imgmodel)
|
||||
friendlysdmodelname = os.path.splitext(friendlysdmodelname)[0]
|
||||
friendlysdmodelname = sanitize_string(friendlysdmodelname)
|
||||
loadok = sd_load_model(imgmodel,imgvae,imglora,imgt5xxl,imgclipl,imgclipg,imgphotomaker)
|
||||
loadok = sd_load_model(imgmodel,imgvae,imglora,imgt5xxl,imgclip1,imgclip2,imgphotomaker)
|
||||
print("Load Image Model OK: " + str(loadok))
|
||||
if not loadok:
|
||||
exitcounter = 999
|
||||
@@ -7761,9 +7765,9 @@ if __name__ == '__main__':
|
||||
sdparsergroup.add_argument("--sdthreads", metavar=('[threads]'), help="Use a different number of threads for image generation if specified. Otherwise, has the same value as --threads.", type=int, default=0)
|
||||
sdparsergroup.add_argument("--sdclamped", metavar=('[maxres]'), help="If specified, limit generation steps and image size for shared use. Accepts an extra optional parameter that indicates maximum resolution (eg. 768 clamps to 768x768, min 512px, disabled if 0).", nargs='?', const=512, type=int, default=0)
|
||||
sdparsergroup.add_argument("--sdclampedsoft", metavar=('[maxres]'), help="If specified, limit max image size to curb memory usage. Similar to --sdclamped, but less strict, allows trade-offs between width and height (e.g. 640 would allow 640x640, 512x768 and 768x512 images). Total resolution cannot exceed 1MP.", type=int, default=0)
|
||||
sdparsergroup.add_argument("--sdt5xxl", metavar=('[filename]'), help="Specify a T5-XXL safetensors model for use in SD3 or Flux. Leave blank if prebaked or unused.", default="")
|
||||
sdparsergroup.add_argument("--sdclipl", metavar=('[filename]'), help="Specify a Clip-L safetensors model for use in SD3 or Flux. Leave blank if prebaked or unused.", default="")
|
||||
sdparsergroup.add_argument("--sdclipg", metavar=('[filename]'), help="Specify a Clip-G safetensors model for use in SD3. Leave blank if prebaked or unused.", default="")
|
||||
sdparsergroup.add_argument("--sdt5xxl", metavar=('[filename]'), help="Specify a T5-XXL safetensors model. Leave blank if prebaked or unused.", default="")
|
||||
sdparsergroup.add_argument("--sdclip1", "--sdclipl", metavar=('[filename]'), help="Specify first safetensors Clip model (SD3 or Flux Clip-L, WAN or QwenImg vision). Leave blank if prebaked or unused.", default="")
|
||||
sdparsergroup.add_argument("--sdclip2", "--sdclipg", metavar=('[filename]'), help="Specify second safetensors Clip model (SD3 Clip-G). Leave blank if prebaked or unused.", default="")
|
||||
sdparsergroup.add_argument("--sdphotomaker", metavar=('[filename]'), help="PhotoMaker is a model that allows face cloning. Specify a PhotoMaker safetensors model which will be applied replacing img2img. SDXL models only. Leave blank if unused.", default="")
|
||||
sdparsergroup.add_argument("--sdflashattention", help="Enables Flash Attention for image generation.", action='store_true')
|
||||
sdparsergroup.add_argument("--sdoffloadcpu", help="Offload image weights in RAM to save VRAM, swap into VRAM when needed.", action='store_true')
|
||||
|
||||
Reference in New Issue
Block a user