Repository navigation
Phonon: run the Mimi transposed convolutions as convolutions on Vulkan, MLX and CUDA (#25020) - #25020
Conversation
🔗 Helpful Links🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/25020
Note: Links to docs will display an error until the docs builds have been completed. ⏳ No Failures, 2 PendingAs of commit 3bf88e8 with merge base 029e351 ( This comment was automatically generated by Dr. CI and updates every 15 minutes. |
|
@psiddh has exported this pull request. If you are a Meta employee, you can view the originating Diff in D131642733. |
This PR needs a
|
ca106de to
75fbfe9
Compare
…n, MLX and CUDA (pytorch#25020) Summary: Pull Request resolved: pytorch#25020 Applies the Mimi rewrite from the previous diff (conv_transpose1d_as_conv1d plus depthwise_conv_transpose_as_mul) to Vulkan, MLX and CUDA as well. Vulkan previously ran the decoder's transposed convolutions through conv_transpose1d_as_2d, which is now used only by --webgpu-compat-ops. The CUDA backend has no Triton kernel for transposed convolution and runs each one as a convolution over a zero-stuffed input, which does stride times the work; the rewrite avoids that. DepthwiseConvTranspose1dAsMul now creates its zeros with x.new_zeros, so they follow the input to the GPU (torch.zeros put them on the CPU and broke the CUDA export), and the two swapped modules are in WEIGHT_MODULES, so --dtype bf16 still computes them in bf16. This diff was written with the help of Claude Code (Claude Opus 5.5). Differential Revision: D131642733
75fbfe9 to
141726b
Compare
…n, MLX and CUDA (pytorch#25020) Summary: Pull Request resolved: pytorch#25020 Applies the Mimi rewrite from the previous diff (conv_transpose1d_as_conv1d plus depthwise_conv_transpose_as_mul) to Vulkan, MLX and CUDA as well. Vulkan previously ran the decoder's transposed convolutions through conv_transpose1d_as_2d, which is now used only by --webgpu-compat-ops. The CUDA backend has no Triton kernel for transposed convolution and runs each one as a convolution over a zero-stuffed input, which does stride times the work; the rewrite avoids that. DepthwiseConvTranspose1dAsMul now creates its zeros with x.new_zeros, so they follow the input to the GPU (torch.zeros put them on the CPU and broke the CUDA export), and the two swapped modules are in WEIGHT_MODULES, so --dtype bf16 still computes them in bf16. This diff was written with the help of Claude Code (Claude Opus 5.5). Differential Revision: D131642733
…n, MLX and CUDA (pytorch#25020) Summary: Pull Request resolved: pytorch#25020 Applies the Mimi rewrite from the previous diff (conv_transpose1d_as_conv1d plus depthwise_conv_transpose_as_mul) to Vulkan, MLX and CUDA as well. Vulkan previously ran the decoder's transposed convolutions through conv_transpose1d_as_2d, which is now used only by --webgpu-compat-ops. The CUDA backend has no Triton kernel for transposed convolution and runs each one as a convolution over a zero-stuffed input, which does stride times the work; the rewrite avoids that. DepthwiseConvTranspose1dAsMul now creates its zeros with x.new_zeros, so they follow the input to the GPU (torch.zeros put them on the CPU and broke the CUDA export), and the two swapped modules are in WEIGHT_MODULES, so --dtype bf16 still computes them in bf16. This diff was written with the help of Claude Code (Claude Opus 5.5). Differential Revision: D131642733
Gasoonjia
left a comment
There was a problem hiding this comment.
Review automatically exported from Phabricator review in Meta.
141726b to
3602271
Compare
…n, MLX and CUDA (pytorch#25020) Summary: Pull Request resolved: pytorch#25020 Applies the Mimi rewrite from the previous diff (conv_transpose1d_as_conv1d plus depthwise_conv_transpose_as_mul) to Vulkan, MLX and CUDA as well. Vulkan previously ran the decoder's transposed convolutions through conv_transpose1d_as_2d, which is now used only by --webgpu-compat-ops. The CUDA backend has no Triton kernel for transposed convolution and runs each one as a convolution over a zero-stuffed input, which does stride times the work; the rewrite avoids that. DepthwiseConvTranspose1dAsMul now creates its zeros with x.new_zeros, so they follow the input to the GPU (torch.zeros put them on the CPU and broke the CUDA export), and the two swapped modules are in WEIGHT_MODULES, so --dtype bf16 still computes them in bf16. This diff was written with the help of Claude Code (Claude Opus 5.5). Reviewed By: Gasoonjia Differential Revision: D131642733
…n, MLX and CUDA (pytorch#25020) Summary: Pull Request resolved: pytorch#25020 Applies the Mimi rewrite from the previous diff (conv_transpose1d_as_conv1d plus depthwise_conv_transpose_as_mul) to Vulkan, MLX and CUDA as well. Vulkan previously ran the decoder's transposed convolutions through conv_transpose1d_as_2d, which is now used only by --webgpu-compat-ops. The CUDA backend has no Triton kernel for transposed convolution and runs each one as a convolution over a zero-stuffed input, which does stride times the work; the rewrite avoids that. DepthwiseConvTranspose1dAsMul now creates its zeros with x.new_zeros, so they follow the input to the GPU (torch.zeros put them on the CPU and broke the CUDA export), and the two swapped modules are in WEIGHT_MODULES, so --dtype bf16 still computes them in bf16. This diff was written with the help of Claude Code (Claude Opus 5.5). Reviewed By: Gasoonjia Differential Revision: D131642733
…n, MLX and CUDA (pytorch#25020) Summary: Applies the Mimi rewrite from the previous diff (conv_transpose1d_as_conv1d plus depthwise_conv_transpose_as_mul) to Vulkan, MLX and CUDA as well. Vulkan previously ran the decoder's transposed convolutions through conv_transpose1d_as_2d, which is now used only by --webgpu-compat-ops. The CUDA backend has no Triton kernel for transposed convolution and runs each one as a convolution over a zero-stuffed input, which does stride times the work; the rewrite avoids that. DepthwiseConvTranspose1dAsMul now creates its zeros with x.new_zeros, so they follow the input to the GPU (torch.zeros put them on the CPU and broke the CUDA export), and the two swapped modules are in WEIGHT_MODULES, so --dtype bf16 still computes them in bf16. This diff was written with the help of Claude Code (Claude Opus 5.5). Reviewed By: Gasoonjia, shoumikhin Differential Revision: D131642733
…n, MLX and CUDA (pytorch#25020) Summary: Applies the Mimi rewrite from the previous diff (conv_transpose1d_as_conv1d plus depthwise_conv_transpose_as_mul) to Vulkan, MLX and CUDA as well. Vulkan previously ran the decoder's transposed convolutions through conv_transpose1d_as_2d, which is now used only by --webgpu-compat-ops. The CUDA backend has no Triton kernel for transposed convolution and runs each one as a convolution over a zero-stuffed input, which does stride times the work; the rewrite avoids that. DepthwiseConvTranspose1dAsMul now creates its zeros with x.new_zeros, so they follow the input to the GPU (torch.zeros put them on the CPU and broke the CUDA export), and the two swapped modules are in WEIGHT_MODULES, so --dtype bf16 still computes them in bf16. This diff was written with the help of Claude Code (Claude Opus 5.5). Reviewed By: Gasoonjia, shoumikhin Differential Revision: D131642733
3602271 to
0876f42
Compare
…n, MLX and CUDA (pytorch#25020) Summary: Applies the Mimi rewrite from the previous diff (conv_transpose1d_as_conv1d plus depthwise_conv_transpose_as_mul) to Vulkan, MLX and CUDA as well. Vulkan previously ran the decoder's transposed convolutions through conv_transpose1d_as_2d, which is now used only by --webgpu-compat-ops. The CUDA backend has no Triton kernel for transposed convolution and runs each one as a convolution over a zero-stuffed input, which does stride times the work; the rewrite avoids that. DepthwiseConvTranspose1dAsMul now creates its zeros with x.new_zeros, so they follow the input to the GPU (torch.zeros put them on the CPU and broke the CUDA export), and the two swapped modules are in WEIGHT_MODULES, so --dtype bf16 still computes them in bf16. This diff was written with the help of Claude Code (Claude Opus 5.5). Reviewed By: Gasoonjia, shoumikhin Differential Revision: D131642733
0876f42 to
6eff255
Compare
…n, MLX and CUDA (pytorch#25020) Summary: Applies the Mimi rewrite from the previous diff (conv_transpose1d_as_conv1d plus depthwise_conv_transpose_as_mul) to Vulkan, MLX and CUDA as well. Vulkan previously ran the decoder's transposed convolutions through conv_transpose1d_as_2d, which is now used only by --webgpu-compat-ops. The CUDA backend has no Triton kernel for transposed convolution and runs each one as a convolution over a zero-stuffed input, which does stride times the work; the rewrite avoids that. DepthwiseConvTranspose1dAsMul now creates its zeros with x.new_zeros, so they follow the input to the GPU (torch.zeros put them on the CPU and broke the CUDA export), and the two swapped modules are in WEIGHT_MODULES, so --dtype bf16 still computes them in bf16. This diff was written with the help of Claude Code (Claude Opus 5.5). Reviewed By: Gasoonjia, shoumikhin Differential Revision: D131642733
…n, MLX and CUDA (pytorch#25020) Summary: Applies the Mimi rewrite from the previous diff (conv_transpose1d_as_conv1d plus depthwise_conv_transpose_as_mul) to Vulkan, MLX and CUDA as well. Vulkan previously ran the decoder's transposed convolutions through conv_transpose1d_as_2d, which is now used only by --webgpu-compat-ops. The CUDA backend has no Triton kernel for transposed convolution and runs each one as a convolution over a zero-stuffed input, which does stride times the work; the rewrite avoids that. DepthwiseConvTranspose1dAsMul now creates its zeros with x.new_zeros, so they follow the input to the GPU (torch.zeros put them on the CPU and broke the CUDA export), and the two swapped modules are in WEIGHT_MODULES, so --dtype bf16 still computes them in bf16. This diff was written with the help of Claude Code (Claude Opus 5.5). Reviewed By: Gasoonjia, shoumikhin Differential Revision: D131642733
6eff255 to
3bf88e8
Compare
…n, MLX and CUDA (pytorch#25020) Summary: Applies the Mimi rewrite from the previous diff (conv_transpose1d_as_conv1d plus depthwise_conv_transpose_as_mul) to Vulkan, MLX and CUDA as well. Vulkan previously ran the decoder's transposed convolutions through conv_transpose1d_as_2d, which is now used only by --webgpu-compat-ops. The CUDA backend has no Triton kernel for transposed convolution and runs each one as a convolution over a zero-stuffed input, which does stride times the work; the rewrite avoids that. DepthwiseConvTranspose1dAsMul now creates its zeros with x.new_zeros, so they follow the input to the GPU (torch.zeros put them on the CPU and broke the CUDA export), and the two swapped modules are in WEIGHT_MODULES, so --dtype bf16 still computes them in bf16. This diff was written with the help of Claude Code (Claude Opus 5.5). Reviewed By: Gasoonjia, shoumikhin Differential Revision: D131642733
Summary:
Applies the Mimi rewrite from the previous diff (conv_transpose1d_as_conv1d plus depthwise_conv_transpose_as_mul) to Vulkan, MLX and CUDA as well. Vulkan previously ran the decoder's transposed convolutions through conv_transpose1d_as_2d, which is now used only by --webgpu-compat-ops. The CUDA backend has no Triton kernel for transposed convolution and runs each one as a convolution over a zero-stuffed input, which does stride times the work; the rewrite avoids that.
DepthwiseConvTranspose1dAsMul now creates its zeros with x.new_zeros, so they follow the input to the GPU (torch.zeros put them on the CPU and broke the CUDA export), and the two swapped modules are in WEIGHT_MODULES, so --dtype bf16 still computes them in bf16.
This diff was written with the help of Claude Code (Claude Opus 5.5).
Reviewed By: Gasoonjia, shoumikhin
Differential Revision: D131642733