From a0f1e31bce9d024377074e562ac0e17f9e252450 Mon Sep 17 00:00:00 2001 From: Pranav Prashant Thombre Date: Fri, 6 Mar 2026 09:30:26 -0800 Subject: [PATCH 1/8] feat: Integrate Wan with multi-resolution DL Signed-off-by: Pranav Prashant Thombre --- .../diffusion/finetune/flux_t2i_flow.yaml | 2 +- .../diffusion/finetune/wan2_1_t2v_flow.yaml | 10 +- .../finetune/wan2_1_t2v_flow_multinode.yaml | 10 +- examples/diffusion/generate/flux_generate.py | 4 +- .../diffusion/pretrain/flux_t2i_flow.yaml | 2 +- .../components/datasets/diffusion/__init__.py | 20 +- .../datasets/diffusion/base_dataset.py | 133 +++++++++ .../datasets/diffusion/collate_fns.py | 258 +++++++++++++++--- .../datasets/diffusion/meta_files_dataset.py | 42 +-- .../components/datasets/diffusion/sampler.py | 108 +------- .../diffusion/text_to_image_dataset.py | 102 +------ .../diffusion/text_to_video_dataset.py | 83 ++++++ nemo_automodel/recipes/base_recipe.py | 21 +- nemo_automodel/recipes/diffusion/train.py | 2 +- pyproject.toml | 7 + .../diffusion/test_collate_diffusion.py | 32 +-- .../datasets/diffusion/test_dataloader.py | 133 +++++---- tools/diffusion/processors/wan.py | 15 +- uv.lock | 154 +++++++---- 19 files changed, 722 insertions(+), 416 deletions(-) create mode 100644 nemo_automodel/components/datasets/diffusion/base_dataset.py create mode 100644 nemo_automodel/components/datasets/diffusion/text_to_video_dataset.py diff --git a/examples/diffusion/finetune/flux_t2i_flow.yaml b/examples/diffusion/finetune/flux_t2i_flow.yaml index 52674fe61..46175d806 100644 --- a/examples/diffusion/finetune/flux_t2i_flow.yaml +++ b/examples/diffusion/finetune/flux_t2i_flow.yaml @@ -54,7 +54,7 @@ step_scheduler: data: dataloader: - _target_: nemo_automodel.components.datasets.diffusion.build_flux_multiresolution_dataloader + _target_: nemo_automodel.components.datasets.diffusion.build_text_to_image_multiresolution_dataloader cache_dir: PATH_TO_YOUR_DATA train_text_encoder: false num_workers: 10 diff --git a/examples/diffusion/finetune/wan2_1_t2v_flow.yaml b/examples/diffusion/finetune/wan2_1_t2v_flow.yaml index 0c47c543a..88a558ed0 100644 --- a/examples/diffusion/finetune/wan2_1_t2v_flow.yaml +++ b/examples/diffusion/finetune/wan2_1_t2v_flow.yaml @@ -22,10 +22,14 @@ step_scheduler: data: dataloader: - _target_: nemo_automodel.components.datasets.diffusion.build_dataloader - meta_folder: PATH_TO_YOUR_DATA + _target_: nemo_automodel.components.datasets.diffusion.build_video_multiresolution_dataloader + cache_dir: PATH_TO_YOUR_DATA + model_type: wan + base_resolution: [512, 512] + dynamic_batch_size: false + shuffle: true + drop_last: false num_workers: 2 - device: cpu optim: learning_rate: 5e-6 diff --git a/examples/diffusion/finetune/wan2_1_t2v_flow_multinode.yaml b/examples/diffusion/finetune/wan2_1_t2v_flow_multinode.yaml index 72b26cf03..715c3b711 100644 --- a/examples/diffusion/finetune/wan2_1_t2v_flow_multinode.yaml +++ b/examples/diffusion/finetune/wan2_1_t2v_flow_multinode.yaml @@ -22,10 +22,14 @@ step_scheduler: data: dataloader: - _target_: nemo_automodel.components.datasets.diffusion.build_dataloader - meta_folder: PATH_TO_YOUR_DATA + _target_: nemo_automodel.components.datasets.diffusion.build_video_multiresolution_dataloader + cache_dir: PATH_TO_YOUR_DATA + model_type: wan + base_resolution: [512, 512] + dynamic_batch_size: false + shuffle: true + drop_last: false num_workers: 2 - device: cpu optim: diff --git a/examples/diffusion/generate/flux_generate.py b/examples/diffusion/generate/flux_generate.py index 623b1bb4b..195eed9fd 100644 --- a/examples/diffusion/generate/flux_generate.py +++ b/examples/diffusion/generate/flux_generate.py @@ -30,7 +30,7 @@ from diffusers import FluxPipeline # Import the provided dataloader builder -from nemo_automodel.components.datasets.diffusion import build_flux_multiresolution_dataloader +from nemo_automodel.components.datasets.diffusion import build_text_to_image_multiresolution_dataloader def parse_args(): @@ -187,7 +187,7 @@ def main(): print("=" * 80) print(f"Initializing Multiresolution Dataloader: {args.data_path}") - dataloader, _ = build_flux_multiresolution_dataloader( + dataloader, _ = build_text_to_image_multiresolution_dataloader( cache_dir=args.data_path, batch_size=1, num_workers=args.num_workers, dynamic_batch_size=True, shuffle=False ) print(f"[INFO] Dataloader ready. Batches: {len(dataloader)}") diff --git a/examples/diffusion/pretrain/flux_t2i_flow.yaml b/examples/diffusion/pretrain/flux_t2i_flow.yaml index 418b543bc..d85805eb7 100644 --- a/examples/diffusion/pretrain/flux_t2i_flow.yaml +++ b/examples/diffusion/pretrain/flux_t2i_flow.yaml @@ -58,7 +58,7 @@ step_scheduler: data: dataloader: - _target_: nemo_automodel.components.datasets.diffusion.build_flux_multiresolution_dataloader + _target_: nemo_automodel.components.datasets.diffusion.build_text_to_image_multiresolution_dataloader cache_dir: PATH_TO_YOUR_DATA train_text_encoder: false num_workers: 1 diff --git a/nemo_automodel/components/datasets/diffusion/__init__.py b/nemo_automodel/components/datasets/diffusion/__init__.py index ee3451498..2e829606c 100644 --- a/nemo_automodel/components/datasets/diffusion/__init__.py +++ b/nemo_automodel/components/datasets/diffusion/__init__.py @@ -17,14 +17,26 @@ import importlib _LAZY_ATTRS = { - "MetaFilesDataset": (".meta_files_dataset", "MetaFilesDataset"), + # Dataset classes + "BaseMultiresolutionDataset": (".base_dataset", "BaseMultiresolutionDataset"), "TextToImageDataset": (".text_to_image_dataset", "TextToImageDataset"), + "TextToVideoDataset": (".text_to_video_dataset", "TextToVideoDataset"), + "MetaFilesDataset": (".meta_files_dataset", "MetaFilesDataset"), + # Utilities "MultiTierBucketCalculator": (".multi_tier_bucketing", "MultiTierBucketCalculator"), "SequentialBucketSampler": (".sampler", "SequentialBucketSampler"), - "collate_fn_flux": (".collate_fns", "collate_fn_flux"), - "build_flux_multiresolution_dataloader": (".collate_fns", "build_flux_multiresolution_dataloader"), - "build_mock_dataloader": (".mock_dataloader", "build_mock_dataloader"), + "VIDEO_OPTIONAL_FIELDS": (".text_to_video_dataset", "VIDEO_OPTIONAL_FIELDS"), + # Collate functions + "collate_fn_text_to_image": (".collate_fns", "collate_fn_text_to_image"), + "collate_fn_video": (".collate_fns", "collate_fn_video"), + "collate_fn_production": (".collate_fns", "collate_fn_production"), + # Dataloader builders + "build_text_to_image_multiresolution_dataloader": (".collate_fns", "build_text_to_image_multiresolution_dataloader"), + "build_video_multiresolution_dataloader": (".collate_fns", "build_video_multiresolution_dataloader"), + # Legacy (non-multiresolution) "build_dataloader": (".meta_files_dataset", "build_dataloader"), + # Mock/test + "build_mock_dataloader": (".mock_dataloader", "build_mock_dataloader"), } __all__ = sorted(_LAZY_ATTRS.keys()) diff --git a/nemo_automodel/components/datasets/diffusion/base_dataset.py b/nemo_automodel/components/datasets/diffusion/base_dataset.py new file mode 100644 index 000000000..f8e74eb85 --- /dev/null +++ b/nemo_automodel/components/datasets/diffusion/base_dataset.py @@ -0,0 +1,133 @@ +# Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import json +import logging +from abc import ABC, abstractmethod +from pathlib import Path +from typing import Dict, List + +from torch.utils.data import Dataset + +from .multi_tier_bucketing import MultiTierBucketCalculator + +logger = logging.getLogger(__name__) + + +class BaseMultiresolutionDataset(Dataset, ABC): + """Abstract base class for multiresolution datasets with bucket-based sampling.""" + + def __init__(self, cache_dir: str, quantization: int = 64): + """ + Args: + cache_dir: Directory containing preprocessed cache (metadata.json + shards) + quantization: Resolution quantization factor (64 for images, 8 for video) + """ + self.cache_dir = Path(cache_dir) + + # Load metadata + self.metadata = self._load_metadata() + + logger.info(f"Loaded dataset with {len(self.metadata)} samples") + + # Group by bucket + self._group_by_bucket() + + # Initialize bucket calculator for dynamic batch sizes + self.calculator = MultiTierBucketCalculator(quantization=quantization) + + def _load_metadata(self) -> List[Dict]: + """Load metadata from cache directory. + + Expects metadata.json with "shards" key referencing shard files. + """ + metadata_file = self.cache_dir / "metadata.json" + + if not metadata_file.exists(): + raise FileNotFoundError(f"No metadata.json found in {self.cache_dir}") + + with open(metadata_file, "r") as f: + data = json.load(f) + + if not isinstance(data, dict) or "shards" not in data: + raise ValueError(f"Invalid metadata format in {metadata_file}. Expected dict with 'shards' key.") + + # Load all shard files + metadata = [] + for shard_name in data["shards"]: + shard_path = self.cache_dir / shard_name + with open(shard_path, "r") as f: + shard_data = json.load(f) + metadata.extend(shard_data) + + return metadata + + def _aspect_ratio_to_name(self, aspect_ratio: float) -> str: + """Convert aspect ratio to a descriptive name.""" + if aspect_ratio < 0.85: + return "tall" + elif aspect_ratio > 1.18: + return "wide" + else: + return "square" + + def _group_by_bucket(self): + """Group samples by bucket (aspect_ratio + resolution).""" + self.bucket_groups = {} + + # Support both bucket_resolution (video) and crop_resolution (image) keys + resolution_key = "bucket_resolution" if "bucket_resolution" in self.metadata[0] else "crop_resolution" + + for idx, item in enumerate(self.metadata): + aspect_ratio = item.get("aspect_ratio", 1.0) + aspect_name = self._aspect_ratio_to_name(aspect_ratio) + resolution = tuple(item[resolution_key]) + bucket_key = (aspect_name, resolution) + + if bucket_key not in self.bucket_groups: + self.bucket_groups[bucket_key] = { + "indices": [], + "aspect_name": aspect_name, + "aspect_ratio": aspect_ratio, + "resolution": resolution, + "pixels": resolution[0] * resolution[1], + } + + self.bucket_groups[bucket_key]["indices"].append(idx) + + # Sort buckets by resolution (low to high for optimal memory usage) + self.sorted_bucket_keys = sorted(self.bucket_groups.keys(), key=lambda k: self.bucket_groups[k]["pixels"]) + + logger.info(f"\nDataset organized into {len(self.bucket_groups)} buckets:") + for key in self.sorted_bucket_keys: + bucket = self.bucket_groups[key] + aspect_name, resolution = key + logger.info( + f" {aspect_name:6s} {resolution[0]:4d}x{resolution[1]:4d}: {len(bucket['indices']):5d} samples" + ) + + def get_bucket_info(self) -> Dict: + """Get bucket organization information.""" + return { + "total_buckets": len(self.bucket_groups), + "buckets": {f"{k[0]}/{k[1][0]}x{k[1][1]}": len(v["indices"]) for k, v in self.bucket_groups.items()}, + } + + def __len__(self) -> int: + return len(self.metadata) + + @abstractmethod + def __getitem__(self, idx: int) -> Dict: + """Load a single sample. Subclasses must implement.""" + ... diff --git a/nemo_automodel/components/datasets/diffusion/collate_fns.py b/nemo_automodel/components/datasets/diffusion/collate_fns.py index 3f9567661..426f7bd56 100644 --- a/nemo_automodel/components/datasets/diffusion/collate_fns.py +++ b/nemo_automodel/components/datasets/diffusion/collate_fns.py @@ -13,27 +13,70 @@ # limitations under the License. """ -Flux-compatible collate function that wraps the multiresolution dataloader output -to match the FlowMatchingPipeline expected batch format. +Collate functions and dataloader builders for multiresolution diffusion training. + +Supports both image and video pipelines via the FlowMatchingPipeline +expected batch format. """ +import functools import logging -from typing import Dict, List, Tuple +from typing import Callable, Dict, List, Tuple +import torch from torch.utils.data import DataLoader -from .sampler import ( - SequentialBucketSampler, - collate_fn_production, -) +from .sampler import SequentialBucketSampler from .text_to_image_dataset import TextToImageDataset +from .text_to_video_dataset import TextToVideoDataset, collate_optional_video_fields logger = logging.getLogger(__name__) -def collate_fn_flux(batch: List[Dict]) -> Dict: +def collate_fn_production(batch: List[Dict]) -> Dict: + """Production collate function with verification.""" + # Verify all samples have same resolution + resolutions = [tuple(item["crop_resolution"].tolist()) for item in batch] + assert len(set(resolutions)) == 1, f"Mixed resolutions in batch: {set(resolutions)}" + + # Stack tensors + latents = torch.stack([item["latent"] for item in batch]) + crop_resolutions = torch.stack([item["crop_resolution"] for item in batch]) + original_resolutions = torch.stack([item["original_resolution"] for item in batch]) + crop_offsets = torch.stack([item["crop_offset"] for item in batch]) + + # Collect metadata + prompts = [item["prompt"] for item in batch] + image_paths = [item["image_path"] for item in batch] + bucket_ids = [item["bucket_id"] for item in batch] + aspect_ratios = [item["aspect_ratio"] for item in batch] + + output = { + "latent": latents, + "crop_resolution": crop_resolutions, + "original_resolution": original_resolutions, + "crop_offset": crop_offsets, + "prompt": prompts, + "image_path": image_paths, + "bucket_id": bucket_ids, + "aspect_ratio": aspect_ratios, + } + + # Handle text encodings + if "clip_hidden" in batch[0]: + output["clip_hidden"] = torch.stack([item["clip_hidden"] for item in batch]) + output["pooled_prompt_embeds"] = torch.stack([item["pooled_prompt_embeds"] for item in batch]) + output["prompt_embeds"] = torch.stack([item["prompt_embeds"] for item in batch]) + else: + output["clip_tokens"] = torch.stack([item["clip_tokens"] for item in batch]) + output["t5_tokens"] = torch.stack([item["t5_tokens"] for item in batch]) + + return output + + +def collate_fn_text_to_image(batch: List[Dict]) -> Dict: """ - Flux-compatible collate function that transforms multiresolution batch output + Text-to-image collate function that transforms multiresolution batch output to match FlowMatchingPipeline expected format. Args: @@ -45,11 +88,11 @@ def collate_fn_flux(batch: List[Dict]) -> Dict: # First, use the production collate to stack tensors production_batch = collate_fn_production(batch) - # Keep latent as 4D [B, C, H, W] for Flux (image model, not video) + # Keep latent as 4D [B, C, H, W] for image (not video) latent = production_batch["latent"] - # Use "image_latents" key for 4D tensors (FluxAdapter expects 4D) - flux_batch = { + # Use "image_latents" key for 4D tensors + image_batch = { "image_latents": latent, "data_type": "image", "metadata": { @@ -66,23 +109,64 @@ def collate_fn_flux(batch: List[Dict]) -> Dict: # Handle text embeddings (pre-encoded vs tokenized) if "prompt_embeds" in production_batch: # Pre-encoded text embeddings - flux_batch["text_embeddings"] = production_batch["prompt_embeds"] - flux_batch["pooled_prompt_embeds"] = production_batch["pooled_prompt_embeds"] + image_batch["text_embeddings"] = production_batch["prompt_embeds"] + image_batch["pooled_prompt_embeds"] = production_batch["pooled_prompt_embeds"] # Also include CLIP hidden for models that need it if "clip_hidden" in production_batch: - flux_batch["clip_hidden"] = production_batch["clip_hidden"] + image_batch["clip_hidden"] = production_batch["clip_hidden"] else: # Tokenized - need to encode during training (not supported yet) - flux_batch["t5_tokens"] = production_batch["t5_tokens"] - flux_batch["clip_tokens"] = production_batch["clip_tokens"] + image_batch["t5_tokens"] = production_batch["t5_tokens"] + image_batch["clip_tokens"] = production_batch["clip_tokens"] raise NotImplementedError( "On-the-fly text encoding not yet supported. Please use pre-encoded text embeddings in your dataset." ) - return flux_batch + return image_batch -def build_flux_multiresolution_dataloader( +def _build_multiresolution_dataloader_core( + *, + dataset, + collate_fn: Callable, + batch_size: int, + dp_rank: int, + dp_world_size: int, + base_resolution: Tuple[int, int] = (512, 512), + drop_last: bool = True, + shuffle: bool = True, + dynamic_batch_size: bool = False, + num_workers: int = 4, + pin_memory: bool = True, + prefetch_factor: int = 2, +) -> Tuple[DataLoader, SequentialBucketSampler]: + """Internal helper: create sampler + DataLoader from dataset and collate fn.""" + sampler = SequentialBucketSampler( + dataset, + base_batch_size=batch_size, + base_resolution=base_resolution, + drop_last=drop_last, + shuffle_buckets=shuffle, + shuffle_within_bucket=shuffle, + dynamic_batch_size=dynamic_batch_size, + num_replicas=dp_world_size, + rank=dp_rank, + ) + + dataloader = DataLoader( + dataset, + batch_sampler=sampler, + collate_fn=collate_fn, + num_workers=num_workers, + pin_memory=pin_memory, + prefetch_factor=prefetch_factor if num_workers > 0 else None, + persistent_workers=num_workers > 0, + ) + + return dataloader, sampler + + +def build_text_to_image_multiresolution_dataloader( *, # TextToImageDataset parameters cache_dir: str, @@ -100,10 +184,10 @@ def build_flux_multiresolution_dataloader( prefetch_factor: int = 2, ) -> Tuple[DataLoader, SequentialBucketSampler]: """ - Build a Flux-compatible multiresolution dataloader for TrainDiffusionRecipe. + Build a text-to-image multiresolution dataloader for TrainDiffusionRecipe. This wraps the existing TextToImageDataset and SequentialBucketSampler - with a Flux-compatible collate function. + with a text-to-image collate function. Args: cache_dir: Directory containing preprocessed cache (metadata.json, shards, and resolution subdirs) @@ -122,40 +206,138 @@ def build_flux_multiresolution_dataloader( Returns: Tuple of (DataLoader, SequentialBucketSampler) """ - logger.info("Building Flux multiresolution dataloader:") + logger.info("Building text-to-image multiresolution dataloader:") logger.info(f" cache_dir: {cache_dir}") logger.info(f" train_text_encoder: {train_text_encoder}") logger.info(f" batch_size: {batch_size}") logger.info(f" dp_rank: {dp_rank}, dp_world_size: {dp_world_size}") - # Create dataset dataset = TextToImageDataset( cache_dir=cache_dir, train_text_encoder=train_text_encoder, ) - # Create sampler - sampler = SequentialBucketSampler( - dataset, - base_batch_size=batch_size, + dataloader, sampler = _build_multiresolution_dataloader_core( + dataset=dataset, + collate_fn=collate_fn_text_to_image, + batch_size=batch_size, + dp_rank=dp_rank, + dp_world_size=dp_world_size, base_resolution=base_resolution, drop_last=drop_last, - shuffle_buckets=shuffle, - shuffle_within_bucket=shuffle, + shuffle=shuffle, dynamic_batch_size=dynamic_batch_size, - num_replicas=dp_world_size, - rank=dp_rank, + num_workers=num_workers, + pin_memory=pin_memory, + prefetch_factor=prefetch_factor, ) - # Create dataloader with Flux-compatible collate - dataloader = DataLoader( - dataset, - batch_sampler=sampler, - collate_fn=collate_fn_flux, # Use Flux-compatible collate + logger.info(f" Dataset size: {len(dataset)}") + logger.info(f" Batches per epoch: {len(sampler)}") + + return dataloader, sampler + + +def collate_fn_video(batch: List[Dict], model_type: str = "wan") -> Dict: + """ + Video-compatible collate function for multiresolution video training. + + Concatenates video_latents (5D) and text_embeddings (3D) along the batch dim, + matching the format expected by FlowMatchingPipeline with SimpleAdapter. + + Args: + batch: List of samples from TextToVideoDataset + model_type: Model type for model-specific field handling + + Returns: + Dict compatible with FlowMatchingPipeline.step() + """ + # Verify all samples have the same bucket resolution + resolutions = [tuple(item["bucket_resolution"].tolist()) for item in batch] + assert len(set(resolutions)) == 1, f"Mixed resolutions in batch: {set(resolutions)}" + + video_latents = torch.cat([item["video_latents"] for item in batch], dim=0) + text_embeddings = torch.cat([item["text_embeddings"] for item in batch], dim=0) + + result = { + "video_latents": video_latents, + "text_embeddings": text_embeddings, + "data_type": "video", + } + + # Collate model-specific optional fields + collate_optional_video_fields(batch, result) + + return result + + +def build_video_multiresolution_dataloader( + *, + cache_dir: str, + model_type: str = "wan", + device: str = "cpu", + batch_size: int = 1, + dp_rank: int = 0, + dp_world_size: int = 1, + base_resolution: Tuple[int, int] = (512, 512), + drop_last: bool = True, + shuffle: bool = True, + dynamic_batch_size: bool = False, + num_workers: int = 2, + pin_memory: bool = True, + prefetch_factor: int = 2, +) -> Tuple[DataLoader, SequentialBucketSampler]: + """ + Build a multiresolution video dataloader for TrainDiffusionRecipe. + + Uses TextToVideoDataset with SequentialBucketSampler for bucket-based + multiresolution video training (e.g. Wan, Hunyuan). + + Args: + cache_dir: Directory containing preprocessed cache (metadata.json + shards + WxH/*.meta) + model_type: Model type ("wan", "hunyuan", etc.) + device: Device to load tensors to + batch_size: Batch size per GPU + dp_rank: Data parallel rank + dp_world_size: Data parallel world size + base_resolution: Base resolution for dynamic batch sizing + drop_last: Drop incomplete batches + shuffle: Shuffle data + dynamic_batch_size: Scale batch size by resolution + num_workers: DataLoader workers + pin_memory: Pin memory for GPU transfer + prefetch_factor: Prefetch batches per worker + + Returns: + Tuple of (DataLoader, SequentialBucketSampler) + """ + logger.info("Building video multiresolution dataloader:") + logger.info(f" cache_dir: {cache_dir}") + logger.info(f" model_type: {model_type}") + logger.info(f" batch_size: {batch_size}") + logger.info(f" dp_rank: {dp_rank}, dp_world_size: {dp_world_size}") + + dataset = TextToVideoDataset( + cache_dir=cache_dir, + model_type=model_type, + device=device, + ) + + collate = functools.partial(collate_fn_video, model_type=model_type) + + dataloader, sampler = _build_multiresolution_dataloader_core( + dataset=dataset, + collate_fn=collate, + batch_size=batch_size, + dp_rank=dp_rank, + dp_world_size=dp_world_size, + base_resolution=base_resolution, + drop_last=drop_last, + shuffle=shuffle, + dynamic_batch_size=dynamic_batch_size, num_workers=num_workers, pin_memory=pin_memory, - prefetch_factor=prefetch_factor if num_workers > 0 else None, - persistent_workers=num_workers > 0, + prefetch_factor=prefetch_factor, ) logger.info(f" Dataset size: {len(dataset)}") diff --git a/nemo_automodel/components/datasets/diffusion/meta_files_dataset.py b/nemo_automodel/components/datasets/diffusion/meta_files_dataset.py index 381b53745..4dbeea2bc 100644 --- a/nemo_automodel/components/datasets/diffusion/meta_files_dataset.py +++ b/nemo_automodel/components/datasets/diffusion/meta_files_dataset.py @@ -24,6 +24,8 @@ import torch.distributed as dist from torch.utils.data import DataLoader, Dataset, DistributedSampler +from .text_to_video_dataset import collate_optional_video_fields, load_optional_video_fields + logger = logging.getLogger(__name__) @@ -111,20 +113,6 @@ def __getitem__(self, index: int) -> Dict[str, torch.Tensor]: # type: ignore[ov text_embeddings: torch.Tensor = data["text_embeddings"].to(self.device) video_latents: torch.Tensor = data["video_latents"].to(self.device) - # Load text_mask if available (backwards compatible) - text_mask = data.get("text_mask") - text_embeddings_2 = data.get("text_embeddings_2") - text_mask_2 = data.get("text_mask_2") - image_embeds = data.get("image_embeds") - if text_mask is not None: - text_mask = text_mask.to(self.device) - if text_embeddings_2 is not None: - text_embeddings_2 = text_embeddings_2.to(self.device) - if text_mask_2 is not None: - text_mask_2 = text_mask_2.to(self.device) - if image_embeds is not None: - image_embeds = image_embeds.to(self.device) - if self.transform_text is not None: text_embeddings = self.transform_text(text_embeddings) if self.transform_video is not None: @@ -146,15 +134,8 @@ def __getitem__(self, index: int) -> Dict[str, torch.Tensor]: # type: ignore[ov "file_info": file_info, } - # Add text_mask if available (backwards compatible) - if text_mask is not None: - result["text_mask"] = text_mask - if text_embeddings_2 is not None: - result["text_embeddings_2"] = text_embeddings_2 - if text_mask_2 is not None: - result["text_mask_2"] = text_mask_2 - if image_embeds is not None: - result["image_embeds"] = image_embeds + # Optional model-specific fields (backwards compatible) + result.update(load_optional_video_fields(data, self.device)) return result @@ -174,19 +155,8 @@ def collate_fn(batch: List[Dict[str, torch.Tensor]]) -> Dict[str, torch.Tensor]: "file_info": [item["file_info"] for item in batch], } - # Collate text_mask if available (backwards compatible) - if len(batch) > 0 and "text_mask" in batch[0]: - text_mask = torch.cat([item["text_mask"] for item in batch], dim=0) - result["text_mask"] = text_mask - if len(batch) > 0 and "text_embeddings_2" in batch[0]: - text_embeddings_2 = torch.cat([item["text_embeddings_2"] for item in batch], dim=0) - result["text_embeddings_2"] = text_embeddings_2 - if len(batch) > 0 and "text_mask_2" in batch[0]: - text_mask_2 = torch.cat([item["text_mask_2"] for item in batch], dim=0) - result["text_mask_2"] = text_mask_2 - if len(batch) > 0 and "image_embeds" in batch[0]: - image_embeds = torch.cat([item["image_embeds"] for item in batch], dim=0) - result["image_embeds"] = image_embeds + # Optional model-specific fields (backwards compatible) + collate_optional_video_fields(batch, result) return result diff --git a/nemo_automodel/components/datasets/diffusion/sampler.py b/nemo_automodel/components/datasets/diffusion/sampler.py index 3ee806631..92ac23a9c 100644 --- a/nemo_automodel/components/datasets/diffusion/sampler.py +++ b/nemo_automodel/components/datasets/diffusion/sampler.py @@ -18,9 +18,9 @@ import torch import torch.distributed as dist -from torch.utils.data import DataLoader, Sampler +from torch.utils.data import Sampler -from .text_to_image_dataset import TextToImageDataset +from .base_dataset import BaseMultiresolutionDataset logger = logging.getLogger(__name__) @@ -41,7 +41,7 @@ class SequentialBucketSampler(Sampler[List[int]]): def __init__( self, - dataset: TextToImageDataset, + dataset: BaseMultiresolutionDataset, base_batch_size: int = 32, base_resolution: Tuple[int, int] = (512, 512), drop_last: bool = True, @@ -54,7 +54,7 @@ def __init__( ): """ Args: - dataset: TextToImageDataset + dataset: BaseMultiresolutionDataset (or any subclass) base_batch_size: Batch size (fixed if dynamic_batch_size=False, or base for scaling if dynamic_batch_size=True) base_resolution: Reference resolution for batch size scaling @@ -222,103 +222,3 @@ def get_batch_info(self, batch_idx: int) -> Dict: running_count += num_batches return {} - - -def collate_fn_production(batch: List[Dict]) -> Dict: - """Production collate function with verification.""" - # Verify all samples have same resolution - resolutions = [tuple(item["crop_resolution"].tolist()) for item in batch] - assert len(set(resolutions)) == 1, f"Mixed resolutions in batch: {set(resolutions)}" - - # Stack tensors - latents = torch.stack([item["latent"] for item in batch]) - crop_resolutions = torch.stack([item["crop_resolution"] for item in batch]) - original_resolutions = torch.stack([item["original_resolution"] for item in batch]) - crop_offsets = torch.stack([item["crop_offset"] for item in batch]) - - # Collect metadata - prompts = [item["prompt"] for item in batch] - image_paths = [item["image_path"] for item in batch] - bucket_ids = [item["bucket_id"] for item in batch] - aspect_ratios = [item["aspect_ratio"] for item in batch] - - output = { - "latent": latents, - "crop_resolution": crop_resolutions, - "original_resolution": original_resolutions, - "crop_offset": crop_offsets, - "prompt": prompts, - "image_path": image_paths, - "bucket_id": bucket_ids, - "aspect_ratio": aspect_ratios, - } - - # Handle text encodings - if "clip_hidden" in batch[0]: - output["clip_hidden"] = torch.stack([item["clip_hidden"] for item in batch]) - output["pooled_prompt_embeds"] = torch.stack([item["pooled_prompt_embeds"] for item in batch]) - output["prompt_embeds"] = torch.stack([item["prompt_embeds"] for item in batch]) - else: - output["clip_tokens"] = torch.stack([item["clip_tokens"] for item in batch]) - output["t5_tokens"] = torch.stack([item["t5_tokens"] for item in batch]) - - return output - - -def build_multiresolution_dataloader( - *, - dataset: TextToImageDataset, - base_batch_size: int, - dp_rank: int, - dp_world_size: int, - base_resolution: Tuple[int, int] = (512, 512), - drop_last: bool = True, - shuffle: bool = True, - dynamic_batch_size: bool = False, - num_workers: int = 4, - pin_memory: bool = True, - prefetch_factor: int = 2, -) -> Tuple[DataLoader, SequentialBucketSampler]: - """ - Build production dataloader with sequential bucket iteration and distributed training support. - - Args: - dataset: TextToImageDataset instance - base_batch_size: Batch size (fixed, or base for scaling if dynamic_batch_size=True) - dp_rank: Rank of current process in data parallel group - dp_world_size: Total number of processes in data parallel group - base_resolution: Reference resolution (only used if dynamic_batch_size=True) - drop_last: Drop incomplete batches - shuffle: Shuffle bucket order and samples within buckets each epoch - dynamic_batch_size: If True, scale batch size based on resolution. - If False (default), use base_batch_size for all buckets. - num_workers: Number of data loading workers - pin_memory: Pin memory for faster GPU transfer - prefetch_factor: How many batches to prefetch per worker - - Returns: - Tuple of (DataLoader, SequentialBucketSampler) for production training - """ - sampler = SequentialBucketSampler( - dataset, - base_batch_size=base_batch_size, - base_resolution=base_resolution, - drop_last=drop_last, - shuffle_buckets=shuffle, - shuffle_within_bucket=shuffle, - dynamic_batch_size=dynamic_batch_size, - num_replicas=dp_world_size, - rank=dp_rank, - ) - - dataloader = DataLoader( - dataset, - batch_sampler=sampler, - collate_fn=collate_fn_production, - num_workers=num_workers, - pin_memory=pin_memory, - prefetch_factor=prefetch_factor if num_workers > 0 else None, - persistent_workers=num_workers > 0, # Keep workers alive between epochs - ) - - return dataloader, sampler diff --git a/nemo_automodel/components/datasets/diffusion/text_to_image_dataset.py b/nemo_automodel/components/datasets/diffusion/text_to_image_dataset.py index 062e0aeec..41e356220 100644 --- a/nemo_automodel/components/datasets/diffusion/text_to_image_dataset.py +++ b/nemo_automodel/components/datasets/diffusion/text_to_image_dataset.py @@ -12,20 +12,15 @@ # See the License for the specific language governing permissions and # limitations under the License. -import json -import logging from pathlib import Path -from typing import Dict, List +from typing import Dict import torch -from torch.utils.data import Dataset -from .multi_tier_bucketing import MultiTierBucketCalculator +from .base_dataset import BaseMultiresolutionDataset -logger = logging.getLogger(__name__) - -class TextToImageDataset(Dataset): +class TextToImageDataset(BaseMultiresolutionDataset): """Text-to-Image dataset with hierarchical bucket organization.""" def __init__( @@ -38,97 +33,8 @@ def __init__( cache_dir: Directory containing preprocessed cache train_text_encoder: If True, returns tokens instead of embeddings """ - self.cache_dir = Path(cache_dir) self.train_text_encoder = train_text_encoder - - # Load metadata - self.metadata = self._load_metadata() - - logger.info(f"Loaded dataset with {len(self.metadata)} samples") - - # Group by bucket - self._group_by_bucket() - - # Initialize bucket calculator for dynamic batch sizes - self.calculator = MultiTierBucketCalculator(quantization=64) - - def _load_metadata(self) -> List[Dict]: - """Load metadata from cache directory. - - Expects metadata.json with "shards" key referencing shard files. - """ - metadata_file = self.cache_dir / "metadata.json" - - if not metadata_file.exists(): - raise FileNotFoundError(f"No metadata.json found in {self.cache_dir}") - - with open(metadata_file, "r") as f: - data = json.load(f) - - if not isinstance(data, dict) or "shards" not in data: - raise ValueError(f"Invalid metadata format in {metadata_file}. Expected dict with 'shards' key.") - - # Load all shard files - metadata = [] - for shard_name in data["shards"]: - shard_path = self.cache_dir / shard_name - with open(shard_path, "r") as f: - shard_data = json.load(f) - metadata.extend(shard_data) - - return metadata - - def _aspect_ratio_to_name(self, aspect_ratio: float) -> str: - """Convert aspect ratio to a descriptive name.""" - if aspect_ratio < 0.85: - return "tall" - elif aspect_ratio > 1.18: - return "wide" - else: - return "square" - - def _group_by_bucket(self): - """Group samples by bucket (aspect_ratio + resolution).""" - self.bucket_groups = {} - - for idx, item in enumerate(self.metadata): - # Bucket key: aspect_name/resolution - aspect_ratio = item.get("aspect_ratio", 1.0) - aspect_name = self._aspect_ratio_to_name(aspect_ratio) - resolution = tuple(item["crop_resolution"]) - bucket_key = (aspect_name, resolution) - - if bucket_key not in self.bucket_groups: - self.bucket_groups[bucket_key] = { - "indices": [], - "aspect_name": aspect_name, - "aspect_ratio": aspect_ratio, - "resolution": resolution, - "pixels": resolution[0] * resolution[1], - } - - self.bucket_groups[bucket_key]["indices"].append(idx) - - # Sort buckets by resolution (low to high for optimal memory usage) - self.sorted_bucket_keys = sorted(self.bucket_groups.keys(), key=lambda k: self.bucket_groups[k]["pixels"]) - - logger.info(f"\nDataset organized into {len(self.bucket_groups)} buckets:") - for key in self.sorted_bucket_keys: - bucket = self.bucket_groups[key] - aspect_name, resolution = key - logger.info( - f" {aspect_name:6s} {resolution[0]:4d}x{resolution[1]:4d}: {len(bucket['indices']):5d} samples" - ) - - def get_bucket_info(self) -> Dict: - """Get bucket organization information.""" - return { - "total_buckets": len(self.bucket_groups), - "buckets": {f"{k[0]}/{k[1][0]}x{k[1][1]}": len(v["indices"]) for k, v in self.bucket_groups.items()}, - } - - def __len__(self) -> int: - return len(self.metadata) + super().__init__(cache_dir, quantization=64) def __getitem__(self, idx: int) -> Dict[str, torch.Tensor]: """Load a single sample.""" diff --git a/nemo_automodel/components/datasets/diffusion/text_to_video_dataset.py b/nemo_automodel/components/datasets/diffusion/text_to_video_dataset.py new file mode 100644 index 000000000..4082d6fb8 --- /dev/null +++ b/nemo_automodel/components/datasets/diffusion/text_to_video_dataset.py @@ -0,0 +1,83 @@ +# Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pickle +from pathlib import Path +from typing import Dict, List + +import torch + +from .base_dataset import BaseMultiresolutionDataset + +VIDEO_OPTIONAL_FIELDS = ("text_mask", "text_embeddings_2", "text_mask_2", "image_embeds") + + +def load_optional_video_fields(data: dict, device: str = "cpu") -> dict: + """Extract optional model-specific fields, moving to device.""" + result = {} + for key in VIDEO_OPTIONAL_FIELDS: + if key in data and data[key] is not None: + result[key] = data[key].to(device) + return result + + +def collate_optional_video_fields(batch: List[Dict], result: dict) -> None: + """Concatenate optional video fields present in batch into result dict.""" + if not batch: + return + for key in VIDEO_OPTIONAL_FIELDS: + if key in batch[0]: + result[key] = torch.cat([item[key] for item in batch], dim=0) + + +class TextToVideoDataset(BaseMultiresolutionDataset): + """Text-to-Video dataset with multiresolution bucket organization. + + Loads preprocessed .meta files organized by resolution bucket. + Compatible with SequentialBucketSampler for multiresolution training. + """ + + def __init__(self, cache_dir: str, model_type: str = "wan", device: str = "cpu"): + """ + Args: + cache_dir: Directory containing preprocessed cache (metadata.json + shards + WxH/*.meta) + model_type: Model type for model-specific fields ("wan", "hunyuan", etc.) + device: Device to load tensors to + """ + self.model_type = model_type + self.device = device + super().__init__(cache_dir, quantization=8) + + def __getitem__(self, idx: int) -> Dict[str, torch.Tensor]: + """Load a single video sample from its .meta file.""" + item = self.metadata[idx] + cache_file = Path(item["cache_file"]) + + with open(cache_file, "rb") as f: + data = pickle.load(f) + + video_latents = data["video_latents"].to(self.device) + text_embeddings = data["text_embeddings"].to(self.device) + + output = { + "video_latents": video_latents, + "text_embeddings": text_embeddings, + "bucket_resolution": torch.tensor(item["bucket_resolution"]), + "aspect_ratio": item.get("aspect_ratio", 1.0), + } + + # Model-specific optional fields + output.update(load_optional_video_fields(data, self.device)) + + return output diff --git a/nemo_automodel/recipes/base_recipe.py b/nemo_automodel/recipes/base_recipe.py index 46f305290..b66ca0386 100644 --- a/nemo_automodel/recipes/base_recipe.py +++ b/nemo_automodel/recipes/base_recipe.py @@ -351,9 +351,24 @@ def to_item(x): # Unwrap DDP if present if isinstance(unwrapped_model, DistributedDataParallel): unwrapped_model = unwrapped_model.module - unwrapped_model.save_pretrained( - save_directory=path, checkpointer=self.checkpointer, tokenizer=tokenizer, peft_config=self.peft_config - ) + # Models with HFCheckpointingMixin route save_pretrained through checkpointer.save_model (DCP). + # Models without it (e.g. diffusers) would use their native save_pretrained which fails on + # FSDP2-sharded DTensors, so fall back to checkpointer.save_model directly. + if hasattr(unwrapped_model, 'save_pretrained') and hasattr(unwrapped_model.save_pretrained, '__func__'): + from nemo_automodel.components.models.common.hf_checkpointing_mixin import HFCheckpointingMixin + + if isinstance(unwrapped_model, HFCheckpointingMixin): + unwrapped_model.save_pretrained( + save_directory=path, checkpointer=self.checkpointer, tokenizer=tokenizer, peft_config=self.peft_config + ) + else: + self.checkpointer.save_model( + model=unwrapped_model, weights_path=path, peft_config=self.peft_config, tokenizer=tokenizer + ) + else: + self.checkpointer.save_model( + model=unwrapped_model, weights_path=path, peft_config=self.peft_config, tokenizer=tokenizer + ) # Sync before checkpointing for Dion optimizers = optimizer if isinstance(optimizer, list) else [optimizer] diff --git a/nemo_automodel/recipes/diffusion/train.py b/nemo_automodel/recipes/diffusion/train.py index 64f5733f4..5e2d7d913 100644 --- a/nemo_automodel/recipes/diffusion/train.py +++ b/nemo_automodel/recipes/diffusion/train.py @@ -620,7 +620,7 @@ def run_train_validation_loop(self): ) if self.step_scheduler.is_ckpt_step: - self.save_checkpoint(epoch, global_step) + self.save_checkpoint(epoch, global_step, epoch_loss / num_steps) avg_loss = epoch_loss / num_steps logging.info(f"[INFO] Epoch {epoch + 1} complete. avg_loss={avg_loss:.6f}") diff --git a/pyproject.toml b/pyproject.toml index b3c32c247..49c071594 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -94,7 +94,9 @@ diffusion = [ "ftfy", "imageio", "imageio-ffmpeg", + "kernels", "opencv-python-headless", + "torchvision", ] # nvidia-cudnn-cu12 pin: This is required for GPTOSS TE support + faster cudnn attention (only on Linux where CUDA is available) # "nvidia-cudnn-cu12>=9.18.0.0; sys_platform == 'linux'", @@ -205,6 +207,11 @@ torch = [ { index = "pytorch-cu129", marker = "sys_platform == 'linux'" }, { index = "pypi", marker = "sys_platform == 'darwin'" }, ] +torchvision = [ + { index = "pytorch-cpu", marker = "sys_platform != 'linux' and sys_platform != 'darwin'" }, + { index = "pytorch-cu129", marker = "sys_platform == 'linux'" }, + { index = "pypi", marker = "sys_platform == 'darwin'" }, +] [[tool.uv.index]] name = "pypi" diff --git a/tests/unit_tests/datasets/diffusion/test_collate_diffusion.py b/tests/unit_tests/datasets/diffusion/test_collate_diffusion.py index fdc155fec..d657334f0 100644 --- a/tests/unit_tests/datasets/diffusion/test_collate_diffusion.py +++ b/tests/unit_tests/datasets/diffusion/test_collate_diffusion.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""Unit tests for collate_fns.py: collate_fn_flux, build_flux_multiresolution_dataloader.""" +"""Unit tests for collate_fns.py: collate_fn_text_to_image and build_text_to_image_multiresolution_dataloader.""" import json import tempfile @@ -23,8 +23,8 @@ import torch from nemo_automodel.components.datasets.diffusion.collate_fns import ( - build_flux_multiresolution_dataloader, - collate_fn_flux, + build_text_to_image_multiresolution_dataloader, + collate_fn_text_to_image, ) @@ -58,12 +58,12 @@ def _make_production_batch( # ============================================================================= -# TestCollateFnFlux +# TestCollateFnTextToImage # ============================================================================= -class TestCollateFnFlux: - """Tests for collate_fn_flux.""" +class TestCollateFnTextToImage: + """Tests for collate_fn_text_to_image.""" def test_pre_encoded_embeddings(self): prod_batch = _make_production_batch(has_prompt_embeds=True) @@ -71,7 +71,7 @@ def test_pre_encoded_embeddings(self): "nemo_automodel.components.datasets.diffusion.collate_fns.collate_fn_production", return_value=prod_batch, ): - result = collate_fn_flux([{}, {}]) # Dummy batch items + result = collate_fn_text_to_image([{}, {}]) # Dummy batch items assert "image_latents" in result assert "text_embeddings" in result @@ -85,7 +85,7 @@ def test_with_clip_hidden(self): "nemo_automodel.components.datasets.diffusion.collate_fns.collate_fn_production", return_value=prod_batch, ): - result = collate_fn_flux([{}, {}]) + result = collate_fn_text_to_image([{}, {}]) assert "clip_hidden" in result @@ -95,7 +95,7 @@ def test_without_clip_hidden(self): "nemo_automodel.components.datasets.diffusion.collate_fns.collate_fn_production", return_value=prod_batch, ): - result = collate_fn_flux([{}, {}]) + result = collate_fn_text_to_image([{}, {}]) assert "clip_hidden" not in result @@ -108,7 +108,7 @@ def test_tokenized_input_raises(self): return_value=prod_batch, ): with pytest.raises(NotImplementedError, match="On-the-fly text encoding"): - collate_fn_flux([{}, {}]) + collate_fn_text_to_image([{}, {}]) def test_metadata_fields(self): prod_batch = _make_production_batch(has_prompt_embeds=True) @@ -116,7 +116,7 @@ def test_metadata_fields(self): "nemo_automodel.components.datasets.diffusion.collate_fns.collate_fn_production", return_value=prod_batch, ): - result = collate_fn_flux([{}, {}]) + result = collate_fn_text_to_image([{}, {}]) meta = result["metadata"] assert "prompts" in meta @@ -129,7 +129,7 @@ def test_metadata_fields(self): # ============================================================================= -# TestBuildFluxMultiresolutionDataloader +# TestBuildTextToImageMultiresolutionDataloader # ============================================================================= @@ -177,8 +177,8 @@ def build_cache(self, resolution=(512, 512)): return metadata -class TestBuildFluxMultiresolutionDataloader: - """Tests for build_flux_multiresolution_dataloader.""" +class TestBuildTextToImageMultiresolutionDataloader: + """Tests for build_text_to_image_multiresolution_dataloader.""" def test_returns_dataloader_and_sampler(self): with tempfile.TemporaryDirectory() as tmpdir: @@ -186,7 +186,7 @@ def test_returns_dataloader_and_sampler(self): builder = MockCacheBuilder(cache_dir, num_samples=10) builder.build_cache() - dl, sampler = build_flux_multiresolution_dataloader( + dl, sampler = build_text_to_image_multiresolution_dataloader( cache_dir=str(cache_dir), batch_size=2, dp_rank=0, @@ -205,7 +205,7 @@ def test_iteration(self): builder = MockCacheBuilder(cache_dir, num_samples=10) builder.build_cache() - dl, _ = build_flux_multiresolution_dataloader( + dl, _ = build_text_to_image_multiresolution_dataloader( cache_dir=str(cache_dir), batch_size=2, dp_rank=0, diff --git a/tests/unit_tests/datasets/diffusion/test_dataloader.py b/tests/unit_tests/datasets/diffusion/test_dataloader.py index 3c820776c..47421039d 100644 --- a/tests/unit_tests/datasets/diffusion/test_dataloader.py +++ b/tests/unit_tests/datasets/diffusion/test_dataloader.py @@ -17,7 +17,7 @@ This module contains both CPU and GPU tests for: - SequentialBucketSampler - collate_fn_production -- build_multiresolution_dataloader +- _build_multiresolution_dataloader_core GPU tests are skipped when CUDA is not available. """ @@ -30,10 +30,12 @@ import pytest import torch +from nemo_automodel.components.datasets.diffusion.collate_fns import ( + _build_multiresolution_dataloader_core, + collate_fn_production, +) from nemo_automodel.components.datasets.diffusion.sampler import ( SequentialBucketSampler, - build_multiresolution_dataloader, - collate_fn_production, ) from nemo_automodel.components.datasets.diffusion.text_to_image_dataset import ( TextToImageDataset, @@ -182,7 +184,7 @@ def test_sampler_init_basic(self, simple_dataset): """Test basic sampler initialization.""" sampler = SequentialBucketSampler( simple_dataset, - base_batch_size=4, + batch_size=4, num_replicas=1, rank=0, ) @@ -196,7 +198,7 @@ def test_sampler_len(self, simple_dataset): """Test sampler __len__ returns correct batch count.""" sampler = SequentialBucketSampler( simple_dataset, - base_batch_size=4, + batch_size=4, num_replicas=1, rank=0, ) @@ -209,7 +211,7 @@ def test_sampler_iter_yields_batches(self, simple_dataset): """Test sampler iteration yields batches of indices.""" sampler = SequentialBucketSampler( simple_dataset, - base_batch_size=4, + batch_size=4, num_replicas=1, rank=0, ) @@ -226,7 +228,7 @@ def test_sampler_batch_size_respected(self, simple_dataset): batch_size = 4 sampler = SequentialBucketSampler( simple_dataset, - base_batch_size=batch_size, + batch_size=batch_size, num_replicas=1, rank=0, drop_last=True, @@ -241,7 +243,7 @@ def test_sampler_drop_last_false(self, simple_dataset): """Test sampler with drop_last=False includes all samples.""" sampler = SequentialBucketSampler( simple_dataset, - base_batch_size=4, + batch_size=4, num_replicas=1, rank=0, drop_last=False, @@ -257,7 +259,7 @@ def test_sampler_set_epoch(self, simple_dataset): """Test set_epoch changes sampler state.""" sampler = SequentialBucketSampler( simple_dataset, - base_batch_size=4, + batch_size=4, num_replicas=1, rank=0, ) @@ -270,7 +272,7 @@ def test_sampler_deterministic_shuffling(self, simple_dataset): """Test same seed produces same batch order.""" sampler1 = SequentialBucketSampler( simple_dataset, - base_batch_size=4, + batch_size=4, num_replicas=1, rank=0, seed=42, @@ -278,7 +280,7 @@ def test_sampler_deterministic_shuffling(self, simple_dataset): sampler2 = SequentialBucketSampler( simple_dataset, - base_batch_size=4, + batch_size=4, num_replicas=1, rank=0, seed=42, @@ -293,7 +295,7 @@ def test_sampler_different_seeds_different_order(self, simple_dataset): """Test different seeds produce different batch orders.""" sampler1 = SequentialBucketSampler( simple_dataset, - base_batch_size=4, + batch_size=4, num_replicas=1, rank=0, seed=42, @@ -302,7 +304,7 @@ def test_sampler_different_seeds_different_order(self, simple_dataset): sampler2 = SequentialBucketSampler( simple_dataset, - base_batch_size=4, + batch_size=4, num_replicas=1, rank=0, seed=123, @@ -321,7 +323,7 @@ def test_sampler_no_shuffle(self, simple_dataset): """Test sampler without shuffling.""" sampler = SequentialBucketSampler( simple_dataset, - base_batch_size=4, + batch_size=4, num_replicas=1, rank=0, shuffle_buckets=False, @@ -335,7 +337,7 @@ def test_sampler_different_order_across_epochs(self, large_dataset): """Test that bucket and element order differs across epochs.""" sampler = SequentialBucketSampler( large_dataset, - base_batch_size=8, + batch_size=8, num_replicas=1, rank=0, seed=42, @@ -380,7 +382,7 @@ def test_sampler_dynamic_batch_size_disabled(self, multi_resolution_dataset): batch_size = 4 sampler = SequentialBucketSampler( multi_resolution_dataset, - base_batch_size=batch_size, + batch_size=batch_size, dynamic_batch_size=False, num_replicas=1, rank=0, @@ -396,7 +398,7 @@ def test_sampler_dynamic_batch_size_enabled(self, multi_resolution_dataset): """Test sampler with dynamic_batch_size=True varies batch size.""" sampler = SequentialBucketSampler( multi_resolution_dataset, - base_batch_size=8, + batch_size=8, base_resolution=(512, 512), dynamic_batch_size=True, num_replicas=1, @@ -417,7 +419,7 @@ def test_sampler_get_batch_info(self, simple_dataset): """Test get_batch_info returns bucket information.""" sampler = SequentialBucketSampler( simple_dataset, - base_batch_size=4, + batch_size=4, num_replicas=1, rank=0, ) @@ -442,7 +444,7 @@ def test_multi_rank_same_batch_count(self, large_dataset): for rank in range(world_size): sampler = SequentialBucketSampler( large_dataset, - base_batch_size=8, + batch_size=8, num_replicas=world_size, rank=rank, ) @@ -457,7 +459,7 @@ def test_multi_rank_different_samples(self, large_dataset): sampler0 = SequentialBucketSampler( large_dataset, - base_batch_size=8, + batch_size=8, num_replicas=world_size, rank=0, seed=42, @@ -465,7 +467,7 @@ def test_multi_rank_different_samples(self, large_dataset): sampler1 = SequentialBucketSampler( large_dataset, - base_batch_size=8, + batch_size=8, num_replicas=world_size, rank=1, seed=42, @@ -486,7 +488,7 @@ def test_single_rank_equivalent(self, simple_dataset): """Test single rank (world_size=1) processes all data.""" sampler = SequentialBucketSampler( simple_dataset, - base_batch_size=4, + batch_size=4, num_replicas=1, rank=0, ) @@ -570,18 +572,19 @@ def test_collate_same_resolution_required(self, multi_resolution_dataset): # ============================================================================ -# CPU Tests - build_multiresolution_dataloader +# CPU Tests - _build_multiresolution_dataloader_core # ============================================================================ -class TestBuildMultiresolutionDataloaderCPU: - """CPU tests for build_multiresolution_dataloader.""" +class TestBuildMultiresolutionDataloaderCoreCPU: + """CPU tests for _build_multiresolution_dataloader_core.""" def test_build_dataloader_returns_tuple(self, simple_dataset): """Test function returns dataloader and sampler.""" - dataloader, sampler = build_multiresolution_dataloader( + dataloader, sampler = _build_multiresolution_dataloader_core( + collate_fn=collate_fn_production, dataset=simple_dataset, - base_batch_size=4, + batch_size=4, dp_rank=0, dp_world_size=1, num_workers=0, @@ -593,9 +596,10 @@ def test_build_dataloader_returns_tuple(self, simple_dataset): def test_dataloader_iteration(self, simple_dataset): """Test dataloader can be iterated.""" - dataloader, sampler = build_multiresolution_dataloader( + dataloader, sampler = _build_multiresolution_dataloader_core( + collate_fn=collate_fn_production, dataset=simple_dataset, - base_batch_size=4, + batch_size=4, dp_rank=0, dp_world_size=1, num_workers=0, @@ -613,9 +617,10 @@ def test_dataloader_iteration(self, simple_dataset): def test_dataloader_batch_content(self, simple_dataset): """Test dataloader batches have correct content.""" - dataloader, _ = build_multiresolution_dataloader( + dataloader, _ = _build_multiresolution_dataloader_core( + collate_fn=collate_fn_production, dataset=simple_dataset, - base_batch_size=4, + batch_size=4, dp_rank=0, dp_world_size=1, num_workers=0, @@ -628,9 +633,10 @@ def test_dataloader_batch_content(self, simple_dataset): def test_dataloader_with_shuffle(self, simple_dataset): """Test dataloader with shuffle enabled.""" - dataloader, _ = build_multiresolution_dataloader( + dataloader, _ = _build_multiresolution_dataloader_core( + collate_fn=collate_fn_production, dataset=simple_dataset, - base_batch_size=4, + batch_size=4, dp_rank=0, dp_world_size=1, shuffle=True, @@ -643,9 +649,10 @@ def test_dataloader_with_shuffle(self, simple_dataset): def test_dataloader_without_shuffle(self, simple_dataset): """Test dataloader with shuffle disabled.""" - dataloader, _ = build_multiresolution_dataloader( + dataloader, _ = _build_multiresolution_dataloader_core( + collate_fn=collate_fn_production, dataset=simple_dataset, - base_batch_size=4, + batch_size=4, dp_rank=0, dp_world_size=1, shuffle=False, @@ -658,9 +665,10 @@ def test_dataloader_without_shuffle(self, simple_dataset): def test_dataloader_with_dynamic_batch(self, multi_resolution_dataset): """Test dataloader with dynamic batch sizing.""" - dataloader, _ = build_multiresolution_dataloader( + dataloader, _ = _build_multiresolution_dataloader_core( + collate_fn=collate_fn_production, dataset=multi_resolution_dataset, - base_batch_size=8, + batch_size=8, base_resolution=(512, 512), dp_rank=0, dp_world_size=1, @@ -687,7 +695,7 @@ def test_sampler_with_gpu_tensors(self, simple_dataset): sampler = SequentialBucketSampler( simple_dataset, - base_batch_size=4, + batch_size=4, num_replicas=1, rank=0, ) @@ -747,20 +755,21 @@ def test_collate_then_transfer_to_gpu(self, simple_dataset): # ============================================================================ -# GPU Tests - build_multiresolution_dataloader +# GPU Tests - _build_multiresolution_dataloader_core # ============================================================================ @pytest.mark.skipif(not torch.cuda.is_available(), reason="Requires CUDA") -class TestBuildMultiresolutionDataloaderGPU: - """GPU tests for build_multiresolution_dataloader.""" +class TestBuildMultiresolutionDataloaderCoreGPU: + """GPU tests for _build_multiresolution_dataloader_core.""" def test_dataloader_with_pin_memory(self, simple_dataset): """Test dataloader with pin_memory for faster GPU transfer.""" - dataloader, _ = build_multiresolution_dataloader( + dataloader, _ = _build_multiresolution_dataloader_core( + collate_fn=collate_fn_production, dataset=simple_dataset, - base_batch_size=4, + batch_size=4, dp_rank=0, dp_world_size=1, pin_memory=True, @@ -775,9 +784,10 @@ def test_dataloader_with_pin_memory(self, simple_dataset): def test_dataloader_batch_to_gpu(self, simple_dataset): """Test full batch transfer to GPU.""" - dataloader, _ = build_multiresolution_dataloader( + dataloader, _ = _build_multiresolution_dataloader_core( + collate_fn=collate_fn_production, dataset=simple_dataset, - base_batch_size=4, + batch_size=4, dp_rank=0, dp_world_size=1, num_workers=0, @@ -814,9 +824,10 @@ def test_dataloader_gpu_memory_cleanup(self, simple_dataset): torch.cuda.empty_cache() initial_memory = torch.cuda.memory_allocated() - dataloader, _ = build_multiresolution_dataloader( + dataloader, _ = _build_multiresolution_dataloader_core( + collate_fn=collate_fn_production, dataset=simple_dataset, - base_batch_size=4, + batch_size=4, dp_rank=0, dp_world_size=1, num_workers=0, @@ -846,9 +857,9 @@ def test_dataloader_multi_gpu_simulation(self, large_dataset): # Create dataloaders for each GPU (simulated) dataloaders = [] for rank in range(min(gpu_count, 2)): # Use up to 2 GPUs for test - dl, _ = build_multiresolution_dataloader( + dl, _ = _build_multiresolution_dataloader_core( dataset=large_dataset, - base_batch_size=8, + batch_size=8, dp_rank=rank, dp_world_size=min(gpu_count, 2), num_workers=0, @@ -867,9 +878,10 @@ def test_dataloader_multi_gpu_simulation(self, large_dataset): def test_gpu_operations_on_batch(self, simple_dataset): """Test performing GPU operations on loaded batch.""" - dataloader, _ = build_multiresolution_dataloader( + dataloader, _ = _build_multiresolution_dataloader_core( + collate_fn=collate_fn_production, dataset=simple_dataset, - base_batch_size=4, + batch_size=4, dp_rank=0, dp_world_size=1, num_workers=0, @@ -902,9 +914,10 @@ class TestDataloaderIntegration: def test_full_epoch_iteration_cpu(self, simple_dataset): """Test iterating through a full epoch on CPU.""" - dataloader, sampler = build_multiresolution_dataloader( + dataloader, sampler = _build_multiresolution_dataloader_core( + collate_fn=collate_fn_production, dataset=simple_dataset, - base_batch_size=4, + batch_size=4, dp_rank=0, dp_world_size=1, num_workers=0, @@ -919,9 +932,10 @@ def test_full_epoch_iteration_cpu(self, simple_dataset): def test_multiple_epochs_cpu(self, simple_dataset): """Test iterating through multiple epochs.""" - dataloader, sampler = build_multiresolution_dataloader( + dataloader, sampler = _build_multiresolution_dataloader_core( + collate_fn=collate_fn_production, dataset=simple_dataset, - base_batch_size=4, + batch_size=4, dp_rank=0, dp_world_size=1, num_workers=0, @@ -937,9 +951,10 @@ def test_multiple_epochs_cpu(self, simple_dataset): @pytest.mark.skipif(not torch.cuda.is_available(), reason="Requires CUDA") def test_full_epoch_iteration_gpu(self, simple_dataset): """Test iterating through a full epoch with GPU transfer.""" - dataloader, sampler = build_multiresolution_dataloader( + dataloader, sampler = _build_multiresolution_dataloader_core( + collate_fn=collate_fn_production, dataset=simple_dataset, - base_batch_size=4, + batch_size=4, dp_rank=0, dp_world_size=1, pin_memory=True, @@ -964,7 +979,7 @@ def test_deterministic_across_ranks(self, large_dataset): # Create samplers for two ranks sampler0 = SequentialBucketSampler( large_dataset, - base_batch_size=8, + batch_size=8, num_replicas=world_size, rank=0, seed=seed, @@ -972,7 +987,7 @@ def test_deterministic_across_ranks(self, large_dataset): sampler1 = SequentialBucketSampler( large_dataset, - base_batch_size=8, + batch_size=8, num_replicas=world_size, rank=1, seed=seed, diff --git a/tools/diffusion/processors/wan.py b/tools/diffusion/processors/wan.py index 8fa2ea004..750e53404 100644 --- a/tools/diffusion/processors/wan.py +++ b/tools/diffusion/processors/wan.py @@ -111,6 +111,8 @@ def load_models(self, model_name: str, device: str) -> Dict[str, Any]: from transformers import AutoTokenizer, UMT5EncoderModel dtype = torch.float16 if "cuda" in device else torch.float32 + # UMT5 requires bfloat16 (float16 causes overflow/zeros in attention and layer norm) + text_encoder_dtype = torch.bfloat16 if "cuda" in device else torch.float32 logger.info("[Wan] Loading models from %s...", model_name) @@ -119,8 +121,19 @@ def load_models(self, model_name: str, device: str) -> Dict[str, Any]: text_encoder = UMT5EncoderModel.from_pretrained( model_name, subfolder="text_encoder", - torch_dtype=dtype, + torch_dtype=text_encoder_dtype, ) + # Workaround for transformers>=5.0.0 weight tying regression: + # The Wan2.1 checkpoint stores the token embedding as "shared.weight", which + # transformers<5 automatically tied to "encoder.embed_tokens.weight". In v5+, + # this tying no longer happens during from_pretrained(), leaving embed_tokens + # zero-initialized and producing all-zero text embeddings. + if ( + hasattr(text_encoder, "shared") + and hasattr(text_encoder.encoder, "embed_tokens") + and text_encoder.encoder.embed_tokens.weight.data_ptr() != text_encoder.shared.weight.data_ptr() + ): + text_encoder.encoder.embed_tokens.weight = text_encoder.shared.weight text_encoder.to(device) text_encoder.eval() diff --git a/uv.lock b/uv.lock index 4c5dfd33c..5a7c5beca 100644 --- a/uv.lock +++ b/uv.lock @@ -2275,6 +2275,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, ] +[[package]] +name = "kernels" +version = "0.12.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "huggingface-hub" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a9/07/d2b635e965b232cae1aa873c6e0458947196be8dca7bb02e64d3cd6e8d19/kernels-0.12.2.tar.gz", hash = "sha256:812fc43c2814f046cee655cbebf3918cddd489715773670bdb38cca3f5203b5b", size = 57108, upload-time = "2026-03-04T10:03:00.379Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/be/f5d6758b48633e4f6a28198fcf4bf9f763cc6a82e2335d9fe8802a5cb440/kernels-0.12.2-py3-none-any.whl", hash = "sha256:1289261804748cf3cf8e3afab80b505b0f1b28e4ec88379cdf08dc31e64964b8", size = 55205, upload-time = "2026-03-04T10:02:59.305Z" }, +] + [[package]] name = "kiwisolver" version = "1.4.9" @@ -3240,6 +3255,7 @@ all = [ { name = "ftfy" }, { name = "imageio" }, { name = "imageio-ffmpeg" }, + { name = "kernels" }, { name = "mamba-ssm" }, { name = "mistral-common", extra = ["opencv"] }, { name = "numba", version = "0.53.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13'" }, @@ -3257,6 +3273,10 @@ all = [ { name = "sentencepiece" }, { name = "timm" }, { name = "torchcodec", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, + { name = "torchvision", version = "0.24.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, + { name = "torchvision", version = "0.24.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, + { name = "torchvision", version = "0.25.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torchvision", version = "0.25.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, { name = "transformer-engine", extra = ["pytorch"] }, ] cuda = [ @@ -3276,7 +3296,12 @@ diffusion = [ { name = "ftfy" }, { name = "imageio" }, { name = "imageio-ffmpeg" }, + { name = "kernels" }, { name = "opencv-python-headless" }, + { name = "torchvision", version = "0.24.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, + { name = "torchvision", version = "0.24.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, + { name = "torchvision", version = "0.25.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torchvision", version = "0.25.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, ] extra = [ { name = "flash-linear-attention" }, @@ -3365,6 +3390,7 @@ requires-dist = [ { name = "ftfy", marker = "extra == 'diffusion'" }, { name = "imageio", marker = "extra == 'diffusion'" }, { name = "imageio-ffmpeg", marker = "extra == 'diffusion'" }, + { name = "kernels", marker = "extra == 'diffusion'" }, { name = "mamba-ssm", marker = "extra == 'cuda'" }, { name = "megatron-fsdp", specifier = ">=0.2.3" }, { name = "mistral-common", extras = ["audio", "hf-hub", "image", "sentencepiece"] }, @@ -3397,6 +3423,9 @@ requires-dist = [ { name = "torchao" }, { name = "torchcodec", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin' and extra == 'vlm'" }, { name = "torchdata" }, + { name = "torchvision", marker = "sys_platform == 'darwin' and extra == 'diffusion'", index = "https://pypi.org/simple" }, + { name = "torchvision", marker = "sys_platform != 'darwin' and sys_platform != 'linux' and extra == 'diffusion'", index = "https://download.pytorch.org/whl/cpu" }, + { name = "torchvision", marker = "sys_platform == 'linux' and extra == 'diffusion'", index = "https://download.pytorch.org/whl/cu129" }, { name = "transformer-engine", extras = ["pytorch"], marker = "extra == 'cuda'", specifier = "<=2.11.0" }, { name = "transformers", specifier = ">=5.0.0" }, { name = "wandb" }, @@ -4041,8 +4070,10 @@ dependencies = [ { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, - { name = "torchvision", version = "0.24.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'linux'" }, - { name = "torchvision", version = "0.25.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux'" }, + { name = "torchvision", version = "0.24.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, + { name = "torchvision", version = "0.24.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, + { name = "torchvision", version = "0.25.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torchvision", version = "0.25.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, { name = "tqdm" }, ] sdist = { url = "https://files.pythonhosted.org/packages/30/46/fb8be250fa7fcfc56fbeb41583645e18d868268f67fbbbeb8ed62a8ff18a/open_clip_torch-3.2.0.tar.gz", hash = "sha256:62b7743012ccc40fb7c64819fa762fba0a13dd74585ac733babe58c2974c2506", size = 1502853, upload-time = "2025-09-21T17:32:08.289Z" } @@ -6460,8 +6491,10 @@ dependencies = [ { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, - { name = "torchvision", version = "0.24.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'linux'" }, - { name = "torchvision", version = "0.25.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux'" }, + { name = "torchvision", version = "0.24.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, + { name = "torchvision", version = "0.24.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, + { name = "torchvision", version = "0.25.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torchvision", version = "0.25.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c5/9d/e4670765d1c033f97096c760b3b907eeb659cf80f3678640e5f060b04c6c/timm-1.0.22.tar.gz", hash = "sha256:14fd74bcc17db3856b1a47d26fb305576c98579ab9d02b36714a5e6b25cde422", size = 2382998, upload-time = "2025-11-05T04:06:09.377Z" } wheels = [ @@ -6722,45 +6755,60 @@ wheels = [ [[package]] name = "torchvision" version = "0.24.0" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://download.pytorch.org/whl/cu129" } resolution-markers = [ "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", +] +dependencies = [ + { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'" }, + { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'" }, + { name = "pillow", marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, +] +wheels = [ + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0-cp310-cp310-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0-cp311-cp311-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0-cp312-cp312-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0-cp313-cp313-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0-cp313-cp313t-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0-cp314-cp314-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0-cp314-cp314t-manylinux_2_28_aarch64.whl" }, +] + +[[package]] +name = "torchvision" +version = "0.24.0+cu129" +source = { registry = "https://download.pytorch.org/whl/cu129" } +resolution-markers = [ "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'linux'", "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", - "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'linux'", "python_full_version < '3.11' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", ] dependencies = [ - { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and sys_platform == 'linux'" }, - { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and sys_platform == 'linux'" }, - { name = "pillow", marker = "sys_platform == 'linux'" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, + { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'" }, + { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'" }, + { name = "pillow", marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/88/e3/1b003ecd52bd721f8304aeb66691edfbc2002747ec83d36188ad6abab506/torchvision-0.24.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:a110a51c75e89807a8382b0d8034f5e180fb9319570be3389ffd3d4ac4fd57a9", size = 2418988, upload-time = "2025-10-15T15:51:25.195Z" }, - { url = "https://files.pythonhosted.org/packages/56/2e/3c19a35e62da0f606baf8f6e2ceeab1eb66aaa2f84c6528538b06b416d54/torchvision-0.24.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:81d5b12a6df1bb2cc8bdbad837b637d6ea446f2866e6d94f1b5d478856331be3", size = 8046769, upload-time = "2025-10-15T15:51:15.221Z" }, - { url = "https://files.pythonhosted.org/packages/f8/07/0cd6776eee784742ad3cb2bfd3295383d84cb2f9e87386119333d1587f0f/torchvision-0.24.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbd63bf4ebff84c48c50123eba90526cc9f794fe45bc9f5dd07cec19e8c62bce", size = 2420513, upload-time = "2025-10-15T15:51:18.087Z" }, - { url = "https://files.pythonhosted.org/packages/1a/f4/6026c08011ddcefcbc14161c5aa9dce55c35c6b045e04ef0952e88bf4594/torchvision-0.24.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:78fe414b3bb6dbf7e6f6da6f733ba96881f6b29a9b997228de7c5f603e5ed940", size = 8048018, upload-time = "2025-10-15T15:51:13.579Z" }, - { url = "https://files.pythonhosted.org/packages/00/7b/e3809b3302caea9a12c13f3adebe4fef127188438e719fd6c8dc93db1da6/torchvision-0.24.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:b0531d1483fc322d7da0d83be52f0df860a75114ab87dbeeb9de765feaeda843", size = 2419495, upload-time = "2025-10-15T15:51:11.885Z" }, - { url = "https://files.pythonhosted.org/packages/7e/e6/7324ead6793075a8c75c56abeed1236d1750de16a5613cfe2ddad164a92a/torchvision-0.24.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:26b9dd9c083f8e5f7ac827de6d5b88c615d9c582dc87666770fbdf16887e4c25", size = 8050480, upload-time = "2025-10-15T15:51:24.012Z" }, - { url = "https://files.pythonhosted.org/packages/8f/02/e2f6b0ff93ca4db5751ac9c5be43f13d5e53d9e9412324f464dca1775027/torchvision-0.24.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:fec12a269cf80f6b0b71471c8d498cd3bdd9d8e892c425bf39fecb604852c3b0", size = 2371478, upload-time = "2025-10-15T15:51:37.842Z" }, - { url = "https://files.pythonhosted.org/packages/77/85/42e5fc4f716ec7b73cf1f32eeb5c77961be4d4054b26cd6a5ff97f20c966/torchvision-0.24.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:7323a9be5e3da695605753f501cdc87824888c5655d27735cdeaa9986b45884c", size = 8050200, upload-time = "2025-10-15T15:51:46.276Z" }, - { url = "https://files.pythonhosted.org/packages/f7/cf/2d7e43409089ce7070f5336161f9216d58653ee1cb26bcb5d6c84cc2de36/torchvision-0.24.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:b1b3db80609c32a088554e8e94b4fc31f1033fe5bb4ac0673ec49c3eb03fb4da", size = 2374466, upload-time = "2025-10-15T15:51:35.382Z" }, - { url = "https://files.pythonhosted.org/packages/e9/30/8f7c328fd7e0a9665da4b6b56b1c627665c18470bfe62f3729ad3eda9aec/torchvision-0.24.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:e6635f100d455c80b43f297df4b8585a76c6a2e114802f6567ddd28d7b5479b0", size = 8217068, upload-time = "2025-10-15T15:51:36.623Z" }, - { url = "https://files.pythonhosted.org/packages/b0/d7/69479a066ea773653e88eda99031e38681e9094046f87cb957af5036db0e/torchvision-0.24.0-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:73576a9c4a593223fbae85a64e8bbd77049abd1101893ecf3c5e981284fd58b4", size = 2371609, upload-time = "2025-10-15T15:51:29.859Z" }, - { url = "https://files.pythonhosted.org/packages/46/64/3c7fdb3771ec992b9445a1f7a969466b23ce2cdb14e09303b3db351a0655/torchvision-0.24.0-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:dd565b1b06666ff399d0801d4d1824fa570c0167a179ca700a5be232527b3c62", size = 8214918, upload-time = "2025-10-15T15:51:41.465Z" }, - { url = "https://files.pythonhosted.org/packages/a2/fd/615d8a86db1578345de7fa1edaf476fbcf4f057bf7e4fd898306b620c487/torchvision-0.24.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:64e54494043eecf9f57a9881c6fdea49c62282782e737c002ae8b1639e6ea80e", size = 2374469, upload-time = "2025-10-15T15:51:40.19Z" }, - { url = "https://files.pythonhosted.org/packages/04/98/bac11e8fdbf00d6c398246ff2781370aa72c99f2ac685c01ce79354c9a32/torchvision-0.24.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:75ef9546323b321a451239d886f0cb528f7e98bb294da47a3200effd4e572064", size = 8217060, upload-time = "2025-10-15T15:51:45.033Z" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0%2Bcu129-cp310-cp310-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0%2Bcu129-cp311-cp311-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0%2Bcu129-cp312-cp312-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0%2Bcu129-cp313-cp313-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0%2Bcu129-cp313-cp313t-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0%2Bcu129-cp314-cp314-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0%2Bcu129-cp314-cp314t-manylinux_2_28_x86_64.whl" }, ] [[package]] @@ -6768,16 +6816,6 @@ name = "torchvision" version = "0.25.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", "python_full_version >= '3.14' and sys_platform == 'darwin'", "python_full_version == '3.13.*' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and sys_platform == 'darwin'", @@ -6785,27 +6823,51 @@ resolution-markers = [ "python_full_version < '3.11' and sys_platform == 'darwin'", ] dependencies = [ - { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and sys_platform != 'linux'" }, - { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and sys_platform != 'linux'" }, - { name = "pillow", marker = "sys_platform != 'linux'" }, + { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and sys_platform == 'darwin'" }, + { name = "pillow", marker = "sys_platform == 'darwin'" }, { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/50/ae/cbf727421eb73f1cf907fbe5788326a08f111b3f6b6ddca15426b53fec9a/torchvision-0.25.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a95c47abb817d4e90ea1a8e57bd0d728e3e6b533b3495ae77d84d883c4d11f56", size = 1874919, upload-time = "2026-01-21T16:27:47.617Z" }, - { url = "https://files.pythonhosted.org/packages/8b/b9/a53bcf8f78f2cd89215e9ded70041765d50ef13bf301f9884ec6041a9421/torchvision-0.25.0-cp310-cp310-win_amd64.whl", hash = "sha256:b57430fbe9e9b697418a395041bb615124d9c007710a2712fda6e35fb310f264", size = 3697295, upload-time = "2026-01-21T16:27:36.574Z" }, { url = "https://files.pythonhosted.org/packages/3e/be/c704bceaf11c4f6b19d64337a34a877fcdfe3bd68160a8c9ae9bea4a35a3/torchvision-0.25.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:db74a551946b75d19f9996c419a799ffdf6a223ecf17c656f90da011f1d75b20", size = 1874923, upload-time = "2026-01-21T16:27:46.574Z" }, - { url = "https://files.pythonhosted.org/packages/23/19/55b28aecdc7f38df57b8eb55eb0b14a62b470ed8efeb22cdc74224df1d6a/torchvision-0.25.0-cp311-cp311-win_amd64.whl", hash = "sha256:ea580ffd6094cc01914ad32f8c8118174f18974629af905cea08cb6d5d48c7b7", size = 4038722, upload-time = "2026-01-21T16:27:41.355Z" }, { url = "https://files.pythonhosted.org/packages/56/3a/6ea0d73f49a9bef38a1b3a92e8dd455cea58470985d25635beab93841748/torchvision-0.25.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c2abe430c90b1d5e552680037d68da4eb80a5852ebb1c811b2b89d299b10573b", size = 1874920, upload-time = "2026-01-21T16:27:45.348Z" }, - { url = "https://files.pythonhosted.org/packages/ad/16/8f650c2e288977cf0f8f85184b90ee56ed170a4919347fc74ee99286ed6f/torchvision-0.25.0-cp312-cp312-win_amd64.whl", hash = "sha256:f9c55ae8d673ab493325d1267cbd285bb94d56f99626c00ac4644de32a59ede3", size = 4303059, upload-time = "2026-01-21T16:27:11.08Z" }, { url = "https://files.pythonhosted.org/packages/f5/5b/1562a04a6a5a4cf8cf40016a0cdeda91ede75d6962cff7f809a85ae966a5/torchvision-0.25.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:24e11199e4d84ba9c5ee7825ebdf1cd37ce8deec225117f10243cae984ced3ec", size = 1874918, upload-time = "2026-01-21T16:27:39.02Z" }, - { url = "https://files.pythonhosted.org/packages/32/a5/9a9b1de0720f884ea50dbf9acb22cbe5312e51d7b8c4ac6ba9b51efd9bba/torchvision-0.25.0-cp313-cp313-win_amd64.whl", hash = "sha256:cef0196be31be421f6f462d1e9da1101be7332d91984caa6f8022e6c78a5877f", size = 4321911, upload-time = "2026-01-21T16:27:35.195Z" }, { url = "https://files.pythonhosted.org/packages/52/99/dca81ed21ebaeff2b67cc9f815a20fdaa418b69f5f9ea4c6ed71721470db/torchvision-0.25.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a8f8061284395ce31bcd460f2169013382ccf411148ceb2ee38e718e9860f5a7", size = 1896209, upload-time = "2026-01-21T16:27:32.159Z" }, - { url = "https://files.pythonhosted.org/packages/63/cc/0ea68b5802e5e3c31f44b307e74947bad5a38cc655231d845534ed50ddb8/torchvision-0.25.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5e6b449e9fa7d642142c0e27c41e5a43b508d57ed8e79b7c0a0c28652da8678c", size = 4344260, upload-time = "2026-01-21T16:27:17.018Z" }, { url = "https://files.pythonhosted.org/packages/9e/1f/fa839532660e2602b7e704d65010787c5bb296258b44fa8b9c1cd6175e7d/torchvision-0.25.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:620a236288d594dcec7634c754484542dc0a5c1b0e0b83a34bda5e91e9b7c3a1", size = 1896193, upload-time = "2026-01-21T16:27:24.785Z" }, - { url = "https://files.pythonhosted.org/packages/1f/eb/d0096eed5690d962853213f2ee00d91478dfcb586b62dbbb449fb8abc3a6/torchvision-0.25.0-cp314-cp314-win_amd64.whl", hash = "sha256:d1abd5ed030c708f5dbf4812ad5f6fbe9384b63c40d6bd79f8df41a4a759a917", size = 4325058, upload-time = "2026-01-21T16:27:26.165Z" }, { url = "https://files.pythonhosted.org/packages/97/36/96374a4c7ab50dea9787ce987815614ccfe988a42e10ac1a2e3e5b60319a/torchvision-0.25.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ad9a8a5877782944d99186e4502a614770fe906626d76e9cd32446a0ac3075f2", size = 1896207, upload-time = "2026-01-21T16:27:23.383Z" }, - { url = "https://files.pythonhosted.org/packages/b6/37/e7ca4ec820d434c0f23f824eb29f0676a0c3e7a118f1514f5b949c3356da/torchvision-0.25.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f07f01d27375ad89d72aa2b3f2180f07da95dd9d2e4c758e015c0acb2da72977", size = 4425879, upload-time = "2026-01-21T16:27:12.579Z" }, +] + +[[package]] +name = "torchvision" +version = "0.25.0+cpu" +source = { registry = "https://download.pytorch.org/whl/cpu" } +resolution-markers = [ + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", +] +dependencies = [ + { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "pillow", marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, +] +wheels = [ + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp310-cp310-win_amd64.whl", hash = "sha256:3e2ae9981e32a5b9db685659d5c7af0f04b159ff20394650a90124baf6ada51a" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp311-cp311-win_amd64.whl", hash = "sha256:c7eb5f219fdfaf1f65e68c00eb81172ab4fa08a9874dae9dad2bca360da34d0f" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:2d444009c0956669ada149f61ed78f257c1cc96d259efa6acf3929ca96ceb3f0" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp313-cp313-win_amd64.whl", hash = "sha256:783c8fc580bbfc159bff52f4f72cdd538e42b32956e70dffa42b940db114e151" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp313-cp313t-win_amd64.whl", hash = "sha256:9212210f417888e6261c040495180f053084812cf873dedba9fc51ff4b24b2d3" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp314-cp314-win_amd64.whl", hash = "sha256:499eae1e535766391b6ee2d1e6e841239c20e2e6d88203a15b8f9f8d60a1f8bd" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp314-cp314t-win_amd64.whl", hash = "sha256:fb9f07f6a10f0ac24ac482ae68c6df99110b74a0d80a4c64fddc9753267d8815" }, ] [[package]] From 9f57f48e376231369644ac08438df60ebefc1a26 Mon Sep 17 00:00:00 2001 From: pthombre Date: Fri, 6 Mar 2026 17:31:19 +0000 Subject: [PATCH 2/8] Update uv lock Signed-off-by: pthombre --- docker/common/uv-pytorch.lock | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/docker/common/uv-pytorch.lock b/docker/common/uv-pytorch.lock index c26fd7e54..8bca7cbeb 100644 --- a/docker/common/uv-pytorch.lock +++ b/docker/common/uv-pytorch.lock @@ -68,7 +68,7 @@ overrides = [ { name = "nvidia-nccl-cu12", marker = "sys_platform == 'never'" }, { name = "torch", marker = "sys_platform == 'never'", index = "https://download.pytorch.org/whl/cpu" }, { name = "torchao", marker = "sys_platform == 'never'" }, - { name = "torchvision", marker = "sys_platform == 'never'" }, + { name = "torchvision", marker = "sys_platform == 'never'", index = "https://download.pytorch.org/whl/cpu" }, { name = "transformer-engine", marker = "sys_platform == 'never'" }, { name = "transformer-engine-torch", marker = "sys_platform == 'never'" }, { name = "triton", marker = "sys_platform == 'never'" }, @@ -2279,6 +2279,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, ] +[[package]] +name = "kernels" +version = "0.12.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "huggingface-hub" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a9/07/d2b635e965b232cae1aa873c6e0458947196be8dca7bb02e64d3cd6e8d19/kernels-0.12.2.tar.gz", hash = "sha256:812fc43c2814f046cee655cbebf3918cddd489715773670bdb38cca3f5203b5b", size = 57108, upload-time = "2026-03-04T10:03:00.379Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/be/f5d6758b48633e4f6a28198fcf4bf9f763cc6a82e2335d9fe8802a5cb440/kernels-0.12.2-py3-none-any.whl", hash = "sha256:1289261804748cf3cf8e3afab80b505b0f1b28e4ec88379cdf08dc31e64964b8", size = 55205, upload-time = "2026-03-04T10:02:59.305Z" }, +] + [[package]] name = "kiwisolver" version = "1.4.9" @@ -3235,6 +3250,7 @@ all = [ { name = "ftfy" }, { name = "imageio" }, { name = "imageio-ffmpeg" }, + { name = "kernels" }, { name = "mamba-ssm" }, { name = "mistral-common", extra = ["opencv"] }, { name = "numba", version = "0.53.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13'" }, @@ -3252,6 +3268,7 @@ all = [ { name = "sentencepiece" }, { name = "timm" }, { name = "torchcodec", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, + { name = "torchvision", marker = "sys_platform == 'never'" }, { name = "transformer-engine", marker = "sys_platform == 'never'" }, ] cuda = [ @@ -3271,7 +3288,9 @@ diffusion = [ { name = "ftfy" }, { name = "imageio" }, { name = "imageio-ffmpeg" }, + { name = "kernels" }, { name = "opencv-python-headless" }, + { name = "torchvision", marker = "sys_platform == 'never'" }, ] extra = [ { name = "flash-linear-attention" }, @@ -3358,6 +3377,7 @@ requires-dist = [ { name = "ftfy", marker = "extra == 'diffusion'" }, { name = "imageio", marker = "extra == 'diffusion'" }, { name = "imageio-ffmpeg", marker = "extra == 'diffusion'" }, + { name = "kernels", marker = "extra == 'diffusion'" }, { name = "mamba-ssm", marker = "extra == 'cuda'" }, { name = "megatron-fsdp", specifier = ">=0.2.3" }, { name = "mistral-common", extras = ["audio", "hf-hub", "image", "sentencepiece"] }, @@ -3390,6 +3410,9 @@ requires-dist = [ { name = "torchao" }, { name = "torchcodec", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin' and extra == 'vlm'" }, { name = "torchdata" }, + { name = "torchvision", marker = "sys_platform == 'darwin' and extra == 'diffusion'", index = "https://pypi.org/simple" }, + { name = "torchvision", marker = "sys_platform != 'darwin' and sys_platform != 'linux' and extra == 'diffusion'", index = "https://download.pytorch.org/whl/cpu" }, + { name = "torchvision", marker = "sys_platform == 'linux' and extra == 'diffusion'", index = "https://download.pytorch.org/whl/cu129" }, { name = "transformer-engine", extras = ["pytorch"], marker = "extra == 'cuda'", specifier = "<=2.11.0" }, { name = "transformers", specifier = ">=5.0.0" }, { name = "wandb" }, @@ -6409,8 +6432,8 @@ wheels = [ [[package]] name = "torchvision" -version = "0.23.0" -source = { registry = "https://pypi.org/simple" } +version = "0.25.0+cpu" +source = { registry = "https://download.pytorch.org/whl/cpu" } dependencies = [ { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'linux'" }, { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux'" }, From 108e4c19714d141754f9d1f470b2ece0cd207424 Mon Sep 17 00:00:00 2001 From: Pranav Prashant Thombre Date: Sat, 7 Mar 2026 16:44:12 -0800 Subject: [PATCH 3/8] Required changes for compatability with AM container Signed-off-by: Pranav Prashant Thombre --- .../launch_pretrain_wan21_nightly_image.sh | 89 --- .../launch_pretrain_wan21_nightly_video.sh | 89 --- .../diffusion/finetune/flux_t2i_flow.yaml | 5 +- .../diffusion/finetune/hunyuan_t2v_flow.yaml | 12 +- .../diffusion/finetune/wan2_1_t2v_flow.yaml | 2 +- .../finetune/wan2_1_t2v_flow_multinode.yaml | 2 +- .../cicd/wan21_cicd_nightly_image.yaml | 73 -- .../cicd/wan21_cicd_nightly_video.yaml | 72 -- .../diffusion/pretrain/flux_t2i_flow.yaml | 5 +- .../diffusion/pretrain/wan2_1_t2v_flow.yaml | 13 +- .../_diffusers/auto_diffusion_pipeline.py | 17 - .../diffusion/text_to_image_dataset.py | 5 +- nemo_automodel/recipes/diffusion/train.py | 2 +- pyproject.toml | 21 + .../test_auto_diffusion_pipeline.py | 22 +- uv.lock | 682 +++--------------- 16 files changed, 129 insertions(+), 982 deletions(-) delete mode 100644 examples/diffusion/cicd_convergence_tests/wan21/nightly/launch_pretrain_wan21_nightly_image.sh delete mode 100644 examples/diffusion/cicd_convergence_tests/wan21/nightly/launch_pretrain_wan21_nightly_video.sh delete mode 100644 examples/diffusion/pretrain/cicd/wan21_cicd_nightly_image.yaml delete mode 100644 examples/diffusion/pretrain/cicd/wan21_cicd_nightly_video.yaml diff --git a/examples/diffusion/cicd_convergence_tests/wan21/nightly/launch_pretrain_wan21_nightly_image.sh b/examples/diffusion/cicd_convergence_tests/wan21/nightly/launch_pretrain_wan21_nightly_image.sh deleted file mode 100644 index 374dd16ec..000000000 --- a/examples/diffusion/cicd_convergence_tests/wan21/nightly/launch_pretrain_wan21_nightly_image.sh +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/bash -#SBATCH -A coreai_dlalgo_llm -#SBATCH -p batch -#SBATCH -N 1 -#SBATCH --ntasks-per-node 1 -#SBATCH --gpus-per-node=8 -#SBATCH --time 00:30:00 -#SBATCH --exclusive -#SBATCH --output=./CICD_nightly_RUN_slurm_%x_%j.out -#SBATCH --error=./CICD_nightly_RUN_slurm_%x_%j.err -#SBATCH -J Automodel_Diffusion - -# Multi-node env -export MASTER_ADDR=$(scontrol show hostnames $SLURM_JOB_NODELIST | head -n 1) -export MASTER_PORT=29500 -export NUM_GPUS=8 -export WORLD_SIZE=$(($NUM_GPUS * $SLURM_NNODES)) - -export CUDA_DEVICE_MAX_CONNECTIONS=1 -export TORCH_NCCL_AVOID_RECORD_STREAMS=1 -export NCCL_NVLS_ENABLE=0 - - -# Experiment env -# TODO: update the key -export WANDB_API_KEY="" -export HF_HOME="/linnanw/hdvilla_sample/cache" -export HF_TOKEN="" - - -# SHARED paths on Lustre (visible to ALL nodes) -# TODO: update the path -UV_SHARED_DIR="/lustre/fsw/portfolios/coreai/users/linnanw/uv_cache/${SLURM_JOB_ID}" - -# Step 1: Pre-build on a SINGLE node first (avoids race conditions) -# Create a shared venv on LUSTRE that ALL nodes can access -read -r -d '' PREBUILD_CMD < Tuple[DiffusionPipeline, Dict[str, ParallelManager]]: """ @@ -387,7 +384,6 @@ def from_pretrained( move_to_device: Whether to move modules to device load_for_training: Whether to make parameters trainable components_to_load: Which components to process (default: all) - enable_gradient_checkpointing: Enable gradient checkpointing for transformer **kwargs: Additional arguments passed to DiffusionPipeline.from_pretrained Returns: @@ -421,12 +417,6 @@ def from_pretrained( logger.info("[INFO] Moving module: %s to device/dtype", name) _move_module_to_device(module, dev, torch_dtype) - # Enable gradient checkpointing if configured - if enable_gradient_checkpointing: - if hasattr(pipe, "transformer") and hasattr(pipe.transformer, "enable_gradient_checkpointing"): - pipe.transformer.enable_gradient_checkpointing() - logger.info("[INFO] Enabled gradient checkpointing for transformer") - # If loading for training, ensure the target module parameters are trainable if load_for_training: for name, module in _iter_pipeline_modules(pipe): @@ -527,13 +517,6 @@ def from_config( transformer = transformer.to(dev) pipe = cls(transformer=transformer) - # Enable gradient checkpointing if configured - if spec.enable_gradient_checkpointing: - target_transformer = getattr(pipe, "transformer", transformer) - if hasattr(target_transformer, "enable_gradient_checkpointing"): - target_transformer.enable_gradient_checkpointing() - logger.info("[INFO] Enabled gradient checkpointing for transformer") - # Make parameters trainable (always true for from_config / pretraining) for name, module in _iter_pipeline_modules(pipe): if not components_to_load or name in components_to_load: diff --git a/nemo_automodel/components/datasets/diffusion/text_to_image_dataset.py b/nemo_automodel/components/datasets/diffusion/text_to_image_dataset.py index 41e356220..35eb1e047 100644 --- a/nemo_automodel/components/datasets/diffusion/text_to_image_dataset.py +++ b/nemo_automodel/components/datasets/diffusion/text_to_image_dataset.py @@ -44,10 +44,11 @@ def __getitem__(self, idx: int) -> Dict[str, torch.Tensor]: # Load cached data data = torch.load(cache_file, map_location="cpu") - # Prepare output + # Prepare output - support both bucket_resolution and crop_resolution keys + resolution_key = "bucket_resolution" if "bucket_resolution" in item else "crop_resolution" output = { "latent": data["latent"], - "crop_resolution": torch.tensor(item["crop_resolution"]), + "crop_resolution": torch.tensor(item[resolution_key]), "original_resolution": torch.tensor(item["original_resolution"]), "crop_offset": torch.tensor(data["crop_offset"]), "prompt": data["prompt"], diff --git a/nemo_automodel/recipes/diffusion/train.py b/nemo_automodel/recipes/diffusion/train.py index 5e2d7d913..20e65ffef 100644 --- a/nemo_automodel/recipes/diffusion/train.py +++ b/nemo_automodel/recipes/diffusion/train.py @@ -68,7 +68,7 @@ def build_model_and_optimizer( Required when finetune_mode is False. Should contain: - transformer_cls: str (e.g., "WanTransformer3DModel", "FluxTransformer2DModel") - subfolder: str (e.g., "transformer") - - Optional: pipeline_cls, load_full_pipeline, enable_gradient_checkpointing + - Optional: pipeline_cls, load_full_pipeline Returns: Tuple of (pipeline, optimizer, device_mesh or None). diff --git a/pyproject.toml b/pyproject.toml index 49c071594..397683aee 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -171,6 +171,27 @@ test = ["coverage", "pytest", "peft>=0.18.1", "onnxruntime-gpu; (platform_machin dev = ["cut-cross-entropy", "liger-kernel; (platform_machine == 'x86_64' and platform_system != 'Darwin')", "dion @ git+https://github.com/microsoft/dion.git; platform_machine == 'x86_64' and platform_system != 'Darwin'"] [tool.uv] +override-dependencies = [ + "flash-attn; sys_platform == 'never'", + "nvidia-cublas-cu12; sys_platform == 'never'", + "nvidia-cuda-cupti-cu12; sys_platform == 'never'", + "nvidia-cuda-nvrtc-cu12; sys_platform == 'never'", + "nvidia-cuda-runtime-cu12; sys_platform == 'never'", + "nvidia-cudnn-cu12; sys_platform == 'never'", + "nvidia-cufft-cu12; sys_platform == 'never'", + "nvidia-cufile-cu12; sys_platform == 'never'", + "nvidia-curand-cu12; sys_platform == 'never'", + "nvidia-cusolver-cu12; sys_platform == 'never'", + "nvidia-cusparse-cu12; sys_platform == 'never'", + "nvidia-cusparselt-cu12; sys_platform == 'never'", + "nvidia-nccl-cu12; sys_platform == 'never'", + "torch; sys_platform == 'never'", + "torchao; sys_platform == 'never'", + "torchvision; sys_platform == 'never'", + "transformer-engine; sys_platform == 'never'", + "transformer-engine-torch; sys_platform == 'never'", + "triton; sys_platform == 'never'", +] default-groups = ["build", "docs", "test"] no-build-isolation-package = [ "bitsandbytes", diff --git a/tests/unit_tests/_diffusers/test_auto_diffusion_pipeline.py b/tests/unit_tests/_diffusers/test_auto_diffusion_pipeline.py index 4d763a680..0ba302798 100644 --- a/tests/unit_tests/_diffusers/test_auto_diffusion_pipeline.py +++ b/tests/unit_tests/_diffusers/test_auto_diffusion_pipeline.py @@ -486,32 +486,12 @@ def test_from_pretrained_load_for_training_makes_params_trainable(): patch(f"{MODULE_PATH}.torch.cuda.is_available", return_value=False), ): pipe, managers = NeMoAutoDiffusionPipeline.from_pretrained( - "dummy", load_for_training=True, enable_gradient_checkpointing=False, + "dummy", load_for_training=True, ) assert all(p.requires_grad for p in mod.parameters()) -def test_from_pretrained_gradient_checkpointing_enabled(): - from nemo_automodel._diffusers.auto_diffusion_pipeline import NeMoAutoDiffusionPipeline - - transformer = DummyModule() - transformer.enable_gradient_checkpointing = Mock() - - dummy_pipe = DummyPipeline({"transformer": transformer}) - mock_diffusion_pipeline = MagicMock() - mock_diffusion_pipeline.from_pretrained.return_value = dummy_pipe - - with ( - patch(f"{MODULE_PATH}.DIFFUSERS_AVAILABLE", True), - patch(f"{MODULE_PATH}.DiffusionPipeline", mock_diffusion_pipeline), - patch(f"{MODULE_PATH}.torch.cuda.is_available", return_value=False), - ): - pipe, _ = NeMoAutoDiffusionPipeline.from_pretrained("dummy", enable_gradient_checkpointing=True) - - transformer.enable_gradient_checkpointing.assert_called_once() - - def test_from_pretrained_raises_when_diffusers_unavailable(): from nemo_automodel._diffusers.auto_diffusion_pipeline import NeMoAutoDiffusionPipeline diff --git a/uv.lock b/uv.lock index 5a7c5beca..8bca7cbeb 100644 --- a/uv.lock +++ b/uv.lock @@ -52,6 +52,27 @@ constraints = [ { name = "urllib3", specifier = ">=2.6.3" }, { name = "wheel", specifier = ">=0.46.2" }, ] +overrides = [ + { name = "flash-attn", marker = "sys_platform == 'never'" }, + { name = "nvidia-cublas-cu12", marker = "sys_platform == 'never'" }, + { name = "nvidia-cuda-cupti-cu12", marker = "sys_platform == 'never'" }, + { name = "nvidia-cuda-nvrtc-cu12", marker = "sys_platform == 'never'" }, + { name = "nvidia-cuda-runtime-cu12", marker = "sys_platform == 'never'" }, + { name = "nvidia-cudnn-cu12", marker = "sys_platform == 'never'" }, + { name = "nvidia-cufft-cu12", marker = "sys_platform == 'never'" }, + { name = "nvidia-cufile-cu12", marker = "sys_platform == 'never'" }, + { name = "nvidia-curand-cu12", marker = "sys_platform == 'never'" }, + { name = "nvidia-cusolver-cu12", marker = "sys_platform == 'never'" }, + { name = "nvidia-cusparse-cu12", marker = "sys_platform == 'never'" }, + { name = "nvidia-cusparselt-cu12", marker = "sys_platform == 'never'" }, + { name = "nvidia-nccl-cu12", marker = "sys_platform == 'never'" }, + { name = "torch", marker = "sys_platform == 'never'", index = "https://download.pytorch.org/whl/cpu" }, + { name = "torchao", marker = "sys_platform == 'never'" }, + { name = "torchvision", marker = "sys_platform == 'never'", index = "https://download.pytorch.org/whl/cpu" }, + { name = "transformer-engine", marker = "sys_platform == 'never'" }, + { name = "transformer-engine-torch", marker = "sys_platform == 'never'" }, + { name = "triton", marker = "sys_platform == 'never'" }, +] [[manifest.dependency-metadata]] name = "deep-ep" @@ -75,9 +96,7 @@ dependencies = [ { name = "psutil" }, { name = "pyyaml" }, { name = "safetensors" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, - { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", marker = "sys_platform == 'never'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/23/60/2757c4f03a8705dbf80b1268b03881927878dca5ed07d74f733fb6c219e0/accelerate-1.11.0.tar.gz", hash = "sha256:bb1caf2597b4cd632b917b5000c591d10730bb024a79746f1ee205bba80bd229", size = 393715, upload-time = "2025-10-20T14:42:25.025Z" } wheels = [ @@ -587,9 +606,7 @@ dependencies = [ { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13'" }, { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13'" }, { name = "packaging" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, - { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", marker = "sys_platform == 'never'" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/19/6f/32d0526e4e4ad309d9e7502c018399bb23b63f39277a361c305092e2f885/bitsandbytes-0.49.1-py3-none-macosx_14_0_arm64.whl", hash = "sha256:9de01d4384b6c71ef9ab052b98457dc0e4fff8fe06ab14833b5b712700deb005", size = 129848, upload-time = "2026-01-08T14:31:26.134Z" }, @@ -623,9 +640,7 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ninja" }, { name = "packaging" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, - { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", marker = "sys_platform == 'never'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/db/df/63a384c49743b9fc8fec4c05dbd0b515e1c1c2b07e4559acc4fc37c69223/causal_conv1d-1.6.0.tar.gz", hash = "sha256:4eae3220d08e1e88238f3a0a88783147cbdf47f612cc610add75127c7a37ca3e", size = 29356, upload-time = "2026-01-12T17:33:32.794Z" } @@ -1197,11 +1212,8 @@ version = "25.3.2" source = { git = "https://github.com/apple/ml-cross-entropy.git?rev=87a86aba72cfd2f0d8abecaf81c13c4528ea07d8#87a86aba72cfd2f0d8abecaf81c13c4528ea07d8" } dependencies = [ { name = "setuptools" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, - { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, - { name = "triton", version = "3.4.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, - { name = "triton", version = "3.5.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'linux'" }, + { name = "torch", marker = "sys_platform == 'never'" }, + { name = "triton", marker = "sys_platform == 'never'" }, ] [[package]] @@ -1303,9 +1315,7 @@ source = { git = "https://github.com/deepseek-ai/DeepEP.git?rev=e3908bf5bd0cc626 dependencies = [ { name = "ninja" }, { name = "packaging" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, - { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", marker = "sys_platform == 'never'" }, ] [[package]] @@ -1375,10 +1385,8 @@ source = { git = "https://github.com/microsoft/dion.git#7452a5823cf9655b93c3f1d8 dependencies = [ { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform != 'darwin'" }, { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform != 'darwin'" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'" }, - { name = "triton", version = "3.4.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'" }, - { name = "triton", version = "3.5.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "torch", marker = "platform_machine == 'x86_64' and sys_platform == 'never'" }, + { name = "triton", marker = "platform_machine == 'x86_64' and sys_platform == 'never'" }, ] [[package]] @@ -1473,9 +1481,7 @@ version = "0.4.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "einops" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, - { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", marker = "sys_platform == 'never'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/db/3d/79a9d5c8cd973c86f35403931031787dfc6cc97d838a42d4c62e8cbbb66f/fla_core-0.4.0.tar.gz", hash = "sha256:d975022b074e97bfd086dc6b767dccb35e27a9fe36f26f3b26b1c2b68b36a1c8", size = 316316, upload-time = "2025-10-27T08:18:51.673Z" } wheels = [ @@ -1487,10 +1493,8 @@ name = "flash-attn" version = "2.8.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "einops" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, - { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "einops", marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", marker = "sys_platform == 'never'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/3b/b2/8d76c41ad7974ee264754709c22963447f7f8134613fd9ce80984ed0dab7/flash_attn-2.8.3.tar.gz", hash = "sha256:1e71dd64a9e0280e0447b8a0c2541bad4bf6ac65bdeaa2f90e51a9e57de0370d", size = 8447812, upload-time = "2025-08-15T08:28:12.911Z" } @@ -2019,31 +2023,31 @@ wheels = [ [[package]] name = "hf-xet" -version = "1.3.0b0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/41/4b/59c9a123813f1db5441f037d9a0e9171bd480c4ff3a9562976a8bf8e49ad/hf_xet-1.3.0b0.tar.gz", hash = "sha256:ece497f54c80992e1b145a89065443f6acf9a6b51d8e4648e53e3ad650fbec06", size = 615265, upload-time = "2026-01-28T20:37:21.892Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/32/57/2a21a3ef6b560768bb38d6ae944df6e5a1bd6be620aff5efc38e7bfdaa70/hf_xet-1.3.0b0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:5a88ed07d48c05ac4d54dc2ae0ce2df2f1967c982e5d9d06c7022299e8dc8256", size = 5013414, upload-time = "2026-01-28T20:36:44.248Z" }, - { url = "https://files.pythonhosted.org/packages/4e/da/c72939de146f589de58fb122616962e4a78c1d62e68beeb0dd554e6428f5/hf_xet-1.3.0b0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:9e6d0e63148b7fdbcc0615a47108b3516f0905d6c4862e9ed57ea34fa4a14264", size = 4811901, upload-time = "2026-01-28T20:36:42.398Z" }, - { url = "https://files.pythonhosted.org/packages/e7/11/57017d7117360438c01df22bb72f39c95eb59042761052882a7686528f58/hf_xet-1.3.0b0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03ae40626d72dd345bf41a1fac4b412147f5aa8c82f3f15b08c1a4c70c02bb9d", size = 58059681, upload-time = "2026-01-28T20:36:21.36Z" }, - { url = "https://files.pythonhosted.org/packages/ae/40/64b2fb5801a3408c06674b9ff8dd954e31c1bd251959c27b161306e5ab21/hf_xet-1.3.0b0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:2f2c17a00b9ce759657e8783de298576764309cb86a3aa6d598cf89ed61952a4", size = 53088704, upload-time = "2026-01-28T20:36:16.831Z" }, - { url = "https://files.pythonhosted.org/packages/d4/74/2705d733206051937ada8ceda50a3f3ce6f327bf0ac3807551ea324564ab/hf_xet-1.3.0b0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f7d17918f64f7ae8422ff3c0581f24023a7bfba52bf5063d0f1de6088467916e", size = 53469124, upload-time = "2026-01-28T20:36:55.469Z" }, - { url = "https://files.pythonhosted.org/packages/ce/29/14087f9a54bde49804787126c42c58902110126ae78eb62a346b0f1b3757/hf_xet-1.3.0b0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:576286ff35bfbc04a38fe01088770c14073c88bdb37c60e7c372ba2604b3e34f", size = 55100152, upload-time = "2026-01-28T20:37:00.58Z" }, - { url = "https://files.pythonhosted.org/packages/15/c3/27ff3bac95a2ac1fec61e566ae04502aa959aa9bf2e607bec9f684cc0430/hf_xet-1.3.0b0-cp313-cp313t-win_amd64.whl", hash = "sha256:8257478bc5b5493b2b6257db9c474ea0fb7116deeb6d8c794eeb4c52eb923e9f", size = 3072409, upload-time = "2026-01-28T20:37:23.896Z" }, - { url = "https://files.pythonhosted.org/packages/6b/bb/d7ba51576dc518a6eae6866a18841399737b3a3179ee2bce6e4faac2d001/hf_xet-1.3.0b0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:001692e42e749026b008d6d65f44117a9f9406fada19097f8f3b0ab53bb992c9", size = 5078621, upload-time = "2026-01-28T20:36:52.032Z" }, - { url = "https://files.pythonhosted.org/packages/85/ac/4cf0cf082062de08fe6cdb2f5ae6c3194247f9c079df83e28db904470394/hf_xet-1.3.0b0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1922d17a155eed02face0c03990aec4205e17db9baab8a8dae25720b44c008ce", size = 4811154, upload-time = "2026-01-28T20:36:50.11Z" }, - { url = "https://files.pythonhosted.org/packages/7a/b6/2cca7e576f6aec326d58b4942692b688de24c9fa5c87d1c9a040ae0f2013/hf_xet-1.3.0b0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0011a815d97671f3a84d9633588eef43c36cc61345d8a1d0027a1c56df66aef", size = 58048599, upload-time = "2026-01-28T20:36:39.517Z" }, - { url = "https://files.pythonhosted.org/packages/63/4d/5ef001738e05f39b4e0c088d1ffeb57d771c5beeb8ef58a1e4900b6b9bdd/hf_xet-1.3.0b0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:bd4087cd8fb858744df4de4271c8afcb4b66accd9060b4d3c7091561f7f80e32", size = 53086767, upload-time = "2026-01-28T20:36:35.119Z" }, - { url = "https://files.pythonhosted.org/packages/fd/f1/102b0f5a227feafbe49f9934f80c6bebf123aa7eb99aaa82ea947a2a9719/hf_xet-1.3.0b0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:11b6b5bd5412aafa5bc1fa2f6981db44014b535800ce742941861b32de9ae6fd", size = 53469541, upload-time = "2026-01-28T20:37:13.698Z" }, - { url = "https://files.pythonhosted.org/packages/fe/6f/32d36c0748a5caf05d417927ed842cca3b373f20b5a9eec66ab729a2eb96/hf_xet-1.3.0b0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:adaf846c27778e9455f9016ee7bbb6a00b509717a2e05896f930357eed750c80", size = 55096171, upload-time = "2026-01-28T20:37:18.943Z" }, - { url = "https://files.pythonhosted.org/packages/19/94/8322a56c1c51880f5c114022eca06126aee107ecf34e42c44081ade94bc1/hf_xet-1.3.0b0-cp314-cp314t-win_amd64.whl", hash = "sha256:3b1966c653f9d6ef20af98817888d610f6a2054f77d62416226c510a7b54d810", size = 3099533, upload-time = "2026-01-28T20:37:28.675Z" }, - { url = "https://files.pythonhosted.org/packages/24/ca/b797f7de882de667648b48c7ddbc311f6e9c6e61ce75a087478af7da1c33/hf_xet-1.3.0b0-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:b43fdfcc7960769ba239758bc744d0fc96e968a91078f4a086d36304a7fe0548", size = 5095272, upload-time = "2026-01-28T20:36:48.093Z" }, - { url = "https://files.pythonhosted.org/packages/1a/c0/204bc663015711ca04b75008871ecbd29c38312e3ba7839e0d1eafa0fa29/hf_xet-1.3.0b0-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:efeac315421dd8b0a0d9f35cfc0929b22bbadd984d7eb3c95298f806398a3f15", size = 4826205, upload-time = "2026-01-28T20:36:46.124Z" }, - { url = "https://files.pythonhosted.org/packages/7e/34/a16aa436c3e59007678cee07f5cf3929ba053b14ae16dffd3be1270d3927/hf_xet-1.3.0b0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa63330e14196071fafc0e369a8e9d3f847335f10d33ca152537fb47bf263440", size = 58044866, upload-time = "2026-01-28T20:36:31.13Z" }, - { url = "https://files.pythonhosted.org/packages/d0/74/2202cc67e82a6eb64e42314e92ff2ee798e6dd5ee394967880b1370e878e/hf_xet-1.3.0b0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:1f8a48df4e67ab695ae802f0d4d07c3d28fed64ea12decef13f8a8550783a42d", size = 53103717, upload-time = "2026-01-28T20:36:26.633Z" }, - { url = "https://files.pythonhosted.org/packages/8d/eb/9cbf85387377adaef317918318d1921b456625fa2535f39e642ed77076e4/hf_xet-1.3.0b0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ae20bc5405c06538ba820e6a3f818df793fee554f83cf071caa641d0b36f08f8", size = 53485235, upload-time = "2026-01-28T20:37:05.554Z" }, - { url = "https://files.pythonhosted.org/packages/0d/28/302fae85503e423e356042a3332e3b2b714b30ce27db2fe415260973bf0e/hf_xet-1.3.0b0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a566da3478ae73ccd6bca8cb8d1ef85bcd4c36e79912cbfafb5b33890a0f1301", size = 55093706, upload-time = "2026-01-28T20:37:09.561Z" }, - { url = "https://files.pythonhosted.org/packages/7f/df/45e30a11fcf8023b62b15c8f0addfbb82233bdbc2834fcd4681d7a07c335/hf_xet-1.3.0b0-cp37-abi3-win_amd64.whl", hash = "sha256:9c9787d60df869e66307cbd9fedb57ff85f38930bffb3f1f04856ccc12cf91b6", size = 3079075, upload-time = "2026-01-28T20:37:25.663Z" }, +version = "1.3.0a0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/23/7eba7f4aa8640dcd53e6ebca7fdfea5fa3dcfa802c1b9e1d4bf7915c5d8a/hf_xet-1.3.0a0.tar.gz", hash = "sha256:a98fbb10618ab3fbcb0ba9d60920c4234b20af63098618cb21e6510531ab6577", size = 613623, upload-time = "2026-01-26T22:14:13.625Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/f5/390bea68a2086be4177301b25ec6467655e0b8d49044f3b806e39cc39d13/hf_xet-1.3.0a0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:c8cec956bd075c364c246d6a22ad70744049dbb5f3d5c3bfe820867c08793cd0", size = 4982483, upload-time = "2026-01-26T22:13:44.574Z" }, + { url = "https://files.pythonhosted.org/packages/6b/99/d4a3e51f2fcfacc498da824ea9f2452e9bcaef3f748e4226a572b0fab46b/hf_xet-1.3.0a0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cf99825a87aedca853db92bb27d1d0ee8eedf2c290358fd0781eb401b45953e0", size = 4708202, upload-time = "2026-01-26T22:13:42.97Z" }, + { url = "https://files.pythonhosted.org/packages/16/27/ef65b2a3d573ac2d29160bdf9b3f1c3153dd5c69a85d964e2c1d2d64f8e3/hf_xet-1.3.0a0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe722cb1bf0d5dcfffd080994fc42f1270a50b45157b6dd2e72358ed0088a0b3", size = 57870904, upload-time = "2026-01-26T22:13:27.039Z" }, + { url = "https://files.pythonhosted.org/packages/79/94/a2873ef2e53cc653c0c3d568c206e8b625b1f287f521da03f17f0d559b96/hf_xet-1.3.0a0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:b478ce6e6ba556db89eb86c504323648b8ba6de46d65571387b75caed5b68e85", size = 52898148, upload-time = "2026-01-26T22:13:23.4Z" }, + { url = "https://files.pythonhosted.org/packages/fd/ef/13b3e1aecb398c62ca855de3db39b7bbf86560d634f64a13a2a6d4ddcc9a/hf_xet-1.3.0a0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6a315b99d1f9d00a52fde2361ab1b3d115fd5e546a6f04b0efdd37dd7746e982", size = 53278017, upload-time = "2026-01-26T22:13:53.959Z" }, + { url = "https://files.pythonhosted.org/packages/e5/bc/8b0ba304663ef610c5c32c3b383c0637fcdf48430eb3ef8d9899863650bb/hf_xet-1.3.0a0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:34c588db231ec665065f4962f2159c06f620233d62286ad65a9e6f663d3198d0", size = 54930845, upload-time = "2026-01-26T22:13:57.333Z" }, + { url = "https://files.pythonhosted.org/packages/94/58/e5cf8f10290017d7dc747a60ef87cadd37b5e389f5af7e18daa166602516/hf_xet-1.3.0a0-cp313-cp313t-win_amd64.whl", hash = "sha256:f0470c87dbc5ed868df5d137687cfc4be4ebf21b260f0f5695702502655a4005", size = 3079337, upload-time = "2026-01-26T22:14:14.865Z" }, + { url = "https://files.pythonhosted.org/packages/20/82/5655388adf2667d480854bef1e3df23b9838a07194d89fc64a52d2d21a09/hf_xet-1.3.0a0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:87b198dddecf4d7a86fa91ea6c5c6a716c62f4d07afff597123d4a276fecf4ae", size = 4982041, upload-time = "2026-01-26T22:13:51.358Z" }, + { url = "https://files.pythonhosted.org/packages/4e/b7/f60d7faa514f8d5fccfddc94f554fc1a5d58e3c3ed8e106075e0deff5874/hf_xet-1.3.0a0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:14dc29a49528dbf36e2bdeb867dca86d8654c4b48be7cc0310406b6c5840d448", size = 4708842, upload-time = "2026-01-26T22:13:49.907Z" }, + { url = "https://files.pythonhosted.org/packages/c4/a6/ae84a117eb6113d823f5ff3eb7a7d9ad669957f9b54021d47fbdf040879c/hf_xet-1.3.0a0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29eb85a81c4b6ca8ceb940670a81f67f9bd01233057c86d339fdc84d08c832f6", size = 57865483, upload-time = "2026-01-26T22:13:39.568Z" }, + { url = "https://files.pythonhosted.org/packages/ea/0b/37be9d6d1f9b9e44aed3e6d76ef790fa01ae3493b4334ba291738c03b0bd/hf_xet-1.3.0a0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:3b42f64f5ea5d54e752d0bfc1af126d91b1c95c59e79463a0903c589afccfafe", size = 52907782, upload-time = "2026-01-26T22:13:36.624Z" }, + { url = "https://files.pythonhosted.org/packages/d4/60/6506de99f384ccf2293074330175cf917809b79fac787257c710dee3a10e/hf_xet-1.3.0a0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:167cfaed20d4fc905c34b44cfa44d45ab76c876604eebef525600f8a79849bcc", size = 53292955, upload-time = "2026-01-26T22:14:08.565Z" }, + { url = "https://files.pythonhosted.org/packages/68/55/34c37e54e3eed8df3ea4a0307acb6e3f7fe351ad2089f2805dc4e51d0bad/hf_xet-1.3.0a0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9d3d1ace3a6a1f80a43e0224a9c0757de9d40fc80450a838441552c8c54a64c5", size = 54923094, upload-time = "2026-01-26T22:14:11.463Z" }, + { url = "https://files.pythonhosted.org/packages/b7/6e/4923401b0ab6021930191399f4500c8b8554ece9f4715fe12e24717fbbbb/hf_xet-1.3.0a0-cp314-cp314t-win_amd64.whl", hash = "sha256:74686422b151f8fbac907c2bf41f5acf6dc24c33aacdbfa6a3055006e324fb54", size = 3079631, upload-time = "2026-01-26T22:14:18.354Z" }, + { url = "https://files.pythonhosted.org/packages/31/c1/d9713eba6bf62145cd5a84e8c6f811709286e6dd2def4aab1f5df76fe13f/hf_xet-1.3.0a0-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:00150c70f0f05f1a58aa2b4a8e196461f54211c111a77fd2ae2fec6878e9c2ae", size = 4988434, upload-time = "2026-01-26T22:13:48.1Z" }, + { url = "https://files.pythonhosted.org/packages/e5/58/8bbbd813944301130edd94c084f4bf639628a89afa09b84bfd021759e4bd/hf_xet-1.3.0a0-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:8440d0adcc5ce2fefce650a5de5b51d07f3af4fc1b7d878e0bef57d5d918d910", size = 4711530, upload-time = "2026-01-26T22:13:46.682Z" }, + { url = "https://files.pythonhosted.org/packages/dc/75/8668c9d2aea0ffce88c70df2f2ad8f3922af13b2b5f888939bde7eb1b7d9/hf_xet-1.3.0a0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db1ccdff3609e28f4fdc6be5c575be1724ef0ead9d2f237fe3dea8dd200405c2", size = 57845531, upload-time = "2026-01-26T22:13:33.269Z" }, + { url = "https://files.pythonhosted.org/packages/ae/4b/b6a297d315d811ec70d3ab65648869e4c85a4931004927c80694974e510b/hf_xet-1.3.0a0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:419004dd4a8616c7ebab264e26077f037c744a2d91f02e75714501085c52cb85", size = 52824336, upload-time = "2026-01-26T22:13:30.364Z" }, + { url = "https://files.pythonhosted.org/packages/fc/2c/977f4dc39c6083ccb1439f40264e0afc00ce3998830d1ed0e7e4ae77392b/hf_xet-1.3.0a0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:692b05fd29b919779f5f402993b024662db640a8f98ca3e6fcb47970fa79db58", size = 53213149, upload-time = "2026-01-26T22:14:01.268Z" }, + { url = "https://files.pythonhosted.org/packages/be/6e/a32082fac9086c11f4eb15ab785d2d9461e25270757020f4ada3819c69b9/hf_xet-1.3.0a0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a576e686903fbdfd53042a5116390a5810f8e6d734f66039d1ea4cf959ee810f", size = 54907465, upload-time = "2026-01-26T22:14:05.073Z" }, + { url = "https://files.pythonhosted.org/packages/78/b7/2e7e3d1412fa52c84d579b727dc5bd991110c5624506dbe2e0316d5bd704/hf_xet-1.3.0a0-cp37-abi3-win_amd64.whl", hash = "sha256:1966c5722280f2f552ac6b76a1182310521f5a97df53c0763d55888d36721208", size = 3083978, upload-time = "2026-01-26T22:14:16.705Z" }, ] [[package]] @@ -2444,10 +2448,8 @@ name = "liger-kernel" version = "0.6.5" source = { git = "https://github.com/linkedin/Liger-Kernel.git?rev=1f1a4b8d6a6c3c1ddb3573a46480c41cef25bde6#1f1a4b8d6a6c3c1ddb3573a46480c41cef25bde6" } dependencies = [ - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'" }, - { name = "triton", version = "3.4.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'" }, - { name = "triton", version = "3.5.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "torch", marker = "platform_machine == 'x86_64' and sys_platform == 'never'" }, + { name = "triton", marker = "platform_machine == 'x86_64' and sys_platform == 'never'" }, ] [[package]] @@ -2595,12 +2597,9 @@ dependencies = [ { name = "ninja" }, { name = "packaging" }, { name = "setuptools" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, - { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", marker = "sys_platform == 'never'" }, { name = "transformers" }, - { name = "triton", version = "3.4.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux'" }, - { name = "triton", version = "3.5.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'linux'" }, + { name = "triton", marker = "sys_platform == 'never'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/54/69/a87f06d9dba78c041adb81f2228e978aab179477c64f1a210c0fe0d63e8d/mamba_ssm-2.3.0.tar.gz", hash = "sha256:8294e12125f76021e4e190f4137e84a84935920eeda5d0037a6917524456b303", size = 121116, upload-time = "2026-01-12T17:07:22.152Z" } @@ -2804,9 +2803,7 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "einops" }, { name = "packaging" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, - { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", marker = "sys_platform == 'never'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/10/58/1dc5f0a79634cb6dd11715b62c994e6e1d43de952a2ea914c07b78bc3c48/megatron_fsdp-0.2.3.tar.gz", hash = "sha256:d12d93b20e3e5d214ae44d115976b209ef7352221f5ec07767bcbcb978ec5098", size = 86472, upload-time = "2026-02-06T16:30:27.88Z" } wheels = [ @@ -3233,10 +3230,8 @@ dependencies = [ { name = "opencv-python-headless" }, { name = "pybind11" }, { name = "pyyaml" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, - { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, - { name = "torchao" }, + { name = "torch", marker = "sys_platform == 'never'" }, + { name = "torchao", marker = "sys_platform == 'never'" }, { name = "torchdata" }, { name = "transformers" }, { name = "wandb" }, @@ -3273,11 +3268,8 @@ all = [ { name = "sentencepiece" }, { name = "timm" }, { name = "torchcodec", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, - { name = "torchvision", version = "0.24.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, - { name = "torchvision", version = "0.24.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, - { name = "torchvision", version = "0.25.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torchvision", version = "0.25.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, - { name = "transformer-engine", extra = ["pytorch"] }, + { name = "torchvision", marker = "sys_platform == 'never'" }, + { name = "transformer-engine", marker = "sys_platform == 'never'" }, ] cuda = [ { name = "bitsandbytes" }, @@ -3285,7 +3277,7 @@ cuda = [ { name = "mamba-ssm" }, { name = "nv-grouped-gemm" }, { name = "onnxscript" }, - { name = "transformer-engine", extra = ["pytorch"] }, + { name = "transformer-engine", marker = "sys_platform == 'never'" }, ] delta-databricks = [ { name = "databricks-sql-connector" }, @@ -3298,10 +3290,7 @@ diffusion = [ { name = "imageio-ffmpeg" }, { name = "kernels" }, { name = "opencv-python-headless" }, - { name = "torchvision", version = "0.24.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, - { name = "torchvision", version = "0.24.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, - { name = "torchvision", version = "0.25.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torchvision", version = "0.25.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torchvision", marker = "sys_platform == 'never'" }, ] extra = [ { name = "flash-linear-attention" }, @@ -3309,7 +3298,7 @@ extra = [ { name = "sentencepiece" }, ] fa = [ - { name = "flash-attn" }, + { name = "flash-attn", marker = "sys_platform == 'never'" }, ] moe = [ { name = "bitsandbytes" }, @@ -3318,7 +3307,7 @@ moe = [ { name = "mamba-ssm" }, { name = "nv-grouped-gemm" }, { name = "onnxscript" }, - { name = "transformer-engine", extra = ["pytorch"] }, + { name = "transformer-engine", marker = "sys_platform == 'never'" }, ] vlm = [ { name = "albumentations" }, @@ -3341,9 +3330,7 @@ build = [ { name = "packaging" }, { name = "psutil" }, { name = "setuptools" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, - { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", marker = "sys_platform == 'never'" }, ] dev = [ { name = "cut-cross-entropy" }, @@ -3472,12 +3459,8 @@ name = "networkx" version = "3.4.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'linux'", - "python_full_version < '3.11' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version < '3.11' and sys_platform == 'darwin'", ] sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368, upload-time = "2024-10-21T12:39:38.695Z" } wheels = [ @@ -3489,30 +3472,14 @@ name = "networkx" version = "3.5" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'linux'", - "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version >= '3.14' and sys_platform == 'darwin'", - "python_full_version == '3.13.*' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", ] sdist = { url = "https://files.pythonhosted.org/packages/6c/4f/ccdb8ad3a38e583f214547fd2f7ff1fc160c43a75af88e6aec213404b96a/networkx-3.5.tar.gz", hash = "sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037", size = 2471065, upload-time = "2025-05-29T11:35:07.804Z" } wheels = [ @@ -3784,161 +3751,10 @@ dependencies = [ { name = "ninja" }, { name = "packaging" }, { name = "setuptools" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, - { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", marker = "sys_platform == 'never'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/02/ad/046a097b63a96c1ba1d85f0031dbe7fcbdb33e6c445dfbaba2ffaefdd497/nv_grouped_gemm-1.1.4.post8.tar.gz", hash = "sha256:ab321693f0292cfd8a26dc7b6f14decd9eb00e209494de7218e4fad36191275d", size = 20821209, upload-time = "2025-12-17T02:22:38.432Z" } -[[package]] -name = "nvidia-cublas-cu12" -version = "12.9.1.4" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/82/6c/90d3f532f608a03a13c1d6c16c266ffa3828e8011b1549d3b61db2ad59f5/nvidia_cublas_cu12-12.9.1.4-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:7a950dae01add3b415a5a5cdc4ec818fb5858263e9cca59004bb99fdbbd3a5d6", size = 575006342, upload-time = "2025-06-05T20:04:16.902Z" }, - { url = "https://files.pythonhosted.org/packages/77/3c/aa88abe01f3be3d1f8f787d1d33dc83e76fec05945f9a28fbb41cfb99cd5/nvidia_cublas_cu12-12.9.1.4-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:453611eb21a7c1f2c2156ed9f3a45b691deda0440ec550860290dc901af5b4c2", size = 581242350, upload-time = "2025-06-05T20:04:51.979Z" }, -] - -[[package]] -name = "nvidia-cuda-cupti-cu12" -version = "12.9.79" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b4/78/351b5c8cdbd9a6b4fb0d6ee73fb176dcdc1b6b6ad47c2ffff5ae8ca4a1f7/nvidia_cuda_cupti_cu12-12.9.79-py3-none-manylinux_2_25_aarch64.whl", hash = "sha256:791853b030602c6a11d08b5578edfb957cadea06e9d3b26adbf8d036135a4afe", size = 10077166, upload-time = "2025-06-05T20:01:01.385Z" }, - { url = "https://files.pythonhosted.org/packages/c1/2e/b84e32197e33f39907b455b83395a017e697c07a449a2b15fd07fc1c9981/nvidia_cuda_cupti_cu12-12.9.79-py3-none-manylinux_2_25_x86_64.whl", hash = "sha256:096bcf334f13e1984ba36685ad4c1d6347db214de03dbb6eebb237b41d9d934f", size = 10814997, upload-time = "2025-06-05T20:01:10.168Z" }, -] - -[[package]] -name = "nvidia-cuda-nvrtc-cu12" -version = "12.9.86" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b8/85/e4af82cc9202023862090bfca4ea827d533329e925c758f0cde964cb54b7/nvidia_cuda_nvrtc_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:210cf05005a447e29214e9ce50851e83fc5f4358df8b453155d5e1918094dcb4", size = 89568129, upload-time = "2025-06-05T20:02:41.973Z" }, - { url = "https://files.pythonhosted.org/packages/64/eb/c2295044b8f3b3b08860e2f6a912b702fc92568a167259df5dddb78f325e/nvidia_cuda_nvrtc_cu12-12.9.86-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:096d4de6bda726415dfaf3198d4f5c522b8e70139c97feef5cd2ca6d4cd9cead", size = 44528905, upload-time = "2025-06-05T20:02:29.754Z" }, -] - -[[package]] -name = "nvidia-cuda-runtime-cu12" -version = "12.9.79" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bc/e0/0279bd94539fda525e0c8538db29b72a5a8495b0c12173113471d28bce78/nvidia_cuda_runtime_cu12-12.9.79-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:83469a846206f2a733db0c42e223589ab62fd2fabac4432d2f8802de4bded0a4", size = 3515012, upload-time = "2025-06-05T20:00:35.519Z" }, - { url = "https://files.pythonhosted.org/packages/bc/46/a92db19b8309581092a3add7e6fceb4c301a3fd233969856a8cbf042cd3c/nvidia_cuda_runtime_cu12-12.9.79-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:25bba2dfb01d48a9b59ca474a1ac43c6ebf7011f1b0b8cc44f54eb6ac48a96c3", size = 3493179, upload-time = "2025-06-05T20:00:53.735Z" }, -] - -[[package]] -name = "nvidia-cudnn-cu12" -version = "9.10.2.21" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "nvidia-cublas-cu12", marker = "sys_platform == 'linux'" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/41/e79269ce215c857c935fd86bcfe91a451a584dfc27f1e068f568b9ad1ab7/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:c9132cc3f8958447b4910a1720036d9eff5928cc3179b0a51fb6d167c6cc87d8", size = 705026878, upload-time = "2025-06-06T21:52:51.348Z" }, - { url = "https://files.pythonhosted.org/packages/ba/51/e123d997aa098c61d029f76663dedbfb9bc8dcf8c60cbd6adbe42f76d049/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8", size = 706758467, upload-time = "2025-06-06T21:54:08.597Z" }, -] - -[[package]] -name = "nvidia-cufft-cu12" -version = "11.4.1.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "nvidia-nvjitlink-cu12", marker = "sys_platform == 'linux'" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/2b/76445b0af890da61b501fde30650a1a4bd910607261b209cccb5235d3daa/nvidia_cufft_cu12-11.4.1.4-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1a28c9b12260a1aa7a8fd12f5ebd82d027963d635ba82ff39a1acfa7c4c0fbcf", size = 200822453, upload-time = "2025-06-05T20:05:27.889Z" }, - { url = "https://files.pythonhosted.org/packages/95/f4/61e6996dd20481ee834f57a8e9dca28b1869366a135e0d42e2aa8493bdd4/nvidia_cufft_cu12-11.4.1.4-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c67884f2a7d276b4b80eb56a79322a95df592ae5e765cf1243693365ccab4e28", size = 200877592, upload-time = "2025-06-05T20:05:45.862Z" }, -] - -[[package]] -name = "nvidia-cufile-cu12" -version = "1.14.1.1" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ad/28/b960e06d705a440c030edd84e16888ee14c743390bdb2a6368e92ffe8ef8/nvidia_cufile_cu12-1.14.1.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9552e2231792e94b1ff17bc99e958cc0e6bbbaa4a9d91fa2dbeed97716628fe6", size = 1210714, upload-time = "2025-06-05T20:06:11.898Z" }, - { url = "https://files.pythonhosted.org/packages/b9/d2/110af3a1f77999d5eebf6ffae5d2305ab839e53c76eec3696640cc25b35d/nvidia_cufile_cu12-1.14.1.1-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:8dea77590761e02cb6dd955a57cb6414c58aa3cb1b7adbf9919869a11509cf65", size = 1135994, upload-time = "2025-06-05T20:06:03.952Z" }, -] - -[[package]] -name = "nvidia-curand-cu12" -version = "10.3.10.19" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/14/1c/2a45afc614d99558d4a773fa740d8bb5471c8398eeed925fc0fcba020173/nvidia_curand_cu12-10.3.10.19-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:de663377feb1697e1d30ed587b07d5721fdd6d2015c738d7528a6002a6134d37", size = 68292066, upload-time = "2025-05-01T19:39:13.595Z" }, - { url = "https://files.pythonhosted.org/packages/31/44/193a0e171750ca9f8320626e8a1f2381e4077a65e69e2fb9708bd479e34a/nvidia_curand_cu12-10.3.10.19-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:49b274db4780d421bd2ccd362e1415c13887c53c214f0d4b761752b8f9f6aa1e", size = 68295626, upload-time = "2025-05-01T19:39:38.885Z" }, -] - -[[package]] -name = "nvidia-cusolver-cu12" -version = "11.7.5.82" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "nvidia-cublas-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-cusparse-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-nvjitlink-cu12", marker = "sys_platform == 'linux'" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/03/99/686ff9bf3a82a531c62b1a5c614476e8dfa24a9d89067aeedf3592ee4538/nvidia_cusolver_cu12-11.7.5.82-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:62efa83e4ace59a4c734d052bb72158e888aa7b770e1a5f601682f16fe5b4fd2", size = 337869834, upload-time = "2025-06-05T20:06:53.125Z" }, - { url = "https://files.pythonhosted.org/packages/33/40/79b0c64d44d6c166c0964ec1d803d067f4a145cca23e23925fd351d0e642/nvidia_cusolver_cu12-11.7.5.82-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:15da72d1340d29b5b3cf3fd100e3cd53421dde36002eda6ed93811af63c40d88", size = 338117415, upload-time = "2025-06-05T20:07:16.809Z" }, -] - -[[package]] -name = "nvidia-cusparse-cu12" -version = "12.5.10.65" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "nvidia-nvjitlink-cu12", marker = "sys_platform == 'linux'" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/5e/6f/8710fbd17cdd1d0fc3fea7d36d5b65ce1933611c31e1861da330206b253a/nvidia_cusparse_cu12-12.5.10.65-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:221c73e7482dd93eda44e65ce567c031c07e2f93f6fa0ecd3ba876a195023e83", size = 366359408, upload-time = "2025-06-05T20:07:42.501Z" }, - { url = "https://files.pythonhosted.org/packages/12/46/b0fd4b04f86577921feb97d8e2cf028afe04f614d17fb5013de9282c9216/nvidia_cusparse_cu12-12.5.10.65-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:73060ce019ac064a057267c585bf1fd5a353734151f87472ff02b2c5c9984e78", size = 366465088, upload-time = "2025-06-05T20:08:20.413Z" }, -] - -[[package]] -name = "nvidia-cusparselt-cu12" -version = "0.7.1" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/73/b9/598f6ff36faaece4b3c50d26f50e38661499ff34346f00e057760b35cc9d/nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8878dce784d0fac90131b6817b607e803c36e629ba34dc5b433471382196b6a5", size = 283835557, upload-time = "2025-02-26T00:16:54.265Z" }, - { url = "https://files.pythonhosted.org/packages/56/79/12978b96bd44274fe38b5dde5cfb660b1d114f70a65ef962bcbbed99b549/nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f1bb701d6b930d5a7cea44c19ceb973311500847f81b634d802b7b539dc55623", size = 287193691, upload-time = "2025-02-26T00:15:44.104Z" }, -] - -[[package]] -name = "nvidia-nccl-cu12" -version = "2.27.5" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bb/1c/857979db0ef194ca5e21478a0612bcdbbe59458d7694361882279947b349/nvidia_nccl_cu12-2.27.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:31432ad4d1fb1004eb0c56203dc9bc2178a1ba69d1d9e02d64a6938ab5e40e7a", size = 322400625, upload-time = "2025-06-26T04:11:04.496Z" }, - { url = "https://files.pythonhosted.org/packages/6e/89/f7a07dc961b60645dbbf42e80f2bc85ade7feb9a491b11a1e973aa00071f/nvidia_nccl_cu12-2.27.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ad730cf15cb5d25fe849c6e6ca9eb5b76db16a80f13f425ac68d8e2e55624457", size = 322348229, upload-time = "2025-06-26T04:11:28.385Z" }, -] - -[[package]] -name = "nvidia-nvjitlink-cu12" -version = "12.9.86" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/46/0c/c75bbfb967457a0b7670b8ad267bfc4fffdf341c074e0a80db06c24ccfd4/nvidia_nvjitlink_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:e3f1171dbdc83c5932a45f0f4c99180a70de9bd2718c1ab77d14104f6d7147f9", size = 39748338, upload-time = "2025-06-05T20:10:25.613Z" }, - { url = "https://files.pythonhosted.org/packages/97/bc/2dcba8e70cf3115b400fef54f213bcd6715a3195eba000f8330f11e40c45/nvidia_nvjitlink_cu12-12.9.86-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:994a05ef08ef4b0b299829cde613a424382aff7efb08a7172c1fa616cc3af2ca", size = 39514880, upload-time = "2025-06-05T20:10:04.89Z" }, -] - -[[package]] -name = "nvidia-nvshmem-cu12" -version = "3.3.20" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/92/9d/3dd98852568fb845ec1f7902c90a22b240fe1cbabda411ccedf2fd737b7b/nvidia_nvshmem_cu12-3.3.20-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0b0b960da3842212758e4fa4696b94f129090b30e5122fea3c5345916545cff0", size = 124484616, upload-time = "2025-08-04T20:24:59.172Z" }, - { url = "https://files.pythonhosted.org/packages/3b/6c/99acb2f9eb85c29fc6f3a7ac4dccfd992e22666dd08a642b303311326a97/nvidia_nvshmem_cu12-3.3.20-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d00f26d3f9b2e3c3065be895e3059d6479ea5c638a3f38c9fec49b1b9dd7c1e5", size = 124657145, upload-time = "2025-08-04T20:25:19.995Z" }, -] - -[[package]] -name = "nvidia-nvtx-cu12" -version = "12.9.79" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/86/ed/bb230dce7741f2778ba2ae3e8778fdb8bc58eee9fd95f07bf7b2d18e8081/nvidia_nvtx_cu12-12.9.79-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fec150986817f2b4e7eed72ed059f2dcb9ba3856b9a96134e448eac946a6952f", size = 85504, upload-time = "2025-06-05T20:03:10.21Z" }, - { url = "https://files.pythonhosted.org/packages/c4/e4/82155e4aaedb41621087ba219c95e99c5e417f37a7649b4fb6ec32dcb14d/nvidia_nvtx_cu12-12.9.79-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d1f258e752294acdb4f61c3d31fee87bd0f60e459f1e2f624376369b524cd15d", size = 86120, upload-time = "2025-06-05T20:02:51.838Z" }, -] - [[package]] name = "nvidia-sphinx-theme" version = "0.0.8" @@ -4067,13 +3883,8 @@ dependencies = [ { name = "regex" }, { name = "safetensors" }, { name = "timm" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, - { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, - { name = "torchvision", version = "0.24.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, - { name = "torchvision", version = "0.24.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, - { name = "torchvision", version = "0.25.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torchvision", version = "0.25.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", marker = "sys_platform == 'never'" }, + { name = "torchvision", marker = "sys_platform == 'never'" }, { name = "tqdm" }, ] sdist = { url = "https://files.pythonhosted.org/packages/30/46/fb8be250fa7fcfc56fbeb41583645e18d868268f67fbbbeb8ed62a8ff18a/open_clip_torch-3.2.0.tar.gz", hash = "sha256:62b7743012ccc40fb7c64819fa762fba0a13dd74585ac733babe58c2974c2506", size = 1502853, upload-time = "2025-09-21T17:32:08.289Z" } @@ -4247,9 +4058,7 @@ dependencies = [ { name = "psutil" }, { name = "pyyaml" }, { name = "safetensors" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, - { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", marker = "sys_platform == 'never'" }, { name = "tqdm" }, { name = "transformers" }, ] @@ -6394,7 +6203,7 @@ name = "sympy" version = "1.14.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "mpmath" }, + { name = "mpmath", marker = "(platform_machine == 'x86_64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" } wheels = [ @@ -6488,13 +6297,8 @@ dependencies = [ { name = "huggingface-hub" }, { name = "pyyaml" }, { name = "safetensors" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, - { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, - { name = "torchvision", version = "0.24.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, - { name = "torchvision", version = "0.24.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, - { name = "torchvision", version = "0.25.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torchvision", version = "0.25.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", marker = "sys_platform == 'never'" }, + { name = "torchvision", marker = "sys_platform == 'never'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c5/9d/e4670765d1c033f97096c760b3b907eeb659cf80f3678640e5f060b04c6c/timm-1.0.22.tar.gz", hash = "sha256:14fd74bcc17db3856b1a47d26fb305576c98579ab9d02b36714a5e6b25cde422", size = 2382998, upload-time = "2025-11-05T04:06:09.377Z" } wheels = [ @@ -6575,121 +6379,10 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/77/b8/0135fadc89e73be292b473cb820b4f5a08197779206b33191e801feeae40/tomli-2.3.0-py3-none-any.whl", hash = "sha256:e95b1af3c5b07d9e643909b5abbec77cd9f1217e6d0bca72b0234736b9fb1f1b", size = 14408, upload-time = "2025-10-08T22:01:46.04Z" }, ] -[[package]] -name = "torch" -version = "2.9.0+cu129" -source = { registry = "https://download.pytorch.org/whl/cu129" } -resolution-markers = [ - "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'linux'", - "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", - "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'linux'", - "python_full_version < '3.11' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", -] -dependencies = [ - { name = "filelock", marker = "sys_platform == 'linux'" }, - { name = "fsspec", marker = "sys_platform == 'linux'" }, - { name = "jinja2", marker = "sys_platform == 'linux'" }, - { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'linux'" }, - { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'linux'" }, - { name = "nvidia-cublas-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-cuda-cupti-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-cuda-nvrtc-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-cuda-runtime-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-cudnn-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-cufft-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-cufile-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-curand-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-cusolver-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-cusparse-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-cusparselt-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-nccl-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-nvjitlink-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-nvshmem-cu12", marker = "sys_platform == 'linux'" }, - { name = "nvidia-nvtx-cu12", marker = "sys_platform == 'linux'" }, - { name = "setuptools", marker = "python_full_version >= '3.12' and sys_platform == 'linux'" }, - { name = "sympy", marker = "sys_platform == 'linux'" }, - { name = "triton", version = "3.5.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'linux'" }, - { name = "typing-extensions", marker = "sys_platform == 'linux'" }, -] -wheels = [ - { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:37780eb80e4319d6e004ea9597353da0b3947681866d7adff4757ece164a5cd9" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:1e4a5dbd250c6053cec9ccb5fb6b3bc06259377745bcf2f855cfffe29d1d6264" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:34bf39fb8a4bb87e250706c61b65dbb69515d8f8c2af550c8544aa2967d4db16" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:78005065547658b8c3fd2dd4d68f34625b0543494c947001b5303d253b22da5f" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:106f9619d43edbd7087bc89b5fd1e4d9f491d9ec8ce91e84378a79b0a7c2b586" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6a2f119afeefe66eef75484f008b1a240952e45b24899d27d281961e8a395458" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:c32735d662f8a2071838ce92ef63678cb4f8c7661cdfcd3d1b06503b7b001626" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:6ba57bef11493397c151d755334092290412904e46c85ed86277a03bb24fd13a" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:b0c03da4d96576207013ec352636a3911c59830cbb53b93d11a048a4e55ca7c5" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:656404556df5b9509487d2052e3b8ef2c7c1ae0b29690eab617b3716b220a184" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:1686765f05d11ac1aa33bb16150391182d8fdbd5f73197fd300a0f9d08790dd4" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:3b1537f9b8e0149607d51424c9bf2422d30ece1cf58acbea2f6a1d33831e9436" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:aff4ff013a21d195a9ee2bc0d069cdfe567b262f641e3981a25114a2e392b170" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:3f7ccb3cf047c33c442622c811a36826f71a7af9c8e19c12d32f941ad5fbfbb5" }, -] - -[[package]] -name = "torch" -version = "2.10.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14' and sys_platform == 'darwin'", - "python_full_version == '3.13.*' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", - "python_full_version < '3.11' and sys_platform == 'darwin'", -] -dependencies = [ - { name = "filelock", marker = "sys_platform == 'darwin'" }, - { name = "fsspec", marker = "sys_platform == 'darwin'" }, - { name = "jinja2", marker = "sys_platform == 'darwin'" }, - { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, - { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "setuptools", marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, - { name = "sympy", marker = "sys_platform == 'darwin'" }, - { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/30/bfebdd8ec77db9a79775121789992d6b3b75ee5494971294d7b4b7c999bc/torch-2.10.0-2-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:2b980edd8d7c0a68c4e951ee1856334a43193f98730d97408fbd148c1a933313", size = 79411457, upload-time = "2026-02-10T21:44:59.189Z" }, - { url = "https://files.pythonhosted.org/packages/0f/8b/4b61d6e13f7108f36910df9ab4b58fd389cc2520d54d81b88660804aad99/torch-2.10.0-2-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:418997cb02d0a0f1497cf6a09f63166f9f5df9f3e16c8a716ab76a72127c714f", size = 79423467, upload-time = "2026-02-10T21:44:48.711Z" }, - { url = "https://files.pythonhosted.org/packages/d3/54/a2ba279afcca44bbd320d4e73675b282fcee3d81400ea1b53934efca6462/torch-2.10.0-2-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:13ec4add8c3faaed8d13e0574f5cd4a323c11655546f91fbe6afa77b57423574", size = 79498202, upload-time = "2026-02-10T21:44:52.603Z" }, - { url = "https://files.pythonhosted.org/packages/ec/23/2c9fe0c9c27f7f6cb865abcea8a4568f29f00acaeadfc6a37f6801f84cb4/torch-2.10.0-2-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:e521c9f030a3774ed770a9c011751fb47c4d12029a3d6522116e48431f2ff89e", size = 79498254, upload-time = "2026-02-10T21:44:44.095Z" }, - { url = "https://files.pythonhosted.org/packages/76/bb/d820f90e69cda6c8169b32a0c6a3ab7b17bf7990b8f2c680077c24a3c14c/torch-2.10.0-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:35e407430795c8d3edb07a1d711c41cc1f9eaddc8b2f1cc0a165a6767a8fb73d", size = 79411450, upload-time = "2026-01-21T16:25:30.692Z" }, - { url = "https://files.pythonhosted.org/packages/61/d8/15b9d9d3a6b0c01b883787bd056acbe5cc321090d4b216d3ea89a8fcfdf3/torch-2.10.0-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:b7bd80f3477b830dd166c707c5b0b82a898e7b16f59a7d9d42778dd058272e8b", size = 79423461, upload-time = "2026-01-21T16:24:50.266Z" }, - { url = "https://files.pythonhosted.org/packages/c9/5c/dee910b87c4d5c0fcb41b50839ae04df87c1cfc663cf1b5fca7ea565eeaa/torch-2.10.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:6d3707a61863d1c4d6ebba7be4ca320f42b869ee657e9b2c21c736bf17000294", size = 79498198, upload-time = "2026-01-21T16:24:34.704Z" }, - { url = "https://files.pythonhosted.org/packages/1a/0b/39929b148f4824bc3ad6f9f72a29d4ad865bcf7ebfc2fa67584773e083d2/torch-2.10.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:3202429f58309b9fa96a614885eace4b7995729f44beb54d3e4a47773649d382", size = 79851305, upload-time = "2026-01-21T16:24:09.209Z" }, - { url = "https://files.pythonhosted.org/packages/0e/13/e76b4d9c160e89fff48bf16b449ea324bda84745d2ab30294c37c2434c0d/torch-2.10.0-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:cdf2a523d699b70d613243211ecaac14fe9c5df8a0b0a9c02add60fb2a413e0f", size = 79498248, upload-time = "2026-01-21T16:23:09.315Z" }, - { url = "https://files.pythonhosted.org/packages/4f/93/716b5ac0155f1be70ed81bacc21269c3ece8dba0c249b9994094110bfc51/torch-2.10.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:bf0d9ff448b0218e0433aeb198805192346c4fd659c852370d5cc245f602a06a", size = 79464992, upload-time = "2026-01-21T16:23:05.162Z" }, - { url = "https://files.pythonhosted.org/packages/d8/94/71994e7d0d5238393df9732fdab607e37e2b56d26a746cb59fdb415f8966/torch-2.10.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:f5ab4ba32383061be0fb74bda772d470140a12c1c3b58a0cfbf3dae94d164c28", size = 79850324, upload-time = "2026-01-21T16:22:09.494Z" }, -] - [[package]] name = "torch" version = "2.10.0+cpu" source = { registry = "https://download.pytorch.org/whl/cpu" } -resolution-markers = [ - "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", -] dependencies = [ { name = "filelock", marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, { name = "fsspec", marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, @@ -6700,25 +6393,12 @@ dependencies = [ { name = "sympy", marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, { name = "typing-extensions", marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, ] -wheels = [ - { url = "https://download.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp310-cp310-win_amd64.whl", hash = "sha256:6c6f0df770144907092a0d067048d96ed4f278a6c840376d2ff0e27e7579b925" }, - { url = "https://download.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp311-cp311-win_amd64.whl", hash = "sha256:17a09465bab2aab8f0f273410297133d8d8fb6dd84dccbd252ca4a4f3a111847" }, - { url = "https://download.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp311-cp311-win_arm64.whl", hash = "sha256:c35c0de592941d4944698dbfa87271ab85d3370eca3b694943a2ab307ac34b3f" }, - { url = "https://download.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:21cb5436978ef47c823b7a813ff0f8c2892e266cfe0f1d944879b5fba81bf4e1" }, - { url = "https://download.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp312-cp312-win_arm64.whl", hash = "sha256:3eaa727e6a73affa61564d86b9d03191df45c8650d0666bd3d57c8597ef61e78" }, - { url = "https://download.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp313-cp313-win_amd64.whl", hash = "sha256:b719da5af01b59126ac13eefd6ba3dd12d002dc0e8e79b8b365e55267a8189d3" }, - { url = "https://download.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp313-cp313-win_arm64.whl", hash = "sha256:b67d91326e4ed9eccbd6b7d84ed7ffa43f93103aa3f0b24145f3001f3b11b714" }, - { url = "https://download.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp313-cp313t-win_amd64.whl", hash = "sha256:eb1bde1ce198f05c8770017de27e001d404499cf552aaaa014569eff56ca25c0" }, - { url = "https://download.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp314-cp314-win_amd64.whl", hash = "sha256:2adc71fe471e98a608723bfc837f7e1929885ebb912c693597711e139c1cda41" }, - { url = "https://download.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp314-cp314t-win_amd64.whl", hash = "sha256:ffc8da9a1341092d6a90cb5b1c1a33cd61abf0fb43f0cd88443c27fa372c26ae" }, -] [[package]] name = "torchao" version = "0.14.0" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/28/5a/72d932efcff037fea3466b0e0c9a82d280e9083da10fe79af8505ac71348/torchao-0.14.0-cp310-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3508151beb43ab6dd0f70427389f387cf1cd367f2326e9c6102133991e147b67", size = 7197166, upload-time = "2025-10-13T21:16:39.029Z" }, { url = "https://files.pythonhosted.org/packages/6f/f0/975479131e6d8365854b97334688dd156a6d67824cc24b65a6e661e93800/torchao-0.14.0-py3-none-any.whl", hash = "sha256:c5a939e035f8cc0493f2bb18a3d01c1db8139662f7fcf49a6df84366218aa95e", size = 1067582, upload-time = "2025-10-13T21:16:40.985Z" }, ] @@ -6743,131 +6423,22 @@ version = "0.11.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "requests" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, - { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", marker = "sys_platform == 'never'" }, { name = "urllib3" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/95/d4/af694ef718aedbe95a72760ab9ff7a6a7a44ace2d7f70c27bfeb67c5c503/torchdata-0.11.0-py3-none-any.whl", hash = "sha256:52b940fbbe0e00fb21cabddf528449d1bec5bfb0d0823b7487b15f951658ee33", size = 61968, upload-time = "2025-02-20T22:26:30.666Z" }, ] -[[package]] -name = "torchvision" -version = "0.24.0" -source = { registry = "https://download.pytorch.org/whl/cu129" } -resolution-markers = [ - "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", -] -dependencies = [ - { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'" }, - { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'" }, - { name = "pillow", marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, -] -wheels = [ - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0-cp310-cp310-manylinux_2_28_aarch64.whl" }, - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0-cp311-cp311-manylinux_2_28_aarch64.whl" }, - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0-cp312-cp312-manylinux_2_28_aarch64.whl" }, - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0-cp313-cp313-manylinux_2_28_aarch64.whl" }, - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0-cp313-cp313t-manylinux_2_28_aarch64.whl" }, - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0-cp314-cp314-manylinux_2_28_aarch64.whl" }, - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0-cp314-cp314t-manylinux_2_28_aarch64.whl" }, -] - -[[package]] -name = "torchvision" -version = "0.24.0+cu129" -source = { registry = "https://download.pytorch.org/whl/cu129" } -resolution-markers = [ - "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'linux'", - "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", - "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'linux'", - "python_full_version < '3.11' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", -] -dependencies = [ - { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'" }, - { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'" }, - { name = "pillow", marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, -] -wheels = [ - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0%2Bcu129-cp310-cp310-manylinux_2_28_x86_64.whl" }, - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0%2Bcu129-cp311-cp311-manylinux_2_28_x86_64.whl" }, - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0%2Bcu129-cp312-cp312-manylinux_2_28_x86_64.whl" }, - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0%2Bcu129-cp313-cp313-manylinux_2_28_x86_64.whl" }, - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0%2Bcu129-cp313-cp313t-manylinux_2_28_x86_64.whl" }, - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0%2Bcu129-cp314-cp314-manylinux_2_28_x86_64.whl" }, - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0%2Bcu129-cp314-cp314t-manylinux_2_28_x86_64.whl" }, -] - -[[package]] -name = "torchvision" -version = "0.25.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14' and sys_platform == 'darwin'", - "python_full_version == '3.13.*' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", - "python_full_version < '3.11' and sys_platform == 'darwin'", -] -dependencies = [ - { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and sys_platform == 'darwin'" }, - { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and sys_platform == 'darwin'" }, - { name = "pillow", marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/50/ae/cbf727421eb73f1cf907fbe5788326a08f111b3f6b6ddca15426b53fec9a/torchvision-0.25.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a95c47abb817d4e90ea1a8e57bd0d728e3e6b533b3495ae77d84d883c4d11f56", size = 1874919, upload-time = "2026-01-21T16:27:47.617Z" }, - { url = "https://files.pythonhosted.org/packages/3e/be/c704bceaf11c4f6b19d64337a34a877fcdfe3bd68160a8c9ae9bea4a35a3/torchvision-0.25.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:db74a551946b75d19f9996c419a799ffdf6a223ecf17c656f90da011f1d75b20", size = 1874923, upload-time = "2026-01-21T16:27:46.574Z" }, - { url = "https://files.pythonhosted.org/packages/56/3a/6ea0d73f49a9bef38a1b3a92e8dd455cea58470985d25635beab93841748/torchvision-0.25.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c2abe430c90b1d5e552680037d68da4eb80a5852ebb1c811b2b89d299b10573b", size = 1874920, upload-time = "2026-01-21T16:27:45.348Z" }, - { url = "https://files.pythonhosted.org/packages/f5/5b/1562a04a6a5a4cf8cf40016a0cdeda91ede75d6962cff7f809a85ae966a5/torchvision-0.25.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:24e11199e4d84ba9c5ee7825ebdf1cd37ce8deec225117f10243cae984ced3ec", size = 1874918, upload-time = "2026-01-21T16:27:39.02Z" }, - { url = "https://files.pythonhosted.org/packages/52/99/dca81ed21ebaeff2b67cc9f815a20fdaa418b69f5f9ea4c6ed71721470db/torchvision-0.25.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a8f8061284395ce31bcd460f2169013382ccf411148ceb2ee38e718e9860f5a7", size = 1896209, upload-time = "2026-01-21T16:27:32.159Z" }, - { url = "https://files.pythonhosted.org/packages/9e/1f/fa839532660e2602b7e704d65010787c5bb296258b44fa8b9c1cd6175e7d/torchvision-0.25.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:620a236288d594dcec7634c754484542dc0a5c1b0e0b83a34bda5e91e9b7c3a1", size = 1896193, upload-time = "2026-01-21T16:27:24.785Z" }, - { url = "https://files.pythonhosted.org/packages/97/36/96374a4c7ab50dea9787ce987815614ccfe988a42e10ac1a2e3e5b60319a/torchvision-0.25.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ad9a8a5877782944d99186e4502a614770fe906626d76e9cd32446a0ac3075f2", size = 1896207, upload-time = "2026-01-21T16:27:23.383Z" }, -] - [[package]] name = "torchvision" version = "0.25.0+cpu" source = { registry = "https://download.pytorch.org/whl/cpu" } -resolution-markers = [ - "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", -] dependencies = [ { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'linux'" }, { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux'" }, { name = "pillow", marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, -] -wheels = [ - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp310-cp310-win_amd64.whl", hash = "sha256:3e2ae9981e32a5b9db685659d5c7af0f04b159ff20394650a90124baf6ada51a" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp311-cp311-win_amd64.whl", hash = "sha256:c7eb5f219fdfaf1f65e68c00eb81172ab4fa08a9874dae9dad2bca360da34d0f" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:2d444009c0956669ada149f61ed78f257c1cc96d259efa6acf3929ca96ceb3f0" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp313-cp313-win_amd64.whl", hash = "sha256:783c8fc580bbfc159bff52f4f72cdd538e42b32956e70dffa42b940db114e151" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp313-cp313t-win_amd64.whl", hash = "sha256:9212210f417888e6261c040495180f053084812cf873dedba9fc51ff4b24b2d3" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp314-cp314-win_amd64.whl", hash = "sha256:499eae1e535766391b6ee2d1e6e841239c20e2e6d88203a15b8f9f8d60a1f8bd" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp314-cp314t-win_amd64.whl", hash = "sha256:fb9f07f6a10f0ac24ac482ae68c6df99110b74a0d80a4c64fddc9753267d8815" }, + { name = "torch", marker = "sys_platform == 'never'" }, ] [[package]] @@ -6890,42 +6461,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/00/33/44571ec584c88e1715f4c2afefc0ddd45064c7065ac1c6ffc8e832bc3ba3/transformer_engine-2.11.0-py3-none-any.whl", hash = "sha256:7ee1eae8fa6b0cb471c6066aa3555304fda8537174e5019929dc0c8655071df3", size = 723110, upload-time = "2026-01-02T09:58:23.245Z" }, ] -[package.optional-dependencies] -pytorch = [ - { name = "transformer-engine-torch" }, -] - -[[package]] -name = "transformer-engine-cu12" -version = "2.11.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "importlib-metadata" }, - { name = "packaging" }, - { name = "pydantic" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/05/27/5c4c27cb245a3513e5ad7ccef50e2e9688996e2cc558edbbb575dfcca276/transformer_engine_cu12-2.11.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:ed5fda0925cb304d6864b451d8d012c579d5bd097bfefefca769b2704b06381a", size = 287630565, upload-time = "2026-01-02T09:56:43.645Z" }, - { url = "https://files.pythonhosted.org/packages/fa/a2/1439bbb6bc7d4d6045bad7d213884f7be92301c0982f009e3bbafa40e4ff/transformer_engine_cu12-2.11.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:6e5c0707583b2a90b2570da6f57409c6802653e069dfec38cf07a3b77ba9b12d", size = 288159349, upload-time = "2026-01-02T09:57:56.435Z" }, -] - -[[package]] -name = "transformer-engine-torch" -version = "2.11.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "einops" }, - { name = "onnx" }, - { name = "onnxscript" }, - { name = "packaging" }, - { name = "pydantic" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, - { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, - { name = "transformer-engine-cu12" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/09/42/068a40f5b213a3a8899e3885eb178776662897abed03cd725953d1106c39/transformer_engine_torch-2.11.0.tar.gz", hash = "sha256:b58d6322bdf885dfab0646da572aff9cf090b332ad470559aa58883c231e1816", size = 242065, upload-time = "2026-01-02T09:58:58.423Z" } - [[package]] name = "transformers" version = "5.0.0" @@ -6952,63 +6487,8 @@ wheels = [ name = "triton" version = "3.4.0" source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", - "python_full_version >= '3.14' and sys_platform == 'darwin'", - "python_full_version == '3.13.*' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", - "python_full_version < '3.11' and sys_platform == 'darwin'", -] dependencies = [ - { name = "setuptools", marker = "sys_platform != 'linux'" }, -] - -[[package]] -name = "triton" -version = "3.5.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'linux'", - "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", - "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", - "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'linux'", - "python_full_version < '3.11' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/dd/22/507b6f58a35e05e84381630b2dc2a3cee1a7a2a7eaf4cba857c638a18a24/triton-3.5.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6f90de6a6566bb619b4c0adc9855729e1b1b5e26533fca1bf6206e96b6d277a3", size = 159827599, upload-time = "2025-10-15T19:15:43.87Z" }, - { url = "https://files.pythonhosted.org/packages/0b/eb/09e31d107a5d00eb281aa7e6635ca463e9bca86515944e399480eadb71f8/triton-3.5.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d5d3b3d480debf24eaa739623c9a42446b0b77f95593d30eb1f64cd2278cc1f0", size = 170333110, upload-time = "2025-10-13T16:37:49.588Z" }, - { url = "https://files.pythonhosted.org/packages/79/f9/b6f60f978397c616fd8dacca2305759fe4f80d397b20ef72534803244bd5/triton-3.5.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8457b22148defefdcb7fa8144b05ce211b9faefad650a1ce85b23df488d5549c", size = 159926731, upload-time = "2025-10-15T19:15:49.682Z" }, - { url = "https://files.pythonhosted.org/packages/3d/78/949a04391c21956c816523678f0e5fa308eb5b1e7622d88c4e4ef5fceca0/triton-3.5.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f34bfa21c5b3a203c0f0eab28dcc1e49bd1f67d22724e77fb6665a659200a4ec", size = 170433488, upload-time = "2025-10-13T16:37:57.132Z" }, - { url = "https://files.pythonhosted.org/packages/87/9b/30988039e1e84df7554fba24e6a734d2d0e847af33cabdf9b532b3c51456/triton-3.5.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7da21fccceafc163e3a5e857abe34351ef76345af06cabf9637a914742671f0b", size = 159946647, upload-time = "2025-10-15T19:15:56.325Z" }, - { url = "https://files.pythonhosted.org/packages/f5/3a/e991574f3102147b642e49637e0281e9bb7c4ba254edb2bab78247c85e01/triton-3.5.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c9e71db82261c4ffa3921cd050cd5faa18322d2d405c30eb56084afaff3b0833", size = 170476535, upload-time = "2025-10-13T16:38:05.18Z" }, - { url = "https://files.pythonhosted.org/packages/cd/85/e37f1197acb04c8f3d83851d23d5d6ed5060ef74580668b112e23fdfa203/triton-3.5.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:188da5b81fa2f8322c27fec1627703eac24cb9bb7ab0dfbe9925973bc1b070d3", size = 159958970, upload-time = "2025-10-15T19:16:01.717Z" }, - { url = "https://files.pythonhosted.org/packages/6c/29/10728de8a6e932e517c10773486b8e99f85d1b1d9dd87d9a9616e1fef4a1/triton-3.5.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e6bb9aa5519c084a333acdba443789e50012a4b851cd486c54f0b8dc2a8d3a12", size = 170487289, upload-time = "2025-10-13T16:38:11.662Z" }, - { url = "https://files.pythonhosted.org/packages/b8/1d/38258f05010ac17a7b058c022911c9cae6526e149b7397134a048cf5a6c2/triton-3.5.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:03127d9b33aaf979c856676b394bc059ec1d68cb6da68ae03f62dd8ad77a04ae", size = 160073012, upload-time = "2025-10-15T19:16:07.477Z" }, - { url = "https://files.pythonhosted.org/packages/5c/38/db80e48b9220c9bce872b0f616ad0446cdf554a40b85c7865cbca99ab3c2/triton-3.5.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c83f2343e1a220a716c7b3ab9fccfcbe3ad4020d189549200e2d2e8d5868bed9", size = 170577179, upload-time = "2025-10-13T16:38:17.865Z" }, - { url = "https://files.pythonhosted.org/packages/91/fe/8f5771d00227f4eb1ee034f218ed427102b989366d2275fe3b3c105a3921/triton-3.5.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:468936651d383f4a6d10068d34a627505e13af55be5d002b9f27b987e7a5f0ac", size = 159957460, upload-time = "2025-10-15T19:16:12.626Z" }, - { url = "https://files.pythonhosted.org/packages/ff/60/1810655d1d856c9a4fcc90ee8966d85f552d98c53a6589f95ab2cbe27bb8/triton-3.5.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da0fa67ccd76c3dcfb0bffe1b1c57c685136a6bd33d141c24d9655d4185b1289", size = 170487949, upload-time = "2025-10-13T16:38:24.881Z" }, - { url = "https://files.pythonhosted.org/packages/78/59/99edd103958fe6e42b50b9ad8ce4f223ddf4ccf475259cf7d2b53381dc6c/triton-3.5.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c7ceef21410229ac23173a28eee5cfc0e37c1dfdb8b4bc11ecda2e3ecec7c686", size = 160075629, upload-time = "2025-10-15T19:16:18.746Z" }, - { url = "https://files.pythonhosted.org/packages/fb/b7/1dec8433ac604c061173d0589d99217fe7bf90a70bdc375e745d044b8aad/triton-3.5.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:317fe477ea8fd4524a6a8c499fb0a36984a56d0b75bf9c9cb6133a1c56d5a6e7", size = 170580176, upload-time = "2025-10-13T16:38:31.14Z" }, + { name = "setuptools", marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, ] [[package]] From a00d334ed027591299d396134b7a849a95bcea56 Mon Sep 17 00:00:00 2001 From: Pranav Prashant Thombre Date: Sat, 7 Mar 2026 22:44:18 -0800 Subject: [PATCH 4/8] Fix attention backend for flux Signed-off-by: Pranav Prashant Thombre --- examples/diffusion/pretrain/flux_t2i_flow.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/diffusion/pretrain/flux_t2i_flow.yaml b/examples/diffusion/pretrain/flux_t2i_flow.yaml index 078898403..a965d63de 100644 --- a/examples/diffusion/pretrain/flux_t2i_flow.yaml +++ b/examples/diffusion/pretrain/flux_t2i_flow.yaml @@ -2,6 +2,7 @@ model: pretrained_model_name_or_path: "black-forest-labs/FLUX.1-dev" mode: "pretrain" cache_dir: null + attention_backend: "flash" pipeline_spec: transformer_cls: "FluxTransformer2DModel" @@ -50,8 +51,8 @@ flow_matching: step_scheduler: num_epochs: 500000 - local_batch_size: 2 - global_batch_size: 64 + local_batch_size: 1 + global_batch_size: 8 ckpt_every_steps: 1000 log_every: 1 From 88c6901fbe0344a9c0f28cad474bd3e37be4b9e2 Mon Sep 17 00:00:00 2001 From: Pranav Prashant Thombre Date: Sun, 8 Mar 2026 15:39:45 -0700 Subject: [PATCH 5/8] Fix overrides Signed-off-by: Pranav Prashant Thombre --- pyproject.toml | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 7b812e045..644d652d3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -174,27 +174,6 @@ test = ["coverage", "pytest", "peft>=0.18.1", "onnxruntime-gpu; (platform_machin dev = ["cut-cross-entropy", "liger-kernel; (platform_machine == 'x86_64' and platform_system != 'Darwin')", "dion @ git+https://github.com/microsoft/dion.git; platform_machine == 'x86_64' and platform_system != 'Darwin'"] [tool.uv] -override-dependencies = [ - "flash-attn; sys_platform == 'never'", - "nvidia-cublas-cu12; sys_platform == 'never'", - "nvidia-cuda-cupti-cu12; sys_platform == 'never'", - "nvidia-cuda-nvrtc-cu12; sys_platform == 'never'", - "nvidia-cuda-runtime-cu12; sys_platform == 'never'", - "nvidia-cudnn-cu12; sys_platform == 'never'", - "nvidia-cufft-cu12; sys_platform == 'never'", - "nvidia-cufile-cu12; sys_platform == 'never'", - "nvidia-curand-cu12; sys_platform == 'never'", - "nvidia-cusolver-cu12; sys_platform == 'never'", - "nvidia-cusparse-cu12; sys_platform == 'never'", - "nvidia-cusparselt-cu12; sys_platform == 'never'", - "nvidia-nccl-cu12; sys_platform == 'never'", - "torch; sys_platform == 'never'", - "torchao; sys_platform == 'never'", - "torchvision; sys_platform == 'never'", - "transformer-engine; sys_platform == 'never'", - "transformer-engine-torch; sys_platform == 'never'", - "triton; sys_platform == 'never'", -] default-groups = ["build", "docs", "test"] no-build-isolation-package = [ "bitsandbytes", From fa92b0c99466c901d459a21e0f8b3123a1554b11 Mon Sep 17 00:00:00 2001 From: pthombre Date: Sun, 8 Mar 2026 22:40:22 +0000 Subject: [PATCH 6/8] Update uv lock Signed-off-by: pthombre --- uv.lock | 651 +++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 595 insertions(+), 56 deletions(-) diff --git a/uv.lock b/uv.lock index a788d9cc3..34e66ee0b 100644 --- a/uv.lock +++ b/uv.lock @@ -52,27 +52,6 @@ constraints = [ { name = "urllib3", specifier = ">=2.6.3" }, { name = "wheel", specifier = ">=0.46.2" }, ] -overrides = [ - { name = "flash-attn", marker = "sys_platform == 'never'" }, - { name = "nvidia-cublas-cu12", marker = "sys_platform == 'never'" }, - { name = "nvidia-cuda-cupti-cu12", marker = "sys_platform == 'never'" }, - { name = "nvidia-cuda-nvrtc-cu12", marker = "sys_platform == 'never'" }, - { name = "nvidia-cuda-runtime-cu12", marker = "sys_platform == 'never'" }, - { name = "nvidia-cudnn-cu12", marker = "sys_platform == 'never'" }, - { name = "nvidia-cufft-cu12", marker = "sys_platform == 'never'" }, - { name = "nvidia-cufile-cu12", marker = "sys_platform == 'never'" }, - { name = "nvidia-curand-cu12", marker = "sys_platform == 'never'" }, - { name = "nvidia-cusolver-cu12", marker = "sys_platform == 'never'" }, - { name = "nvidia-cusparse-cu12", marker = "sys_platform == 'never'" }, - { name = "nvidia-cusparselt-cu12", marker = "sys_platform == 'never'" }, - { name = "nvidia-nccl-cu12", marker = "sys_platform == 'never'" }, - { name = "torch", marker = "sys_platform == 'never'", index = "https://download.pytorch.org/whl/cpu" }, - { name = "torchao", marker = "sys_platform == 'never'" }, - { name = "torchvision", marker = "sys_platform == 'never'", index = "https://download.pytorch.org/whl/cpu" }, - { name = "transformer-engine", marker = "sys_platform == 'never'" }, - { name = "transformer-engine-torch", marker = "sys_platform == 'never'" }, - { name = "triton", marker = "sys_platform == 'never'" }, -] [[manifest.dependency-metadata]] name = "deep-ep" @@ -96,7 +75,9 @@ dependencies = [ { name = "psutil" }, { name = "pyyaml" }, { name = "safetensors" }, - { name = "torch", marker = "sys_platform == 'never'" }, + { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", version = "2.10.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/23/60/2757c4f03a8705dbf80b1268b03881927878dca5ed07d74f733fb6c219e0/accelerate-1.11.0.tar.gz", hash = "sha256:bb1caf2597b4cd632b917b5000c591d10730bb024a79746f1ee205bba80bd229", size = 393715, upload-time = "2025-10-20T14:42:25.025Z" } wheels = [ @@ -606,7 +587,9 @@ dependencies = [ { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13'" }, { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13'" }, { name = "packaging" }, - { name = "torch", marker = "sys_platform == 'never'" }, + { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", version = "2.10.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/19/6f/32d0526e4e4ad309d9e7502c018399bb23b63f39277a361c305092e2f885/bitsandbytes-0.49.1-py3-none-macosx_14_0_arm64.whl", hash = "sha256:9de01d4384b6c71ef9ab052b98457dc0e4fff8fe06ab14833b5b712700deb005", size = 129848, upload-time = "2026-01-08T14:31:26.134Z" }, @@ -640,7 +623,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ninja" }, { name = "packaging" }, - { name = "torch", marker = "sys_platform == 'never'" }, + { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", version = "2.10.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/db/df/63a384c49743b9fc8fec4c05dbd0b515e1c1c2b07e4559acc4fc37c69223/causal_conv1d-1.6.0.tar.gz", hash = "sha256:4eae3220d08e1e88238f3a0a88783147cbdf47f612cc610add75127c7a37ca3e", size = 29356, upload-time = "2026-01-12T17:33:32.794Z" } @@ -1206,14 +1191,49 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/bc/58/6b3d24e6b9bc474a2dcdee65dfd1f008867015408a271562e4b690561a4d/cryptography-46.0.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8456928655f856c6e1533ff59d5be76578a7157224dbd9ce6872f25055ab9ab7", size = 3407605, upload-time = "2026-02-10T19:18:29.233Z" }, ] +[[package]] +name = "cuda-bindings" +version = "12.9.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cuda-pathfinder", marker = "sys_platform == 'linux'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/31/bfcc870f69c6a017c4ad5c42316207fc7551940db6f3639aa4466ec5faf3/cuda_bindings-12.9.4-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a022c96b8bd847e8dc0675523431149a4c3e872f440e3002213dbb9e08f0331a", size = 11800959, upload-time = "2025-10-21T14:51:26.458Z" }, + { url = "https://files.pythonhosted.org/packages/7a/d8/b546104b8da3f562c1ff8ab36d130c8fe1dd6a045ced80b4f6ad74f7d4e1/cuda_bindings-12.9.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d3c842c2a4303b2a580fe955018e31aea30278be19795ae05226235268032e5", size = 12148218, upload-time = "2025-10-21T14:51:28.855Z" }, + { url = "https://files.pythonhosted.org/packages/a9/2b/ebcbb60aa6dba830474cd360c42e10282f7a343c0a1f58d24fbd3b7c2d77/cuda_bindings-12.9.4-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a6a429dc6c13148ff1e27c44f40a3dd23203823e637b87fd0854205195988306", size = 11840604, upload-time = "2025-10-21T14:51:34.565Z" }, + { url = "https://files.pythonhosted.org/packages/45/e7/b47792cc2d01c7e1d37c32402182524774dadd2d26339bd224e0e913832e/cuda_bindings-12.9.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c912a3d9e6b6651853eed8eed96d6800d69c08e94052c292fec3f282c5a817c9", size = 12210593, upload-time = "2025-10-21T14:51:36.574Z" }, + { url = "https://files.pythonhosted.org/packages/0c/c2/65bfd79292b8ff18be4dd7f7442cea37bcbc1a228c1886f1dea515c45b67/cuda_bindings-12.9.4-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:694ba35023846625ef471257e6b5a4bc8af690f961d197d77d34b1d1db393f56", size = 11760260, upload-time = "2025-10-21T14:51:40.79Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c1/dabe88f52c3e3760d861401bb994df08f672ec893b8f7592dc91626adcf3/cuda_bindings-12.9.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fda147a344e8eaeca0c6ff113d2851ffca8f7dfc0a6c932374ee5c47caa649c8", size = 12151019, upload-time = "2025-10-21T14:51:43.167Z" }, + { url = "https://files.pythonhosted.org/packages/05/8b/b4b2d1c7775fa403b64333e720cfcfccef8dcb9cdeb99947061ca5a77628/cuda_bindings-12.9.4-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cf8bfaedc238f3b115d957d1fd6562b7e8435ba57f6d0e2f87d0e7149ccb2da5", size = 11570071, upload-time = "2025-10-21T14:51:47.472Z" }, + { url = "https://files.pythonhosted.org/packages/63/56/e465c31dc9111be3441a9ba7df1941fe98f4aa6e71e8788a3fb4534ce24d/cuda_bindings-12.9.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:32bdc5a76906be4c61eb98f546a6786c5773a881f3b166486449b5d141e4a39f", size = 11906628, upload-time = "2025-10-21T14:51:49.905Z" }, + { url = "https://files.pythonhosted.org/packages/ec/07/6aff13bc1e977e35aaa6b22f52b172e2890c608c6db22438cf7ed2bf43a6/cuda_bindings-12.9.4-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3adf4958dcf68ae7801a59b73fb00a8b37f8d0595060d66ceae111b1002de38d", size = 11566797, upload-time = "2025-10-21T14:51:54.581Z" }, + { url = "https://files.pythonhosted.org/packages/a3/84/1e6be415e37478070aeeee5884c2022713c1ecc735e6d82d744de0252eee/cuda_bindings-12.9.4-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:56e0043c457a99ac473ddc926fe0dc4046694d99caef633e92601ab52cbe17eb", size = 11925991, upload-time = "2025-10-21T14:51:56.535Z" }, + { url = "https://files.pythonhosted.org/packages/1e/b5/96a6696e20c4ffd2b327f54c7d0fde2259bdb998d045c25d5dedbbe30290/cuda_bindings-12.9.4-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f53a7f453d4b2643d8663d036bafe29b5ba89eb904c133180f295df6dc151e5", size = 11624530, upload-time = "2025-10-21T14:52:01.539Z" }, + { url = "https://files.pythonhosted.org/packages/d1/af/6dfd8f2ed90b1d4719bc053ff8940e494640fe4212dc3dd72f383e4992da/cuda_bindings-12.9.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8b72ee72a9cc1b531db31eebaaee5c69a8ec3500e32c6933f2d3b15297b53686", size = 11922703, upload-time = "2025-10-21T14:52:03.585Z" }, + { url = "https://files.pythonhosted.org/packages/39/73/d2fc40c043bac699c3880bf88d3cebe9d88410cd043795382826c93a89f0/cuda_bindings-12.9.4-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:20f2699d61d724de3eb3f3369d57e2b245f93085cab44fd37c3bea036cea1a6f", size = 11565056, upload-time = "2025-10-21T14:52:08.338Z" }, + { url = "https://files.pythonhosted.org/packages/6c/19/90ac264acc00f6df8a49378eedec9fd2db3061bf9263bf9f39fd3d8377c3/cuda_bindings-12.9.4-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d80bffc357df9988dca279734bc9674c3934a654cab10cadeed27ce17d8635ee", size = 11924658, upload-time = "2025-10-21T14:52:10.411Z" }, +] + +[[package]] +name = "cuda-pathfinder" +version = "1.4.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/02/59a5bc738a09def0b49aea0e460bdf97f65206d0d041246147cf6207e69c/cuda_pathfinder-1.4.1-py3-none-any.whl", hash = "sha256:40793006082de88e0950753655e55558a446bed9a7d9d0bcb48b2506d50ed82a", size = 43903, upload-time = "2026-03-06T21:05:24.372Z" }, +] + [[package]] name = "cut-cross-entropy" version = "25.3.2" source = { git = "https://github.com/apple/ml-cross-entropy.git?rev=87a86aba72cfd2f0d8abecaf81c13c4528ea07d8#87a86aba72cfd2f0d8abecaf81c13c4528ea07d8" } dependencies = [ { name = "setuptools" }, - { name = "torch", marker = "sys_platform == 'never'" }, - { name = "triton", marker = "sys_platform == 'never'" }, + { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", version = "2.10.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, + { name = "triton", version = "3.4.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "triton", version = "3.6.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'linux'" }, ] [[package]] @@ -1315,7 +1335,9 @@ source = { git = "https://github.com/deepseek-ai/DeepEP.git?rev=e3908bf5bd0cc626 dependencies = [ { name = "ninja" }, { name = "packaging" }, - { name = "torch", marker = "sys_platform == 'never'" }, + { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", version = "2.10.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, ] [[package]] @@ -1385,8 +1407,10 @@ source = { git = "https://github.com/microsoft/dion.git#7452a5823cf9655b93c3f1d8 dependencies = [ { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform != 'darwin'" }, { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform != 'darwin'" }, - { name = "torch", marker = "platform_machine == 'x86_64' and sys_platform == 'never'" }, - { name = "triton", marker = "platform_machine == 'x86_64' and sys_platform == 'never'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", version = "2.10.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "triton", version = "3.4.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "triton", version = "3.6.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, ] [[package]] @@ -1481,7 +1505,9 @@ version = "0.4.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "einops" }, - { name = "torch", marker = "sys_platform == 'never'" }, + { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", version = "2.10.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/db/3d/79a9d5c8cd973c86f35403931031787dfc6cc97d838a42d4c62e8cbbb66f/fla_core-0.4.0.tar.gz", hash = "sha256:d975022b074e97bfd086dc6b767dccb35e27a9fe36f26f3b26b1c2b68b36a1c8", size = 316316, upload-time = "2025-10-27T08:18:51.673Z" } wheels = [ @@ -1493,8 +1519,10 @@ name = "flash-attn" version = "2.8.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "einops", marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, - { name = "torch", marker = "sys_platform == 'never'" }, + { name = "einops" }, + { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", version = "2.10.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/3b/b2/8d76c41ad7974ee264754709c22963447f7f8134613fd9ce80984ed0dab7/flash_attn-2.8.3.tar.gz", hash = "sha256:1e71dd64a9e0280e0447b8a0c2541bad4bf6ac65bdeaa2f90e51a9e57de0370d", size = 8447812, upload-time = "2025-08-15T08:28:12.911Z" } @@ -1836,6 +1864,7 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7d/ed/6bfa4109fcb23a58819600392564fea69cdc6551ffd5e69ccf1d52a40cbc/greenlet-3.2.4-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:8c68325b0d0acf8d91dde4e6f930967dd52a5302cd4062932a6b2e7c2969f47c", size = 271061, upload-time = "2025-08-07T13:17:15.373Z" }, { url = "https://files.pythonhosted.org/packages/2a/fc/102ec1a2fc015b3a7652abab7acf3541d58c04d3d17a8d3d6a44adae1eb1/greenlet-3.2.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:94385f101946790ae13da500603491f04a76b6e4c059dab271b3ce2e283b2590", size = 629475, upload-time = "2025-08-07T13:42:54.009Z" }, { url = "https://files.pythonhosted.org/packages/c5/26/80383131d55a4ac0fb08d71660fd77e7660b9db6bdb4e8884f46d9f2cc04/greenlet-3.2.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f10fd42b5ee276335863712fa3da6608e93f70629c631bf77145021600abc23c", size = 640802, upload-time = "2025-08-07T13:45:25.52Z" }, + { url = "https://files.pythonhosted.org/packages/9f/7c/e7833dbcd8f376f3326bd728c845d31dcde4c84268d3921afcae77d90d08/greenlet-3.2.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c8c9e331e58180d0d83c5b7999255721b725913ff6bc6cf39fa2a45841a4fd4b", size = 636703, upload-time = "2025-08-07T13:53:12.622Z" }, { url = "https://files.pythonhosted.org/packages/e9/49/547b93b7c0428ede7b3f309bc965986874759f7d89e4e04aeddbc9699acb/greenlet-3.2.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:58b97143c9cc7b86fc458f215bd0932f1757ce649e05b640fea2e79b54cedb31", size = 635417, upload-time = "2025-08-07T13:18:25.189Z" }, { url = "https://files.pythonhosted.org/packages/7f/91/ae2eb6b7979e2f9b035a9f612cf70f1bf54aad4e1d125129bef1eae96f19/greenlet-3.2.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c2ca18a03a8cfb5b25bc1cbe20f3d9a4c80d8c3b13ba3df49ac3961af0b1018d", size = 584358, upload-time = "2025-08-07T13:18:23.708Z" }, { url = "https://files.pythonhosted.org/packages/f7/85/433de0c9c0252b22b16d413c9407e6cb3b41df7389afc366ca204dbc1393/greenlet-3.2.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9fe0a28a7b952a21e2c062cd5756d34354117796c6d9215a87f55e38d15402c5", size = 1113550, upload-time = "2025-08-07T13:42:37.467Z" }, @@ -1846,6 +1875,7 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a4/de/f28ced0a67749cac23fecb02b694f6473f47686dff6afaa211d186e2ef9c/greenlet-3.2.4-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:96378df1de302bc38e99c3a9aa311967b7dc80ced1dcc6f171e99842987882a2", size = 272305, upload-time = "2025-08-07T13:15:41.288Z" }, { url = "https://files.pythonhosted.org/packages/09/16/2c3792cba130000bf2a31c5272999113f4764fd9d874fb257ff588ac779a/greenlet-3.2.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1ee8fae0519a337f2329cb78bd7a8e128ec0f881073d43f023c7b8d4831d5246", size = 632472, upload-time = "2025-08-07T13:42:55.044Z" }, { url = "https://files.pythonhosted.org/packages/ae/8f/95d48d7e3d433e6dae5b1682e4292242a53f22df82e6d3dda81b1701a960/greenlet-3.2.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:94abf90142c2a18151632371140b3dba4dee031633fe614cb592dbb6c9e17bc3", size = 644646, upload-time = "2025-08-07T13:45:26.523Z" }, + { url = "https://files.pythonhosted.org/packages/d5/5e/405965351aef8c76b8ef7ad370e5da58d57ef6068df197548b015464001a/greenlet-3.2.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:4d1378601b85e2e5171b99be8d2dc85f594c79967599328f95c1dc1a40f1c633", size = 640519, upload-time = "2025-08-07T13:53:13.928Z" }, { url = "https://files.pythonhosted.org/packages/25/5d/382753b52006ce0218297ec1b628e048c4e64b155379331f25a7316eb749/greenlet-3.2.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0db5594dce18db94f7d1650d7489909b57afde4c580806b8d9203b6e79cdc079", size = 639707, upload-time = "2025-08-07T13:18:27.146Z" }, { url = "https://files.pythonhosted.org/packages/1f/8e/abdd3f14d735b2929290a018ecf133c901be4874b858dd1c604b9319f064/greenlet-3.2.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2523e5246274f54fdadbce8494458a2ebdcdbc7b802318466ac5606d3cded1f8", size = 587684, upload-time = "2025-08-07T13:18:25.164Z" }, { url = "https://files.pythonhosted.org/packages/5d/65/deb2a69c3e5996439b0176f6651e0052542bb6c8f8ec2e3fba97c9768805/greenlet-3.2.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1987de92fec508535687fb807a5cea1560f6196285a4cde35c100b8cd632cc52", size = 1116647, upload-time = "2025-08-07T13:42:38.655Z" }, @@ -1856,6 +1886,7 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/44/69/9b804adb5fd0671f367781560eb5eb586c4d495277c93bde4307b9e28068/greenlet-3.2.4-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3b67ca49f54cede0186854a008109d6ee71f66bd57bb36abd6d0a0267b540cdd", size = 274079, upload-time = "2025-08-07T13:15:45.033Z" }, { url = "https://files.pythonhosted.org/packages/46/e9/d2a80c99f19a153eff70bc451ab78615583b8dac0754cfb942223d2c1a0d/greenlet-3.2.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ddf9164e7a5b08e9d22511526865780a576f19ddd00d62f8a665949327fde8bb", size = 640997, upload-time = "2025-08-07T13:42:56.234Z" }, { url = "https://files.pythonhosted.org/packages/3b/16/035dcfcc48715ccd345f3a93183267167cdd162ad123cd93067d86f27ce4/greenlet-3.2.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f28588772bb5fb869a8eb331374ec06f24a83a9c25bfa1f38b6993afe9c1e968", size = 655185, upload-time = "2025-08-07T13:45:27.624Z" }, + { url = "https://files.pythonhosted.org/packages/31/da/0386695eef69ffae1ad726881571dfe28b41970173947e7c558d9998de0f/greenlet-3.2.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:5c9320971821a7cb77cfab8d956fa8e39cd07ca44b6070db358ceb7f8797c8c9", size = 649926, upload-time = "2025-08-07T13:53:15.251Z" }, { url = "https://files.pythonhosted.org/packages/68/88/69bf19fd4dc19981928ceacbc5fd4bb6bc2215d53199e367832e98d1d8fe/greenlet-3.2.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c60a6d84229b271d44b70fb6e5fa23781abb5d742af7b808ae3f6efd7c9c60f6", size = 651839, upload-time = "2025-08-07T13:18:30.281Z" }, { url = "https://files.pythonhosted.org/packages/19/0d/6660d55f7373b2ff8152401a83e02084956da23ae58cddbfb0b330978fe9/greenlet-3.2.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b3812d8d0c9579967815af437d96623f45c0f2ae5f04e366de62a12d83a8fb0", size = 607586, upload-time = "2025-08-07T13:18:28.544Z" }, { url = "https://files.pythonhosted.org/packages/8e/1a/c953fdedd22d81ee4629afbb38d2f9d71e37d23caace44775a3a969147d4/greenlet-3.2.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:abbf57b5a870d30c4675928c37278493044d7c14378350b3aa5d484fa65575f0", size = 1123281, upload-time = "2025-08-07T13:42:39.858Z" }, @@ -1866,6 +1897,7 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/49/e8/58c7f85958bda41dafea50497cbd59738c5c43dbbea5ee83d651234398f4/greenlet-3.2.4-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:1a921e542453fe531144e91e1feedf12e07351b1cf6c9e8a3325ea600a715a31", size = 272814, upload-time = "2025-08-07T13:15:50.011Z" }, { url = "https://files.pythonhosted.org/packages/62/dd/b9f59862e9e257a16e4e610480cfffd29e3fae018a68c2332090b53aac3d/greenlet-3.2.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd3c8e693bff0fff6ba55f140bf390fa92c994083f838fece0f63be121334945", size = 641073, upload-time = "2025-08-07T13:42:57.23Z" }, { url = "https://files.pythonhosted.org/packages/f7/0b/bc13f787394920b23073ca3b6c4a7a21396301ed75a655bcb47196b50e6e/greenlet-3.2.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:710638eb93b1fa52823aa91bf75326f9ecdfd5e0466f00789246a5280f4ba0fc", size = 655191, upload-time = "2025-08-07T13:45:29.752Z" }, + { url = "https://files.pythonhosted.org/packages/f2/d6/6adde57d1345a8d0f14d31e4ab9c23cfe8e2cd39c3baf7674b4b0338d266/greenlet-3.2.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c5111ccdc9c88f423426df3fd1811bfc40ed66264d35aa373420a34377efc98a", size = 649516, upload-time = "2025-08-07T13:53:16.314Z" }, { url = "https://files.pythonhosted.org/packages/7f/3b/3a3328a788d4a473889a2d403199932be55b1b0060f4ddd96ee7cdfcad10/greenlet-3.2.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d76383238584e9711e20ebe14db6c88ddcedc1829a9ad31a584389463b5aa504", size = 652169, upload-time = "2025-08-07T13:18:32.861Z" }, { url = "https://files.pythonhosted.org/packages/ee/43/3cecdc0349359e1a527cbf2e3e28e5f8f06d3343aaf82ca13437a9aa290f/greenlet-3.2.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:23768528f2911bcd7e475210822ffb5254ed10d71f4028387e5a99b4c6699671", size = 610497, upload-time = "2025-08-07T13:18:31.636Z" }, { url = "https://files.pythonhosted.org/packages/b8/19/06b6cf5d604e2c382a6f31cafafd6f33d5dea706f4db7bdab184bad2b21d/greenlet-3.2.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:00fadb3fedccc447f517ee0d3fd8fe49eae949e1cd0f6a611818f4f6fb7dc83b", size = 1121662, upload-time = "2025-08-07T13:42:41.117Z" }, @@ -1876,6 +1908,7 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/22/5c/85273fd7cc388285632b0498dbbab97596e04b154933dfe0f3e68156c68c/greenlet-3.2.4-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:49a30d5fda2507ae77be16479bdb62a660fa51b1eb4928b524975b3bde77b3c0", size = 273586, upload-time = "2025-08-07T13:16:08.004Z" }, { url = "https://files.pythonhosted.org/packages/d1/75/10aeeaa3da9332c2e761e4c50d4c3556c21113ee3f0afa2cf5769946f7a3/greenlet-3.2.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:299fd615cd8fc86267b47597123e3f43ad79c9d8a22bebdce535e53550763e2f", size = 686346, upload-time = "2025-08-07T13:42:59.944Z" }, { url = "https://files.pythonhosted.org/packages/c0/aa/687d6b12ffb505a4447567d1f3abea23bd20e73a5bed63871178e0831b7a/greenlet-3.2.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:c17b6b34111ea72fc5a4e4beec9711d2226285f0386ea83477cbb97c30a3f3a5", size = 699218, upload-time = "2025-08-07T13:45:30.969Z" }, + { url = "https://files.pythonhosted.org/packages/dc/8b/29aae55436521f1d6f8ff4e12fb676f3400de7fcf27fccd1d4d17fd8fecd/greenlet-3.2.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b4a1870c51720687af7fa3e7cda6d08d801dae660f75a76f3845b642b4da6ee1", size = 694659, upload-time = "2025-08-07T13:53:17.759Z" }, { url = "https://files.pythonhosted.org/packages/92/2e/ea25914b1ebfde93b6fc4ff46d6864564fba59024e928bdc7de475affc25/greenlet-3.2.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:061dc4cf2c34852b052a8620d40f36324554bc192be474b9e9770e8c042fd735", size = 695355, upload-time = "2025-08-07T13:18:34.517Z" }, { url = "https://files.pythonhosted.org/packages/72/60/fc56c62046ec17f6b0d3060564562c64c862948c9d4bc8aa807cf5bd74f4/greenlet-3.2.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:44358b9bf66c8576a9f57a590d5f5d6e72fa4228b763d0e43fee6d3b06d3a337", size = 657512, upload-time = "2025-08-07T13:18:33.969Z" }, { url = "https://files.pythonhosted.org/packages/23/6e/74407aed965a4ab6ddd93a7ded3180b730d281c77b765788419484cdfeef/greenlet-3.2.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:2917bdf657f5859fbf3386b12d68ede4cf1f04c90c3a6bc1f013dd68a22e2269", size = 1612508, upload-time = "2025-11-04T12:42:23.427Z" }, @@ -2443,8 +2476,10 @@ name = "liger-kernel" version = "0.6.5" source = { git = "https://github.com/linkedin/Liger-Kernel.git?rev=1f1a4b8d6a6c3c1ddb3573a46480c41cef25bde6#1f1a4b8d6a6c3c1ddb3573a46480c41cef25bde6" } dependencies = [ - { name = "torch", marker = "platform_machine == 'x86_64' and sys_platform == 'never'" }, - { name = "triton", marker = "platform_machine == 'x86_64' and sys_platform == 'never'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", version = "2.10.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "triton", version = "3.4.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "triton", version = "3.6.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, ] [[package]] @@ -2592,9 +2627,12 @@ dependencies = [ { name = "ninja" }, { name = "packaging" }, { name = "setuptools" }, - { name = "torch", marker = "sys_platform == 'never'" }, + { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", version = "2.10.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, { name = "transformers" }, - { name = "triton", marker = "sys_platform == 'never'" }, + { name = "triton", version = "3.4.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux'" }, + { name = "triton", version = "3.6.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'linux'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/54/69/a87f06d9dba78c041adb81f2228e978aab179477c64f1a210c0fe0d63e8d/mamba_ssm-2.3.0.tar.gz", hash = "sha256:8294e12125f76021e4e190f4137e84a84935920eeda5d0037a6917524456b303", size = 121116, upload-time = "2026-01-12T17:07:22.152Z" } @@ -2798,7 +2836,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "einops" }, { name = "packaging" }, - { name = "torch", marker = "sys_platform == 'never'" }, + { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", version = "2.10.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/10/58/1dc5f0a79634cb6dd11715b62c994e6e1d43de952a2ea914c07b78bc3c48/megatron_fsdp-0.2.3.tar.gz", hash = "sha256:d12d93b20e3e5d214ae44d115976b209ef7352221f5ec07767bcbcb978ec5098", size = 86472, upload-time = "2026-02-06T16:30:27.88Z" } wheels = [ @@ -3225,8 +3265,10 @@ dependencies = [ { name = "opencv-python-headless" }, { name = "pybind11" }, { name = "pyyaml" }, - { name = "torch", marker = "sys_platform == 'never'" }, - { name = "torchao", marker = "sys_platform == 'never'" }, + { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", version = "2.10.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, + { name = "torchao" }, { name = "torchdata" }, { name = "transformers" }, { name = "wandb" }, @@ -3262,15 +3304,17 @@ all = [ { name = "sentencepiece" }, { name = "timm" }, { name = "torchcodec", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, - { name = "torchvision", marker = "sys_platform == 'never'" }, - { name = "transformer-engine", marker = "sys_platform == 'never'" }, + { name = "torchvision", version = "0.25.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torchvision", version = "0.25.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torchvision", version = "0.25.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, + { name = "transformer-engine", extra = ["pytorch"] }, ] cuda = [ { name = "causal-conv1d" }, { name = "mamba-ssm" }, { name = "nv-grouped-gemm" }, { name = "onnxscript" }, - { name = "transformer-engine", marker = "sys_platform == 'never'" }, + { name = "transformer-engine", extra = ["pytorch"] }, ] cuda-source = [ { name = "bitsandbytes" }, @@ -3286,7 +3330,9 @@ diffusion = [ { name = "imageio-ffmpeg" }, { name = "kernels" }, { name = "opencv-python-headless" }, - { name = "torchvision", marker = "sys_platform == 'never'" }, + { name = "torchvision", version = "0.25.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torchvision", version = "0.25.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torchvision", version = "0.25.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, ] extra = [ { name = "flash-linear-attention" }, @@ -3294,7 +3340,7 @@ extra = [ { name = "sentencepiece" }, ] fa = [ - { name = "flash-attn", marker = "sys_platform == 'never'" }, + { name = "flash-attn" }, ] moe = [ { name = "causal-conv1d" }, @@ -3302,7 +3348,7 @@ moe = [ { name = "mamba-ssm" }, { name = "nv-grouped-gemm" }, { name = "onnxscript" }, - { name = "transformer-engine", marker = "sys_platform == 'never'" }, + { name = "transformer-engine", extra = ["pytorch"] }, ] vlm = [ { name = "albumentations" }, @@ -3325,7 +3371,9 @@ build = [ { name = "packaging" }, { name = "psutil" }, { name = "setuptools" }, - { name = "torch", marker = "sys_platform == 'never'" }, + { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", version = "2.10.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, ] dev = [ { name = "cut-cross-entropy" }, @@ -3456,8 +3504,12 @@ name = "networkx" version = "3.4.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ + "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version < '3.11' and sys_platform == 'darwin'", ] sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368, upload-time = "2024-10-21T12:39:38.695Z" } wheels = [ @@ -3469,14 +3521,30 @@ name = "networkx" version = "3.5" source = { registry = "https://pypi.org/simple" } resolution-markers = [ + "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version >= '3.14' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", ] sdist = { url = "https://files.pythonhosted.org/packages/6c/4f/ccdb8ad3a38e583f214547fd2f7ff1fc160c43a75af88e6aec213404b96a/networkx-3.5.tar.gz", hash = "sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037", size = 2471065, upload-time = "2025-05-29T11:35:07.804Z" } wheels = [ @@ -3748,10 +3816,161 @@ dependencies = [ { name = "ninja" }, { name = "packaging" }, { name = "setuptools" }, - { name = "torch", marker = "sys_platform == 'never'" }, + { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", version = "2.10.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/02/ad/046a097b63a96c1ba1d85f0031dbe7fcbdb33e6c445dfbaba2ffaefdd497/nv_grouped_gemm-1.1.4.post8.tar.gz", hash = "sha256:ab321693f0292cfd8a26dc7b6f14decd9eb00e209494de7218e4fad36191275d", size = 20821209, upload-time = "2025-12-17T02:22:38.432Z" } +[[package]] +name = "nvidia-cublas-cu12" +version = "12.9.1.4" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/6c/90d3f532f608a03a13c1d6c16c266ffa3828e8011b1549d3b61db2ad59f5/nvidia_cublas_cu12-12.9.1.4-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:7a950dae01add3b415a5a5cdc4ec818fb5858263e9cca59004bb99fdbbd3a5d6", size = 575006342, upload-time = "2025-06-05T20:04:16.902Z" }, + { url = "https://files.pythonhosted.org/packages/77/3c/aa88abe01f3be3d1f8f787d1d33dc83e76fec05945f9a28fbb41cfb99cd5/nvidia_cublas_cu12-12.9.1.4-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:453611eb21a7c1f2c2156ed9f3a45b691deda0440ec550860290dc901af5b4c2", size = 581242350, upload-time = "2025-06-05T20:04:51.979Z" }, +] + +[[package]] +name = "nvidia-cuda-cupti-cu12" +version = "12.9.79" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b4/78/351b5c8cdbd9a6b4fb0d6ee73fb176dcdc1b6b6ad47c2ffff5ae8ca4a1f7/nvidia_cuda_cupti_cu12-12.9.79-py3-none-manylinux_2_25_aarch64.whl", hash = "sha256:791853b030602c6a11d08b5578edfb957cadea06e9d3b26adbf8d036135a4afe", size = 10077166, upload-time = "2025-06-05T20:01:01.385Z" }, + { url = "https://files.pythonhosted.org/packages/c1/2e/b84e32197e33f39907b455b83395a017e697c07a449a2b15fd07fc1c9981/nvidia_cuda_cupti_cu12-12.9.79-py3-none-manylinux_2_25_x86_64.whl", hash = "sha256:096bcf334f13e1984ba36685ad4c1d6347db214de03dbb6eebb237b41d9d934f", size = 10814997, upload-time = "2025-06-05T20:01:10.168Z" }, +] + +[[package]] +name = "nvidia-cuda-nvrtc-cu12" +version = "12.9.86" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/85/e4af82cc9202023862090bfca4ea827d533329e925c758f0cde964cb54b7/nvidia_cuda_nvrtc_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:210cf05005a447e29214e9ce50851e83fc5f4358df8b453155d5e1918094dcb4", size = 89568129, upload-time = "2025-06-05T20:02:41.973Z" }, + { url = "https://files.pythonhosted.org/packages/64/eb/c2295044b8f3b3b08860e2f6a912b702fc92568a167259df5dddb78f325e/nvidia_cuda_nvrtc_cu12-12.9.86-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:096d4de6bda726415dfaf3198d4f5c522b8e70139c97feef5cd2ca6d4cd9cead", size = 44528905, upload-time = "2025-06-05T20:02:29.754Z" }, +] + +[[package]] +name = "nvidia-cuda-runtime-cu12" +version = "12.9.79" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/e0/0279bd94539fda525e0c8538db29b72a5a8495b0c12173113471d28bce78/nvidia_cuda_runtime_cu12-12.9.79-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:83469a846206f2a733db0c42e223589ab62fd2fabac4432d2f8802de4bded0a4", size = 3515012, upload-time = "2025-06-05T20:00:35.519Z" }, + { url = "https://files.pythonhosted.org/packages/bc/46/a92db19b8309581092a3add7e6fceb4c301a3fd233969856a8cbf042cd3c/nvidia_cuda_runtime_cu12-12.9.79-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:25bba2dfb01d48a9b59ca474a1ac43c6ebf7011f1b0b8cc44f54eb6ac48a96c3", size = 3493179, upload-time = "2025-06-05T20:00:53.735Z" }, +] + +[[package]] +name = "nvidia-cudnn-cu12" +version = "9.10.2.21" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas-cu12", marker = "sys_platform == 'linux'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/41/e79269ce215c857c935fd86bcfe91a451a584dfc27f1e068f568b9ad1ab7/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:c9132cc3f8958447b4910a1720036d9eff5928cc3179b0a51fb6d167c6cc87d8", size = 705026878, upload-time = "2025-06-06T21:52:51.348Z" }, + { url = "https://files.pythonhosted.org/packages/ba/51/e123d997aa098c61d029f76663dedbfb9bc8dcf8c60cbd6adbe42f76d049/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8", size = 706758467, upload-time = "2025-06-06T21:54:08.597Z" }, +] + +[[package]] +name = "nvidia-cufft-cu12" +version = "11.4.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink-cu12", marker = "sys_platform == 'linux'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/2b/76445b0af890da61b501fde30650a1a4bd910607261b209cccb5235d3daa/nvidia_cufft_cu12-11.4.1.4-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1a28c9b12260a1aa7a8fd12f5ebd82d027963d635ba82ff39a1acfa7c4c0fbcf", size = 200822453, upload-time = "2025-06-05T20:05:27.889Z" }, + { url = "https://files.pythonhosted.org/packages/95/f4/61e6996dd20481ee834f57a8e9dca28b1869366a135e0d42e2aa8493bdd4/nvidia_cufft_cu12-11.4.1.4-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c67884f2a7d276b4b80eb56a79322a95df592ae5e765cf1243693365ccab4e28", size = 200877592, upload-time = "2025-06-05T20:05:45.862Z" }, +] + +[[package]] +name = "nvidia-cufile-cu12" +version = "1.14.1.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ad/28/b960e06d705a440c030edd84e16888ee14c743390bdb2a6368e92ffe8ef8/nvidia_cufile_cu12-1.14.1.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9552e2231792e94b1ff17bc99e958cc0e6bbbaa4a9d91fa2dbeed97716628fe6", size = 1210714, upload-time = "2025-06-05T20:06:11.898Z" }, + { url = "https://files.pythonhosted.org/packages/b9/d2/110af3a1f77999d5eebf6ffae5d2305ab839e53c76eec3696640cc25b35d/nvidia_cufile_cu12-1.14.1.1-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:8dea77590761e02cb6dd955a57cb6414c58aa3cb1b7adbf9919869a11509cf65", size = 1135994, upload-time = "2025-06-05T20:06:03.952Z" }, +] + +[[package]] +name = "nvidia-curand-cu12" +version = "10.3.10.19" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/1c/2a45afc614d99558d4a773fa740d8bb5471c8398eeed925fc0fcba020173/nvidia_curand_cu12-10.3.10.19-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:de663377feb1697e1d30ed587b07d5721fdd6d2015c738d7528a6002a6134d37", size = 68292066, upload-time = "2025-05-01T19:39:13.595Z" }, + { url = "https://files.pythonhosted.org/packages/31/44/193a0e171750ca9f8320626e8a1f2381e4077a65e69e2fb9708bd479e34a/nvidia_curand_cu12-10.3.10.19-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:49b274db4780d421bd2ccd362e1415c13887c53c214f0d4b761752b8f9f6aa1e", size = 68295626, upload-time = "2025-05-01T19:39:38.885Z" }, +] + +[[package]] +name = "nvidia-cusolver-cu12" +version = "11.7.5.82" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cusparse-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nvjitlink-cu12", marker = "sys_platform == 'linux'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/99/686ff9bf3a82a531c62b1a5c614476e8dfa24a9d89067aeedf3592ee4538/nvidia_cusolver_cu12-11.7.5.82-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:62efa83e4ace59a4c734d052bb72158e888aa7b770e1a5f601682f16fe5b4fd2", size = 337869834, upload-time = "2025-06-05T20:06:53.125Z" }, + { url = "https://files.pythonhosted.org/packages/33/40/79b0c64d44d6c166c0964ec1d803d067f4a145cca23e23925fd351d0e642/nvidia_cusolver_cu12-11.7.5.82-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:15da72d1340d29b5b3cf3fd100e3cd53421dde36002eda6ed93811af63c40d88", size = 338117415, upload-time = "2025-06-05T20:07:16.809Z" }, +] + +[[package]] +name = "nvidia-cusparse-cu12" +version = "12.5.10.65" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink-cu12", marker = "sys_platform == 'linux'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/6f/8710fbd17cdd1d0fc3fea7d36d5b65ce1933611c31e1861da330206b253a/nvidia_cusparse_cu12-12.5.10.65-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:221c73e7482dd93eda44e65ce567c031c07e2f93f6fa0ecd3ba876a195023e83", size = 366359408, upload-time = "2025-06-05T20:07:42.501Z" }, + { url = "https://files.pythonhosted.org/packages/12/46/b0fd4b04f86577921feb97d8e2cf028afe04f614d17fb5013de9282c9216/nvidia_cusparse_cu12-12.5.10.65-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:73060ce019ac064a057267c585bf1fd5a353734151f87472ff02b2c5c9984e78", size = 366465088, upload-time = "2025-06-05T20:08:20.413Z" }, +] + +[[package]] +name = "nvidia-cusparselt-cu12" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/73/b9/598f6ff36faaece4b3c50d26f50e38661499ff34346f00e057760b35cc9d/nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8878dce784d0fac90131b6817b607e803c36e629ba34dc5b433471382196b6a5", size = 283835557, upload-time = "2025-02-26T00:16:54.265Z" }, + { url = "https://files.pythonhosted.org/packages/56/79/12978b96bd44274fe38b5dde5cfb660b1d114f70a65ef962bcbbed99b549/nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f1bb701d6b930d5a7cea44c19ceb973311500847f81b634d802b7b539dc55623", size = 287193691, upload-time = "2025-02-26T00:15:44.104Z" }, +] + +[[package]] +name = "nvidia-nccl-cu12" +version = "2.27.5" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/1c/857979db0ef194ca5e21478a0612bcdbbe59458d7694361882279947b349/nvidia_nccl_cu12-2.27.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:31432ad4d1fb1004eb0c56203dc9bc2178a1ba69d1d9e02d64a6938ab5e40e7a", size = 322400625, upload-time = "2025-06-26T04:11:04.496Z" }, + { url = "https://files.pythonhosted.org/packages/6e/89/f7a07dc961b60645dbbf42e80f2bc85ade7feb9a491b11a1e973aa00071f/nvidia_nccl_cu12-2.27.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ad730cf15cb5d25fe849c6e6ca9eb5b76db16a80f13f425ac68d8e2e55624457", size = 322348229, upload-time = "2025-06-26T04:11:28.385Z" }, +] + +[[package]] +name = "nvidia-nvjitlink-cu12" +version = "12.9.86" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/0c/c75bbfb967457a0b7670b8ad267bfc4fffdf341c074e0a80db06c24ccfd4/nvidia_nvjitlink_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:e3f1171dbdc83c5932a45f0f4c99180a70de9bd2718c1ab77d14104f6d7147f9", size = 39748338, upload-time = "2025-06-05T20:10:25.613Z" }, + { url = "https://files.pythonhosted.org/packages/97/bc/2dcba8e70cf3115b400fef54f213bcd6715a3195eba000f8330f11e40c45/nvidia_nvjitlink_cu12-12.9.86-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:994a05ef08ef4b0b299829cde613a424382aff7efb08a7172c1fa616cc3af2ca", size = 39514880, upload-time = "2025-06-05T20:10:04.89Z" }, +] + +[[package]] +name = "nvidia-nvshmem-cu12" +version = "3.4.5" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/6a/03aa43cc9bd3ad91553a88b5f6fb25ed6a3752ae86ce2180221962bc2aa5/nvidia_nvshmem_cu12-3.4.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0b48363fc6964dede448029434c6abed6c5e37f823cb43c3bcde7ecfc0457e15", size = 138936938, upload-time = "2025-09-06T00:32:05.589Z" }, + { url = "https://files.pythonhosted.org/packages/b5/09/6ea3ea725f82e1e76684f0708bbedd871fc96da89945adeba65c3835a64c/nvidia_nvshmem_cu12-3.4.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:042f2500f24c021db8a06c5eec2539027d57460e1c1a762055a6554f72c369bd", size = 139103095, upload-time = "2025-09-06T00:32:31.266Z" }, +] + +[[package]] +name = "nvidia-nvtx-cu12" +version = "12.9.79" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/ed/bb230dce7741f2778ba2ae3e8778fdb8bc58eee9fd95f07bf7b2d18e8081/nvidia_nvtx_cu12-12.9.79-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fec150986817f2b4e7eed72ed059f2dcb9ba3856b9a96134e448eac946a6952f", size = 85504, upload-time = "2025-06-05T20:03:10.21Z" }, + { url = "https://files.pythonhosted.org/packages/c4/e4/82155e4aaedb41621087ba219c95e99c5e417f37a7649b4fb6ec32dcb14d/nvidia_nvtx_cu12-12.9.79-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d1f258e752294acdb4f61c3d31fee87bd0f60e459f1e2f624376369b524cd15d", size = 86120, upload-time = "2025-06-05T20:02:51.838Z" }, +] + [[package]] name = "nvidia-sphinx-theme" version = "0.0.8" @@ -3880,8 +4099,12 @@ dependencies = [ { name = "regex" }, { name = "safetensors" }, { name = "timm" }, - { name = "torch", marker = "sys_platform == 'never'" }, - { name = "torchvision", marker = "sys_platform == 'never'" }, + { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", version = "2.10.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, + { name = "torchvision", version = "0.25.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torchvision", version = "0.25.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torchvision", version = "0.25.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, { name = "tqdm" }, ] sdist = { url = "https://files.pythonhosted.org/packages/30/46/fb8be250fa7fcfc56fbeb41583645e18d868268f67fbbbeb8ed62a8ff18a/open_clip_torch-3.2.0.tar.gz", hash = "sha256:62b7743012ccc40fb7c64819fa762fba0a13dd74585ac733babe58c2974c2506", size = 1502853, upload-time = "2025-09-21T17:32:08.289Z" } @@ -4055,7 +4278,9 @@ dependencies = [ { name = "psutil" }, { name = "pyyaml" }, { name = "safetensors" }, - { name = "torch", marker = "sys_platform == 'never'" }, + { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", version = "2.10.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, { name = "tqdm" }, { name = "transformers" }, ] @@ -6200,7 +6425,7 @@ name = "sympy" version = "1.14.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "mpmath", marker = "(platform_machine == 'x86_64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "mpmath" }, ] sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" } wheels = [ @@ -6294,8 +6519,12 @@ dependencies = [ { name = "huggingface-hub" }, { name = "pyyaml" }, { name = "safetensors" }, - { name = "torch", marker = "sys_platform == 'never'" }, - { name = "torchvision", marker = "sys_platform == 'never'" }, + { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", version = "2.10.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, + { name = "torchvision", version = "0.25.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torchvision", version = "0.25.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torchvision", version = "0.25.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c5/9d/e4670765d1c033f97096c760b3b907eeb659cf80f3678640e5f060b04c6c/timm-1.0.22.tar.gz", hash = "sha256:14fd74bcc17db3856b1a47d26fb305576c98579ab9d02b36714a5e6b25cde422", size = 2382998, upload-time = "2025-11-05T04:06:09.377Z" } wheels = [ @@ -6376,10 +6605,57 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/77/b8/0135fadc89e73be292b473cb820b4f5a08197779206b33191e801feeae40/tomli-2.3.0-py3-none-any.whl", hash = "sha256:e95b1af3c5b07d9e643909b5abbec77cd9f1217e6d0bca72b0234736b9fb1f1b", size = 14408, upload-time = "2025-10-08T22:01:46.04Z" }, ] +[[package]] +name = "torch" +version = "2.10.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "filelock", marker = "sys_platform == 'darwin'" }, + { name = "fsspec", marker = "sys_platform == 'darwin'" }, + { name = "jinja2", marker = "sys_platform == 'darwin'" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'darwin'" }, + { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "setuptools", marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, + { name = "sympy", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/30/bfebdd8ec77db9a79775121789992d6b3b75ee5494971294d7b4b7c999bc/torch-2.10.0-2-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:2b980edd8d7c0a68c4e951ee1856334a43193f98730d97408fbd148c1a933313", size = 79411457, upload-time = "2026-02-10T21:44:59.189Z" }, + { url = "https://files.pythonhosted.org/packages/0f/8b/4b61d6e13f7108f36910df9ab4b58fd389cc2520d54d81b88660804aad99/torch-2.10.0-2-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:418997cb02d0a0f1497cf6a09f63166f9f5df9f3e16c8a716ab76a72127c714f", size = 79423467, upload-time = "2026-02-10T21:44:48.711Z" }, + { url = "https://files.pythonhosted.org/packages/d3/54/a2ba279afcca44bbd320d4e73675b282fcee3d81400ea1b53934efca6462/torch-2.10.0-2-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:13ec4add8c3faaed8d13e0574f5cd4a323c11655546f91fbe6afa77b57423574", size = 79498202, upload-time = "2026-02-10T21:44:52.603Z" }, + { url = "https://files.pythonhosted.org/packages/ec/23/2c9fe0c9c27f7f6cb865abcea8a4568f29f00acaeadfc6a37f6801f84cb4/torch-2.10.0-2-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:e521c9f030a3774ed770a9c011751fb47c4d12029a3d6522116e48431f2ff89e", size = 79498254, upload-time = "2026-02-10T21:44:44.095Z" }, + { url = "https://files.pythonhosted.org/packages/76/bb/d820f90e69cda6c8169b32a0c6a3ab7b17bf7990b8f2c680077c24a3c14c/torch-2.10.0-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:35e407430795c8d3edb07a1d711c41cc1f9eaddc8b2f1cc0a165a6767a8fb73d", size = 79411450, upload-time = "2026-01-21T16:25:30.692Z" }, + { url = "https://files.pythonhosted.org/packages/61/d8/15b9d9d3a6b0c01b883787bd056acbe5cc321090d4b216d3ea89a8fcfdf3/torch-2.10.0-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:b7bd80f3477b830dd166c707c5b0b82a898e7b16f59a7d9d42778dd058272e8b", size = 79423461, upload-time = "2026-01-21T16:24:50.266Z" }, + { url = "https://files.pythonhosted.org/packages/c9/5c/dee910b87c4d5c0fcb41b50839ae04df87c1cfc663cf1b5fca7ea565eeaa/torch-2.10.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:6d3707a61863d1c4d6ebba7be4ca320f42b869ee657e9b2c21c736bf17000294", size = 79498198, upload-time = "2026-01-21T16:24:34.704Z" }, + { url = "https://files.pythonhosted.org/packages/1a/0b/39929b148f4824bc3ad6f9f72a29d4ad865bcf7ebfc2fa67584773e083d2/torch-2.10.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:3202429f58309b9fa96a614885eace4b7995729f44beb54d3e4a47773649d382", size = 79851305, upload-time = "2026-01-21T16:24:09.209Z" }, + { url = "https://files.pythonhosted.org/packages/0e/13/e76b4d9c160e89fff48bf16b449ea324bda84745d2ab30294c37c2434c0d/torch-2.10.0-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:cdf2a523d699b70d613243211ecaac14fe9c5df8a0b0a9c02add60fb2a413e0f", size = 79498248, upload-time = "2026-01-21T16:23:09.315Z" }, + { url = "https://files.pythonhosted.org/packages/4f/93/716b5ac0155f1be70ed81bacc21269c3ece8dba0c249b9994094110bfc51/torch-2.10.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:bf0d9ff448b0218e0433aeb198805192346c4fd659c852370d5cc245f602a06a", size = 79464992, upload-time = "2026-01-21T16:23:05.162Z" }, + { url = "https://files.pythonhosted.org/packages/d8/94/71994e7d0d5238393df9732fdab607e37e2b56d26a746cb59fdb415f8966/torch-2.10.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:f5ab4ba32383061be0fb74bda772d470140a12c1c3b58a0cfbf3dae94d164c28", size = 79850324, upload-time = "2026-01-21T16:22:09.494Z" }, +] + [[package]] name = "torch" version = "2.10.0+cpu" source = { registry = "https://download.pytorch.org/whl/cpu" } +resolution-markers = [ + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", +] dependencies = [ { name = "filelock", marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, { name = "fsspec", marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, @@ -6390,12 +6666,90 @@ dependencies = [ { name = "sympy", marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, { name = "typing-extensions", marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, ] +wheels = [ + { url = "https://download.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp310-cp310-win_amd64.whl", hash = "sha256:6c6f0df770144907092a0d067048d96ed4f278a6c840376d2ff0e27e7579b925" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp311-cp311-win_amd64.whl", hash = "sha256:17a09465bab2aab8f0f273410297133d8d8fb6dd84dccbd252ca4a4f3a111847" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp311-cp311-win_arm64.whl", hash = "sha256:c35c0de592941d4944698dbfa87271ab85d3370eca3b694943a2ab307ac34b3f" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:21cb5436978ef47c823b7a813ff0f8c2892e266cfe0f1d944879b5fba81bf4e1" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp312-cp312-win_arm64.whl", hash = "sha256:3eaa727e6a73affa61564d86b9d03191df45c8650d0666bd3d57c8597ef61e78" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp313-cp313-win_amd64.whl", hash = "sha256:b719da5af01b59126ac13eefd6ba3dd12d002dc0e8e79b8b365e55267a8189d3" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp313-cp313-win_arm64.whl", hash = "sha256:b67d91326e4ed9eccbd6b7d84ed7ffa43f93103aa3f0b24145f3001f3b11b714" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp313-cp313t-win_amd64.whl", hash = "sha256:eb1bde1ce198f05c8770017de27e001d404499cf552aaaa014569eff56ca25c0" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp314-cp314-win_amd64.whl", hash = "sha256:2adc71fe471e98a608723bfc837f7e1929885ebb912c693597711e139c1cda41" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.10.0%2Bcpu-cp314-cp314t-win_amd64.whl", hash = "sha256:ffc8da9a1341092d6a90cb5b1c1a33cd61abf0fb43f0cd88443c27fa372c26ae" }, +] + +[[package]] +name = "torch" +version = "2.10.0+cu129" +source = { registry = "https://download.pytorch.org/whl/cu129" } +resolution-markers = [ + "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", +] +dependencies = [ + { name = "cuda-bindings", marker = "sys_platform == 'linux'" }, + { name = "filelock", marker = "sys_platform == 'linux'" }, + { name = "fsspec", marker = "sys_platform == 'linux'" }, + { name = "jinja2", marker = "sys_platform == 'linux'" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and sys_platform == 'linux'" }, + { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'linux'" }, + { name = "nvidia-cublas-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cuda-cupti-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cuda-nvrtc-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cuda-runtime-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cudnn-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cufft-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cufile-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-curand-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cusolver-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cusparse-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cusparselt-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nccl-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nvjitlink-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nvshmem-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nvtx-cu12", marker = "sys_platform == 'linux'" }, + { name = "setuptools", marker = "python_full_version >= '3.12' and sys_platform == 'linux'" }, + { name = "sympy", marker = "sys_platform == 'linux'" }, + { name = "triton", version = "3.6.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'linux'" }, +] +wheels = [ + { url = "https://download.pytorch.org/whl/cu129/torch-2.10.0%2Bcu129-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c7e5664a9cb809920d89c5200a832555d68faa5a00a7056f4365971723b685e" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.10.0%2Bcu129-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:afd73cb16ee6fe7cd86b089822401ca81f587c4425a5e592536e331cfdcece64" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.10.0%2Bcu129-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9e28f146e14173ebe2302088c5745b8c540171ffe4b4225bfbbd8639f7962514" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.10.0%2Bcu129-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ef82198b7b2f271cda50fa1d7ccd69643ac60dc48c7f38a91510c872b9722028" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.10.0%2Bcu129-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:895501ca59670503c00aeca56aa864fe59ebb11bdc919e779683d5ae263a171a" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.10.0%2Bcu129-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:a3c703e74a88cccfeb4b1807c49d563a0a73793ba72d4fa035d4ac5885f3aefd" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.10.0%2Bcu129-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:08dc9eb950efbf2b65a7973e6d00c8c770d697140296841dc3d86cbc8d372a76" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.10.0%2Bcu129-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e116126decbfbd1fc6f8e07c0d1527f014b0b787b50479d84592ccc44870f8d5" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.10.0%2Bcu129-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:426cd15b348547131a3de733056396dea0edfb511cd5e351a6ba9efa561dfb86" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.10.0%2Bcu129-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:3f62b9033869ea62c76edb803b129d4889b4c094d295d86a79cabb4a36a597d9" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.10.0%2Bcu129-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:e9649b8b5cbeee7a237d08c81390bb02f20cab2caa1a8e4f4d96bae3d26a2836" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.10.0%2Bcu129-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:09a88b6a21952bbb664fdd6b2539364aa9e52b9789cc8aa22ed3ccfcd6d3c779" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.10.0%2Bcu129-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:97dec29569355524ae67ef4f7172ab5f367b489bbfcc0ecf29fc07949217eb6d" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.10.0%2Bcu129-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:a12016c1dd639e7063c9067a7d205e7b1ad9423eaca2d267b2a054b29ef8f198" }, +] [[package]] name = "torchao" version = "0.14.0" source = { registry = "https://pypi.org/simple" } wheels = [ + { url = "https://files.pythonhosted.org/packages/28/5a/72d932efcff037fea3466b0e0c9a82d280e9083da10fe79af8505ac71348/torchao-0.14.0-cp310-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3508151beb43ab6dd0f70427389f387cf1cd367f2326e9c6102133991e147b67", size = 7197166, upload-time = "2025-10-13T21:16:39.029Z" }, { url = "https://files.pythonhosted.org/packages/6f/f0/975479131e6d8365854b97334688dd156a6d67824cc24b65a6e661e93800/torchao-0.14.0-py3-none-any.whl", hash = "sha256:c5a939e035f8cc0493f2bb18a3d01c1db8139662f7fcf49a6df84366218aa95e", size = 1067582, upload-time = "2025-10-13T21:16:40.985Z" }, ] @@ -6420,22 +6774,116 @@ version = "0.11.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "requests" }, - { name = "torch", marker = "sys_platform == 'never'" }, + { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", version = "2.10.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, { name = "urllib3" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/95/d4/af694ef718aedbe95a72760ab9ff7a6a7a44ace2d7f70c27bfeb67c5c503/torchdata-0.11.0-py3-none-any.whl", hash = "sha256:52b940fbbe0e00fb21cabddf528449d1bec5bfb0d0823b7487b15f951658ee33", size = 61968, upload-time = "2025-02-20T22:26:30.666Z" }, ] +[[package]] +name = "torchvision" +version = "0.25.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and sys_platform == 'darwin'" }, + { name = "pillow", marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/50/ae/cbf727421eb73f1cf907fbe5788326a08f111b3f6b6ddca15426b53fec9a/torchvision-0.25.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a95c47abb817d4e90ea1a8e57bd0d728e3e6b533b3495ae77d84d883c4d11f56", size = 1874919, upload-time = "2026-01-21T16:27:47.617Z" }, + { url = "https://files.pythonhosted.org/packages/3e/be/c704bceaf11c4f6b19d64337a34a877fcdfe3bd68160a8c9ae9bea4a35a3/torchvision-0.25.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:db74a551946b75d19f9996c419a799ffdf6a223ecf17c656f90da011f1d75b20", size = 1874923, upload-time = "2026-01-21T16:27:46.574Z" }, + { url = "https://files.pythonhosted.org/packages/56/3a/6ea0d73f49a9bef38a1b3a92e8dd455cea58470985d25635beab93841748/torchvision-0.25.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c2abe430c90b1d5e552680037d68da4eb80a5852ebb1c811b2b89d299b10573b", size = 1874920, upload-time = "2026-01-21T16:27:45.348Z" }, + { url = "https://files.pythonhosted.org/packages/f5/5b/1562a04a6a5a4cf8cf40016a0cdeda91ede75d6962cff7f809a85ae966a5/torchvision-0.25.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:24e11199e4d84ba9c5ee7825ebdf1cd37ce8deec225117f10243cae984ced3ec", size = 1874918, upload-time = "2026-01-21T16:27:39.02Z" }, + { url = "https://files.pythonhosted.org/packages/52/99/dca81ed21ebaeff2b67cc9f815a20fdaa418b69f5f9ea4c6ed71721470db/torchvision-0.25.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a8f8061284395ce31bcd460f2169013382ccf411148ceb2ee38e718e9860f5a7", size = 1896209, upload-time = "2026-01-21T16:27:32.159Z" }, + { url = "https://files.pythonhosted.org/packages/9e/1f/fa839532660e2602b7e704d65010787c5bb296258b44fa8b9c1cd6175e7d/torchvision-0.25.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:620a236288d594dcec7634c754484542dc0a5c1b0e0b83a34bda5e91e9b7c3a1", size = 1896193, upload-time = "2026-01-21T16:27:24.785Z" }, + { url = "https://files.pythonhosted.org/packages/97/36/96374a4c7ab50dea9787ce987815614ccfe988a42e10ac1a2e3e5b60319a/torchvision-0.25.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ad9a8a5877782944d99186e4502a614770fe906626d76e9cd32446a0ac3075f2", size = 1896207, upload-time = "2026-01-21T16:27:23.383Z" }, +] + [[package]] name = "torchvision" version = "0.25.0+cpu" source = { registry = "https://download.pytorch.org/whl/cpu" } +resolution-markers = [ + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", +] dependencies = [ { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'linux'" }, { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux'" }, { name = "pillow", marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, - { name = "torch", marker = "sys_platform == 'never'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, +] +wheels = [ + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp310-cp310-win_amd64.whl", hash = "sha256:3e2ae9981e32a5b9db685659d5c7af0f04b159ff20394650a90124baf6ada51a" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp311-cp311-win_amd64.whl", hash = "sha256:c7eb5f219fdfaf1f65e68c00eb81172ab4fa08a9874dae9dad2bca360da34d0f" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:2d444009c0956669ada149f61ed78f257c1cc96d259efa6acf3929ca96ceb3f0" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp313-cp313-win_amd64.whl", hash = "sha256:783c8fc580bbfc159bff52f4f72cdd538e42b32956e70dffa42b940db114e151" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp313-cp313t-win_amd64.whl", hash = "sha256:9212210f417888e6261c040495180f053084812cf873dedba9fc51ff4b24b2d3" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp314-cp314-win_amd64.whl", hash = "sha256:499eae1e535766391b6ee2d1e6e841239c20e2e6d88203a15b8f9f8d60a1f8bd" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.25.0%2Bcpu-cp314-cp314t-win_amd64.whl", hash = "sha256:fb9f07f6a10f0ac24ac482ae68c6df99110b74a0d80a4c64fddc9753267d8815" }, +] + +[[package]] +name = "torchvision" +version = "0.25.0+cu129" +source = { registry = "https://download.pytorch.org/whl/cu129" } +resolution-markers = [ + "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", +] +dependencies = [ + { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and sys_platform == 'linux'" }, + { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' and sys_platform == 'linux'" }, + { name = "pillow", marker = "sys_platform == 'linux'" }, + { name = "torch", version = "2.10.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, +] +wheels = [ + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.25.0%2Bcu129-cp310-cp310-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.25.0%2Bcu129-cp310-cp310-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.25.0%2Bcu129-cp311-cp311-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.25.0%2Bcu129-cp311-cp311-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.25.0%2Bcu129-cp312-cp312-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.25.0%2Bcu129-cp312-cp312-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.25.0%2Bcu129-cp313-cp313-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.25.0%2Bcu129-cp313-cp313-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.25.0%2Bcu129-cp313-cp313t-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.25.0%2Bcu129-cp313-cp313t-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.25.0%2Bcu129-cp314-cp314-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.25.0%2Bcu129-cp314-cp314-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.25.0%2Bcu129-cp314-cp314t-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.25.0%2Bcu129-cp314-cp314t-manylinux_2_28_x86_64.whl" }, ] [[package]] @@ -6458,6 +6906,42 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/00/33/44571ec584c88e1715f4c2afefc0ddd45064c7065ac1c6ffc8e832bc3ba3/transformer_engine-2.11.0-py3-none-any.whl", hash = "sha256:7ee1eae8fa6b0cb471c6066aa3555304fda8537174e5019929dc0c8655071df3", size = 723110, upload-time = "2026-01-02T09:58:23.245Z" }, ] +[package.optional-dependencies] +pytorch = [ + { name = "transformer-engine-torch" }, +] + +[[package]] +name = "transformer-engine-cu12" +version = "2.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata" }, + { name = "packaging" }, + { name = "pydantic" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/27/5c4c27cb245a3513e5ad7ccef50e2e9688996e2cc558edbbb575dfcca276/transformer_engine_cu12-2.11.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:ed5fda0925cb304d6864b451d8d012c579d5bd097bfefefca769b2704b06381a", size = 287630565, upload-time = "2026-01-02T09:56:43.645Z" }, + { url = "https://files.pythonhosted.org/packages/fa/a2/1439bbb6bc7d4d6045bad7d213884f7be92301c0982f009e3bbafa40e4ff/transformer_engine_cu12-2.11.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:6e5c0707583b2a90b2570da6f57409c6802653e069dfec38cf07a3b77ba9b12d", size = 288159349, upload-time = "2026-01-02T09:57:56.435Z" }, +] + +[[package]] +name = "transformer-engine-torch" +version = "2.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "einops" }, + { name = "onnx" }, + { name = "onnxscript" }, + { name = "packaging" }, + { name = "pydantic" }, + { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.10.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "torch", version = "2.10.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, + { name = "transformer-engine-cu12" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/42/068a40f5b213a3a8899e3885eb178776662897abed03cd725953d1106c39/transformer_engine_torch-2.11.0.tar.gz", hash = "sha256:b58d6322bdf885dfab0646da572aff9cf090b332ad470559aa58883c231e1816", size = 242065, upload-time = "2026-01-02T09:58:58.423Z" } + [[package]] name = "transformers" version = "5.0.0" @@ -6484,8 +6968,63 @@ wheels = [ name = "triton" version = "3.4.0" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version >= '3.14' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.13.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version < '3.11' and platform_machine != 'x86_64' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version >= '3.14' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] dependencies = [ - { name = "setuptools", marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "setuptools", marker = "sys_platform != 'linux'" }, +] + +[[package]] +name = "triton" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine == 'x86_64' and sys_platform == 'linux'", + "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'linux'", + "python_full_version < '3.11' and platform_machine != 'aarch64' and platform_machine != 'x86_64' and sys_platform == 'linux'", +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/ba/b1b04f4b291a3205d95ebd24465de0e5bf010a2df27a4e58a9b5f039d8f2/triton-3.6.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c723cfb12f6842a0ae94ac307dba7e7a44741d720a40cf0e270ed4a4e3be781", size = 175972180, upload-time = "2026-01-20T16:15:53.664Z" }, + { url = "https://files.pythonhosted.org/packages/8c/f7/f1c9d3424ab199ac53c2da567b859bcddbb9c9e7154805119f8bd95ec36f/triton-3.6.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a6550fae429e0667e397e5de64b332d1e5695b73650ee75a6146e2e902770bea", size = 188105201, upload-time = "2026-01-20T16:00:29.272Z" }, + { url = "https://files.pythonhosted.org/packages/0f/2c/96f92f3c60387e14cc45aed49487f3486f89ea27106c1b1376913c62abe4/triton-3.6.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49df5ef37379c0c2b5c0012286f80174fcf0e073e5ade1ca9a86c36814553651", size = 176081190, upload-time = "2026-01-20T16:16:00.523Z" }, + { url = "https://files.pythonhosted.org/packages/e0/12/b05ba554d2c623bffa59922b94b0775673de251f468a9609bc9e45de95e9/triton-3.6.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8e323d608e3a9bfcc2d9efcc90ceefb764a82b99dea12a86d643c72539ad5d3", size = 188214640, upload-time = "2026-01-20T16:00:35.869Z" }, + { url = "https://files.pythonhosted.org/packages/17/5d/08201db32823bdf77a0e2b9039540080b2e5c23a20706ddba942924ebcd6/triton-3.6.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:374f52c11a711fd062b4bfbb201fd9ac0a5febd28a96fb41b4a0f51dde3157f4", size = 176128243, upload-time = "2026-01-20T16:16:07.857Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a8/cdf8b3e4c98132f965f88c2313a4b493266832ad47fb52f23d14d4f86bb5/triton-3.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:74caf5e34b66d9f3a429af689c1c7128daba1d8208df60e81106b115c00d6fca", size = 188266850, upload-time = "2026-01-20T16:00:43.041Z" }, + { url = "https://files.pythonhosted.org/packages/3c/12/34d71b350e89a204c2c7777a9bba0dcf2f19a5bfdd70b57c4dbc5ffd7154/triton-3.6.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:448e02fe6dc898e9e5aa89cf0ee5c371e99df5aa5e8ad976a80b93334f3494fd", size = 176133521, upload-time = "2026-01-20T16:16:13.321Z" }, + { url = "https://files.pythonhosted.org/packages/f9/0b/37d991d8c130ce81a8728ae3c25b6e60935838e9be1b58791f5997b24a54/triton-3.6.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:10c7f76c6e72d2ef08df639e3d0d30729112f47a56b0c81672edc05ee5116ac9", size = 188289450, upload-time = "2026-01-20T16:00:49.136Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4e/41b0c8033b503fd3cfcd12392cdd256945026a91ff02452bef40ec34bee7/triton-3.6.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1722e172d34e32abc3eb7711d0025bb69d7959ebea84e3b7f7a341cd7ed694d6", size = 176276087, upload-time = "2026-01-20T16:16:18.989Z" }, + { url = "https://files.pythonhosted.org/packages/35/f8/9c66bfc55361ec6d0e4040a0337fb5924ceb23de4648b8a81ae9d33b2b38/triton-3.6.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d002e07d7180fd65e622134fbd980c9a3d4211fb85224b56a0a0efbd422ab72f", size = 188400296, upload-time = "2026-01-20T16:00:56.042Z" }, + { url = "https://files.pythonhosted.org/packages/49/55/5ecf0dcaa0f2fbbd4420f7ef227ee3cb172e91e5fede9d0ecaddc43363b4/triton-3.6.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef5523241e7d1abca00f1d240949eebdd7c673b005edbbce0aca95b8191f1d43", size = 176138577, upload-time = "2026-01-20T16:16:25.426Z" }, + { url = "https://files.pythonhosted.org/packages/df/3d/9e7eee57b37c80cec63322c0231bb6da3cfe535a91d7a4d64896fcb89357/triton-3.6.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a17a5d5985f0ac494ed8a8e54568f092f7057ef60e1b0fa09d3fd1512064e803", size = 188273063, upload-time = "2026-01-20T16:01:07.278Z" }, + { url = "https://files.pythonhosted.org/packages/48/db/56ee649cab5eaff4757541325aca81f52d02d4a7cd3506776cad2451e060/triton-3.6.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b3a97e8ed304dfa9bd23bb41ca04cdf6b2e617d5e782a8653d616037a5d537d", size = 176274804, upload-time = "2026-01-20T16:16:31.528Z" }, + { url = "https://files.pythonhosted.org/packages/f6/56/6113c23ff46c00aae423333eb58b3e60bdfe9179d542781955a5e1514cb3/triton-3.6.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:46bd1c1af4b6704e554cad2eeb3b0a6513a980d470ccfa63189737340c7746a7", size = 188397994, upload-time = "2026-01-20T16:01:14.236Z" }, ] [[package]] From 755c1347e806ed6f1aca81bab98abcd7a18cde56 Mon Sep 17 00:00:00 2001 From: Pranav Prashant Thombre Date: Sun, 8 Mar 2026 15:46:03 -0700 Subject: [PATCH 7/8] Fix linting errors Signed-off-by: Pranav Prashant Thombre --- nemo_automodel/components/datasets/diffusion/__init__.py | 5 ++++- nemo_automodel/recipes/base_recipe.py | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/nemo_automodel/components/datasets/diffusion/__init__.py b/nemo_automodel/components/datasets/diffusion/__init__.py index 2e829606c..650905b2c 100644 --- a/nemo_automodel/components/datasets/diffusion/__init__.py +++ b/nemo_automodel/components/datasets/diffusion/__init__.py @@ -31,7 +31,10 @@ "collate_fn_video": (".collate_fns", "collate_fn_video"), "collate_fn_production": (".collate_fns", "collate_fn_production"), # Dataloader builders - "build_text_to_image_multiresolution_dataloader": (".collate_fns", "build_text_to_image_multiresolution_dataloader"), + "build_text_to_image_multiresolution_dataloader": ( + ".collate_fns", + "build_text_to_image_multiresolution_dataloader", + ), "build_video_multiresolution_dataloader": (".collate_fns", "build_video_multiresolution_dataloader"), # Legacy (non-multiresolution) "build_dataloader": (".meta_files_dataset", "build_dataloader"), diff --git a/nemo_automodel/recipes/base_recipe.py b/nemo_automodel/recipes/base_recipe.py index b66ca0386..15bb9e601 100644 --- a/nemo_automodel/recipes/base_recipe.py +++ b/nemo_automodel/recipes/base_recipe.py @@ -354,12 +354,15 @@ def to_item(x): # Models with HFCheckpointingMixin route save_pretrained through checkpointer.save_model (DCP). # Models without it (e.g. diffusers) would use their native save_pretrained which fails on # FSDP2-sharded DTensors, so fall back to checkpointer.save_model directly. - if hasattr(unwrapped_model, 'save_pretrained') and hasattr(unwrapped_model.save_pretrained, '__func__'): + if hasattr(unwrapped_model, "save_pretrained") and hasattr(unwrapped_model.save_pretrained, "__func__"): from nemo_automodel.components.models.common.hf_checkpointing_mixin import HFCheckpointingMixin if isinstance(unwrapped_model, HFCheckpointingMixin): unwrapped_model.save_pretrained( - save_directory=path, checkpointer=self.checkpointer, tokenizer=tokenizer, peft_config=self.peft_config + save_directory=path, + checkpointer=self.checkpointer, + tokenizer=tokenizer, + peft_config=self.peft_config, ) else: self.checkpointer.save_model( From 4b147fcd4c3e7c4e78aa5ae26d0b732f49bac666 Mon Sep 17 00:00:00 2001 From: Pranav Prashant Thombre Date: Mon, 9 Mar 2026 11:31:57 -0700 Subject: [PATCH 8/8] Fix dataloader unit tests Signed-off-by: Pranav Prashant Thombre --- .../datasets/diffusion/test_dataloader.py | 45 ++++++++++--------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/tests/unit_tests/datasets/diffusion/test_dataloader.py b/tests/unit_tests/datasets/diffusion/test_dataloader.py index 47421039d..58982ce84 100644 --- a/tests/unit_tests/datasets/diffusion/test_dataloader.py +++ b/tests/unit_tests/datasets/diffusion/test_dataloader.py @@ -184,7 +184,7 @@ def test_sampler_init_basic(self, simple_dataset): """Test basic sampler initialization.""" sampler = SequentialBucketSampler( simple_dataset, - batch_size=4, + base_batch_size=4, num_replicas=1, rank=0, ) @@ -198,7 +198,7 @@ def test_sampler_len(self, simple_dataset): """Test sampler __len__ returns correct batch count.""" sampler = SequentialBucketSampler( simple_dataset, - batch_size=4, + base_batch_size=4, num_replicas=1, rank=0, ) @@ -211,7 +211,7 @@ def test_sampler_iter_yields_batches(self, simple_dataset): """Test sampler iteration yields batches of indices.""" sampler = SequentialBucketSampler( simple_dataset, - batch_size=4, + base_batch_size=4, num_replicas=1, rank=0, ) @@ -228,7 +228,7 @@ def test_sampler_batch_size_respected(self, simple_dataset): batch_size = 4 sampler = SequentialBucketSampler( simple_dataset, - batch_size=batch_size, + base_batch_size=batch_size, num_replicas=1, rank=0, drop_last=True, @@ -243,7 +243,7 @@ def test_sampler_drop_last_false(self, simple_dataset): """Test sampler with drop_last=False includes all samples.""" sampler = SequentialBucketSampler( simple_dataset, - batch_size=4, + base_batch_size=4, num_replicas=1, rank=0, drop_last=False, @@ -259,7 +259,7 @@ def test_sampler_set_epoch(self, simple_dataset): """Test set_epoch changes sampler state.""" sampler = SequentialBucketSampler( simple_dataset, - batch_size=4, + base_batch_size=4, num_replicas=1, rank=0, ) @@ -272,7 +272,7 @@ def test_sampler_deterministic_shuffling(self, simple_dataset): """Test same seed produces same batch order.""" sampler1 = SequentialBucketSampler( simple_dataset, - batch_size=4, + base_batch_size=4, num_replicas=1, rank=0, seed=42, @@ -280,7 +280,7 @@ def test_sampler_deterministic_shuffling(self, simple_dataset): sampler2 = SequentialBucketSampler( simple_dataset, - batch_size=4, + base_batch_size=4, num_replicas=1, rank=0, seed=42, @@ -295,7 +295,7 @@ def test_sampler_different_seeds_different_order(self, simple_dataset): """Test different seeds produce different batch orders.""" sampler1 = SequentialBucketSampler( simple_dataset, - batch_size=4, + base_batch_size=4, num_replicas=1, rank=0, seed=42, @@ -304,7 +304,7 @@ def test_sampler_different_seeds_different_order(self, simple_dataset): sampler2 = SequentialBucketSampler( simple_dataset, - batch_size=4, + base_batch_size=4, num_replicas=1, rank=0, seed=123, @@ -323,7 +323,7 @@ def test_sampler_no_shuffle(self, simple_dataset): """Test sampler without shuffling.""" sampler = SequentialBucketSampler( simple_dataset, - batch_size=4, + base_batch_size=4, num_replicas=1, rank=0, shuffle_buckets=False, @@ -337,7 +337,7 @@ def test_sampler_different_order_across_epochs(self, large_dataset): """Test that bucket and element order differs across epochs.""" sampler = SequentialBucketSampler( large_dataset, - batch_size=8, + base_batch_size=8, num_replicas=1, rank=0, seed=42, @@ -382,7 +382,7 @@ def test_sampler_dynamic_batch_size_disabled(self, multi_resolution_dataset): batch_size = 4 sampler = SequentialBucketSampler( multi_resolution_dataset, - batch_size=batch_size, + base_batch_size=batch_size, dynamic_batch_size=False, num_replicas=1, rank=0, @@ -398,7 +398,7 @@ def test_sampler_dynamic_batch_size_enabled(self, multi_resolution_dataset): """Test sampler with dynamic_batch_size=True varies batch size.""" sampler = SequentialBucketSampler( multi_resolution_dataset, - batch_size=8, + base_batch_size=8, base_resolution=(512, 512), dynamic_batch_size=True, num_replicas=1, @@ -419,7 +419,7 @@ def test_sampler_get_batch_info(self, simple_dataset): """Test get_batch_info returns bucket information.""" sampler = SequentialBucketSampler( simple_dataset, - batch_size=4, + base_batch_size=4, num_replicas=1, rank=0, ) @@ -444,7 +444,7 @@ def test_multi_rank_same_batch_count(self, large_dataset): for rank in range(world_size): sampler = SequentialBucketSampler( large_dataset, - batch_size=8, + base_batch_size=8, num_replicas=world_size, rank=rank, ) @@ -459,7 +459,7 @@ def test_multi_rank_different_samples(self, large_dataset): sampler0 = SequentialBucketSampler( large_dataset, - batch_size=8, + base_batch_size=8, num_replicas=world_size, rank=0, seed=42, @@ -467,7 +467,7 @@ def test_multi_rank_different_samples(self, large_dataset): sampler1 = SequentialBucketSampler( large_dataset, - batch_size=8, + base_batch_size=8, num_replicas=world_size, rank=1, seed=42, @@ -488,7 +488,7 @@ def test_single_rank_equivalent(self, simple_dataset): """Test single rank (world_size=1) processes all data.""" sampler = SequentialBucketSampler( simple_dataset, - batch_size=4, + base_batch_size=4, num_replicas=1, rank=0, ) @@ -695,7 +695,7 @@ def test_sampler_with_gpu_tensors(self, simple_dataset): sampler = SequentialBucketSampler( simple_dataset, - batch_size=4, + base_batch_size=4, num_replicas=1, rank=0, ) @@ -858,6 +858,7 @@ def test_dataloader_multi_gpu_simulation(self, large_dataset): dataloaders = [] for rank in range(min(gpu_count, 2)): # Use up to 2 GPUs for test dl, _ = _build_multiresolution_dataloader_core( + collate_fn=collate_fn_production, dataset=large_dataset, batch_size=8, dp_rank=rank, @@ -979,7 +980,7 @@ def test_deterministic_across_ranks(self, large_dataset): # Create samplers for two ranks sampler0 = SequentialBucketSampler( large_dataset, - batch_size=8, + base_batch_size=8, num_replicas=world_size, rank=0, seed=seed, @@ -987,7 +988,7 @@ def test_deterministic_across_ranks(self, large_dataset): sampler1 = SequentialBucketSampler( large_dataset, - batch_size=8, + base_batch_size=8, num_replicas=world_size, rank=1, seed=seed,