> This page is for version 0.5.0 · 26.06.
> For other versions, use one of these documentation indexes:
> - Nightly (default): https://docs.nvidia.com/nemo/automodel/nightly/llms.txt
> - Latest: https://docs.nvidia.com/nemo/automodel/latest/llms.txt
> - 0.5.0 · 26.06: https://docs.nvidia.com/nemo/automodel/v0.5/llms.txt
> - 0.4.0 · 26.04: https://docs.nvidia.com/nemo/automodel/v0.4/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/automodel/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/automodel/_mcp/server.

# nemo_automodel.components.models.qwen2

Custom Qwen2 model implementation for NeMo Automodel.

## Submodules

* **[`nemo_automodel.components.models.qwen2.model`](/nemo-automodel/nemo_automodel/components/models/qwen2/model)**

## Package Contents

### Classes

| Name                                                                                 | Description                                     |
| ------------------------------------------------------------------------------------ | ----------------------------------------------- |
| [`Qwen2ForCausalLM`](#nemo_automodel-components-models-qwen2-model-Qwen2ForCausalLM) | Qwen2 model with causal language modeling head. |

### API

```python
class nemo_automodel.components.models.qwen2.model.Qwen2ForCausalLM(
    config: transformers.Qwen2Config,
    backend: nemo_automodel.components.models.common.BackendConfig | None = None
)
```

**Bases:** [HFCheckpointingMixin](/nemo-automodel/nemo_automodel/components/models/common/hf_checkpointing_mixin#nemo_automodel-components-models-common-hf_checkpointing_mixin-HFCheckpointingMixin), [Qwen2PreTrainedModel](#nemo_automodel-components-models-qwen2-model-Qwen2PreTrainedModel)

Qwen2 model with causal language modeling head.

Uses separate q/k/v and gate/up projections -- HuggingFace layout.

**`_pp_plan`** `= {'lm_head': (['hidden_states'], ['logits'])}`

---

**`_tied_weights_keys`** `= {'lm_head.weight': 'model.embed_tokens.weight'}`

---

**`_tp_plan`** `= {'lm_head': 'colwise_rep'}`

---

**`_uses_hf_attention`** `bool`

BSHD and NEAT use HF dispatch; TE handles only pre-packed THD.

---

**`backend`** `= backend or BackendConfig()`

---

**`lm_head`**

---

**`model`** `= Qwen2Model(config=config, backend=(self.backend))`

---

**`tie_word_embeddings_support`** `TieSupport = TieSupport.BOTH`

---

**`vocab_size`** `= config.vocab_size`

---

```python
nemo_automodel.components.models.qwen2.model.Qwen2ForCausalLM.forward(
    input_ids: torch.LongTensor | None = None,
    attention_mask: torch.Tensor | None = None,
    position_ids: torch.LongTensor | None = None,
    past_key_values: transformers.cache_utils.Cache | None = None,
    inputs_embeds: torch.FloatTensor | None = None,
    labels: torch.LongTensor | None = None,
    use_cache: bool | None = None,
    output_attentions: bool | None = None,
    output_hidden_states: bool | None = None,
    return_dict: bool | None = None,
    cache_position: torch.LongTensor | None = None,
    logits_to_keep: typing.Union[int, torch.Tensor] = 0,
    kwargs: transformers.processing_utils.Unpack[transformers.utils.TransformersKwargs] = {}
) -> transformers.modeling_outputs.CausalLMOutputWithPast
```

Run causal LM projection for BSHD or packed THD inputs.

**Parameters:**

**`input_ids`** `torch.LongTensor | None` — default: None

Token IDs `[B, S]` or packed local IDs `[T]`.

---

**`attention_mask`** `torch.Tensor | None` — default: None

Optional padded mask. THD uses `cu_seqlens`.

---

**`position_ids`** `torch.LongTensor | None` — default: None

Position IDs `[B, S]` or packed local IDs `[T]`.

---

**`past_key_values`** `Cache | None` — default: None

Optional BSHD KV cache; unsupported for THD.

---

**`inputs_embeds`** `torch.FloatTensor | None` — default: None

Optional hidden inputs `[B, S, H]` or `[T, H]`.

---

**`labels`** `torch.LongTensor | None` — default: None

Optional labels `[B, S]` or packed `[T]`.

---

**`use_cache`** `bool | None` — default: None

Whether to update the BSHD KV cache.

---

**`output_attentions`** `bool | None` — default: None

Whether to request attention outputs.

---

**`output_hidden_states`** `bool | None` — default: None

Whether to return per-layer hidden states.

---

**`return_dict`** `bool | None` — default: None

Whether to return `CausalLMOutputWithPast`.

---

**`cache_position`** `torch.LongTensor | None` — default: None

Optional BSHD cache positions `[S]`.

---

**`logits_to_keep`** `Union[int, torch.Tensor]` — default: 0

Positions to project from hidden size `H` to
vocabulary size `V`.

---

**`**kwargs`** `Unpack[TransformersKwargs]` — default: \{}

THD metadata. `cu_seqlens` is `[N + 1]` and CP adds
`cp_size` and `cp_rank`.

---

**Returns:** `CausalLMOutputWithPast`

Causal LM output with BSHD logits `[B, S, V]`. Packed local

```python
nemo_automodel.components.models.qwen2.model.Qwen2ForCausalLM.get_input_embeddings()
```

```python
nemo_automodel.components.models.qwen2.model.Qwen2ForCausalLM.get_output_embeddings()
```

```python
nemo_automodel.components.models.qwen2.model.Qwen2ForCausalLM.set_input_embeddings(
    value
)
```

```python
nemo_automodel.components.models.qwen2.model.Qwen2ForCausalLM.set_output_embeddings(
    new_embeddings
)
```

```python
nemo_automodel.components.models.qwen2.model.Qwen2ForCausalLM.tie_weights(
    _args: object = (),
    _kwargs: object = {}
) -> None
```