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 CHANGED
@@ -127,12 +127,12 @@ def vid_postprocessing(video, w, h, fps):
127
 
128
  def animation(gen, chunk_size, device):
129
 
130
- @torch.compile(dynamic=True)
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(dynamic=True)
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(dynamic=True)
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(dynamic=True)
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(dynamic=True)
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)