dwehr's picture
Migrate action viewer to local Cosmos generation
9f818c5
Raw
History Blame Contribute Delete
2.12 kB
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: OpenMDW-1.1
"""User-facing parallelism degrees shared by VFM and VLM trainers."""
import attrs
import torch
# Canonical mapping from precision string (used in user-facing configs and
# threaded through OmegaConf) to ``torch.dtype``. Consumed by sites that
# need to translate ``precision`` / ``fsdp_master_dtype`` into concrete
# torch dtypes (e.g. ``MixedPrecisionPolicy``, ``HFModel`` meta-init).
PRECISION_TO_TORCH_DTYPE: dict[str, torch.dtype] = {
"bfloat16": torch.bfloat16,
"float16": torch.float16,
"float32": torch.float32,
}
@attrs.define(slots=False)
class ParallelismConfig:
# Number of ranks for sharding the model weights (FSDP). The default -1
# auto-infers to world_size at runtime via ParallelDims.
data_parallel_shard_degree: int = -1
# Number of ranks for replicating the model weights (HSDP outer dim).
# data_parallel_replicate_degree x data_parallel_shard_degree must divide
# world_size when both are explicitly set.
data_parallel_replicate_degree: int = 1
# Number of ranks for context parallelism.
context_parallel_shard_degree: int = 1
# Number of ranks for CFG parallelism.
cfg_parallel_shard_degree: int = 1
# Inference-mode mesh toggle for ParallelDims.
enable_inference_mode: bool = False
# Dtype of the FSDP-sharded "master" parameter copy: what nn.Parameter.data
# holds on each rank, what the optimizer reads/writes against, and what the
# cross-rank gradient reduce-scatter accumulates into. Threaded both to the
# HFModel meta-init (sharded-param storage dtype) and to
# MixedPrecisionPolicy.reduce_dtype (gradient comm dtype); these must match
# because the reduced gradient writes back into the master param's shard.
# The forward/backward compute dtype is the separate ``precision`` field on
# the model config (mapped to MixedPrecisionPolicy.param_dtype).
# NOTE: only used in VLM; VFM has no FSDP master.
fsdp_master_dtype: str = "float32"