Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
e1275af
first cleanup
ArthurZucker Oct 13, 2026
82d6600
more cleanup
ArthurZucker Oct 13, 2026
55a30d4
update
ArthurZucker Oct 13, 2026
09c4a31
sub config fixes
ArthurZucker Oct 13, 2026
b0f1a47
more simplification
ArthurZucker Oct 13, 2026
d59c65f
debloat more shit, standardize
ArthurZucker Oct 13, 2026
a18a8ba
Merge branch 'main' into clean-fp8
ArthurZucker Oct 13, 2026
d827652
nits
ArthurZucker Oct 13, 2026
b60a646
Merge branch 'clean-fp8' of github.com:huggingface/transformers into …
ArthurZucker Oct 13, 2026
22306f0
fucking bloatland
ArthurZucker Oct 13, 2026
1986e77
Fix PR slow CI suggestion install: non-editable install
ArthurZucker Oct 13, 2026
37a685f
update now that the $ bloat is gone
ArthurZucker Oct 13, 2026
1b89c27
Fix PR slow CI suggestion: install transformers in a venv (system sit…
ArthurZucker Oct 13, 2026
54b9037
metal tests: unanchored weight key
ArthurZucker Oct 13, 2026
6ec139f
nits this time
ArthurZucker Oct 13, 2026
1989c65
up
ArthurZucker Oct 13, 2026
2a78fb4
remove last pieces of dead code
ArthurZucker Oct 13, 2026
52af127
fix failing test
ArthurZucker Oct 13, 2026
c656891
fix test
ArthurZucker Oct 13, 2026
783cb72
Merge branch 'main' into clean-fp8
ArthurZucker Oct 13, 2026
84ae499
pr comments
ArthurZucker Oct 14, 2026
3c63249
human coments
ArthurZucker Oct 14, 2026
5b6eab1
Treat scales and etc individually?
ArthurZucker Oct 14, 2026
bfb63e2
use a map
ArthurZucker Oct 14, 2026
f850c82
replicate explicitely
ArthurZucker Oct 14, 2026
599614f
impl copy
ArthurZucker Oct 14, 2026
efe37ea
Merge branch 'main' into clean-fp8
ArthurZucker Oct 16, 2026
1dd7efd
Quantized element size as property, one-line FP8Experts comments, ue8…
ArthurZucker Oct 16, 2026
180a75c
Merge remote-tracking branch 'origin/clean-fp8' into clean-fp8
ArthurZucker Oct 16, 2026
602fd8b
Drop the $ anchor from the bailing_hybrid expert_bias renaming, patte…
ArthurZucker Oct 16, 2026
e185b45
Restore the 1 byte quantized element size of FineGrainedFP8
ArthurZucker Oct 16, 2026
d6624ae
Quantized element size as a property in every quantizer
ArthurZucker Oct 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion examples/quantization/custom_quantization_int8_example.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,6 @@ class Int8SymmetricQuantizer(HfQuantizer):
"""

requires_calibration = False
requires_parameters_quantization = True

def __init__(self, quantization_config: QuantizationConfigMixin, **kwargs):
super().__init__(quantization_config, **kwargs)
Expand Down
76 changes: 34 additions & 42 deletions src/transformers/conversion_mapping.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ def _build_checkpoint_conversion_mapping():
# General HC prefix which is dropped
WeightRenaming(r"\.hc_pre\.hc_", ".hc_"),
# Attn gating + sinks
WeightRenaming(r"\.learnable_sink_param$", ".sinks"),
WeightRenaming(r"\.learnable_sink_param", ".sinks"),
WeightRenaming(r"\.linear_gate", ".gate_proj"),
# Follow DSv4 HC standards
WeightRenaming(r"\.hc_attn_layer\.hc_fn", ".attn_hc.fn"),
Expand Down Expand Up @@ -247,8 +247,8 @@ def _build_checkpoint_conversion_mapping():
WeightRenaming(source_patterns=r"\.attn\.k_sconv", target_patterns=r".self_attn.k_sconv.conv1d"),
WeightRenaming(source_patterns=r"\.attn\.v_sconv", target_patterns=r".self_attn.v_sconv.conv1d"),
WeightRenaming(source_patterns=r"\.attn\.rel_logits_proj", target_patterns=r".self_attn.rel_logits_proj"),
WeightRenaming(source_patterns=r"attn_sconv\.weight$", target_patterns=r"attn_sconv.conv1d.weight"),
WeightRenaming(source_patterns=r"mlp_sconv\.weight$", target_patterns=r"mlp_sconv.conv1d.weight"),
WeightRenaming(source_patterns=r"attn_sconv\.weight", target_patterns=r"attn_sconv.conv1d.weight"),
WeightRenaming(source_patterns=r"mlp_sconv\.weight", target_patterns=r"mlp_sconv.conv1d.weight"),
WeightRenaming(source_patterns=r"mlp_norm", target_patterns=r"post_attention_layernorm"),
WeightRenaming(source_patterns=r"attn_norm", target_patterns=r"input_layernorm"),
],
Expand Down Expand Up @@ -470,8 +470,8 @@ def _build_checkpoint_conversion_mapping():
],
"SegformerForSemanticSegmentation": [WeightRenaming("decode_head.linear_c", "decode_head.linear_projections")],
"videomae": [
WeightRenaming(r"attention\.attention\.q_bias$", "attention.attention.query.bias"),
WeightRenaming(r"attention\.attention\.v_bias$", "attention.attention.value.bias"),
WeightRenaming(r"attention\.attention\.q_bias", "attention.attention.query.bias"),
WeightRenaming(r"attention\.attention\.v_bias", "attention.attention.value.bias"),
],
"swin": [
WeightRenaming("attention.self.query", "attention.q_proj"),
Expand Down Expand Up @@ -551,35 +551,35 @@ def _build_checkpoint_conversion_mapping():
WeightRenaming(source_patterns=r"\.ffn\.", target_patterns=r".mlp."),
WeightRenaming(source_patterns=r"\.indexer\.compressor\.", target_patterns=r"\.compressor\.indexer\."),
# Leaf patterns
WeightRenaming(source_patterns=r"^embed\.weight$", target_patterns="embed_tokens.weight"),
WeightRenaming(source_patterns=r"^head\.weight$", target_patterns="lm_head.weight"),
WeightRenaming(source_patterns=r"^hc_head_fn$", target_patterns="hc_head.hc_fn"),
WeightRenaming(source_patterns=r"^hc_head_base$", target_patterns="hc_head.hc_base"),
WeightRenaming(source_patterns=r"^hc_head_scale$", target_patterns="hc_head.hc_scale"),
WeightRenaming(source_patterns=r"^embed\.weight", target_patterns="embed_tokens.weight"),
WeightRenaming(source_patterns=r"^head\.weight", target_patterns="lm_head.weight"),
WeightRenaming(source_patterns=r"^hc_head_fn", target_patterns="hc_head.hc_fn"),
WeightRenaming(source_patterns=r"^hc_head_base", target_patterns="hc_head.hc_base"),
WeightRenaming(source_patterns=r"^hc_head_scale", target_patterns="hc_head.hc_scale"),
WeightRenaming(source_patterns=r"\.attn_norm\.", target_patterns=r".input_layernorm."),
WeightRenaming(source_patterns=r"\.ffn_norm\.", target_patterns=r".post_attention_layernorm."),
WeightRenaming(source_patterns=r"\.hc_attn_fn$", target_patterns=r".attn_hc.fn"),
WeightRenaming(source_patterns=r"\.hc_attn_base$", target_patterns=r".attn_hc.base"),
WeightRenaming(source_patterns=r"\.hc_attn_scale$", target_patterns=r".attn_hc.scale"),
WeightRenaming(source_patterns=r"\.hc_ffn_fn$", target_patterns=r".ffn_hc.fn"),
WeightRenaming(source_patterns=r"\.hc_ffn_base$", target_patterns=r".ffn_hc.base"),
WeightRenaming(source_patterns=r"\.hc_ffn_scale$", target_patterns=r".ffn_hc.scale"),
WeightRenaming(source_patterns=r"\.attn_sink$", target_patterns=r".sinks"),
WeightRenaming(source_patterns=r"\.hc_attn_fn", target_patterns=r".attn_hc.fn"),
WeightRenaming(source_patterns=r"\.hc_attn_base", target_patterns=r".attn_hc.base"),
WeightRenaming(source_patterns=r"\.hc_attn_scale", target_patterns=r".attn_hc.scale"),
WeightRenaming(source_patterns=r"\.hc_ffn_fn", target_patterns=r".ffn_hc.fn"),
WeightRenaming(source_patterns=r"\.hc_ffn_base", target_patterns=r".ffn_hc.base"),
WeightRenaming(source_patterns=r"\.hc_ffn_scale", target_patterns=r".ffn_hc.scale"),
WeightRenaming(source_patterns=r"\.attn_sink", target_patterns=r".sinks"),
WeightRenaming(
source_patterns=r"\.indexer\.weights_proj\.",
target_patterns=r"\.compressor\.indexer\.scorer\.weights_proj\.",
),
WeightRenaming(source_patterns=r"\.indexer\.wq_b\.", target_patterns=r"\.compressor\.indexer\.q_b_proj\."),
WeightRenaming(source_patterns=r"\.norm\.", target_patterns=r"\.kv_norm\."),
WeightRenaming(source_patterns=r"\.ape$", target_patterns=r"\.position_bias"),
WeightRenaming(source_patterns=r"\.ape", target_patterns=r"\.position_bias"),
WeightRenaming(source_patterns=r"\.wq_a\.", target_patterns=r".q_a_proj."),
WeightRenaming(source_patterns=r"\.self_attn\.wq_b\.", target_patterns=r"\.self_attn\.q_b_proj\."),
WeightRenaming(source_patterns=r"\.wkv\.", target_patterns=r".kv_proj."),
WeightRenaming(source_patterns=r"\.wgate\.", target_patterns=r".gate_proj."),
WeightRenaming(source_patterns=r"\.wo_a\.", target_patterns=r".o_a_proj."),
WeightRenaming(source_patterns=r"\.wo_b\.", target_patterns=r".o_b_proj."),
WeightRenaming(source_patterns=r"\.q_norm\.", target_patterns=r".q_a_norm."),
WeightRenaming(source_patterns=r"\.gate\.bias$", target_patterns=r".gate.e_score_correction_bias"),
WeightRenaming(source_patterns=r"\.gate\.bias", target_patterns=r".gate.e_score_correction_bias"),
WeightRenaming(source_patterns=r"\.shared_experts\.w1\.", target_patterns=r".shared_experts.gate_proj."),
WeightRenaming(source_patterns=r"\.shared_experts\.w2\.", target_patterns=r".shared_experts.down_proj."),
WeightRenaming(source_patterns=r"\.shared_experts\.w3\.", target_patterns=r".shared_experts.up_proj."),
Expand Down Expand Up @@ -997,18 +997,14 @@ def _build_checkpoint_conversion_mapping():
WeightRenaming(source_patterns=r"^model\.layers\.", target_patterns="model.language_model.layers."),
WeightRenaming(source_patterns=r"^model\.norm\.", target_patterns="model.language_model.norm."),
# ---- Pass 2: MoE renames ----
WeightRenaming(source_patterns=r"\.moe\.gate\.weight$", target_patterns=".mlp.gate.weight"),
WeightRenaming(source_patterns=r"\.moe\.gate\.weight", target_patterns=".mlp.gate.weight"),
WeightRenaming(
source_patterns=r"\.moe\.router_bias$",
source_patterns=r"\.moe\.router_bias",
target_patterns=".mlp.gate.e_score_correction_bias",
),
# A plain `WeightRenaming`, so FP8's `update_weight_conversions` won't auto-extend it
# with a `weight_scale_inv` sibling the way it does for the `gate_up_proj`
# `WeightConverter` below — the explicit rename right after this one covers that instead.
WeightRenaming(source_patterns=r"\.moe\.down_proj\.weight$", target_patterns=".mlp.experts.down_proj"),
# `down_proj`'s FP8 dequant scale; not auto-added since the rename above isn't a `WeightConverter`.
WeightRenaming(source_patterns=r"\.moe\.down_proj\.weight", target_patterns=".mlp.experts.down_proj"),
WeightRenaming(
source_patterns=r"\.moe\.down_proj\.weight_scale_inv$",
source_patterns=r"\.moe\.down_proj\.weight_scale_inv",
target_patterns=".mlp.experts.down_proj_scale_inv",
),
WeightRenaming(source_patterns=r"\.share_expert\.", target_patterns=".mlp.shared_experts."),
Expand All @@ -1023,17 +1019,17 @@ def _build_checkpoint_conversion_mapping():
# Scoped separately from "step3p7" above: bare substring patterns like `\.attn\.` -> `.self_attn.`
# would otherwise also match the text decoder's `language_model.layers.*.self_attn.*` keys.
"step3p5_vision": [
WeightRenaming(source_patterns=r"^conv1\.weight$", target_patterns="embeddings.patch_embedding.weight"),
WeightRenaming(source_patterns=r"^conv1\.weight", target_patterns="embeddings.patch_embedding.weight"),
WeightRenaming(
source_patterns=r"^positional_embedding$",
source_patterns=r"^positional_embedding",
target_patterns="embeddings.position_embedding.weight",
),
WeightRenaming(source_patterns=r"^transformer\.resblocks\.", target_patterns="layers."),
WeightRenaming(source_patterns=r"^ln_pre\.", target_patterns="pre_layernorm."),
WeightRenaming(source_patterns=r"^vit_downsampler1\.", target_patterns="downsampler1."),
WeightRenaming(source_patterns=r"^vit_downsampler2\.", target_patterns="downsampler2."),
WeightRenaming(source_patterns=r"\.ls_1\.gamma$", target_patterns=".lambda_1"),
WeightRenaming(source_patterns=r"\.ls_2\.gamma$", target_patterns=".lambda_2"),
WeightRenaming(source_patterns=r"\.ls_1\.gamma", target_patterns=".lambda_1"),
WeightRenaming(source_patterns=r"\.ls_2\.gamma", target_patterns=".lambda_2"),
WeightRenaming(source_patterns=r"\.mlp\.c_fc\.", target_patterns=".mlp.fc1."),
WeightRenaming(source_patterns=r"\.mlp\.c_proj\.", target_patterns=".mlp.fc2."),
WeightRenaming(source_patterns=r"\.attn\.", target_patterns=".self_attn."),
Expand Down Expand Up @@ -1591,8 +1587,8 @@ def _build_checkpoint_conversion_mapping():
),
],
"sapiens2": [
WeightRenaming(r"^cls_token$", r"embeddings.cls_token"),
WeightRenaming(r"^storage_tokens$", r"embeddings.register_tokens"),
WeightRenaming(r"^cls_token", r"embeddings.cls_token"),
WeightRenaming(r"^storage_tokens", r"embeddings.register_tokens"),
WeightRenaming(r"^patch_embed\.projection\.", r"embeddings.patch_embeddings."),
WeightRenaming(r"blocks\.(\d+)\.", r"model.layer.\1."),
WeightRenaming(r"attn\.proj\.", r"attention.o_proj."),
Expand All @@ -1601,7 +1597,7 @@ def _build_checkpoint_conversion_mapping():
WeightRenaming(r"attn\.wv\.", r"attention.v_proj."),
WeightRenaming(r"attn\.q_norm\.", r"attention.q_norm."),
WeightRenaming(r"attn\.k_norm\.", r"attention.k_norm."),
WeightRenaming(r"attn\.gamma\.weight$", r"layer_scale1.lambda1"),
WeightRenaming(r"attn\.gamma\.weight", r"layer_scale1.lambda1"),
WeightRenaming(r"ffn\.w3\.", r"mlp.down_proj."),
WeightRenaming(r"\.ln1\.", r".norm1."),
WeightRenaming(r"\.ln2\.", r".norm2."),
Expand Down Expand Up @@ -1964,11 +1960,11 @@ def _build_checkpoint_conversion_mapping():

mapping["legacy"] += [
WeightRenaming(
source_patterns=".weight_g$",
source_patterns=".weight_g",
target_patterns=".parametrizations.weight.original0",
),
WeightRenaming(
source_patterns=".weight_v$",
source_patterns=".weight_v",
target_patterns=".parametrizations.weight.original1",
),
]
Expand Down Expand Up @@ -2019,7 +2015,7 @@ def _build_checkpoint_conversion_mapping():
operations=[Concatenate(dim=0)],
),
WeightRenaming(r"\.self_attn\.dense\.", ".self_attn.o_proj."),
WeightRenaming(r"\.mlp\.gate\.expert_bias$", ".mlp.gate.e_score_correction_bias"),
WeightRenaming(r"\.mlp\.gate\.expert_bias", ".mlp.gate.e_score_correction_bias"),
]

mapping["ernie4_5_moe"] = mapping["qwen2_moe"].copy()
Expand Down Expand Up @@ -2317,11 +2313,7 @@ def get_model_conversion_mapping(
if add_legacy:
weight_conversions.extend(get_checkpoint_conversion_mapping("legacy"))

# Let the quantizer rewrite / augment the conversion pipeline. This is where the
# FP8 dequantizer (when `dequantize=True`) prepends a `Fp8Dequantize` op to
# every existing converter so that per-block scales are applied *before* any
# expert-merge / concat ops flatten the per-expert structure away.
if hf_quantizer is not None:
weight_conversions = hf_quantizer.update_weight_conversions(weight_conversions)
weight_conversions = hf_quantizer.update_weight_conversions(weight_conversions, model)

return weight_conversions
Loading
Loading