Skip to content

Use explicit nn.Buffer everywhere for modular - #47722

Merged
Cyrilvallez merged 5 commits into
mainfrom
explicit-buffer
Aug 4, 2026
Merged

Cyrilvallez merged 5 commits into
mainfrom
explicit-buffer

Conversation

@Cyrilvallez

@Cyrilvallez Cyrilvallez commented Aug 3, 2026 •

Copy link
Copy Markdown
Member

CI

What does this PR do?

As per the title. SInce we upgraded to torch>=2.5 recently, we can use the nn.Buffer class to register a buffer, similar to using nn.Parameter to register a custom param. This makes it much easier for modular, as we can start inheriting buffers and slightly modify them as it's a simple attribute, instead of having to redefine the whole __init__

@HuggingFaceDocBuilderDev

Copy link
Copy Markdown

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

[For maintainers] Suggested jobs to run (before merge)

run-slow: afmoe, aimv2, albert, align, altclip, apertus, arcee, aria, axk1, axk2, bamba, bark, bart, bert, bert_generation, big_bird

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

CI recap

Dashboard: View test results in Grafana
Latest run: 30789181325:1
Result: success | Jobs: 16 | Tests: 161,975 | Failures: 0 | Duration: 16h 37m

@vasqu vasqu left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should add an mlinter rule for this now? Should be fairly straightforward

I.e. automatically reject register buffer calls

@Cyrilvallez
Cyrilvallez merged commit d6abd13 into main Aug 4, 2026
113 checks passed
@Cyrilvallez
Cyrilvallez deleted the explicit-buffer branch August 4, 2026 01:16
@tarekziade

Copy link
Copy Markdown
Collaborator

@Cyrilvallez @vasqu huggingface/transformers-mlinter#30

b-re-w added a commit to latentforge/transformers-tts that referenced this pull request Sep 6, 2026
The generated `modeling_*.py` files for qwen3_tts and its two audio
tokenizers were last produced on 2026-06-30 and had drifted from the
parent models they inherit from (qwen3, qwen2_5_omni, qwen3_omni_moe,
mimi). Re-running `utils/modular_model_converter.py` picks up those
changes: `nn.Buffer` instead of `register_buffer` (huggingface#47722), the
`inv_freq` linting annotation removal (huggingface#47753), the kernel decorator
rename to `use_kernel_forward_from_hub` (huggingface#46883), the Token2Wav DiT
interleaved-RoPE fix (huggingface#47403), removal of the legacy FlashAttention2 /
SdpaAttention classes, and assorted spelling fixes (huggingface#47684).

Three fixes were needed in the modular sources so that regeneration does
not regress behaviour:

- Move `Qwen3TTSConfig.get_text_config` into `modular_qwen3_tts.py`. It
  had only ever been added to the generated configuration file, so the
  converter dropped it.
- Pin `Qwen3TTSTalkerModel._no_split_modules` to
  `["Qwen3TTSTalkerDecoderLayer"]`. The converter resolves the inherited
  value with the most common prefix (`Qwen3TTS`) and would otherwise
  point at the wrong decoder layer class.
- Add a `Qwen3TTSTokenizerMultiCodebookSnakeBeta` alias and use it in
  the code2wav decoder. Upstream renamed `SnakeBeta` to
  `Qwen2_5OmniSnakeBeta`, which left an undefined `SnakeBeta` reference
  in the generated file.

Conversion is idempotent, `ruff check` / `ruff format --check` pass, and
all touched files compile.

Claude-Session: https://claude.ai/code/session_01WLU94QdJCmuVf181X98tno
@ArthurZucker ArthurZucker mentioned this pull request Oct 20, 2026
4 of 5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants