bridge.models.diffusion_gemma.diffusion_gemma_step#
Megatron forward/loss step for DiffusionGemma uniform-state diffusion SFT.
Batch contract (prompt left-padded, canvas right-padded)::
input_ids [B, P] encoder prompt, including image placeholder tokens
attention_mask [B, P] 1 for real prompt tokens, 0 for padding
canvas_ids [B, L] clean target tokens x0, EOS-terminated
canvas_mask [B, L] 1 for scored target tokens, 0 for padding
position_ids [B, P] optional
pixel_values, image_position_ids, mm_token_type_ids optional image inputs
Optional deterministic overrides, mainly for parity tests:
diffusion_t [B], noisy_canvas_ids [B, L], self_conditioning_mask [B].
Module Contents#
Functions#
Sample one time per example and replace valid tokens uniformly with probability |
|
Return Megatron’s |
|
Load a DiffusionGemma batch and move tensors to the current CUDA device. |
|
Return this phase’s microbatch index, restarting whenever the step changes. |
|
Derive a deterministic 63-bit RNG seed for one microbatch on one DP rank. |
|
Return a CUDA RNG keyed by (seed, phase, step, microbatch, DP rank). |
|
Corrupt the target canvas, run one DiffusionGemma forward, and return its loss. |
Data#
API#
- bridge.models.diffusion_gemma.diffusion_gemma_step._BATCH_KEYS#
(‘input_ids’, ‘attention_mask’, ‘position_ids’, ‘pixel_values’, ‘image_position_ids’, ‘mm_token_type…
- bridge.models.diffusion_gemma.diffusion_gemma_step.corrupt_canvas(
- x0: torch.Tensor,
- canvas_mask: torch.Tensor,
- *,
- vocab_size: int,
- noise_min: float = 0.001,
- noise_max: float = 1.0 - 0.001,
- generator: torch.Generator | None = None,
Sample one time per example and replace valid tokens uniformly with probability
t.
- bridge.models.diffusion_gemma.diffusion_gemma_step.diffusion_loss_function(
- output_tensor: tuple[torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor],
- *,
- variant: str,
- vocab_size: int,
- diffusion_weight_clip: float | None = None,
- check_for_nan_in_loss: bool = True,
- check_for_spiky_loss: bool = False,
- decoder_loss_weight: float = 1.0,
- encoder_loss_weight: float = 1.0,
Return Megatron’s
(sum_loss, denominator, metrics)contract.DiffGemma averages loss per example, so the denominator is the number of examples. Megatron divides by it (or reduces it globally when
calculate_per_token_lossis enabled), preserving the reference mean.
- bridge.models.diffusion_gemma.diffusion_gemma_step.get_batch_from_iterator(
- data_iterator: Iterable,
- *,
- is_first_pp_stage: bool = True,
- is_last_pp_stage: bool = True,
Load a DiffusionGemma batch and move tensors to the current CUDA device.
- bridge.models.diffusion_gemma.diffusion_gemma_step._MICROBATCH_COUNTERS: dict[str, dict[str, int | None]]#
None
- bridge.models.diffusion_gemma.diffusion_gemma_step.next_microbatch_index(mode: str, step: int) int#
Return this phase’s microbatch index, restarting whenever the step changes.
Train and eval keep separate counters. A validation pass inside step
Nmust not shift the noise that training stepNlater draws, otherwise a run resumed from a checkpoint (fresh counters) would diverge from the uninterrupted run.
- bridge.models.diffusion_gemma.diffusion_gemma_step.noise_seed(
- *,
- seed: int,
- mode: str,
- step: int,
- microbatch: int,
- dp_rank: int,
Derive a deterministic 63-bit RNG seed for one microbatch on one DP rank.
- bridge.models.diffusion_gemma.diffusion_gemma_step._noise_generator(
- state: megatron.bridge.training.state.GlobalState,
- model: Any,
Return a CUDA RNG keyed by (seed, phase, step, microbatch, DP rank).
TP/EP peers in one data-parallel replica draw identical noise; DP replicas draw distinct noise. Keying by training step makes resumed runs reproduce the original corruption without checkpointing generator state.
- bridge.models.diffusion_gemma.diffusion_gemma_step._diffusion_setting(
- config: Any,
- name: str,
- default: Any,
- bridge.models.diffusion_gemma.diffusion_gemma_step.forward_step(
- state: megatron.bridge.training.state.GlobalState,
- data_iterator: Iterable,
- model: Any,
Corrupt the target canvas, run one DiffusionGemma forward, and return its loss.