[Bug] `tilelang==0.1.11` pin in the `automodel` extra is x86-only; on aarch64 (GB200) the Automodel venv gets tilelang 0.1.12, `tile_kernels` cannot import, and DeepSeek-V4.1 training fails at the first forward
Maintainers usually reply within 2 days
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 35/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Domain
- build-system
Research direction
The fix lives in pyproject.toml: the automodel and sglang extras pin tilelang==0.1.11 only when platform_machine is x86_64. Read the markers there and the aarch64 resolution recorded in uv.lock. Done means the marker also matches aarch64 and the lock is regenerated; PR #4755 already exists, so review or verify that PR rather than starting a new change.
Written by the indexing model from the issue text.
Description
Describe the bug
pyproject.toml pins TileLang for the Automodel worker venv only on x86:
automodel = [
...
# Automodel's FLA kernels require this TileLang version on Hopper.
# Keep this scoped to the automodel fork; sglang intentionally pins TileLang 0.1.8.
"tilelang==0.1.11; sys_platform == 'linux' and platform_machine == 'x86_64'",
The base dependency allows tilelang>=0.1.9,<0.1.13 on both architectures and the vllm extra pins 0.1.12, so on
aarch64 the automodel venv resolves tilelang 0.1.12 (uv.lock on main: tilelang 0.1.12 for
platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel').
nemo-automodel[moe] pins tile-kernels==1.0.0, and tile_kernels/__init__.py cannot be imported on tilelang 0.1.12:
File ".../site-packages/tile_kernels/quant/common.py", line 7, in <module>
from tilelang.utils.target import determine_target
ModuleNotFoundError: No module named 'tilelang.utils.target'
(determine_target moved to tilelang.backend.target in 0.1.12 — deepseek-ai/TileKernels#24, open since July.)
Automodel wraps that import in safe_import_from, so _HAS_TILE_KERNELS_SINKHORN silently becomes False. For
DeepSeek-V4.1 that is fatal: deepseek_v41/model.py forces sinkhorn_backend="tilelang" whenever backend.attn == "tilelang" (the recipe setting), and the first policy forward (log-prob computation of step 1) raises
RuntimeError: dsv4 sinkhorn TileLang backend was requested, but the optional kernel is unavailable or inputs do not satisfy CUDA tensors.
File ".../nemo_automodel/components/models/deepseek_v41/layers.py", line 114, in forward
File ".../nemo_automodel/components/models/deepseek_v4/optimized_kernels.py", line 194, in dsv4_sinkhorn_normalize
File ".../nemo_automodel/components/models/deepseek_v4/optimized_kernels.py", line 124, in _should_use_tilelang
The pin's own rationale ("Automodel's FLA kernels require this TileLang version") is not architecture-specific, and
Automodel main additionally caps apache-tvm-ffi<=0.1.11 because 0.1.12 "double-registers TVM FFI TypeAttrs and
SIGABRTs the tilelang kernels" — a second reason to keep the Automodel venv on the 0.1.11 stack on every architecture.
The same x86-only marker is on the sglang extra's tilelang==0.1.11 line.
Steps/Code to reproduce bug
On an aarch64 host (GB200), from a main checkout:
uv sync --frozen --extra automodel
uv run --extra automodel python - <<'PY'
import tilelang; print(tilelang.__version__) # 0.1.12
import tile_kernels # ModuleNotFoundError: tilelang.utils.target
PY
End to end: examples/configs/recipes/llm/dapo-deepseek-v4.1-12n4g-fsdp2tp1-ep48-colocated-stream-adam.yaml
(branch deepseek-v4.1-support, 12 × 4 GB200) fails in policy.get_logprobs of step 1 with the error above.
Installing tilelang==0.1.11 into the Automodel venv (uv pip install --no-deps tilelang==0.1.11) makes
tile_kernels import and the recipe trains (31 steps, three validations, on our cluster).
Expected behavior
The automodel (and sglang) extras should pin tilelang==0.1.11 on aarch64 as well:
"tilelang==0.1.11; sys_platform == 'linux' and (platform_machine == 'x86_64' or platform_machine == 'aarch64')",
(or drop the platform_machine clause entirely, as the vllm extra already does for 0.1.12), and uv.lock
regenerated. A PR with this change is attached.
Environment overview
- NeMo RL
deepseek-v4.1-support@8e056c2f(same pyproject lines onmain@540d2568, 2026-10-16) - aarch64 GB200 NVL72, 4 GPUs per node; container derived from
nvcr.io/nvidia/nemo-rl:v0.7.0with the branch's venvs
rebuilt byuv sync --frozen(uv 0.11.28, Python 3.13.14) - Automodel venv: torch 2.11.0+cu130, nemo-automodel 0.7.0+aef1fbfc, tile-kernels 1.0.0, tilelang 0.1.12 (broken) /
0.1.11 (working)
Additional context
- deepseek-ai/TileKernels#24 tracks the import failure; tile-kernels 2.0.0/2.1.0 (2026-09-30 / 2026-10-14) move to
tilelang>=0.1.15andtorch>=2.13, so they are not a drop-in replacement for the 1.0.0 pin. - x86 Hopper users never see this because the marker matches there; the failure is aarch64-only.
- Dominant language
- Python
- Stars
- 2.1k
- Forks
- 612
- Avg merge
- 3d 13h
- Merged PRs (30d)
- 260
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from NVIDIA-NeMo/RL
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
NVIDIA-NeMo/RL#4800 ·
Maintainers usually reply within 2 days
-
r0.8.0: pyrefly rejects captured optional config in make_policy_factory, blocking CIPossibly taken A pull request linked to this issue is open or already merged. Openbug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
NVIDIA-NeMo/RL#4599 ·
Maintainers usually reply within 2 days
-
Feature
Difficulty 2/5 Half a day Newbie friendliness 78/100
NVIDIA-NeMo/RL#4016 ·
Maintainers usually reply within 2 days
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
NVIDIA-NeMo/RL#2948 ·
Maintainers usually reply within 2 days
-
feat: generalize run_rollout_only.py into a single-controller simulatorPossibly taken @shikicloud claimed this today. OpenFeature
NVIDIA-NeMo/RL#4860 · 1 assignee ·
Maintainers usually reply within 2 days
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 77/100
khuisman/mcp-gee-sweet#1166 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
lugassawan/swe-workbench#823 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
gramaziokohler/compas_timber#870 ·
-
security-scan-failure
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
semantica-agi/semantica#2089 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
autowarefoundation/autoware_carla_scenario#500 ·
Maintainers usually reply within 1 day