Skip to navigation

nemo_automodel.components.loss.linear_ce

View as Markdown

Module Contents

Classes

NameDescription
FusedLinearCrossEntropyFused linear-projection and cross-entropy loss module.

Functions

NameDescription
_get_triton_version-
new_is_triton_greater_or_equalCheck if pytorch-triton/triton version is greater than or equal to the specified version.
new_is_triton_greater_or_equal_3_2_0Check if pytorch-triton/triton version is greater than or equal to 3.1.0.

Data

HAVE_CUT_CROSS_ENTROPY

API

class nemo_automodel.components.loss.linear_ce.FusedLinearCrossEntropy(
ignore_index: int = -100,
logit_softcapping: float = 0,
reduction: str = 'sum',
impl: typing.Literal['cce', 'torch_compile'] = 'cce'
)

Bases: LinearCrossEntropy

Fused linear-projection and cross-entropy loss module.

nemo_automodel.components.loss.linear_ce.FusedLinearCrossEntropy.forward(
hidden_states: torch.Tensor,
labels: torch.Tensor,
lm_weight: torch.Tensor,
num_label_tokens: int | None = None,
grad_reduce_group: torch.distributed.ProcessGroup | None = None,
loss_weights: torch.Tensor | None = None
) -> torch.Tensor

Compute fused linear cross entropy matching PyTorch behavior.

Parameters:

hidden_states
torch.Tensor

Rank-local hidden states with shape [batch, sequence, hidden].

labels
torch.Tensor

Rank-local target token IDs with shape [batch, sequence].

lm_weight
torch.Tensor

LM-head weight with global shape [vocab, hidden]. It may be a regular tensor or an FSDP-sharded DTensor.

num_label_tokens
int | NoneDefaults to None

Global number of non-padding target tokens used to normalize a sum-reduced loss.

grad_reduce_group
dist.ProcessGroup | NoneDefaults to None

Group that contributes independent loss shards when lm_weight is a sharded DTensor.

loss_weights
torch.Tensor | NoneDefaults to None

Optional per-token multipliers matching labels.shape. Only supported with reduction="sum".

Returns: torch.Tensor

Scalar loss tensor on the same device as hidden_states. The

nemo_automodel.components.loss.linear_ce._get_triton_version()
nemo_automodel.components.loss.linear_ce.new_is_triton_greater_or_equal(
version_str
)

Check if pytorch-triton/triton version is greater than or equal to the specified version.

Parameters:

version_str

Version string to check

Returns:

True if pytorch-triton/triton version >= specified version

nemo_automodel.components.loss.linear_ce.new_is_triton_greater_or_equal_3_2_0()

Check if pytorch-triton/triton version is greater than or equal to 3.1.0.

Returns:

True if pytorch-triton/triton version >= 3.1.0

nemo_automodel.components.loss.linear_ce.HAVE_CUT_CROSS_ENTROPY = True