Commit bb6a0cc for stable-diffusion.cpp
commit bb6a0ccfa31ef24d776d951580a51599797d8cc0
Author: leejet <leejet714@gmail.com>
Date: Sun Oct 25 16:55:45 2026 +0800
feat: support FLUX.3 Diffusers LoRA tensor names (#2214)
diff --git a/src/name_conversion.cpp b/src/name_conversion.cpp
index f37c4dd..57a41c5 100644
--- a/src/name_conversion.cpp
+++ b/src/name_conversion.cpp
@@ -708,6 +708,24 @@ std::string convert_diffusers_dit_to_original_flux(std::string name) {
return name;
}
+static std::string convert_diffusers_dit_to_original_flux3(std::string name) {
+ static const std::vector<std::pair<std::string, std::string>> prefix_map = {
+ {"single_transformer_blocks.", "single_blocks."},
+ {"mode_blocks.", "content_mode_blocks."},
+ };
+ static const std::vector<std::pair<std::string, std::string>> name_map = {
+ {".attn.to_q.", ".q_proj."},
+ {".attn.to_k.", ".k_proj."},
+ {".attn.to_v.", ".v_proj."},
+ {".attn.to_out.0.", ".attn_out."},
+ {".ff.linear_in.", ".mlp_in."},
+ {".ff.linear_out.", ".mlp_out."},
+ };
+ replace_with_prefix_map(name, prefix_map);
+ replace_with_name_map(name, name_map);
+ return name;
+}
+
std::string convert_hunyuan_video_to_original_flux(std::string name) {
int num_layers = 54;
int num_single_layers = 0;
@@ -1077,6 +1095,8 @@ std::string convert_diffusion_model_name(std::string name, std::string prefix, S
name = convert_diffusers_dit_to_original_sd3(name);
} else if (sd_version_is_flux(version) || sd_version_is_flux2(version) || sd_version_is_longcat(version) || sd_version_is_sefi_image(version)) {
name = convert_diffusers_dit_to_original_flux(name);
+ } else if (sd_version_is_flux3(version)) {
+ name = convert_diffusers_dit_to_original_flux3(name);
} else if (sd_version_is_hunyuan_video(version)) {
name = convert_hunyuan_video_to_original_flux(name);
} else if (version == VERSION_MOSS_IMAGE) {