> 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.deepseek_v4.kernels.tilelang_indexer

TileLang-based DSA Indexer for DeepSeek-V4.

Adapts GLM-5's lighting\_indexer to V4's SBHD data layout and causal masking.
Provides both a low-level per-sample interface and a batched autograd Function.

## Module Contents

### Classes

| Name                                                                                                            | Description                                |
| --------------------------------------------------------------------------------------------------------------- | ------------------------------------------ |
| [`V4IndexerFunction`](#nemo_automodel-components-models-deepseek_v4-kernels-tilelang_indexer-V4IndexerFunction) | Autograd function for V4 tilelang indexer. |

### Functions

| Name                                                                                                                                | Description                               |
| ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- |
| [`pytorch_extract_topk_scores`](#nemo_automodel-components-models-deepseek_v4-kernels-tilelang_indexer-pytorch_extract_topk_scores) | -                                         |
| [`v4_lighting_indexer`](#nemo_automodel-components-models-deepseek_v4-kernels-tilelang_indexer-v4_lighting_indexer)                 | Main entry point for V4 tilelang indexer. |

### API

```python
class nemo_automodel.components.models.deepseek_v4.kernels.tilelang_indexer.V4IndexerFunction()
```

**Bases:** `Function`

Autograd function for V4 tilelang indexer.

Inputs are in V4's native SBHD layout:
q:       \[seqlen, batch, heads, dim]  bf16
k:       \[seqlen\_kv, batch, dim]      bf16
weights: \[seqlen, batch, heads]        fp32

```python
nemo_automodel.components.models.deepseek_v4.kernels.tilelang_indexer.V4IndexerFunction.backward(
    ctx,
    grad_scores,
    grad_indices
)
```

staticmethod

```python
nemo_automodel.components.models.deepseek_v4.kernels.tilelang_indexer.V4IndexerFunction.forward(
    ctx,
    index_q: torch.Tensor,
    index_k: torch.Tensor,
    weights: torch.Tensor,
    compress_ratio: int,
    topk: int,
    topk_indices: torch.Tensor | None = None
)
```

staticmethod

```python
nemo_automodel.components.models.deepseek_v4.kernels.tilelang_indexer.pytorch_extract_topk_scores(
    logits,
    topk_indices,
    dim = -1
)
```

```python
nemo_automodel.components.models.deepseek_v4.kernels.tilelang_indexer.v4_lighting_indexer(
    index_q: torch.Tensor,
    index_k: torch.Tensor,
    weights: torch.Tensor,
    compress_ratio: int,
    topk: int,
    topk_indices: torch.Tensor | None = None
)
```

Main entry point for V4 tilelang indexer.

**Parameters:**

\[seqlen, batch, heads, dim]  bf16

\[seqlen\_kv, batch, dim]      bf16

\[seqlen, batch, heads]        fp32

compression ratio (4 for C4 layers)

number of top-k indices to select

optional pre-computed topk indices \[batch, seqlen, topk] int32

**Returns:**

\[batch, seqlen, topk] fp32