From 5f502630883450e1605518c46b486040239b628d Mon Sep 17 00:00:00 2001 From: Svein Ove Aas Date: Wed, 21 Aug 2024 16:21:48 +0100 Subject: [PATCH] Replace use of .view with .reshape (#4522) When generating images with fp8_e4_m3 Flux and batch size >1, using --fast, ComfyUI throws a "view size is not compatible with input tensor's size and stride" error pointing at the first of these two calls to view. As reshape is semantically equivalent to view except for working on a broader set of inputs, there should be no downside to changing this. The only difference is that it clones the underlying data in cases where .view would error out. I have confirmed that the output still looks as expected, but cannot confirm that no mutable use is made of the tensors anywhere. Note that --fast is only marginally faster than the default. --- comfy/ops.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/comfy/ops.py b/comfy/ops.py index d1038ed..bd84a80 100644 --- a/comfy/ops.py +++ b/comfy/ops.py @@ -250,7 +250,7 @@ def fp8_linear(self, input): return None if len(input.shape) == 3: - inn = input.view(-1, input.shape[2]).to(dtype) + inn = input.reshape(-1, input.shape[2]).to(dtype) non_blocking = comfy.model_management.device_supports_non_blocking(input.device) w = cast_to(self.weight, device=input.device, non_blocking=non_blocking).t() @@ -259,7 +259,7 @@ def fp8_linear(self, input): else: o, _ = torch._scaled_mm(inn, w, out_dtype=input.dtype) - return o.view((-1, input.shape[1], self.weight.shape[0])) + return o.reshape((-1, input.shape[1], self.weight.shape[0])) return None class fp8_ops(manual_cast):