Spaces:
Paused
Paused
Julian Bilcke
Claude
commited on
Commit
·
683dbb4
1
Parent(s):
1beacd3
Fix torch.compile dynamic=True compatibility with custom CUDA ops
Browse files- Remove dynamic=True from
@torch
.compile decorators to fix symbolic shapes error
- Remove
@torch
.compiler.allow_in_graph decorators that caused numel() failures
- Keep model pre-warming and all performance optimizations
- Maintain torch.compile benefits while avoiding custom CUDA op conflicts
This fixes the "Cannot call numel() on tensor with symbolic sizes/strides" error
while preserving the excellent performance gains (44s → 0.5s).
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <[email protected]>
- gradio_tabs/animation.py +2 -2
- gradio_tabs/img_edit.py +1 -1
- gradio_tabs/vid_edit.py +2 -2
- networks/op/fused_act.py +0 -1
- networks/op/upfirdn2d.py +0 -1
gradio_tabs/animation.py
CHANGED
|
@@ -127,12 +127,12 @@ def vid_postprocessing(video, w, h, fps):
|
|
| 127 |
|
| 128 |
def animation(gen, chunk_size, device):
|
| 129 |
|
| 130 |
-
@torch.compile
|
| 131 |
def compiled_edit(image_tensor, selected_s):
|
| 132 |
"""Compiled version of edit_img for animation tab"""
|
| 133 |
return gen.edit_img(image_tensor, labels_v, selected_s)
|
| 134 |
|
| 135 |
-
@torch.compile
|
| 136 |
def compiled_animate(image_tensor, video_target_tensor, selected_s):
|
| 137 |
"""Compiled version of animate_batch for animation tab"""
|
| 138 |
return gen.animate_batch(image_tensor, video_target_tensor, labels_v, selected_s, chunk_size)
|
|
|
|
| 127 |
|
| 128 |
def animation(gen, chunk_size, device):
|
| 129 |
|
| 130 |
+
@torch.compile
|
| 131 |
def compiled_edit(image_tensor, selected_s):
|
| 132 |
"""Compiled version of edit_img for animation tab"""
|
| 133 |
return gen.edit_img(image_tensor, labels_v, selected_s)
|
| 134 |
|
| 135 |
+
@torch.compile
|
| 136 |
def compiled_animate(image_tensor, video_target_tensor, selected_s):
|
| 137 |
"""Compiled version of animate_batch for animation tab"""
|
| 138 |
return gen.animate_batch(image_tensor, video_target_tensor, labels_v, selected_s, chunk_size)
|
gradio_tabs/img_edit.py
CHANGED
|
@@ -109,7 +109,7 @@ def img_postprocessing(img, w, h):
|
|
| 109 |
|
| 110 |
def img_edit(gen, device):
|
| 111 |
|
| 112 |
-
@torch.compile
|
| 113 |
def compiled_inference(image_tensor, selected_s):
|
| 114 |
"""Compiled version of just the model inference"""
|
| 115 |
return gen.edit_img(image_tensor, labels_v, selected_s)
|
|
|
|
| 109 |
|
| 110 |
def img_edit(gen, device):
|
| 111 |
|
| 112 |
+
@torch.compile
|
| 113 |
def compiled_inference(image_tensor, selected_s):
|
| 114 |
"""Compiled version of just the model inference"""
|
| 115 |
return gen.edit_img(image_tensor, labels_v, selected_s)
|
gradio_tabs/vid_edit.py
CHANGED
|
@@ -135,12 +135,12 @@ def vid_all_save(vid_d, vid_a, w, h, fps):
|
|
| 135 |
|
| 136 |
def vid_edit(gen, chunk_size, device):
|
| 137 |
|
| 138 |
-
@torch.compile
|
| 139 |
def compiled_edit_vid(image_tensor, selected_s):
|
| 140 |
"""Compiled version of edit_img for video editing tab"""
|
| 141 |
return gen.edit_img(image_tensor, labels_v, selected_s)
|
| 142 |
|
| 143 |
-
@torch.compile
|
| 144 |
def compiled_edit_vid_batch(video_target_tensor, selected_s):
|
| 145 |
"""Compiled version of edit_vid_batch for video editing tab"""
|
| 146 |
return gen.edit_vid_batch(video_target_tensor, labels_v, selected_s, chunk_size)
|
|
|
|
| 135 |
|
| 136 |
def vid_edit(gen, chunk_size, device):
|
| 137 |
|
| 138 |
+
@torch.compile
|
| 139 |
def compiled_edit_vid(image_tensor, selected_s):
|
| 140 |
"""Compiled version of edit_img for video editing tab"""
|
| 141 |
return gen.edit_img(image_tensor, labels_v, selected_s)
|
| 142 |
|
| 143 |
+
@torch.compile
|
| 144 |
def compiled_edit_vid_batch(video_target_tensor, selected_s):
|
| 145 |
"""Compiled version of edit_vid_batch for video editing tab"""
|
| 146 |
return gen.edit_vid_batch(video_target_tensor, labels_v, selected_s, chunk_size)
|
networks/op/fused_act.py
CHANGED
|
@@ -110,7 +110,6 @@ class FusedLeakyReLU(nn.Module):
|
|
| 110 |
return fused_leaky_relu(input, self.bias, self.negative_slope, self.scale)
|
| 111 |
|
| 112 |
|
| 113 |
-
@torch.compiler.allow_in_graph
|
| 114 |
def fused_leaky_relu(input, bias=None, negative_slope=0.2, scale=2 ** 0.5):
|
| 115 |
if input.device.type == "cpu":
|
| 116 |
if bias is not None:
|
|
|
|
| 110 |
return fused_leaky_relu(input, self.bias, self.negative_slope, self.scale)
|
| 111 |
|
| 112 |
|
|
|
|
| 113 |
def fused_leaky_relu(input, bias=None, negative_slope=0.2, scale=2 ** 0.5):
|
| 114 |
if input.device.type == "cpu":
|
| 115 |
if bias is not None:
|
networks/op/upfirdn2d.py
CHANGED
|
@@ -149,7 +149,6 @@ class UpFirDn2d(Function):
|
|
| 149 |
return grad_input, None, None, None, None
|
| 150 |
|
| 151 |
|
| 152 |
-
@torch.compiler.allow_in_graph
|
| 153 |
def upfirdn2d(input, kernel, up=1, down=1, pad=(0, 0)):
|
| 154 |
if not isinstance(up, abc.Iterable):
|
| 155 |
up = (up, up)
|
|
|
|
| 149 |
return grad_input, None, None, None, None
|
| 150 |
|
| 151 |
|
|
|
|
| 152 |
def upfirdn2d(input, kernel, up=1, down=1, pad=(0, 0)):
|
| 153 |
if not isinstance(up, abc.Iterable):
|
| 154 |
up = (up, up)
|