diff --git a/CHANGELOG.md b/CHANGELOG.md index 219e735b7..581940f55 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,24 +4,31 @@ ### Highlights for 2024-06-21 -Following zero-day **SD3** release, a week later here's a refresh with more than a few improvements. -But there's more than SD3: -- support for quantized **T5** text encoder in all models that use T5: FP4/FP8/FP16/INT8 (SD3, PixArt-Σ, etc) -- support for **PixArt-Sigma** in small/medium/large variants +Following zero-day **SD3** release, a week later here's a refresh with 10+ improvements +including full prompt attention, support for compressed weights, additional text-encoder quantization modes. + +But there's more than SD3: +- support for quantized **T5** text encoder in all models that use T5: FP4/FP8/FP16/INT8 (SD3, PixArt-Σ, etc) +- support for **PixArt-Sigma** in small/medium/large variants - support for **HunyuanDiT 1.1** - (finally) new release of **Torch-DirectML** +- over 20 overall fixes ### Model Improvements - **SD3**: enable tiny-VAE (TAESD) preview and non-full quality mode - SD3: enable base LoRA support - SD3: add support for FP4 quantized T5 text encoder - simply select in *settings -> model -> text encoder* + simply select in *settings -> model -> text encoder* + *note* for SD3 with T5, set SD.Next to use FP16 precision, not BF16 precision - SD3: add support for INT8 quantized T5 text encoder, thanks @Disty0! - SD3: enable cpu-offloading for T5 text encoder, thanks @Disty0! - SD3: simplified loading of model in single-file safetensors format model load can now be performed fully offline - SD3: add support for NNCF compressed weights, thanks @Disty0! +- SD3: full support for prompt parsing and attention, thanks @AI-Casanova! +- SD3: ability to target different prompts to each of text-encoders, thanks @AI-Casanova! + example: `dog TE2: cat TE3: bird` - SD3: add support for sampler shift for Euler FlowMatch see *settings -> samplers*, also available as param in xyz grid higher shift means model will spend more time on structure and less on details @@ -32,7 +39,6 @@ But there's more than SD3: simply select in *settings -> model -> text encoder* before or after model load - **HunyuanDiT**: support for model version 1.1 - ### Improvements: General - support FP4 quantized T5 text encoder, in addtion to existing FP8 and FP16 diff --git a/modules/sd_models.py b/modules/sd_models.py index 80a852b0a..e27372492 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -562,30 +562,30 @@ def detect_pipeline(f: str, op: str = 'model', warning=True, quiet=False): # guess by size if os.path.isfile(f) and f.endswith('.safetensors'): size = round(os.path.getsize(f) / 1024 / 1024) - if size < 128: + if (size < 128): warn(f'Model size smaller than expected: {f} size={size} MB') elif (size >= 316 and size <= 324) or (size >= 156 and size <= 164): # 320 or 160 warn(f'Model detected as VAE model, but attempting to load as model: {op}={f} size={size} MB') guess = 'VAE' - elif size >= 4970 and size <= 4976: # 4973 + elif (size >= 4970 and size <= 4976): # 4973 guess = 'Stable Diffusion 2' # SD v2 but could be eps or v-prediction # elif size < 0: # unknown # guess = 'Stable Diffusion 2B' - elif size >= 5791 and size <= 5799: # 5795 + elif (size >= 5791 and size <= 5799): # 5795 if op == 'model': warn(f'Model detected as SD-XL refiner model, but attempting to load a base model: {op}={f} size={size} MB') guess = 'Stable Diffusion XL Refiner' elif (size >= 6611 and size <= 7220): # 6617, HassakuXL is 6776, monkrenRealisticINT_v10 is 7217 guess = 'Stable Diffusion XL' - elif size >= 3361 and size <= 3369: # 3368 + elif (size >= 3361 and size <= 3369): # 3368 guess = 'Stable Diffusion Upscale' - elif size >= 4891 and size <= 4899: # 4897 + elif (size >= 4891 and size <= 4899): # 4897 guess = 'Stable Diffusion XL Inpaint' - elif size >= 9791 and size <= 9799: # 9794 + elif (size >= 9791 and size <= 9799): # 9794 guess = 'Stable Diffusion XL Instruct' - elif size > 3138 and size < 3142: #3140 + elif (size > 3138 and size < 3142): #3140 guess = 'Stable Diffusion XL' - elif size > 5692 and size < 5698 or size > 4134 and size < 4138: + elif (size > 5692 and size < 5698) or (size > 4134 and size < 4138) or (size > 10362 and size < 10366): guess = 'Stable Diffusion 3' # guess by name """