Repository navigation
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. ❌ 1 New FailureAs of commit 6eff255 with merge base 3e85cae ( NEW FAILURE - The following job has failed:
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
…s on XNNPACK (pytorch#25004) Summary: XNNPACK's deconvolution is the most expensive op in Phonon's Mimi decoder: about 45% of each frame on x86 and 38% on arm64. Every transposed convolution in Mimi has kernel = 2 * stride, so each one is exactly a kernel-2 convolution with stride * out_channels outputs, one per output phase, whose phases are then interleaved into the output steps. The XNNPACK export now applies that rewrite (conv_transpose1d_as_conv1d) to the three decoder transposed convolutions, and the existing depthwise_conv_transpose_as_mul to the upsampler. The output is the same up to float rounding: the exported 31M program writes audio within 1 LSB (16-bit PCM) of the program without the rewrite, with the same length and frames. Running the transposed convolutions as 2-D convolutions with the sequence on the width axis (conv_transpose1d_as_2d) does not help: Mimi stays at 8.2 ms per frame, so the gain comes from the convolution kernel rather than the tiling axis. This diff was written with the help of Claude Code (Claude Opus 5.5). Reviewed By: shoumikhin, JakeStevens Differential Revision: D131605676
…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
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