core.distributed.fsdp.src.megatron_fsdp.experimental.fully_shard#
Minimal Megatron-FSDP fully_shard entrypoint.
Module Contents#
Functions#
Apply FSDP to a module in place. |
|
Mark an FSDP microbatch as the last accumulation microbatch. |
|
API#
- core.distributed.fsdp.src.megatron_fsdp.experimental.fully_shard.fully_shard(
- module: torch.nn.Module,
- mesh: torch.distributed.DeviceMesh,
- placements: core.distributed.fsdp.src.megatron_fsdp.experimental.placement.Placements,
- mixed_precision_policy: core.distributed.fsdp.src.megatron_fsdp.mixed_precision.MixedPrecisionPolicy | None = None,
- use_symm_mem: bool = False,
Apply FSDP to a module in place.
This attaches the FSDP mixin to the original module instance, so parent modules do not need to replace existing child-module references.
- Parameters:
module – Module whose currently unowned parameters are managed by FSDP.
mesh – Device mesh used for sharding.
placements – Parameter, gradient, and optimizer placements.
mixed_precision_policy – Optional precision policy. Defaults to FP32 main weights and parameter-dtype main gradients.
use_symm_mem – Allocate all-gather and reduce-scatter staging buffers from PyTorch’s NCCL symmetric-memory pool.
- core.distributed.fsdp.src.megatron_fsdp.experimental.fully_shard.microbatch(
- module: torch.nn.Module,
- is_last: bool,
Mark an FSDP microbatch as the last accumulation microbatch.
At present, this is only needed for HSDP/HFSDP gradient accumulation, so FSDP finalizes gradients only on the last backward. Plain all-Flat data parallelism finalizes gradients on every backward and does not need it.
- Parameters:
module – Module tree whose FSDP roots should use this microbatch state.
is_last – Whether forwards in this scope are for the last microbatch.
- core.distributed.fsdp.src.megatron_fsdp.experimental.fully_shard._attach_mixin(module: torch.nn.Module) None#
- core.distributed.fsdp.src.megatron_fsdp.experimental.fully_shard._collect_fsdp_contexts(
- module: torch.nn.Module,
- contexts: list[core.distributed.fsdp.src.megatron_fsdp.experimental.module.FsdpContext],