From 413ddf37939cba5706838a51f9fc2f31e1e34996 Mon Sep 17 00:00:00 2001 From: junghok Date: Wed, 21 Oct 2026 17:00:28 +0900 Subject: [PATCH 1/4] Add guarded experimental SM120 gapped forward replay Signed-off-by: junghok --- .../model/generator/mot/maskless_attention.py | 22 +++- .../mot/maskless_attention_compat.py | 65 ++++++++++ .../mot/maskless_attention_compat_test.py | 101 +++++++++++++++ .../mot/maskless_attention_sm120_gpu_test.py | 108 ++++++++++++++++ .../generator/mot/maskless_attention_test.py | 121 ++++++++++++++++++ docs/sm120_gapped_replay.md | 119 +++++++++++++++++ 6 files changed, 532 insertions(+), 4 deletions(-) create mode 100644 cosmos_framework/model/generator/mot/maskless_attention_compat.py create mode 100644 cosmos_framework/model/generator/mot/maskless_attention_compat_test.py create mode 100644 cosmos_framework/model/generator/mot/maskless_attention_sm120_gpu_test.py create mode 100644 cosmos_framework/model/generator/mot/maskless_attention_test.py create mode 100644 docs/sm120_gapped_replay.md diff --git a/cosmos_framework/model/generator/mot/maskless_attention.py b/cosmos_framework/model/generator/mot/maskless_attention.py index 2e4d267b1..04586970a 100644 --- a/cosmos_framework/model/generator/mot/maskless_attention.py +++ b/cosmos_framework/model/generator/mot/maskless_attention.py @@ -60,8 +60,8 @@ import torch import triton -from cosmos_framework.model.attention.utils.environment import is_torch_compiling from cosmos_framework.configs.base.defaults.multiview_attention import temporal_window_bounds +from cosmos_framework.model.attention.utils.environment import is_torch_compiling from cosmos_framework.model.generator.mot import maskless_kernels as kernels from cosmos_framework.model.generator.mot.causal_flex_attention import ( _ROLE_PADDING, @@ -74,6 +74,7 @@ _teacher_forcing_pair_predicate, ) from cosmos_framework.model.generator.mot.flex_attention import SensorMaskItem +from cosmos_framework.model.generator.mot.maskless_attention_compat import sm120_gapped_forward_unavailable_reason _ACCUMULATE_BLOCK_ROWS = 32 @@ -432,14 +433,19 @@ def gapped_replay_unavailable_reason(device: torch.device) -> str | None: if torch.version.hip is not None: return "it needs NVIDIA CUDA, not ROCm" major, minor = torch.cuda.get_device_capability(device) - if (major, minor) != (9, 0) and major != 10: + if (major, minor) not in ((9, 0), (12, 0)) and major != 10: # Hopper and Blackwell use different FA4 kernels; the replay GPU tests cover # the segment isolation and untouched gap rows required by both paths. - return f"it needs FlashAttention-4 on Hopper (sm90) or Blackwell (sm100/sm103), got sm{major}{minor}" + return ( + "it needs FlashAttention-4 on Hopper (sm90), Blackwell (sm100/sm103), " + f"or experimental SM120 forward replay, got sm{major}{minor}" + ) try: - _flash_attn_interface() + backend = _flash_attn_interface() except ImportError as error: return f"it needs FlashAttention-4 (flash_attn.cute.interface), which could not be imported: {error}" + if (major, minor) == (12, 0): + return sm120_gapped_forward_unavailable_reason(backend) return None @@ -845,6 +851,11 @@ def _gapped_replay_forward( ) -> tuple[torch.Tensor, torch.Tensor]: # [1,Q,H,Dv], [1,Q,H] FP32 """Run each part's native forward and merge by FP32 log-sum-exp. Rows nothing reaches are zero.""" flash_attn = _flash_attn_interface() + # Also protect direct custom-op callers that did not run the planner's admission check. + if torch.cuda.get_device_capability(q.device) == (12, 0): + reason = sm120_gapped_forward_unavailable_reason(flash_attn) + if reason is not None: + raise RuntimeError(reason) if q.shape[2] % k.shape[2] != 0: raise ValueError(f"Query heads ({q.shape[2]}) must be a multiple of KV heads ({k.shape[2]}).") runtime = _runtime(handle) @@ -912,6 +923,9 @@ def _gapped_replay_backward( Every launch uses the same folded query layout and segment arguments as forward. Rows nothing reaches are zero. """ + # The SM120 forward evidence does not qualify native backward or training. + if torch.cuda.get_device_capability(q.device) == (12, 0): + raise RuntimeError("SM120 gapped replay is inference-only; backward has not been qualified.") flash_attn = _flash_attn_interface() runtime = _runtime(handle) q, k, v = (tensor.contiguous() for tensor in (q, k, v)) # [1,Q,H,D], [1,KV,H_KV,D], [1,KV,H_KV,Dv] diff --git a/cosmos_framework/model/generator/mot/maskless_attention_compat.py b/cosmos_framework/model/generator/mot/maskless_attention_compat.py new file mode 100644 index 000000000..18bdd4fed --- /dev/null +++ b/cosmos_framework/model/generator/mot/maskless_attention_compat.py @@ -0,0 +1,65 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: OpenMDW-1.1 + +"""Source/API prerequisites for the experimental SM120 gapped forward path. + +This is not the generic Flash4 or block-sparse attention support policy. +Keep this module CUDA-free so prerequisite checks can be tested on CPU. +""" + +from importlib.metadata import PackageNotFoundError, version +from inspect import Parameter, signature +from types import ModuleType + +_SM120_FA4_VERSION = "4.0.0b30" +_GAPPED_FORWARD_KEYWORDS = frozenset( + { + "cu_seqlens_q", + "cu_seqlens_k", + "seqused_q", + "seqused_k", + "max_seqlen_q", + "max_seqlen_k", + "softmax_scale", + "out", + "lse", + "return_lse", + } +) + + +def sm120_gapped_forward_unavailable_reason(backend: ModuleType) -> str | None: + """Reject known-unsafe releases and changed private forward APIs. + + Stock b24 and b28 predate the invalid-work-tile fix in FA4 PR #2763. + b30 contains that fix. Do not approve unreviewed future versions or + same-version local backports solely because the module imports. + Distribution metadata is a compatibility check, not source attestation. + """ + try: + installed = version("flash-attn-4") + except PackageNotFoundError: + return "experimental SM120 replay needs flash-attn-4 distribution metadata" + if installed != _SM120_FA4_VERSION: + return ( + f"experimental SM120 replay needs flash-attn-4=={_SM120_FA4_VERSION} " + f"with the invalid-varlen-tile fix (FA4 PR #2763), got {installed}; " + "install its complete dependencies in an isolated environment" + ) + forward = getattr(backend, "_flash_attn_fwd", None) + if not callable(forward): + return "experimental SM120 replay needs the FA4 _flash_attn_fwd entry point" + try: + forward_signature = signature(forward) + parameters = forward_signature.parameters + except (TypeError, ValueError): + return "experimental SM120 replay could not inspect the FA4 forward API" + for name in sorted(_GAPPED_FORWARD_KEYWORDS): + parameter = parameters.get(name) + if parameter is None or parameter.kind not in (Parameter.POSITIONAL_OR_KEYWORD, Parameter.KEYWORD_ONLY): + return f"experimental SM120 replay needs the explicit FA4 forward keyword {name}" + try: + forward_signature.bind(None, None, None, **dict.fromkeys(_GAPPED_FORWARD_KEYWORDS)) + except TypeError: + return "experimental SM120 replay needs the reviewed three-tensor FA4 forward calling convention" + return None diff --git a/cosmos_framework/model/generator/mot/maskless_attention_compat_test.py b/cosmos_framework/model/generator/mot/maskless_attention_compat_test.py new file mode 100644 index 000000000..504d84f6b --- /dev/null +++ b/cosmos_framework/model/generator/mot/maskless_attention_compat_test.py @@ -0,0 +1,101 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: OpenMDW-1.1 + +"""CPU-only checks; successful mocks do not establish SM120 kernel correctness.""" + +from importlib.metadata import PackageNotFoundError +from types import ModuleType +from unittest.mock import patch + +import pytest + +from cosmos_framework.model.generator.mot import maskless_attention_compat as compat + + +def _forward( + q, + k, + v, + *, + cu_seqlens_q=None, + cu_seqlens_k=None, + seqused_q=None, + seqused_k=None, + max_seqlen_q=None, + max_seqlen_k=None, + softmax_scale=None, + out=None, + lse=None, + return_lse=False, +): + raise AssertionError("A CPU prerequisite test must never launch a kernel") + + +def _backend(forward=_forward): + backend = ModuleType("flash_attn.cute.interface") + backend._flash_attn_fwd = forward + return backend + + +@pytest.mark.parametrize("installed", ["4.0.0b24", "4.0.0b28", "4.0.0b29", "4.0.0b31", "4.1.0", "4.0.0b30+local"]) +def test_unreviewed_or_unsafe_versions_are_rejected(installed): + with patch.object(compat, "version", return_value=installed): + reason = compat.sm120_gapped_forward_unavailable_reason(_backend()) + assert reason is not None + assert "PR #2763" in reason + + +def test_b30_with_explicit_gapped_forward_api_is_accepted(): + with patch.object(compat, "version", return_value="4.0.0b30"): + assert compat.sm120_gapped_forward_unavailable_reason(_backend()) is None + + +def test_missing_distribution_metadata_is_rejected(): + with patch.object(compat, "version", side_effect=PackageNotFoundError("flash-attn-4")): + assert "metadata" in compat.sm120_gapped_forward_unavailable_reason(_backend()) + + +@pytest.mark.parametrize("forward", [None, object(), lambda q, k, v, **kwargs: None]) +def test_missing_or_implicit_api_is_rejected(forward): + with patch.object(compat, "version", return_value="4.0.0b30"): + assert compat.sm120_gapped_forward_unavailable_reason(_backend(forward)) is not None + + +def test_uninspectable_forward_is_rejected(): + with ( + patch.object(compat, "version", return_value="4.0.0b30"), + patch.object(compat, "signature", side_effect=ValueError("opaque callable")), + ): + assert "inspect" in compat.sm120_gapped_forward_unavailable_reason(_backend()) + + +@pytest.mark.parametrize("missing", sorted(compat._GAPPED_FORWARD_KEYWORDS)) +def test_every_gapped_keyword_is_required(missing): + actual = compat.signature(_forward) + changed = actual.replace(parameters=[parameter for name, parameter in actual.parameters.items() if name != missing]) + with ( + patch.object(compat, "version", return_value="4.0.0b30"), + patch.object(compat, "signature", return_value=changed), + ): + assert missing in compat.sm120_gapped_forward_unavailable_reason(_backend()) + + +def test_positional_only_gapped_parameter_is_rejected(): + actual = compat.signature(_forward) + parameter = compat.Parameter("out", compat.Parameter.POSITIONAL_ONLY) + changed = actual.replace(parameters=[parameter, *[p for name, p in actual.parameters.items() if name != "out"]]) + with ( + patch.object(compat, "version", return_value="4.0.0b30"), + patch.object(compat, "signature", return_value=changed), + ): + assert "out" in compat.sm120_gapped_forward_unavailable_reason(_backend()) + + +def test_incompatible_tensor_calling_convention_is_rejected(): + actual = compat.signature(_forward) + changed = actual.replace(parameters=[parameter for name, parameter in actual.parameters.items() if name != "v"]) + with ( + patch.object(compat, "version", return_value="4.0.0b30"), + patch.object(compat, "signature", return_value=changed), + ): + assert "calling convention" in compat.sm120_gapped_forward_unavailable_reason(_backend()) diff --git a/cosmos_framework/model/generator/mot/maskless_attention_sm120_gpu_test.py b/cosmos_framework/model/generator/mot/maskless_attention_sm120_gpu_test.py new file mode 100644 index 000000000..885224dd4 --- /dev/null +++ b/cosmos_framework/model/generator/mot/maskless_attention_sm120_gpu_test.py @@ -0,0 +1,108 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: OpenMDW-1.1 + +"""Manual SM120 forward regression; run normally and under Compute Sanitizer. + +These small synthetic cases are not model inference, quality, training or cache +validation. Run this file with --manual --num-gpus=1 on an authorized SM120 host. +""" + +import pytest +import torch + +from cosmos_framework.model.generator.mot import maskless_attention as replay + +pytestmark = [pytest.mark.level(0), pytest.mark.gpus(1), pytest.mark.manual] + + +def _segments(history_growth: int) -> tuple[list[replay.GappedSegment], int, int]: + # Seven views; GQA4 folds these query lengths to [4,12,28,68,124,260,28]. + # The mixed lengths and gaps exercise varlen scheduler padding/partial tiles. + segments = [] + q_row, k_row = 2, 3 + for q_len, k_len in zip((1, 3, 7, 17, 31, 65, 7), (3, 5, 17, 29, 43, 71, 11), strict=True): + k_len += history_growth + segments.append(replay.GappedSegment(q_row, q_len, k_row, k_len)) + q_row += q_len + 3 + k_row += k_len + 5 + return segments, q_row + 2, k_row + 3 + + +def _reference( + q: torch.Tensor, k: torch.Tensor, v: torch.Tensor, segments: list[replay.GappedSegment] +) -> tuple[torch.Tensor, torch.Tensor]: + # Independent FP32 dense attention per view; no replay metadata or FA4 calls. + out = torch.zeros_like(q, dtype=torch.float32) + lse = torch.full(q.shape[:-1], -torch.inf, device=q.device, dtype=torch.float32) + for q_row, q_len, k_row, k_len in segments: + qs = q[:, q_row : q_row + q_len].float() + ks = k[:, k_row : k_row + k_len].float().repeat_interleave(4, dim=2) + vs = v[:, k_row : k_row + k_len].float().repeat_interleave(4, dim=2) + scores = torch.einsum("bqhd,bkhd->bhqk", qs, ks) * q.shape[-1] ** -0.5 + out[:, q_row : q_row + q_len] = torch.einsum("bhqk,bkhd->bqhd", scores.softmax(-1), vs) + lse[:, q_row : q_row + q_len] = scores.logsumexp(-1).transpose(1, 2) + return out, lse + + +@pytest.mark.parametrize("dtype", [torch.bfloat16, torch.float16]) +@pytest.mark.parametrize("history_growth", [0, 5]) +def test_sm120_seven_view_gapped_forward( + dtype: torch.dtype, history_growth: int, monkeypatch: pytest.MonkeyPatch +) -> None: + if not torch.cuda.is_available(): + pytest.skip("Requires an authorized CUDA GPU") + device = torch.device("cuda", torch.cuda.current_device()) + if torch.cuda.get_device_capability(device) != (12, 0): + pytest.skip("This regression targets exact SM120, not other architectures") + pytest.importorskip("flash_attn.cute.interface") + reason = replay.gapped_replay_unavailable_reason(device) + assert reason is None, reason + monkeypatch.setattr(torch.backends.cuda.matmul, "allow_tf32", False) + segments, q_rows, kv_rows = _segments(history_growth) + generator = torch.Generator(device=device).manual_seed(20261021 + history_growth) + q = torch.randn(1, q_rows, 32, 128, device=device, dtype=dtype, generator=generator) + k = torch.randn(1, kv_rows, 8, 128, device=device, dtype=dtype, generator=generator) + v = torch.randn(1, kv_rows, 8, 128, device=device, dtype=dtype, generator=generator) + originals = [tensor.clone() for tensor in (q, k, v)] + plan = replay.build_gapped_replay_plan(segments, (), device) + q_active = torch.zeros(q_rows, dtype=torch.bool, device=device) + k_active = torch.zeros(kv_rows, dtype=torch.bool, device=device) + for q_row, q_len, k_row, k_len in segments: + q_active[q_row : q_row + q_len] = True + k_active[k_row : k_row + k_len] = True + with torch.no_grad(): + out, lse = replay._gapped_replay_forward(q, k, v, plan.handle) + expected, expected_lse = _reference(q, k, v, segments) + torch.cuda.synchronize(device) + assert torch.isfinite(out).all() + assert torch.isfinite(lse[:, q_active]).all() + torch.testing.assert_close(out.float(), expected, atol=0.005, rtol=0.015) + torch.testing.assert_close(lse[:, q_active], expected_lse[:, q_active], atol=0.001, rtol=0.0001) + assert torch.count_nonzero(out[:, ~q_active]).item() == 0 + assert torch.isneginf(lse[:, ~q_active]).all() + for original, actual in zip(originals, (q, k, v), strict=True): + torch.testing.assert_close(actual, original, atol=0, rtol=0) + + # Finite gap values may be read by partial tiles but must never contribute. + gap_k, gap_v = k.clone(), v.clone() + gap_k[:, ~k_active] = 23 + gap_v[:, ~k_active] = -19 + gap_out, gap_lse = replay._gapped_replay_forward(q, gap_k, gap_v, plan.handle) + torch.cuda.synchronize(device) + torch.testing.assert_close(gap_out, out, atol=0, rtol=0) + torch.testing.assert_close(gap_lse, lse, atol=0, rtol=0) + + # Poison every other view while preserving view zero's own keys/values. + own = torch.zeros(kv_rows, dtype=torch.bool, device=device) + first = segments[0] + own[first.k_row : first.k_row + first.k_len] = True + foreign_k, foreign_v = k.clone(), v.clone() + foreign_k[:, ~own] = -11 + foreign_v[:, ~own] = 17 + foreign_out, foreign_lse = replay._gapped_replay_forward(q, foreign_k, foreign_v, plan.handle) + torch.cuda.synchronize(device) + rows = slice(first.q_row, first.q_row + first.q_len) + torch.testing.assert_close(foreign_out[:, rows], out[:, rows], atol=0, rtol=0) + torch.testing.assert_close(foreign_lse[:, rows], lse[:, rows], atol=0, rtol=0) + assert torch.count_nonzero(foreign_out[:, ~q_active]).item() == 0 + assert torch.isneginf(foreign_lse[:, ~q_active]).all() diff --git a/cosmos_framework/model/generator/mot/maskless_attention_test.py b/cosmos_framework/model/generator/mot/maskless_attention_test.py new file mode 100644 index 000000000..e2195d57a --- /dev/null +++ b/cosmos_framework/model/generator/mot/maskless_attention_test.py @@ -0,0 +1,121 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: OpenMDW-1.1 + +"""CPU architecture-admission checks for gapped replay, not generic Flash4.""" + +from types import SimpleNamespace +from unittest.mock import Mock, patch + +import pytest +import torch + +from cosmos_framework.model.generator.mot import maskless_attention as attention + + +@pytest.mark.parametrize("capability", [(9, 0), (10, 0), (10, 3), (10, 9)]) +def test_existing_architectures_do_not_acquire_the_sm120_dependency_requirement(capability): + with ( + patch.object(torch.version, "hip", None), + patch.object(torch.cuda, "get_device_capability", return_value=capability), + patch.object(attention, "_flash_attn_interface", return_value=Mock()), + patch.object(attention, "sm120_gapped_forward_unavailable_reason") as prerequisite, + ): + assert attention.gapped_replay_unavailable_reason(torch.device("cuda:0")) is None + prerequisite.assert_not_called() + + +@pytest.mark.parametrize("capability", [(8, 0), (8, 9), (9, 1), (11, 0), (12, 1), (13, 0)]) +def test_other_architectures_stay_rejected_without_loading_fa4(capability): + with ( + patch.object(torch.version, "hip", None), + patch.object(torch.cuda, "get_device_capability", return_value=capability), + patch.object(attention, "_flash_attn_interface") as loader, + ): + assert attention.gapped_replay_unavailable_reason(torch.device("cuda")) is not None + loader.assert_not_called() + + +@pytest.mark.parametrize("prerequisite_reason", [None, "known-unsafe FA4 version"]) +def test_sm120_always_checks_the_forward_prerequisite(prerequisite_reason): + backend = Mock() + with ( + patch.object(torch.version, "hip", None), + patch.object(torch.cuda, "get_device_capability", return_value=(12, 0)), + patch.object(attention, "_flash_attn_interface", return_value=backend), + patch.object(attention, "sm120_gapped_forward_unavailable_reason", return_value=prerequisite_reason) as check, + ): + assert attention.gapped_replay_unavailable_reason(torch.device("cuda")) == prerequisite_reason + check.assert_called_once_with(backend) + + +def test_cpu_and_rocm_are_rejected_before_querying_cuda(): + with patch.object(torch.cuda, "get_device_capability") as capability: + assert "CUDA device" in attention.gapped_replay_unavailable_reason(torch.device("cpu")) + with patch.object(torch.version, "hip", "6.0"): + assert "ROCm" in attention.gapped_replay_unavailable_reason(torch.device("cuda")) + capability.assert_not_called() + + +def test_missing_optional_backend_is_reported(): + with ( + patch.object(torch.version, "hip", None), + patch.object(torch.cuda, "get_device_capability", return_value=(12, 0)), + patch.object(attention, "_flash_attn_interface", side_effect=ImportError("not installed")), + ): + assert "could not be imported" in attention.gapped_replay_unavailable_reason(torch.device("cuda")) + + +def test_direct_sm120_forward_rejects_before_runtime_or_kernel_access(): + # Exercise the registered Python body without dispatching a CUDA custom op. + q = SimpleNamespace(device=torch.device("cpu")) + backend = Mock() + with ( + patch.object(torch.cuda, "get_device_capability", return_value=(12, 0)), + patch.object(attention, "_flash_attn_interface", return_value=backend), + patch.object(attention, "sm120_gapped_forward_unavailable_reason", return_value="unsafe FA4") as check, + patch.object(attention, "_runtime") as runtime, + ): + with pytest.raises(RuntimeError, match="unsafe FA4"): + attention._gapped_replay_forward._init_fn(q, None, None, None) + check.assert_called_once_with(backend) + runtime.assert_not_called() + backend._flash_attn_fwd.assert_not_called() + + +@pytest.mark.parametrize("capability", [(9, 0), (10, 0), (12, 0)]) +def test_direct_forward_reaches_existing_runtime_after_admission(capability): + q = SimpleNamespace(device=torch.device("cpu"), shape=(1, 1, 32, 128)) + k = SimpleNamespace(shape=(1, 1, 8, 128)) + with ( + patch.object(torch.cuda, "get_device_capability", return_value=capability), + patch.object(attention, "_flash_attn_interface", return_value=Mock()), + patch.object(attention, "sm120_gapped_forward_unavailable_reason", return_value=None) as check, + patch.object(attention, "_runtime", side_effect=RuntimeError("runtime sentinel")), + ): + with pytest.raises(RuntimeError, match="runtime sentinel"): + attention._gapped_replay_forward._init_fn(q, k, None, None) + assert check.call_count == int(capability == (12, 0)) + + +def test_sm120_backward_rejects_before_loading_backend_or_runtime(): + q = SimpleNamespace(device=torch.device("cpu")) + with ( + patch.object(torch.cuda, "get_device_capability", return_value=(12, 0)), + patch.object(attention, "_flash_attn_interface") as loader, + patch.object(attention, "_runtime") as runtime, + ): + with pytest.raises(RuntimeError, match="inference-only"): + attention._gapped_replay_backward._init_fn(q, None, None, None, None, None, None) + loader.assert_not_called() + runtime.assert_not_called() + + +@pytest.mark.parametrize("capability", [(9, 0), (10, 0)]) +def test_existing_backward_keeps_its_backend_path(capability): + q = SimpleNamespace(device=torch.device("cpu")) + with ( + patch.object(torch.cuda, "get_device_capability", return_value=capability), + patch.object(attention, "_flash_attn_interface", side_effect=RuntimeError("backend sentinel")), + ): + with pytest.raises(RuntimeError, match="backend sentinel"): + attention._gapped_replay_backward._init_fn(q, None, None, None, None, None, None) diff --git a/docs/sm120_gapped_replay.md b/docs/sm120_gapped_replay.md new file mode 100644 index 000000000..daab286dc --- /dev/null +++ b/docs/sm120_gapped_replay.md @@ -0,0 +1,119 @@ +# Experimental SM120 gapped forward replay + +This change admits exact SM120 for native gapped **forward** replay only when +FlashAttention-4 (FA4) has the reviewed invalid-work-tile fix and forward API. +It is an experimental review candidate, not a claim of qualified SM120 training +or production support. The current public candidate still needs GPU qualification. + +## Why changing the architecture check alone is unsafe + +There were two separate failures: + +1. The Framework admission check rejected `(12, 0)` before native replay could run + (`cosmos_framework/model/generator/mot/maskless_attention.py:429`). +2. After admission, an FA4 scheduler-padding work tile could index beyond the + variable-length batch metadata. The kernel must check `work_tile.is_valid_tile` + before constructing sequence information. FA4 [PR #2763][fix] adds that guard. + Stock b24 and b28 predate it; b30 contains it. + +The upstream guard precedes `SeqlenInfoQK.create` +([fixed source, `flash_attn/cute/flash_fwd.py:793`][fixed-source]); compare the +[older unguarded source at line 787][old-source]. The historical SM120 reproduction +reported 17 memcheck errors before the companion kernel fix. An architecture-only +patch is therefore insufficient. + +## Scope and qualification + +The public base is `a2a7409efd6b8559193245d142be03eb57f17819`. This candidate +requires exact stock `4.0.0b30`, complete dependencies and the explicit forward +API. Its four manual GPU cases and native model inference have not yet been run. +Backward/training is explicitly rejected on SM120. + +Earlier downstream tests used a different Framework baseline and FA4 b28 with +the PR #2763 source backport. Those results do not satisfy this exact-b30 gate +and must not be relabeled as validation of this candidate. Other execution paths +are likewise not qualification evidence for this native Framework candidate. + +Existing SM90/SM10 admission and attention mathematics are unchanged. SM121 and +other architectures remain rejected. Generic Flash4, block-sparse attention, +Transfer-Auto, LiDAR generation and model-quality acceptance are outside this +change. SM120 forward execution is checked both at availability admission and at +the custom-op entry; SM120 backward fails before loading the native backend. + +## Dependency prerequisite + +The helper at +`cosmos_framework/model/generator/mot/maskless_attention_compat.py:31` checks +distribution metadata and the private `_flash_attn_fwd` signature, including the +ten explicit arguments used by replay. Metadata is not source attestation. +Missing metadata, local-version strings, older releases, future releases and +incompatible signatures fail closed. + +This patch deliberately does **not** globally replace the repository's b24 pins +or rewrite its lockfile: doing so would change existing Hopper/B200 environments +without regression evidence. A default b24 installation remains rejected on SM120. + +For qualification, build a separate SM120 environment with exact b30 and its +complete dependency set. Preserve the chosen Torch/CUDA constraints and resolve +dependencies together. The [b30 manifest][dependencies] requires, among others, +`nvidia-cutlass-dsl>=4.6.2`, `torch-c-dlpack-ext`, +`apache-tvm-ffi>=0.1.12,<0.2` and `quack-kernels>=0.5.3`. Simply replacing the FA4 +wheel with `--no-deps` in the b24 environment is not a supported procedure. +Run `python -m pip check`, archive the resolved environment, and use that +environment's Python directly so an automatic project sync does not restore b24. + +The b30 forward API is reviewed at +[`flash_attn/cute/interface.py:525`][forward-api]. The version gate does not prove +the entire dependency stack, arbitrary shapes or backward are correct. + +## Verification + +CPU tests exercise real Framework admission with mocked device observations and +the CUDA-free compatibility helper. They do not execute FA4 or establish GPU +correctness. In an existing dependency-complete CPU test environment, from the +repository root: + +```sh +CUDA_VISIBLE_DEVICES='' COSMOS_TRAINING=0 COSMOS_INTERNAL=0 PYTHONPATH="$PWD" \ + python -m pytest -c /dev/null --rootdir "$PWD" \ + --confcutdir "$PWD/cosmos_framework/model/generator/mot" \ + -p no:cacheprovider \ + cosmos_framework/model/generator/mot/maskless_attention_compat_test.py \ + cosmos_framework/model/generator/mot/maskless_attention_test.py +``` + +The isolated configuration intentionally avoids the repository-wide GPU setup +fixtures. This is a focused test run, not the full repository suite. + +On an authorized, exclusively idle SM120 GPU with the prepared b30 environment, +the manual regression is +`cosmos_framework/model/generator/mot/maskless_attention_sm120_gpu_test.py:49`: + +```sh +.venv-sm120/bin/python -m pytest --manual --levels=0 --num-gpus=1 \ + cosmos_framework/model/generator/mot/maskless_attention_sm120_gpu_test.py +compute-sanitizer --tool memcheck --error-exitcode 99 \ + .venv-sm120/bin/python -m pytest --manual --levels=0 --num-gpus=1 \ + cosmos_framework/model/generator/mot/maskless_attention_sm120_gpu_test.py +compute-sanitizer --tool initcheck --error-exitcode 99 \ + .venv-sm120/bin/python -m pytest --manual --levels=0 --num-gpus=1 \ + cosmos_framework/model/generator/mot/maskless_attention_sm120_gpu_test.py +``` + +All four cases must execute, not skip. Require zero sanitizer errors and archive +the exact GPU, Torch/CUDA, FA4 and complete dependency identities with logs. +Cases cover BF16/FP16, GQA4, seven variable-length views, partial tiles, finite +gap perturbations, input immutability, output/LSE agreement against an independent +FP32 reference, and foreign-view isolation. The two history lengths are synthetic +shapes, **not** a rolling-cache or complete model test. + +Before qualification, also repeat a bounded native Sim-Auto inference smoke with +complete video decoding and obtain SM90/SM10 regression results. No new GPU jobs +were submitted while preparing this patch. Merge readiness remains pending those +checks and maintainer approval of the isolated dependency policy. + +[fix]: https://github.com/Dao-AILab/flash-attention/pull/2763 +[fixed-source]: https://github.com/Dao-AILab/flash-attention/blob/9d61d35ba876834539af7df369fbabef1ad1e5d7/flash_attn/cute/flash_fwd.py#L793 +[old-source]: https://github.com/Dao-AILab/flash-attention/blob/849f660f73b176e5ad5670e7f822c7fa9f3eaf8b/flash_attn/cute/flash_fwd.py#L787 +[forward-api]: https://github.com/Dao-AILab/flash-attention/blob/9d61d35ba876834539af7df369fbabef1ad1e5d7/flash_attn/cute/interface.py#L525 +[dependencies]: https://github.com/Dao-AILab/flash-attention/blob/9d61d35ba876834539af7df369fbabef1ad1e5d7/flash_attn/cute/pyproject.toml#L31 From 8afd9d4708ffc1e70561540cd69596caf55d90c0 Mon Sep 17 00:00:00 2001 From: junghok Date: Wed, 21 Oct 2026 17:07:20 +0900 Subject: [PATCH 2/4] Reduce SM120 replay fix to the existing attention file Signed-off-by: junghok --- .../model/generator/mot/maskless_attention.py | 23 ++-- .../mot/maskless_attention_compat.py | 65 ---------- .../mot/maskless_attention_compat_test.py | 101 --------------- .../mot/maskless_attention_sm120_gpu_test.py | 108 ---------------- .../generator/mot/maskless_attention_test.py | 121 ------------------ docs/sm120_gapped_replay.md | 119 ----------------- 6 files changed, 11 insertions(+), 526 deletions(-) delete mode 100644 cosmos_framework/model/generator/mot/maskless_attention_compat.py delete mode 100644 cosmos_framework/model/generator/mot/maskless_attention_compat_test.py delete mode 100644 cosmos_framework/model/generator/mot/maskless_attention_sm120_gpu_test.py delete mode 100644 cosmos_framework/model/generator/mot/maskless_attention_test.py delete mode 100644 docs/sm120_gapped_replay.md diff --git a/cosmos_framework/model/generator/mot/maskless_attention.py b/cosmos_framework/model/generator/mot/maskless_attention.py index 04586970a..98588640b 100644 --- a/cosmos_framework/model/generator/mot/maskless_attention.py +++ b/cosmos_framework/model/generator/mot/maskless_attention.py @@ -51,6 +51,7 @@ from collections.abc import Sequence from dataclasses import dataclass, fields from importlib import import_module +from importlib.metadata import PackageNotFoundError, version from itertools import accumulate, pairwise from types import ModuleType from typing import Any, NamedTuple @@ -74,7 +75,6 @@ _teacher_forcing_pair_predicate, ) from cosmos_framework.model.generator.mot.flex_attention import SensorMaskItem -from cosmos_framework.model.generator.mot.maskless_attention_compat import sm120_gapped_forward_unavailable_reason _ACCUMULATE_BLOCK_ROWS = 32 @@ -436,16 +436,18 @@ def gapped_replay_unavailable_reason(device: torch.device) -> str | None: if (major, minor) not in ((9, 0), (12, 0)) and major != 10: # Hopper and Blackwell use different FA4 kernels; the replay GPU tests cover # the segment isolation and untouched gap rows required by both paths. - return ( - "it needs FlashAttention-4 on Hopper (sm90), Blackwell (sm100/sm103), " - f"or experimental SM120 forward replay, got sm{major}{minor}" - ) + return f"it needs FlashAttention-4 on Hopper (sm90), Blackwell (sm100/sm103), or experimental SM120, got sm{major}{minor}" try: - backend = _flash_attn_interface() + _flash_attn_interface() except ImportError as error: return f"it needs FlashAttention-4 (flash_attn.cute.interface), which could not be imported: {error}" if (major, minor) == (12, 0): - return sm120_gapped_forward_unavailable_reason(backend) + # Older FA4 releases lack the invalid-work-tile fix from upstream PR #2763. + try: + if version("flash-attn-4") != "4.0.0b30": + return "SM120 gapped replay needs flash-attn-4==4.0.0b30 (FA4 PR #2763 invalid-tile fix)" + except PackageNotFoundError: + return "SM120 gapped replay needs flash-attn-4 distribution metadata" return None @@ -850,12 +852,9 @@ def _gapped_replay_forward( handle: torch.Tensor, # [1] int64 on CPU ) -> tuple[torch.Tensor, torch.Tensor]: # [1,Q,H,Dv], [1,Q,H] FP32 """Run each part's native forward and merge by FP32 log-sum-exp. Rows nothing reaches are zero.""" - flash_attn = _flash_attn_interface() - # Also protect direct custom-op callers that did not run the planner's admission check. if torch.cuda.get_device_capability(q.device) == (12, 0): - reason = sm120_gapped_forward_unavailable_reason(flash_attn) - if reason is not None: - raise RuntimeError(reason) + require_gapped_replay(q.device) + flash_attn = _flash_attn_interface() if q.shape[2] % k.shape[2] != 0: raise ValueError(f"Query heads ({q.shape[2]}) must be a multiple of KV heads ({k.shape[2]}).") runtime = _runtime(handle) diff --git a/cosmos_framework/model/generator/mot/maskless_attention_compat.py b/cosmos_framework/model/generator/mot/maskless_attention_compat.py deleted file mode 100644 index 18bdd4fed..000000000 --- a/cosmos_framework/model/generator/mot/maskless_attention_compat.py +++ /dev/null @@ -1,65 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: OpenMDW-1.1 - -"""Source/API prerequisites for the experimental SM120 gapped forward path. - -This is not the generic Flash4 or block-sparse attention support policy. -Keep this module CUDA-free so prerequisite checks can be tested on CPU. -""" - -from importlib.metadata import PackageNotFoundError, version -from inspect import Parameter, signature -from types import ModuleType - -_SM120_FA4_VERSION = "4.0.0b30" -_GAPPED_FORWARD_KEYWORDS = frozenset( - { - "cu_seqlens_q", - "cu_seqlens_k", - "seqused_q", - "seqused_k", - "max_seqlen_q", - "max_seqlen_k", - "softmax_scale", - "out", - "lse", - "return_lse", - } -) - - -def sm120_gapped_forward_unavailable_reason(backend: ModuleType) -> str | None: - """Reject known-unsafe releases and changed private forward APIs. - - Stock b24 and b28 predate the invalid-work-tile fix in FA4 PR #2763. - b30 contains that fix. Do not approve unreviewed future versions or - same-version local backports solely because the module imports. - Distribution metadata is a compatibility check, not source attestation. - """ - try: - installed = version("flash-attn-4") - except PackageNotFoundError: - return "experimental SM120 replay needs flash-attn-4 distribution metadata" - if installed != _SM120_FA4_VERSION: - return ( - f"experimental SM120 replay needs flash-attn-4=={_SM120_FA4_VERSION} " - f"with the invalid-varlen-tile fix (FA4 PR #2763), got {installed}; " - "install its complete dependencies in an isolated environment" - ) - forward = getattr(backend, "_flash_attn_fwd", None) - if not callable(forward): - return "experimental SM120 replay needs the FA4 _flash_attn_fwd entry point" - try: - forward_signature = signature(forward) - parameters = forward_signature.parameters - except (TypeError, ValueError): - return "experimental SM120 replay could not inspect the FA4 forward API" - for name in sorted(_GAPPED_FORWARD_KEYWORDS): - parameter = parameters.get(name) - if parameter is None or parameter.kind not in (Parameter.POSITIONAL_OR_KEYWORD, Parameter.KEYWORD_ONLY): - return f"experimental SM120 replay needs the explicit FA4 forward keyword {name}" - try: - forward_signature.bind(None, None, None, **dict.fromkeys(_GAPPED_FORWARD_KEYWORDS)) - except TypeError: - return "experimental SM120 replay needs the reviewed three-tensor FA4 forward calling convention" - return None diff --git a/cosmos_framework/model/generator/mot/maskless_attention_compat_test.py b/cosmos_framework/model/generator/mot/maskless_attention_compat_test.py deleted file mode 100644 index 504d84f6b..000000000 --- a/cosmos_framework/model/generator/mot/maskless_attention_compat_test.py +++ /dev/null @@ -1,101 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: OpenMDW-1.1 - -"""CPU-only checks; successful mocks do not establish SM120 kernel correctness.""" - -from importlib.metadata import PackageNotFoundError -from types import ModuleType -from unittest.mock import patch - -import pytest - -from cosmos_framework.model.generator.mot import maskless_attention_compat as compat - - -def _forward( - q, - k, - v, - *, - cu_seqlens_q=None, - cu_seqlens_k=None, - seqused_q=None, - seqused_k=None, - max_seqlen_q=None, - max_seqlen_k=None, - softmax_scale=None, - out=None, - lse=None, - return_lse=False, -): - raise AssertionError("A CPU prerequisite test must never launch a kernel") - - -def _backend(forward=_forward): - backend = ModuleType("flash_attn.cute.interface") - backend._flash_attn_fwd = forward - return backend - - -@pytest.mark.parametrize("installed", ["4.0.0b24", "4.0.0b28", "4.0.0b29", "4.0.0b31", "4.1.0", "4.0.0b30+local"]) -def test_unreviewed_or_unsafe_versions_are_rejected(installed): - with patch.object(compat, "version", return_value=installed): - reason = compat.sm120_gapped_forward_unavailable_reason(_backend()) - assert reason is not None - assert "PR #2763" in reason - - -def test_b30_with_explicit_gapped_forward_api_is_accepted(): - with patch.object(compat, "version", return_value="4.0.0b30"): - assert compat.sm120_gapped_forward_unavailable_reason(_backend()) is None - - -def test_missing_distribution_metadata_is_rejected(): - with patch.object(compat, "version", side_effect=PackageNotFoundError("flash-attn-4")): - assert "metadata" in compat.sm120_gapped_forward_unavailable_reason(_backend()) - - -@pytest.mark.parametrize("forward", [None, object(), lambda q, k, v, **kwargs: None]) -def test_missing_or_implicit_api_is_rejected(forward): - with patch.object(compat, "version", return_value="4.0.0b30"): - assert compat.sm120_gapped_forward_unavailable_reason(_backend(forward)) is not None - - -def test_uninspectable_forward_is_rejected(): - with ( - patch.object(compat, "version", return_value="4.0.0b30"), - patch.object(compat, "signature", side_effect=ValueError("opaque callable")), - ): - assert "inspect" in compat.sm120_gapped_forward_unavailable_reason(_backend()) - - -@pytest.mark.parametrize("missing", sorted(compat._GAPPED_FORWARD_KEYWORDS)) -def test_every_gapped_keyword_is_required(missing): - actual = compat.signature(_forward) - changed = actual.replace(parameters=[parameter for name, parameter in actual.parameters.items() if name != missing]) - with ( - patch.object(compat, "version", return_value="4.0.0b30"), - patch.object(compat, "signature", return_value=changed), - ): - assert missing in compat.sm120_gapped_forward_unavailable_reason(_backend()) - - -def test_positional_only_gapped_parameter_is_rejected(): - actual = compat.signature(_forward) - parameter = compat.Parameter("out", compat.Parameter.POSITIONAL_ONLY) - changed = actual.replace(parameters=[parameter, *[p for name, p in actual.parameters.items() if name != "out"]]) - with ( - patch.object(compat, "version", return_value="4.0.0b30"), - patch.object(compat, "signature", return_value=changed), - ): - assert "out" in compat.sm120_gapped_forward_unavailable_reason(_backend()) - - -def test_incompatible_tensor_calling_convention_is_rejected(): - actual = compat.signature(_forward) - changed = actual.replace(parameters=[parameter for name, parameter in actual.parameters.items() if name != "v"]) - with ( - patch.object(compat, "version", return_value="4.0.0b30"), - patch.object(compat, "signature", return_value=changed), - ): - assert "calling convention" in compat.sm120_gapped_forward_unavailable_reason(_backend()) diff --git a/cosmos_framework/model/generator/mot/maskless_attention_sm120_gpu_test.py b/cosmos_framework/model/generator/mot/maskless_attention_sm120_gpu_test.py deleted file mode 100644 index 885224dd4..000000000 --- a/cosmos_framework/model/generator/mot/maskless_attention_sm120_gpu_test.py +++ /dev/null @@ -1,108 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: OpenMDW-1.1 - -"""Manual SM120 forward regression; run normally and under Compute Sanitizer. - -These small synthetic cases are not model inference, quality, training or cache -validation. Run this file with --manual --num-gpus=1 on an authorized SM120 host. -""" - -import pytest -import torch - -from cosmos_framework.model.generator.mot import maskless_attention as replay - -pytestmark = [pytest.mark.level(0), pytest.mark.gpus(1), pytest.mark.manual] - - -def _segments(history_growth: int) -> tuple[list[replay.GappedSegment], int, int]: - # Seven views; GQA4 folds these query lengths to [4,12,28,68,124,260,28]. - # The mixed lengths and gaps exercise varlen scheduler padding/partial tiles. - segments = [] - q_row, k_row = 2, 3 - for q_len, k_len in zip((1, 3, 7, 17, 31, 65, 7), (3, 5, 17, 29, 43, 71, 11), strict=True): - k_len += history_growth - segments.append(replay.GappedSegment(q_row, q_len, k_row, k_len)) - q_row += q_len + 3 - k_row += k_len + 5 - return segments, q_row + 2, k_row + 3 - - -def _reference( - q: torch.Tensor, k: torch.Tensor, v: torch.Tensor, segments: list[replay.GappedSegment] -) -> tuple[torch.Tensor, torch.Tensor]: - # Independent FP32 dense attention per view; no replay metadata or FA4 calls. - out = torch.zeros_like(q, dtype=torch.float32) - lse = torch.full(q.shape[:-1], -torch.inf, device=q.device, dtype=torch.float32) - for q_row, q_len, k_row, k_len in segments: - qs = q[:, q_row : q_row + q_len].float() - ks = k[:, k_row : k_row + k_len].float().repeat_interleave(4, dim=2) - vs = v[:, k_row : k_row + k_len].float().repeat_interleave(4, dim=2) - scores = torch.einsum("bqhd,bkhd->bhqk", qs, ks) * q.shape[-1] ** -0.5 - out[:, q_row : q_row + q_len] = torch.einsum("bhqk,bkhd->bqhd", scores.softmax(-1), vs) - lse[:, q_row : q_row + q_len] = scores.logsumexp(-1).transpose(1, 2) - return out, lse - - -@pytest.mark.parametrize("dtype", [torch.bfloat16, torch.float16]) -@pytest.mark.parametrize("history_growth", [0, 5]) -def test_sm120_seven_view_gapped_forward( - dtype: torch.dtype, history_growth: int, monkeypatch: pytest.MonkeyPatch -) -> None: - if not torch.cuda.is_available(): - pytest.skip("Requires an authorized CUDA GPU") - device = torch.device("cuda", torch.cuda.current_device()) - if torch.cuda.get_device_capability(device) != (12, 0): - pytest.skip("This regression targets exact SM120, not other architectures") - pytest.importorskip("flash_attn.cute.interface") - reason = replay.gapped_replay_unavailable_reason(device) - assert reason is None, reason - monkeypatch.setattr(torch.backends.cuda.matmul, "allow_tf32", False) - segments, q_rows, kv_rows = _segments(history_growth) - generator = torch.Generator(device=device).manual_seed(20261021 + history_growth) - q = torch.randn(1, q_rows, 32, 128, device=device, dtype=dtype, generator=generator) - k = torch.randn(1, kv_rows, 8, 128, device=device, dtype=dtype, generator=generator) - v = torch.randn(1, kv_rows, 8, 128, device=device, dtype=dtype, generator=generator) - originals = [tensor.clone() for tensor in (q, k, v)] - plan = replay.build_gapped_replay_plan(segments, (), device) - q_active = torch.zeros(q_rows, dtype=torch.bool, device=device) - k_active = torch.zeros(kv_rows, dtype=torch.bool, device=device) - for q_row, q_len, k_row, k_len in segments: - q_active[q_row : q_row + q_len] = True - k_active[k_row : k_row + k_len] = True - with torch.no_grad(): - out, lse = replay._gapped_replay_forward(q, k, v, plan.handle) - expected, expected_lse = _reference(q, k, v, segments) - torch.cuda.synchronize(device) - assert torch.isfinite(out).all() - assert torch.isfinite(lse[:, q_active]).all() - torch.testing.assert_close(out.float(), expected, atol=0.005, rtol=0.015) - torch.testing.assert_close(lse[:, q_active], expected_lse[:, q_active], atol=0.001, rtol=0.0001) - assert torch.count_nonzero(out[:, ~q_active]).item() == 0 - assert torch.isneginf(lse[:, ~q_active]).all() - for original, actual in zip(originals, (q, k, v), strict=True): - torch.testing.assert_close(actual, original, atol=0, rtol=0) - - # Finite gap values may be read by partial tiles but must never contribute. - gap_k, gap_v = k.clone(), v.clone() - gap_k[:, ~k_active] = 23 - gap_v[:, ~k_active] = -19 - gap_out, gap_lse = replay._gapped_replay_forward(q, gap_k, gap_v, plan.handle) - torch.cuda.synchronize(device) - torch.testing.assert_close(gap_out, out, atol=0, rtol=0) - torch.testing.assert_close(gap_lse, lse, atol=0, rtol=0) - - # Poison every other view while preserving view zero's own keys/values. - own = torch.zeros(kv_rows, dtype=torch.bool, device=device) - first = segments[0] - own[first.k_row : first.k_row + first.k_len] = True - foreign_k, foreign_v = k.clone(), v.clone() - foreign_k[:, ~own] = -11 - foreign_v[:, ~own] = 17 - foreign_out, foreign_lse = replay._gapped_replay_forward(q, foreign_k, foreign_v, plan.handle) - torch.cuda.synchronize(device) - rows = slice(first.q_row, first.q_row + first.q_len) - torch.testing.assert_close(foreign_out[:, rows], out[:, rows], atol=0, rtol=0) - torch.testing.assert_close(foreign_lse[:, rows], lse[:, rows], atol=0, rtol=0) - assert torch.count_nonzero(foreign_out[:, ~q_active]).item() == 0 - assert torch.isneginf(foreign_lse[:, ~q_active]).all() diff --git a/cosmos_framework/model/generator/mot/maskless_attention_test.py b/cosmos_framework/model/generator/mot/maskless_attention_test.py deleted file mode 100644 index e2195d57a..000000000 --- a/cosmos_framework/model/generator/mot/maskless_attention_test.py +++ /dev/null @@ -1,121 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: OpenMDW-1.1 - -"""CPU architecture-admission checks for gapped replay, not generic Flash4.""" - -from types import SimpleNamespace -from unittest.mock import Mock, patch - -import pytest -import torch - -from cosmos_framework.model.generator.mot import maskless_attention as attention - - -@pytest.mark.parametrize("capability", [(9, 0), (10, 0), (10, 3), (10, 9)]) -def test_existing_architectures_do_not_acquire_the_sm120_dependency_requirement(capability): - with ( - patch.object(torch.version, "hip", None), - patch.object(torch.cuda, "get_device_capability", return_value=capability), - patch.object(attention, "_flash_attn_interface", return_value=Mock()), - patch.object(attention, "sm120_gapped_forward_unavailable_reason") as prerequisite, - ): - assert attention.gapped_replay_unavailable_reason(torch.device("cuda:0")) is None - prerequisite.assert_not_called() - - -@pytest.mark.parametrize("capability", [(8, 0), (8, 9), (9, 1), (11, 0), (12, 1), (13, 0)]) -def test_other_architectures_stay_rejected_without_loading_fa4(capability): - with ( - patch.object(torch.version, "hip", None), - patch.object(torch.cuda, "get_device_capability", return_value=capability), - patch.object(attention, "_flash_attn_interface") as loader, - ): - assert attention.gapped_replay_unavailable_reason(torch.device("cuda")) is not None - loader.assert_not_called() - - -@pytest.mark.parametrize("prerequisite_reason", [None, "known-unsafe FA4 version"]) -def test_sm120_always_checks_the_forward_prerequisite(prerequisite_reason): - backend = Mock() - with ( - patch.object(torch.version, "hip", None), - patch.object(torch.cuda, "get_device_capability", return_value=(12, 0)), - patch.object(attention, "_flash_attn_interface", return_value=backend), - patch.object(attention, "sm120_gapped_forward_unavailable_reason", return_value=prerequisite_reason) as check, - ): - assert attention.gapped_replay_unavailable_reason(torch.device("cuda")) == prerequisite_reason - check.assert_called_once_with(backend) - - -def test_cpu_and_rocm_are_rejected_before_querying_cuda(): - with patch.object(torch.cuda, "get_device_capability") as capability: - assert "CUDA device" in attention.gapped_replay_unavailable_reason(torch.device("cpu")) - with patch.object(torch.version, "hip", "6.0"): - assert "ROCm" in attention.gapped_replay_unavailable_reason(torch.device("cuda")) - capability.assert_not_called() - - -def test_missing_optional_backend_is_reported(): - with ( - patch.object(torch.version, "hip", None), - patch.object(torch.cuda, "get_device_capability", return_value=(12, 0)), - patch.object(attention, "_flash_attn_interface", side_effect=ImportError("not installed")), - ): - assert "could not be imported" in attention.gapped_replay_unavailable_reason(torch.device("cuda")) - - -def test_direct_sm120_forward_rejects_before_runtime_or_kernel_access(): - # Exercise the registered Python body without dispatching a CUDA custom op. - q = SimpleNamespace(device=torch.device("cpu")) - backend = Mock() - with ( - patch.object(torch.cuda, "get_device_capability", return_value=(12, 0)), - patch.object(attention, "_flash_attn_interface", return_value=backend), - patch.object(attention, "sm120_gapped_forward_unavailable_reason", return_value="unsafe FA4") as check, - patch.object(attention, "_runtime") as runtime, - ): - with pytest.raises(RuntimeError, match="unsafe FA4"): - attention._gapped_replay_forward._init_fn(q, None, None, None) - check.assert_called_once_with(backend) - runtime.assert_not_called() - backend._flash_attn_fwd.assert_not_called() - - -@pytest.mark.parametrize("capability", [(9, 0), (10, 0), (12, 0)]) -def test_direct_forward_reaches_existing_runtime_after_admission(capability): - q = SimpleNamespace(device=torch.device("cpu"), shape=(1, 1, 32, 128)) - k = SimpleNamespace(shape=(1, 1, 8, 128)) - with ( - patch.object(torch.cuda, "get_device_capability", return_value=capability), - patch.object(attention, "_flash_attn_interface", return_value=Mock()), - patch.object(attention, "sm120_gapped_forward_unavailable_reason", return_value=None) as check, - patch.object(attention, "_runtime", side_effect=RuntimeError("runtime sentinel")), - ): - with pytest.raises(RuntimeError, match="runtime sentinel"): - attention._gapped_replay_forward._init_fn(q, k, None, None) - assert check.call_count == int(capability == (12, 0)) - - -def test_sm120_backward_rejects_before_loading_backend_or_runtime(): - q = SimpleNamespace(device=torch.device("cpu")) - with ( - patch.object(torch.cuda, "get_device_capability", return_value=(12, 0)), - patch.object(attention, "_flash_attn_interface") as loader, - patch.object(attention, "_runtime") as runtime, - ): - with pytest.raises(RuntimeError, match="inference-only"): - attention._gapped_replay_backward._init_fn(q, None, None, None, None, None, None) - loader.assert_not_called() - runtime.assert_not_called() - - -@pytest.mark.parametrize("capability", [(9, 0), (10, 0)]) -def test_existing_backward_keeps_its_backend_path(capability): - q = SimpleNamespace(device=torch.device("cpu")) - with ( - patch.object(torch.cuda, "get_device_capability", return_value=capability), - patch.object(attention, "_flash_attn_interface", side_effect=RuntimeError("backend sentinel")), - ): - with pytest.raises(RuntimeError, match="backend sentinel"): - attention._gapped_replay_backward._init_fn(q, None, None, None, None, None, None) diff --git a/docs/sm120_gapped_replay.md b/docs/sm120_gapped_replay.md deleted file mode 100644 index daab286dc..000000000 --- a/docs/sm120_gapped_replay.md +++ /dev/null @@ -1,119 +0,0 @@ -# Experimental SM120 gapped forward replay - -This change admits exact SM120 for native gapped **forward** replay only when -FlashAttention-4 (FA4) has the reviewed invalid-work-tile fix and forward API. -It is an experimental review candidate, not a claim of qualified SM120 training -or production support. The current public candidate still needs GPU qualification. - -## Why changing the architecture check alone is unsafe - -There were two separate failures: - -1. The Framework admission check rejected `(12, 0)` before native replay could run - (`cosmos_framework/model/generator/mot/maskless_attention.py:429`). -2. After admission, an FA4 scheduler-padding work tile could index beyond the - variable-length batch metadata. The kernel must check `work_tile.is_valid_tile` - before constructing sequence information. FA4 [PR #2763][fix] adds that guard. - Stock b24 and b28 predate it; b30 contains it. - -The upstream guard precedes `SeqlenInfoQK.create` -([fixed source, `flash_attn/cute/flash_fwd.py:793`][fixed-source]); compare the -[older unguarded source at line 787][old-source]. The historical SM120 reproduction -reported 17 memcheck errors before the companion kernel fix. An architecture-only -patch is therefore insufficient. - -## Scope and qualification - -The public base is `a2a7409efd6b8559193245d142be03eb57f17819`. This candidate -requires exact stock `4.0.0b30`, complete dependencies and the explicit forward -API. Its four manual GPU cases and native model inference have not yet been run. -Backward/training is explicitly rejected on SM120. - -Earlier downstream tests used a different Framework baseline and FA4 b28 with -the PR #2763 source backport. Those results do not satisfy this exact-b30 gate -and must not be relabeled as validation of this candidate. Other execution paths -are likewise not qualification evidence for this native Framework candidate. - -Existing SM90/SM10 admission and attention mathematics are unchanged. SM121 and -other architectures remain rejected. Generic Flash4, block-sparse attention, -Transfer-Auto, LiDAR generation and model-quality acceptance are outside this -change. SM120 forward execution is checked both at availability admission and at -the custom-op entry; SM120 backward fails before loading the native backend. - -## Dependency prerequisite - -The helper at -`cosmos_framework/model/generator/mot/maskless_attention_compat.py:31` checks -distribution metadata and the private `_flash_attn_fwd` signature, including the -ten explicit arguments used by replay. Metadata is not source attestation. -Missing metadata, local-version strings, older releases, future releases and -incompatible signatures fail closed. - -This patch deliberately does **not** globally replace the repository's b24 pins -or rewrite its lockfile: doing so would change existing Hopper/B200 environments -without regression evidence. A default b24 installation remains rejected on SM120. - -For qualification, build a separate SM120 environment with exact b30 and its -complete dependency set. Preserve the chosen Torch/CUDA constraints and resolve -dependencies together. The [b30 manifest][dependencies] requires, among others, -`nvidia-cutlass-dsl>=4.6.2`, `torch-c-dlpack-ext`, -`apache-tvm-ffi>=0.1.12,<0.2` and `quack-kernels>=0.5.3`. Simply replacing the FA4 -wheel with `--no-deps` in the b24 environment is not a supported procedure. -Run `python -m pip check`, archive the resolved environment, and use that -environment's Python directly so an automatic project sync does not restore b24. - -The b30 forward API is reviewed at -[`flash_attn/cute/interface.py:525`][forward-api]. The version gate does not prove -the entire dependency stack, arbitrary shapes or backward are correct. - -## Verification - -CPU tests exercise real Framework admission with mocked device observations and -the CUDA-free compatibility helper. They do not execute FA4 or establish GPU -correctness. In an existing dependency-complete CPU test environment, from the -repository root: - -```sh -CUDA_VISIBLE_DEVICES='' COSMOS_TRAINING=0 COSMOS_INTERNAL=0 PYTHONPATH="$PWD" \ - python -m pytest -c /dev/null --rootdir "$PWD" \ - --confcutdir "$PWD/cosmos_framework/model/generator/mot" \ - -p no:cacheprovider \ - cosmos_framework/model/generator/mot/maskless_attention_compat_test.py \ - cosmos_framework/model/generator/mot/maskless_attention_test.py -``` - -The isolated configuration intentionally avoids the repository-wide GPU setup -fixtures. This is a focused test run, not the full repository suite. - -On an authorized, exclusively idle SM120 GPU with the prepared b30 environment, -the manual regression is -`cosmos_framework/model/generator/mot/maskless_attention_sm120_gpu_test.py:49`: - -```sh -.venv-sm120/bin/python -m pytest --manual --levels=0 --num-gpus=1 \ - cosmos_framework/model/generator/mot/maskless_attention_sm120_gpu_test.py -compute-sanitizer --tool memcheck --error-exitcode 99 \ - .venv-sm120/bin/python -m pytest --manual --levels=0 --num-gpus=1 \ - cosmos_framework/model/generator/mot/maskless_attention_sm120_gpu_test.py -compute-sanitizer --tool initcheck --error-exitcode 99 \ - .venv-sm120/bin/python -m pytest --manual --levels=0 --num-gpus=1 \ - cosmos_framework/model/generator/mot/maskless_attention_sm120_gpu_test.py -``` - -All four cases must execute, not skip. Require zero sanitizer errors and archive -the exact GPU, Torch/CUDA, FA4 and complete dependency identities with logs. -Cases cover BF16/FP16, GQA4, seven variable-length views, partial tiles, finite -gap perturbations, input immutability, output/LSE agreement against an independent -FP32 reference, and foreign-view isolation. The two history lengths are synthetic -shapes, **not** a rolling-cache or complete model test. - -Before qualification, also repeat a bounded native Sim-Auto inference smoke with -complete video decoding and obtain SM90/SM10 regression results. No new GPU jobs -were submitted while preparing this patch. Merge readiness remains pending those -checks and maintainer approval of the isolated dependency policy. - -[fix]: https://github.com/Dao-AILab/flash-attention/pull/2763 -[fixed-source]: https://github.com/Dao-AILab/flash-attention/blob/9d61d35ba876834539af7df369fbabef1ad1e5d7/flash_attn/cute/flash_fwd.py#L793 -[old-source]: https://github.com/Dao-AILab/flash-attention/blob/849f660f73b176e5ad5670e7f822c7fa9f3eaf8b/flash_attn/cute/flash_fwd.py#L787 -[forward-api]: https://github.com/Dao-AILab/flash-attention/blob/9d61d35ba876834539af7df369fbabef1ad1e5d7/flash_attn/cute/interface.py#L525 -[dependencies]: https://github.com/Dao-AILab/flash-attention/blob/9d61d35ba876834539af7df369fbabef1ad1e5d7/flash_attn/cute/pyproject.toml#L31 From 7a8cd46cbf1f453b91d97060271c8f9131f90155 Mon Sep 17 00:00:00 2001 From: junghok Date: Wed, 21 Oct 2026 17:38:29 +0900 Subject: [PATCH 3/4] Limit SM120 patch to architecture admission only Signed-off-by: junghok --- .../model/generator/mot/maskless_attention.py | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/cosmos_framework/model/generator/mot/maskless_attention.py b/cosmos_framework/model/generator/mot/maskless_attention.py index 98588640b..f8596a19b 100644 --- a/cosmos_framework/model/generator/mot/maskless_attention.py +++ b/cosmos_framework/model/generator/mot/maskless_attention.py @@ -51,7 +51,6 @@ from collections.abc import Sequence from dataclasses import dataclass, fields from importlib import import_module -from importlib.metadata import PackageNotFoundError, version from itertools import accumulate, pairwise from types import ModuleType from typing import Any, NamedTuple @@ -61,8 +60,8 @@ import torch import triton -from cosmos_framework.configs.base.defaults.multiview_attention import temporal_window_bounds from cosmos_framework.model.attention.utils.environment import is_torch_compiling +from cosmos_framework.configs.base.defaults.multiview_attention import temporal_window_bounds from cosmos_framework.model.generator.mot import maskless_kernels as kernels from cosmos_framework.model.generator.mot.causal_flex_attention import ( _ROLE_PADDING, @@ -436,18 +435,11 @@ def gapped_replay_unavailable_reason(device: torch.device) -> str | None: if (major, minor) not in ((9, 0), (12, 0)) and major != 10: # Hopper and Blackwell use different FA4 kernels; the replay GPU tests cover # the segment isolation and untouched gap rows required by both paths. - return f"it needs FlashAttention-4 on Hopper (sm90), Blackwell (sm100/sm103), or experimental SM120, got sm{major}{minor}" + return f"it needs FlashAttention-4 on Hopper (sm90) or Blackwell (sm100/sm103), got sm{major}{minor}" try: _flash_attn_interface() except ImportError as error: return f"it needs FlashAttention-4 (flash_attn.cute.interface), which could not be imported: {error}" - if (major, minor) == (12, 0): - # Older FA4 releases lack the invalid-work-tile fix from upstream PR #2763. - try: - if version("flash-attn-4") != "4.0.0b30": - return "SM120 gapped replay needs flash-attn-4==4.0.0b30 (FA4 PR #2763 invalid-tile fix)" - except PackageNotFoundError: - return "SM120 gapped replay needs flash-attn-4 distribution metadata" return None @@ -852,8 +844,6 @@ def _gapped_replay_forward( handle: torch.Tensor, # [1] int64 on CPU ) -> tuple[torch.Tensor, torch.Tensor]: # [1,Q,H,Dv], [1,Q,H] FP32 """Run each part's native forward and merge by FP32 log-sum-exp. Rows nothing reaches are zero.""" - if torch.cuda.get_device_capability(q.device) == (12, 0): - require_gapped_replay(q.device) flash_attn = _flash_attn_interface() if q.shape[2] % k.shape[2] != 0: raise ValueError(f"Query heads ({q.shape[2]}) must be a multiple of KV heads ({k.shape[2]}).") @@ -922,9 +912,6 @@ def _gapped_replay_backward( Every launch uses the same folded query layout and segment arguments as forward. Rows nothing reaches are zero. """ - # The SM120 forward evidence does not qualify native backward or training. - if torch.cuda.get_device_capability(q.device) == (12, 0): - raise RuntimeError("SM120 gapped replay is inference-only; backward has not been qualified.") flash_attn = _flash_attn_interface() runtime = _runtime(handle) q, k, v = (tensor.contiguous() for tensor in (q, k, v)) # [1,Q,H,D], [1,KV,H_KV,D], [1,KV,H_KV,Dv] From 2fefe2e5f28495e2de623140999b8256723b87ed Mon Sep 17 00:00:00 2001 From: junghok Date: Wed, 21 Oct 2026 17:47:47 +0900 Subject: [PATCH 4/4] fix: use FA4 release with invalid-varlen-tile guard Signed-off-by: junghok --- pyproject.toml | 6 +-- uv.lock | 136 ++++++++++++++++++++++++++++++++++--------------- 2 files changed, 98 insertions(+), 44 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index dc1ad0905..20d66f371 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -196,7 +196,7 @@ vllm = [ # Match nvcr.io/nvidia/pytorch:25.11-py3: https://docs.nvidia.com/deeplearning/frameworks/pytorch-release-notes/rel-26-01.html cu128 = [ # FA4 CuTeDSL kernels; the cu13 extra is only needed by CUDA 13 environments. - "flash-attn-4==4.0.0b24", + "flash-attn-4==4.0.0b30", "flash-attn-3-nv==1.0.3+cu128.torch210; platform_machine == 'x86_64'", "flash-attn==2.7.4.post1+cu128.torch210; platform_machine == 'x86_64'", "natten==0.21.6.dev6+cu128.torch210; platform_machine == 'x86_64'", @@ -231,7 +231,7 @@ cu128-train = [ # Match nvcr.io/nvidia/pytorch:25.11-py3: https://docs.nvidia.com/deeplearning/frameworks/pytorch-release-notes/rel-25-11.html cu130 = [ # Match imaginaire4's FA4 installation on both x86_64 and aarch64. - "flash-attn-4[cu13]==4.0.0b24", + "flash-attn-4[cu13]==4.0.0b30", "flash-attn-3-nv==1.0.3+cu130.torch210; platform_machine == 'x86_64'", "flash-attn==2.7.4.post1+cu130.torch210; platform_machine == 'x86_64'", # GB300/B300 (sm_103a): use the custom build that includes sm_103a kernels (both arches). @@ -267,7 +267,7 @@ cu130-train = [ ] # torch 2.13 on CUDA 13.0. Same layout as cu130 but pinned to torch 2.13. cu130-torch213 = [ - "flash-attn-4[cu13]==4.0.0b24", + "flash-attn-4[cu13]==4.0.0b30", #"flash-attn-3-nv==1.0.3+cu130.torch210; platform_machine == 'x86_64'", # TODO: torch213 build (cu130.torch210 wheels are cp313-only + torch210 ABI) #"flash-attn==2.7.4.post1+cu130.torch210; platform_machine == 'x86_64'", # TODO: torch213 build (cu130.torch210 wheels are cp313-only + torch210 ABI) # torch2.13 build (natten 0.21.6, sm 80/86/89/90/100/103/110/120/121) — matches this group's torch/ABI. diff --git a/uv.lock b/uv.lock index 22310a24e..774e41e91 100644 --- a/uv.lock +++ b/uv.lock @@ -2816,7 +2816,7 @@ provides-extras = ["automl", "automl-prompts", "reasoner-eval", "guardrail", "in cu128 = [ { name = "flash-attn", marker = "python_full_version == '3.13.*' and platform_machine == 'x86_64'", specifier = "==2.7.4.post1+cu128.torch210", index = "https://nvidia-cosmos.github.io/cosmos-dependencies/v1.5.0" }, { name = "flash-attn-3-nv", marker = "python_full_version == '3.13.*' and platform_machine == 'x86_64'", specifier = "==1.0.3+cu128.torch210", index = "https://nvidia-cosmos.github.io/cosmos-dependencies/v1.5.0" }, - { name = "flash-attn-4", marker = "python_full_version == '3.13.*'", specifier = "==4.0.0b24" }, + { name = "flash-attn-4", marker = "python_full_version == '3.13.*'", specifier = "==4.0.0b30" }, { name = "natten", marker = "python_full_version == '3.13.*' and platform_machine == 'x86_64'", specifier = "==0.21.6.dev6+cu128.torch210", index = "https://nvidia-cosmos.github.io/cosmos-dependencies/v1.5.0" }, { name = "nvidia-cublas-cu12", marker = "python_full_version == '3.13.*'", specifier = "==12.8.4.1" }, { name = "nvidia-cuda-cupti-cu12", marker = "python_full_version == '3.13.*'", specifier = "==12.8.90" }, @@ -2841,7 +2841,7 @@ cu128 = [ cu128-train = [ { name = "flash-attn", marker = "python_full_version == '3.13.*' and platform_machine == 'x86_64'", specifier = "==2.7.4.post1+cu128.torch210", index = "https://nvidia-cosmos.github.io/cosmos-dependencies/v1.5.0" }, { name = "flash-attn-3-nv", marker = "python_full_version == '3.13.*' and platform_machine == 'x86_64'", specifier = "==1.0.3+cu128.torch210", index = "https://nvidia-cosmos.github.io/cosmos-dependencies/v1.5.0" }, - { name = "flash-attn-4", marker = "python_full_version == '3.13.*'", specifier = "==4.0.0b24" }, + { name = "flash-attn-4", marker = "python_full_version == '3.13.*'", specifier = "==4.0.0b30" }, { name = "natten", marker = "python_full_version == '3.13.*' and platform_machine == 'x86_64'", specifier = "==0.21.6.dev6+cu128.torch210", index = "https://nvidia-cosmos.github.io/cosmos-dependencies/v1.5.0" }, { name = "nvidia-cublas-cu12", marker = "python_full_version == '3.13.*'", specifier = "==12.8.4.1" }, { name = "nvidia-cuda-cupti-cu12", marker = "python_full_version == '3.13.*'", specifier = "==12.8.90" }, @@ -2869,7 +2869,7 @@ cu128-train = [ cu130 = [ { name = "flash-attn", marker = "python_full_version == '3.13.*' and platform_machine == 'x86_64'", specifier = "==2.7.4.post1+cu130.torch210", index = "https://nvidia-cosmos.github.io/cosmos-dependencies/v1.5.0" }, { name = "flash-attn-3-nv", marker = "python_full_version == '3.13.*' and platform_machine == 'x86_64'", specifier = "==1.0.3+cu130.torch210", index = "https://nvidia-cosmos.github.io/cosmos-dependencies/v1.5.0" }, - { name = "flash-attn-4", extras = ["cu13"], marker = "python_full_version == '3.13.*'", specifier = "==4.0.0b24" }, + { name = "flash-attn-4", extras = ["cu13"], marker = "python_full_version == '3.13.*'", specifier = "==4.0.0b30" }, { name = "natten", marker = "python_full_version == '3.13.*' and platform_machine == 'aarch64'", specifier = "==0.21.6.dev6+cu130.torch210.gb300", index = "https://nvidia-cosmos.github.io/cosmos-dependencies/v1.5.0" }, { name = "natten", marker = "python_full_version == '3.13.*' and platform_machine == 'x86_64'", specifier = "==0.21.6.dev6+cu130.torch210.gb300", index = "https://nvidia-cosmos.github.io/cosmos-dependencies/v1.5.0" }, { name = "nvidia-cublas", marker = "python_full_version == '3.13.*'", specifier = "==13.1.0.3" }, @@ -2893,7 +2893,7 @@ cu130 = [ { name = "torchvision", marker = "python_full_version == '3.13.*'", specifier = "==0.25.0+cu130", index = "https://download.pytorch.org/whl" }, ] cu130-torch213 = [ - { name = "flash-attn-4", extras = ["cu13"], marker = "python_full_version == '3.13.*'", specifier = "==4.0.0b24" }, + { name = "flash-attn-4", extras = ["cu13"], marker = "python_full_version == '3.13.*'", specifier = "==4.0.0b30" }, { name = "natten", marker = "python_full_version == '3.13.*'", specifier = "==0.21.6+cu130.torch213", index = "https://nvidia-cosmos.github.io/cosmos-dependencies/v1.5.0" }, { name = "nvidia-cublas", marker = "python_full_version == '3.13.*'", specifier = "==13.1.1.3" }, { name = "nvidia-cuda-cupti", marker = "python_full_version == '3.13.*'", specifier = "==13.0.85" }, @@ -2916,7 +2916,7 @@ cu130-torch213 = [ { name = "torchvision", marker = "python_full_version == '3.13.*'", specifier = "==0.28.0+cu130", index = "https://download.pytorch.org/whl" }, ] cu130-torch213-train = [ - { name = "flash-attn-4", extras = ["cu13"], marker = "python_full_version == '3.13.*'", specifier = "==4.0.0b24" }, + { name = "flash-attn-4", extras = ["cu13"], marker = "python_full_version == '3.13.*'", specifier = "==4.0.0b30" }, { name = "natten", marker = "python_full_version == '3.13.*'", specifier = "==0.21.6+cu130.torch213", index = "https://nvidia-cosmos.github.io/cosmos-dependencies/v1.5.0" }, { name = "nvidia-cublas", marker = "python_full_version == '3.13.*'", specifier = "==13.1.1.3" }, { name = "nvidia-cuda-cupti", marker = "python_full_version == '3.13.*'", specifier = "==13.0.85" }, @@ -2944,7 +2944,7 @@ cu130-torch213-train = [ cu130-train = [ { name = "flash-attn", marker = "python_full_version == '3.13.*' and platform_machine == 'x86_64'", specifier = "==2.7.4.post1+cu130.torch210", index = "https://nvidia-cosmos.github.io/cosmos-dependencies/v1.5.0" }, { name = "flash-attn-3-nv", marker = "python_full_version == '3.13.*' and platform_machine == 'x86_64'", specifier = "==1.0.3+cu130.torch210", index = "https://nvidia-cosmos.github.io/cosmos-dependencies/v1.5.0" }, - { name = "flash-attn-4", extras = ["cu13"], marker = "python_full_version == '3.13.*'", specifier = "==4.0.0b24" }, + { name = "flash-attn-4", extras = ["cu13"], marker = "python_full_version == '3.13.*'", specifier = "==4.0.0b30" }, { name = "natten", marker = "python_full_version == '3.13.*' and platform_machine == 'aarch64'", specifier = "==0.21.6.dev6+cu130.torch210.gb300", index = "https://nvidia-cosmos.github.io/cosmos-dependencies/v1.5.0" }, { name = "natten", marker = "python_full_version == '3.13.*' and platform_machine == 'x86_64'", specifier = "==0.21.6.dev6+cu130.torch210.gb300", index = "https://nvidia-cosmos.github.io/cosmos-dependencies/v1.5.0" }, { name = "nvidia-cublas", marker = "python_full_version == '3.13.*'", specifier = "==13.1.0.3" }, @@ -4673,27 +4673,27 @@ wheels = [ [[package]] name = "flash-attn-4" -version = "4.0.0b24" +version = "4.0.0b30" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "apache-tvm-ffi", version = "0.1.14.post1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero')" }, { name = "einops", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero')" }, - { name = "nvidia-cutlass-dsl", version = "4.6.0.dev0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero')" }, - { name = "quack-kernels", version = "0.5.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero')" }, + { name = "nvidia-cutlass-dsl", version = "4.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero')" }, + { name = "quack-kernels", version = "0.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero')" }, { name = "torch", version = "2.10.0+cu128", source = { registry = "https://download.pytorch.org/whl" }, marker = "(python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu128') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, { name = "torch", version = "2.10.0+cu130", source = { registry = "https://download.pytorch.org/whl" }, marker = "(python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130-train') or (python_full_version < '3.13' and extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero')" }, { name = "torch", version = "2.13.0+cu130", source = { registry = "https://download.pytorch.org/whl" }, marker = "(python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train')" }, { name = "torch-c-dlpack-ext", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero')" }, { name = "typing-extensions", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero')" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/32/74/1303dfd7a38d91c0e9717c8367b30cdf6d249fb1a42feabceeda1ed86fbf/flash_attn_4-4.0.0b24.tar.gz", hash = "sha256:6c4b981ef433882871ded48317deaa18ea22f731ca4f8b9387804bfa2e8078e2", size = 358637, upload-time = "2026-07-29T09:02:12.753Z" } +sdist = { url = "https://files.pythonhosted.org/packages/10/a4/e6ced2048a081cfbb3be423bfc39e4046829533c74f259f1b02f5a66a615/flash_attn_4-4.0.0b30.tar.gz", hash = "sha256:fa3d1cc0318f6d4693366167be5d7aaf9199daf821f875af04db25ecfb62c28b", size = 380989, upload-time = "2026-09-09T08:20:47.785Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/82/861caf5303cde9ba1499904d63be94b1464a4c0932215f2e77500e5387ab/flash_attn_4-4.0.0b24-py3-none-any.whl", hash = "sha256:c1dcf0dfcf37c4496728547dcb3c1e66d7dcaa07cfedef0f26ccc4d74453951f", size = 383266, upload-time = "2026-07-29T09:02:11.189Z" }, + { url = "https://files.pythonhosted.org/packages/87/af/5fec32fc6e41ac0584f174275821483d801df5e8239d917a2102c8c6e419/flash_attn_4-4.0.0b30-py3-none-any.whl", hash = "sha256:326585b153feb101c61571626bd88ac6b4977ae0301d472cc220c28c9c4f78c9", size = 406189, upload-time = "2026-09-09T08:20:46.166Z" }, ] [package.optional-dependencies] cu13 = [ - { name = "nvidia-cutlass-dsl", version = "4.6.0.dev0", source = { registry = "https://pypi.org/simple" }, extra = ["cu13"], marker = "(python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130-train') or (python_full_version < '3.13' and extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero')" }, + { name = "nvidia-cutlass-dsl", version = "4.6.2", source = { registry = "https://pypi.org/simple" }, extra = ["cu13"], marker = "(python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130-train') or (python_full_version < '3.13' and extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero')" }, ] [[package]] @@ -4717,7 +4717,7 @@ dependencies = [ { name = "numpy" }, { name = "nvidia-cudnn-frontend" }, { name = "nvidia-cutlass-dsl", version = "4.4.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu128') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu128-train') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130') or (python_full_version < '3.13' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train' and extra != 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra != 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-libero')" }, - { name = "nvidia-cutlass-dsl", version = "4.6.0.dev0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu128') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu128-train') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130') or (python_full_version >= '3.13' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, + { name = "nvidia-cutlass-dsl", version = "4.6.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu128') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu128-train') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130') or (python_full_version >= '3.13' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, { name = "nvidia-ml-py" }, { name = "packaging" }, { name = "requests" }, @@ -8827,6 +8827,16 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/41/bc/83f5426095d93694ae39fe1311431b5d5a9bb82e48bf0dd8e19be2765942/nvidia_cuda_cupti_cu12-12.8.90-py3-none-win_amd64.whl", hash = "sha256:bb479dcdf7e6d4f8b0b01b115260399bf34154a1a2e9fe11c85c517d87efd98e", size = 7015759, upload-time = "2025-03-07T01:51:11.355Z" }, ] +[[package]] +name = "nvidia-cuda-nvdisasm" +version = "13.3.29" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8c/08/c9405b910ec88e7b6dc889450b1a7b5d379aa0981263290f056144f89d0b/nvidia_cuda_nvdisasm-13.3.29-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ea6f6f403a0aaa5d4240d1b26f7a70496719465f226c01ba8d1ad19b338b4fb6", size = 4744516, upload-time = "2026-05-26T16:35:48.845Z" }, + { url = "https://files.pythonhosted.org/packages/87/96/4d77373913d602772a503e5c73475b043878b84d95906878f7eb34a0d886/nvidia_cuda_nvdisasm-13.3.29-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d412810102e838b4429a221a872c1ed77b398ac919d9818d0123bd3937a110dc", size = 4782826, upload-time = "2026-05-26T16:36:08.685Z" }, + { url = "https://files.pythonhosted.org/packages/fa/79/2162190499f5259ac7557720fc3236c9c1f696d50b5cb9ba134eb183d6e1/nvidia_cuda_nvdisasm-13.3.29-py3-none-win_amd64.whl", hash = "sha256:b5f96e500f76fb3123cf27085945d708bd8b94a6f7cf27fff5b6fbb0524c993c", size = 5015371, upload-time = "2026-05-26T17:14:25.697Z" }, +] + [[package]] name = "nvidia-cuda-nvrtc" version = "13.0.88" @@ -9444,7 +9454,7 @@ wheels = [ [[package]] name = "nvidia-cutlass-dsl" -version = "4.6.0.dev0" +version = "4.6.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux' and extra != 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-cu130' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero'", @@ -9522,10 +9532,11 @@ resolution-markers = [ "python_full_version >= '3.13' and sys_platform == 'darwin' and extra != 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-cu130' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train' and extra != 'group-16-cosmos-framework-cu130-train' and extra != 'group-16-cosmos-framework-libero'", ] dependencies = [ - { name = "nvidia-cutlass-dsl-libs-base", version = "4.6.0.dev0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, + { name = "nvidia-cutlass-dsl-libs-base", version = "4.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, + { name = "nvidia-cutlass-dsl-libs-cu12", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/95/80/9e563d5b9e670761c930505e68e3826711ce1d32db5a992db6fae4aa1961/nvidia_cutlass_dsl-4.6.0.dev0-py3-none-any.whl", hash = "sha256:98dfd40fabc6c0db610eeeaea403f0bb9e2aec0bc699ae0cdf475fa4a54710ca", size = 10234, upload-time = "2026-06-14T04:18:51.719Z" }, + { url = "https://files.pythonhosted.org/packages/b2/ec/14e6ecbfed31ec35bbd1bb6965ae61f879370906a8f9c2e851e292704ba4/nvidia_cutlass_dsl-4.6.2-py3-none-any.whl", hash = "sha256:06ac62deb182a852dfb053032cf945bf02b9aa1bf502a18b129d280d7babb26c", size = 10460, upload-time = "2026-08-05T14:39:41.657Z" }, ] [package.optional-dependencies] @@ -9677,7 +9688,7 @@ wheels = [ [[package]] name = "nvidia-cutlass-dsl-libs-base" -version = "4.6.0.dev0" +version = "4.6.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux' and extra != 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-cu130' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero'", @@ -9758,40 +9769,83 @@ dependencies = [ { name = "cuda-python", version = "12.9.4", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and sys_platform == 'linux' and extra == 'group-16-cosmos-framework-cu128') or (python_full_version >= '3.13' and sys_platform == 'linux' and extra == 'group-16-cosmos-framework-cu128-train') or (python_full_version >= '3.13' and extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-libero') or (python_full_version >= '3.13' and extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, { name = "cuda-python", version = "13.0.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and sys_platform != 'linux' and extra == 'extra-16-cosmos-framework-train') or (python_full_version >= '3.13' and sys_platform != 'linux' and extra == 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-cu130' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train' and extra != 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero') or (python_full_version >= '3.13' and sys_platform != 'linux' and extra != 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-cu130' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train' and extra != 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm') or (python_full_version < '3.13' and extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (python_full_version >= '3.13' and extra != 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-libero')" }, { name = "numpy", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, + { name = "nvidia-cuda-nvdisasm", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, + { name = "nvidia-cutlass-dsl-libs-core", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, + { name = "protobuf", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, + { name = "typing-extensions", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/d1/5f4647b12473308229518b528af0fcb4a5339d20c300820d1c68d523d04f/nvidia_cutlass_dsl_libs_base-4.6.2-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:42e5db1c338c6f14726afe01b451899e8b8a50f1f40934eb9d5bd8df303b1154", size = 3320170, upload-time = "2026-08-05T14:10:22.493Z" }, + { url = "https://files.pythonhosted.org/packages/26/a7/2da08f68c683246f324a50ae0fb7a9b81bfde6633a56382ec22fc4930108/nvidia_cutlass_dsl_libs_base-4.6.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:f15edb860162f0601651115d761ec15dc57244808cc47a08b95b9aec83c68f3f", size = 2824919, upload-time = "2026-08-05T14:11:18.112Z" }, + { url = "https://files.pythonhosted.org/packages/70/0e/5020da76c7dd3ed74acc6f435e53ca2df967762b2d8408f3e81f146e018a/nvidia_cutlass_dsl_libs_base-4.6.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:aae76fcc94c5483279f06848ee470b87417b9b1a4ad8f822a12e2654cbaf513a", size = 3321401, upload-time = "2026-08-05T14:11:32.779Z" }, + { url = "https://files.pythonhosted.org/packages/12/ce/dfefb22eb438de1e0e6c6627f188449ad3f65448522ba80a12a67bb14715/nvidia_cutlass_dsl_libs_base-4.6.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:551097a99537ffdd239678088865ab8d1e273633f0961493509284d8445dd420", size = 2827063, upload-time = "2026-08-05T14:11:54.706Z" }, + { url = "https://files.pythonhosted.org/packages/aa/f3/4be98f2faa283471e355a42ecbc20956fb2c3b6dbc71861f483be277e99a/nvidia_cutlass_dsl_libs_base-4.6.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:e129db7155d56ba4478be098c0f819e37690a6ce5d43a9a9a83bf1300d32c57f", size = 3321894, upload-time = "2026-08-05T14:12:30.139Z" }, + { url = "https://files.pythonhosted.org/packages/54/1b/cf4a0837054bb4b9dc36cdd86f9d2e7fead3629e3373aaa7f7ec1e5e1542/nvidia_cutlass_dsl_libs_base-4.6.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:24dfaddad6077fd0de14eecaf66a72762f2f5f30ae1872231f5bf8b243ac2eac", size = 2824987, upload-time = "2026-08-05T14:12:49.618Z" }, + { url = "https://files.pythonhosted.org/packages/41/e9/a402e079e926f1fbcf82e30dfcd87aa924aaf91b02db08d57e83b158dbb2/nvidia_cutlass_dsl_libs_base-4.6.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:334a9be3c5054286666b14f81c9278075c2007b947ba75f7ee44b94aadf26415", size = 3321794, upload-time = "2026-08-05T14:13:12.501Z" }, + { url = "https://files.pythonhosted.org/packages/d8/4c/0a6c6e785e8fb2bfc6a0941559d30fbaf6264ae77ee1a26a42e37fd6efdc/nvidia_cutlass_dsl_libs_base-4.6.2-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:896f8a87d0815e59066b0607930c9905a5cf8f5c7a01a423b0093bc876bac4b4", size = 2825075, upload-time = "2026-08-05T14:13:34.746Z" }, +] + +[[package]] +name = "nvidia-cutlass-dsl-libs-core" +version = "4.6.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cuda-python", version = "12.9.4", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and sys_platform == 'linux' and extra == 'group-16-cosmos-framework-cu128') or (python_full_version >= '3.13' and sys_platform == 'linux' and extra == 'group-16-cosmos-framework-cu128-train') or (python_full_version >= '3.13' and extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-libero') or (python_full_version >= '3.13' and extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, + { name = "cuda-python", version = "13.0.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and sys_platform != 'linux' and extra == 'extra-16-cosmos-framework-train') or (python_full_version >= '3.13' and sys_platform != 'linux' and extra == 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-cu130' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train' and extra != 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero') or (python_full_version >= '3.13' and sys_platform != 'linux' and extra != 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-cu130' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train' and extra != 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm') or (python_full_version < '3.13' and extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (python_full_version >= '3.13' and extra != 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-libero')" }, + { name = "numpy", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, + { name = "nvidia-cuda-nvdisasm", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, + { name = "protobuf", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, + { name = "typing-extensions", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/ef/10c0089234a32f1379e1f213f28f8c7521a9ff0154e3acc58f613d5ef3be/nvidia_cutlass_dsl_libs_core-4.6.2-py3-none-any.whl", hash = "sha256:571d4b46fca1bfbb123d0dc348eaa7fd80af0014ddffc07b849e8195b2364333", size = 772393, upload-time = "2026-08-05T14:09:50.76Z" }, +] + +[[package]] +name = "nvidia-cutlass-dsl-libs-cu12" +version = "4.6.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cuda-python", version = "12.9.4", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and sys_platform == 'linux' and extra == 'group-16-cosmos-framework-cu128') or (python_full_version >= '3.13' and sys_platform == 'linux' and extra == 'group-16-cosmos-framework-cu128-train') or (python_full_version >= '3.13' and extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-libero') or (python_full_version >= '3.13' and extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, + { name = "cuda-python", version = "13.0.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and sys_platform != 'linux' and extra == 'extra-16-cosmos-framework-train') or (python_full_version >= '3.13' and sys_platform != 'linux' and extra == 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-cu130' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train' and extra != 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero') or (python_full_version >= '3.13' and sys_platform != 'linux' and extra != 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-cu130' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train' and extra != 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm') or (python_full_version < '3.13' and extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (python_full_version >= '3.13' and extra != 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra != 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-libero')" }, + { name = "numpy", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, + { name = "nvidia-cuda-nvdisasm", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, + { name = "nvidia-cutlass-dsl-libs-base", version = "4.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, { name = "protobuf", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, { name = "typing-extensions", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/4d/22e1cd5be088668029e8c53f7b6a92d16e919525fa8535536f53956748ae/nvidia_cutlass_dsl_libs_base-4.6.0.dev0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:516042afd42419aa085120950415ac2a49333a7f821756647ebc2e142049720b", size = 89043771, upload-time = "2026-06-14T04:28:11.009Z" }, - { url = "https://files.pythonhosted.org/packages/b7/0c/45b8e0b3c8386ae88b82cd65ca249271f9a6978d60f208665228a358830b/nvidia_cutlass_dsl_libs_base-4.6.0.dev0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:29c01b026e41afe89db970466c1b6a16e60166e47a76e4c6f88148133c485ab0", size = 90621274, upload-time = "2026-06-14T04:29:18.612Z" }, - { url = "https://files.pythonhosted.org/packages/9b/70/5d5e8dbb4911e890a98848da23cf624a022e320f93d79b637e50e5ddd0f0/nvidia_cutlass_dsl_libs_base-4.6.0.dev0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:d08feb9429bd872022d01fd790a6a9cded57a14f4ea2b2525ed62ee4a32f5f7f", size = 89045465, upload-time = "2026-06-14T04:26:05.71Z" }, - { url = "https://files.pythonhosted.org/packages/0a/0b/1b2e7b5a1c1f59fed0302fc90f03e3f4b61f81b75607453c6726fe642a36/nvidia_cutlass_dsl_libs_base-4.6.0.dev0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:218b0cfeaf8c3184933635032f589c6c190513f3efe0b232b05b69d0b5be5c4b", size = 90624030, upload-time = "2026-06-14T04:30:22.411Z" }, - { url = "https://files.pythonhosted.org/packages/59/07/5747add860c9747b56c2d11eb2831d6f6d831b27f715bdf33573258b0a6c/nvidia_cutlass_dsl_libs_base-4.6.0.dev0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:97683ee6231ec57c4f7bfd2ce53171d7fa3805cf8f307ddd238ed75707446cdb", size = 89046659, upload-time = "2026-06-14T04:27:34.296Z" }, - { url = "https://files.pythonhosted.org/packages/d1/f2/f23740acf232540576439e2fbb5a231f74739047dbd1db5896cbd2eb6498/nvidia_cutlass_dsl_libs_base-4.6.0.dev0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:a33d83905cfca7a2db2034a2f658941024755d75c1b500c93aacbe6164ec0300", size = 90623701, upload-time = "2026-06-14T04:30:55.438Z" }, - { url = "https://files.pythonhosted.org/packages/49/b0/cbb6474af79fcf94b9c6ad84f6656d6f9603a3ab399781ae5c83a8d8bf86/nvidia_cutlass_dsl_libs_base-4.6.0.dev0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:fe292f2352e78a5b93f7501811a035f7d8945fc1986426b0be8cee7a8cbb2e1f", size = 89046517, upload-time = "2026-06-14T04:27:05.881Z" }, - { url = "https://files.pythonhosted.org/packages/47/f5/be8d6d0bf4a5ba7e6a1825cf72150c27a81e041463b907b393f68693b9a9/nvidia_cutlass_dsl_libs_base-4.6.0.dev0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:19de039bb3496baa806cf22c8a68b989dd998a129847d3d8bb830d34ba777f08", size = 90623353, upload-time = "2026-06-14T04:31:30.134Z" }, + { url = "https://files.pythonhosted.org/packages/fb/25/8b73e70530040643dd218c5d72b6d0f33372eeeec7f3dd3e71d34ff4870e/nvidia_cutlass_dsl_libs_cu12-4.6.2-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:420ab19a170f1a778e874ff598a49ea91b437f857343009f88e8297be6c27ede", size = 87012605, upload-time = "2026-08-05T14:16:37.363Z" }, + { url = "https://files.pythonhosted.org/packages/6a/c0/fc5b7738f5dc7c5b5d15ac2c4d045f84e4f7cc4d68469f397bb0d909b4cb/nvidia_cutlass_dsl_libs_cu12-4.6.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:32bfc7caa5341076c7000adbb58da2a86b6ecfd8c480a264b36326a8359a7a50", size = 88453632, upload-time = "2026-08-05T14:17:01.159Z" }, + { url = "https://files.pythonhosted.org/packages/42/26/033408d2f1488e941b3434c21e703ec11c42873166af1eb8348271565782/nvidia_cutlass_dsl_libs_cu12-4.6.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:d245dfb3255d95d1ac75063b758acd3e40d5c6699dc98c80f488165260923e11", size = 87011888, upload-time = "2026-08-05T14:18:09.399Z" }, + { url = "https://files.pythonhosted.org/packages/1a/1b/4bc2842e0b497d9d0fda73976af7640ef742cdb5210e2d143b72c5ec3938/nvidia_cutlass_dsl_libs_cu12-4.6.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:4ad5083bf8bcbda83973bdc38a03c2c8452d11fe0afc04b10fc362e23ddd7f8c", size = 88454141, upload-time = "2026-08-05T14:18:31.516Z" }, + { url = "https://files.pythonhosted.org/packages/ad/b7/019a8f74ad30ad9b6190dd5963d8921fc2b03777316e47260eb822624a0a/nvidia_cutlass_dsl_libs_cu12-4.6.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:ea3b96dd6b627fe20637acfa7876ea1adfa8d81a2b106ffff0bb2d042c0c2731", size = 87013242, upload-time = "2026-08-05T14:18:57.703Z" }, + { url = "https://files.pythonhosted.org/packages/80/6e/70c545a600b52b3f0fbbe01608aefc4e675c924ba886485ad72541f5c88e/nvidia_cutlass_dsl_libs_cu12-4.6.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:7f510307369d522da8e7d666557b9b9e7df06b94748bd5dc0198d59dfd0d918a", size = 88454261, upload-time = "2026-08-05T14:21:14.733Z" }, + { url = "https://files.pythonhosted.org/packages/e1/54/6006a2b4fcd05f32be451fe8881968dcbed526438b4eae9a527534062c79/nvidia_cutlass_dsl_libs_cu12-4.6.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:2f3b163060325777a3847954b3a599556b2bff500eca19806a81d1d635bb4149", size = 87012255, upload-time = "2026-08-05T14:21:44.507Z" }, + { url = "https://files.pythonhosted.org/packages/d1/7a/a08ac0ecdd88bb129a56d95b7c58ea6826e6f5fa00191ef7ecdff8085836/nvidia_cutlass_dsl_libs_cu12-4.6.2-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:84243743382948c83ca627c2dcb106db3844c31d45b8cc2af3d14bc9df0a535e", size = 88453568, upload-time = "2026-08-05T14:22:49.158Z" }, ] [[package]] name = "nvidia-cutlass-dsl-libs-cu13" -version = "4.6.0.dev0" +version = "4.6.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cuda-python", version = "13.0.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero')" }, { name = "numpy", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero')" }, - { name = "nvidia-cutlass-dsl-libs-base", version = "4.6.0.dev0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero')" }, + { name = "nvidia-cuda-nvdisasm", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero')" }, + { name = "nvidia-cutlass-dsl-libs-base", version = "4.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero')" }, { name = "protobuf", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero')" }, { name = "typing-extensions", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero')" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/82/5a/9016ee356450d487dc9b64546b727df138ccc81645c49660de5359971ef2/nvidia_cutlass_dsl_libs_cu13-4.6.0.dev0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:4120d2d2ba93c6dabfd193f813687c9a9bef85007512b57ae100ba993347e4dc", size = 88751712, upload-time = "2026-06-14T04:21:27.363Z" }, - { url = "https://files.pythonhosted.org/packages/58/f0/5f97a440b57e9b1507f2a99754a64e69e47784966590a684b9ffacbaf026/nvidia_cutlass_dsl_libs_cu13-4.6.0.dev0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:67b8f6796fe8e083a97b0fb644a0c7762ce5feadc564dd112c64c5ce734d4241", size = 90211621, upload-time = "2026-06-14T04:23:50.136Z" }, - { url = "https://files.pythonhosted.org/packages/20/08/9180353817833a96db628d29e1afe6988f30bd8cc379d8012912cbe63623/nvidia_cutlass_dsl_libs_cu13-4.6.0.dev0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2e0b484347e7b09046edb9bd7f8a425fb2fd35333f051bab36065c00fb57b70f", size = 88753645, upload-time = "2026-06-14T04:19:51.911Z" }, - { url = "https://files.pythonhosted.org/packages/4e/0a/3941744fa039c98d72f26a5d19f883df8778492fe9e4bd27032b64635e3d/nvidia_cutlass_dsl_libs_cu13-4.6.0.dev0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:9893b9675671fae8fd37d01c01b20843ae59c6eb2d0eeb33f3915645fe953890", size = 90214126, upload-time = "2026-06-14T04:24:57.092Z" }, - { url = "https://files.pythonhosted.org/packages/7f/89/aabeed4cb39c6dd611c99ec15abd405103ed624083af2874847a608d5c89/nvidia_cutlass_dsl_libs_cu13-4.6.0.dev0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:681c56fdbb5ec7adda3afe3cc6e4d41d7f7e080d17d35b1283bf330fdd922dda", size = 88753497, upload-time = "2026-06-14T04:21:58.966Z" }, - { url = "https://files.pythonhosted.org/packages/61/e2/ec7e3b8b4a520effd41cabba33381d31c5c129fc542d26404917bfc0094f/nvidia_cutlass_dsl_libs_cu13-4.6.0.dev0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:d45056221b808a719815520fbbfa35798e6917ced7978cf0e601953bcd7cc9aa", size = 90211238, upload-time = "2026-06-14T04:22:36.405Z" }, - { url = "https://files.pythonhosted.org/packages/50/43/ff318b716f5633c6c0fe9849b9afa4f03493d5738163240cc5e268ffb908/nvidia_cutlass_dsl_libs_cu13-4.6.0.dev0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:f635bb384d00ffaef938cd685aa511567139eb16f34012ace52c8ded153cfc2d", size = 88754108, upload-time = "2026-06-14T04:20:24.284Z" }, - { url = "https://files.pythonhosted.org/packages/55/54/12c49f5290636feb8a8de0a29caf12a744c1d49ea385eefcfd6e584aaa17/nvidia_cutlass_dsl_libs_cu13-4.6.0.dev0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:3447be9af3c5de8f20d3d8cde325361ba9ee8c55dafad670a02ac6880432495b", size = 90211144, upload-time = "2026-06-14T04:25:33.513Z" }, + { url = "https://files.pythonhosted.org/packages/3c/73/889e76581ad00467f4d5b5ced211246db1f7473e2aae830550d55d6cc1ab/nvidia_cutlass_dsl_libs_cu13-4.6.2-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:43197a6706d9c08c8b6eebd8841b9366c4f58847b6e159a594ae8912d8d40b77", size = 86713509, upload-time = "2026-08-05T14:25:28.345Z" }, + { url = "https://files.pythonhosted.org/packages/60/9c/a151ba1fa6590bc1d24baba475e41649009ac3e88c39ffc7fe96986653e8/nvidia_cutlass_dsl_libs_cu13-4.6.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:3a5cfc9877b78e3169c04a3071250e8589cf727682270861b9c23b9077a0c3ea", size = 88035526, upload-time = "2026-08-05T14:25:58.253Z" }, + { url = "https://files.pythonhosted.org/packages/ed/28/5341cc64b3c2c6c697686d64f8e35b3f3fab05055ef69f3380a577f12182/nvidia_cutlass_dsl_libs_cu13-4.6.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:3a891048e8227e8c04c09ded2dfbc705bbda5b44a740c409794a67545d86dc1f", size = 86712079, upload-time = "2026-08-05T14:26:43.526Z" }, + { url = "https://files.pythonhosted.org/packages/14/96/734d780c03b988b0622cd94fec61fecbc83333cd3ed36cede9019fd8fa61/nvidia_cutlass_dsl_libs_cu13-4.6.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:e2a3c8f7ba5c98d5e2f6c5231926ceca0cf2c8f7d75dd2e6660394c689b89f7e", size = 88036498, upload-time = "2026-08-05T14:27:05.581Z" }, + { url = "https://files.pythonhosted.org/packages/46/38/bbe5b8f1ef1a15e7bd1e2ea86686c38f15eeee0a4ba440a5d00d8222cb8e/nvidia_cutlass_dsl_libs_cu13-4.6.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:b9543257622ce70d696c6a2bda7e9617ef5b1cc9f29bfe66f4b38d1d1e29a8cb", size = 86712108, upload-time = "2026-08-05T14:27:35.488Z" }, + { url = "https://files.pythonhosted.org/packages/ca/05/7874c37d50e112177a64a96dd6c7eaeacb1661ebb864e0fe5cfd9f706767/nvidia_cutlass_dsl_libs_cu13-4.6.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:a299a623fad75eb752c1a4e447b924e9049ed396b037509c41a48da82d1f340a", size = 88036030, upload-time = "2026-08-05T14:27:58.991Z" }, + { url = "https://files.pythonhosted.org/packages/33/35/a38b52a8f99d1549c31680deae6a44328f3840e76a1202d5ab0af5b91f58/nvidia_cutlass_dsl_libs_cu13-4.6.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:5d215db842c47862232537a6737b0cbf4992318aed24ddb1d4f18c3a43022682", size = 86711155, upload-time = "2026-08-05T14:29:18.118Z" }, + { url = "https://files.pythonhosted.org/packages/de/b7/75d9470796d4c8fb8e10165825a9cd1e95316bab45af1a6a3dd9555cfe70/nvidia_cutlass_dsl_libs_cu13-4.6.2-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:ad108ba4a6d35c0549fa3860ccbb5a90f005f240d2750ac9f8c3bdaa1f1864cc", size = 88036124, upload-time = "2026-08-05T14:31:27.349Z" }, ] [[package]] @@ -12671,7 +12725,7 @@ wheels = [ [[package]] name = "quack-kernels" -version = "0.5.3" +version = "0.6.3" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux' and extra != 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-cu130' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero'", @@ -12751,16 +12805,16 @@ resolution-markers = [ dependencies = [ { name = "apache-tvm-ffi", version = "0.1.14.post1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, { name = "einops", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, - { name = "nvidia-cutlass-dsl", version = "4.6.0.dev0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, + { name = "nvidia-cutlass-dsl", version = "4.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, { name = "torch", version = "2.10.0", source = { registry = "https://download.pytorch.org/whl" }, marker = "(python_full_version >= '3.13' and sys_platform == 'darwin' and extra != 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-cu130' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train' and extra != 'group-16-cosmos-framework-cu130-train') or (python_full_version < '3.13' and extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (sys_platform != 'darwin' and extra == 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero') or (sys_platform != 'darwin' and extra == 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-cu130' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero')" }, { name = "torch", version = "2.10.0+cu128", source = { registry = "https://download.pytorch.org/whl" }, marker = "(python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu128') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, { name = "torch", version = "2.10.0+cu130", source = { registry = "https://download.pytorch.org/whl" }, marker = "(python_full_version >= '3.13' and sys_platform != 'darwin' and extra != 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130-train') or (python_full_version < '3.13' and extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero')" }, { name = "torch", version = "2.13.0+cu130", source = { registry = "https://download.pytorch.org/whl" }, marker = "(python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train')" }, { name = "torch-c-dlpack-ext", marker = "python_full_version >= '3.13' or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/d4/979d9afc6008adeba640b146fe4cb3aa61157581b2dad5649104af4079b5/quack_kernels-0.5.3.tar.gz", hash = "sha256:e295c3861ffebca44f6adafff9bf9bc55102a7178b3e1690b2c4cd8f7e0533ff", size = 370274, upload-time = "2026-06-26T03:51:23.488Z" } +sdist = { url = "https://files.pythonhosted.org/packages/87/6e/589b7e1ac366eaf2f526e350ce9785200f5ef021ad93a92823c5c12cbefc/quack_kernels-0.6.3.tar.gz", hash = "sha256:e307269931e18590f7555afb55debf28e266b4371960aad0528e4055ca8c79a3", size = 839016, upload-time = "2026-08-06T10:28:04.657Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/38/99/a697f7168dbd91d2e7e66df07187a0693cb3d350a58ba8a91271596adfa6/quack_kernels-0.5.3-py3-none-any.whl", hash = "sha256:d2590dbbdfedaf7e36682a0e1bc36a623897e137579664941578b16a2b127da4", size = 338690, upload-time = "2026-06-26T03:51:21.929Z" }, + { url = "https://files.pythonhosted.org/packages/5c/7c/c16475d19327376f2d5d64ada9f8eff0077fce0b54fd87408b4bb0c04b49/quack_kernels-0.6.3-py3-none-any.whl", hash = "sha256:dfa69468a3f71fb9f7192c087c82e85ad68d59155fa03e408a19c7069fb21b8f", size = 727601, upload-time = "2026-08-06T10:28:03.325Z" }, ] [[package]] @@ -17101,7 +17155,7 @@ dependencies = [ { name = "numpy" }, { name = "nvidia-cudnn-frontend" }, { name = "nvidia-cutlass-dsl", version = "4.4.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu128') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu128-train') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130') or (python_full_version < '3.13' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train' and extra != 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra != 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-libero')" }, - { name = "nvidia-cutlass-dsl", version = "4.6.0.dev0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu128') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu128-train') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130') or (python_full_version >= '3.13' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, + { name = "nvidia-cutlass-dsl", version = "4.6.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu128') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu128-train') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130') or (python_full_version >= '3.13' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, { name = "openai" }, { name = "openai-harmony" }, { name = "opencv-python-headless" }, @@ -17123,7 +17177,7 @@ dependencies = [ { name = "pyyaml" }, { name = "pyzmq" }, { name = "quack-kernels", version = "0.3.9", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu128') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu128-train') or (python_full_version < '3.13' and extra == 'group-16-cosmos-framework-cu130') or (python_full_version < '3.13' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train' and extra != 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra != 'group-16-cosmos-framework-cu130-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-libero') or (extra == 'extra-16-cosmos-framework-train' and extra != 'group-16-cosmos-framework-cu128' and extra != 'group-16-cosmos-framework-cu128-train' and extra != 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-libero')" }, - { name = "quack-kernels", version = "0.5.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu128') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu128-train') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130') or (python_full_version >= '3.13' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, + { name = "quack-kernels", version = "0.6.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu128') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu128-train') or (python_full_version >= '3.13' and extra == 'group-16-cosmos-framework-cu130') or (python_full_version >= '3.13' and extra != 'group-16-cosmos-framework-cu130-torch213' and extra != 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu128-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu128-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'extra-16-cosmos-framework-train' and extra == 'group-16-cosmos-framework-libero') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-torch213-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213' and extra == 'group-16-cosmos-framework-vllm') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-cu130-train') or (extra == 'group-16-cosmos-framework-cu130-torch213-train' and extra == 'group-16-cosmos-framework-vllm')" }, { name = "regex" }, { name = "requests" }, { name = "sentencepiece" },