From 536daea1074159d2ac91aa4dd53e8f1c1510c627 Mon Sep 17 00:00:00 2001 From: akshatvishu Date: Fri, 24 Jul 2026 17:11:56 +0530 Subject: [PATCH] =?UTF-8?q?[BugFix]=20Fix=20Helios=20Cholesky=20positive-d?= =?UTF-8?q?efinite=20crashes=20and=20CPU=20LAPACK=E2=80=A6=20(#4921)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: akshatvishu Co-authored-by: Hongsheng Liu --- vllm_omni/diffusion/models/helios/pipeline_helios.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/vllm_omni/diffusion/models/helios/pipeline_helios.py b/vllm_omni/diffusion/models/helios/pipeline_helios.py index 655ef8821..90ee0ab3f 100644 --- a/vllm_omni/diffusion/models/helios/pipeline_helios.py +++ b/vllm_omni/diffusion/models/helios/pipeline_helios.py @@ -1561,11 +1561,12 @@ class HeliosPipeline( device = generator.device if generator is not None else self.device - cov = torch.eye(block_size) * (1 + gamma) - torch.ones(block_size, block_size) * gamma - cov += torch.eye(block_size) * 1e-8 - cov = cov.float() # Upcast to fp32 for numerical stability — cholesky is unreliable in fp16/bf16. - - L = torch.linalg.cholesky(cov).to(device) + # Allocate directly on the execution device in float32 to use the device solver + # and avoid fp16/bf16 Cholesky on the covariance matrix. + eye = torch.eye(block_size, device=device, dtype=torch.float32) + cov = eye * (1 + gamma) - torch.ones(block_size, block_size, device=device, dtype=torch.float32) * gamma + cov += eye * 1e-8 + L = torch.linalg.cholesky(cov) block_number = batch_size * channel * num_frames * (height // ph) * (width // pw) z = torch.randn(block_number, block_size, generator=generator, device=device) noise = z @ L.T