Make HunyuanDiT2DModel and HunyuanDiT2DControlNetModel hidden states contiguous#14203
Make HunyuanDiT2DModel and HunyuanDiT2DControlNetModel hidden states contiguous#14203menglcai wants to merge 1 commit into
HunyuanDiT2DModel and HunyuanDiT2DControlNetModel hidden states contiguous#14203Conversation
|
Thanks for your PR. Instead of Hunyuan, do we want to treat another model that has popularity and more usage? |
|
Hi @menglcai, thanks for the PR! It does not appear to link an issue it fixes. If this PR addresses an existing issue, please add a closing keyword (e.g. |
Understood, I'll look into more popular or widely used models and open a follow-up PR if a similar fix applies. |
|
Hi @sayakpaul , I've found similar patterns (some tensors not contiguous before the loop) with potential for improvement (still needs careful testing):
For newer models such as Would it make sense to continue pushing this PR ( |
Because this would be more impactful and thanks so much for your willingness! |
What does this PR do?
Similar to #14186
The non-contiguous tensor originates from
PatchEmbed.forward—flatten(2).transpose(1, 2) (BCHW → BNC)produces a non-contiguous layout whose overhead accumulates across transformer blocks inHunyuanDiT2DModelandHunyuanDiT2DControlNetModel.Unlike SD3 where the benefit is limited to ROCm, this patch improves performance on both ROCm and NVIDIA for HunyuanDiT, though the gain on NVIDIA is smaller.
Benchmarks (HunyuanDiT-v1.1-Diffusers, 512×512, 50 steps, fp16):
Benchmarks (HunyuanDiT-v1.2-Diffusers, 512×512, 50 steps, fp16):
Benchmarks (HunyuanDiT-v1.2-ControlNet-Diffusers-Canny + HunyuanDiT-v1.2-Diffusers-Distilled, 512×512, 50 steps, fp16):
Before submitting
self-reviewskill on the diff?documentation guidelines, and
here are tips on formatting docstrings.
Who can review?
@sayakpaul @yiyixuxu
Anyone in the community is free to review the PR once the tests have passed. Feel free to tag
members/contributors who may be interested in your PR.