Nemotron Kit#
The nemotron.kit module provides artifact type definitions, lineage trackers, and W&B integration for Nemotron training recipes.
Focused by Design: Kit owns the artifact types (data classes like
PretrainBlendsArtifact,ModelArtifact) and tracking behavior (W&B/file-based lineage). The underlying artifact registry and resolution (art://URIs, fsspec/wandb storage backends) live innemo_runspec. CLI, configuration, and execution also live innemo_runspec. All heavy-lifting training is done by the NVIDIA AI Stack: Megatron-Core for distributed training primitives, Megatron-Bridge for model training, and NeMo-RL for reinforcement learning.
Overview#
Kit handles three core responsibilities:
Component |
What kit owns |
What nemo_runspec owns |
|---|---|---|
Type definitions ( |
Registry, |
|
Trackers ( |
|
|
Init, credential handling, monkey patches, tag management |
Env var injection ( |
For CLI infrastructure, config loading, execution, and packaging, see nemo_runspec.
Architecture#
%%{init: {'theme': 'base', 'themeVariables': { 'primaryBorderColor': '#333333', 'lineColor': '#333333', 'primaryTextColor': '#333333', 'clusterBkg': '#ffffff', 'clusterBorder': '#333333'}}}%%
flowchart LR
subgraph cli["CLI (nemotron.cli)"]
direction TB
CMD1["nemotron ... data prep"]
CMD2["nemotron ... train/sft/rl"]
end
subgraph recipes["Recipe Scripts"]
direction TB
DataPrep["data_prep.py"]
Train["train.py"]
end
subgraph runspec["nemo_runspec"]
direction TB
Config["Config Loading"]
Exec["Execution"]
Pipeline["Pipeline"]
Registry["Artifact Registry"]
end
subgraph kit["nemotron.kit"]
direction TB
Artifact["Artifact Types"]
Tracker["Lineage Trackers"]
WandB["W&B Integration"]
end
subgraph tracking["Tracking Backends"]
direction LR
WandBBackend["W&B"]
FileBackend["File-based"]
end
CMD1 --> DataPrep
CMD2 --> Train
DataPrep --> kit
DataPrep --> runspec
Train --> kit
Train --> runspec
Artifact --> Registry
Tracker --> tracking
style cli fill:#fce4ec,stroke:#c2185b
style recipes fill:#e8f5e9,stroke:#388e3c
style runspec fill:#fff3e0,stroke:#f57c00
style kit fill:#e3f2fd,stroke:#1976d2
style tracking fill:#f3e5f5,stroke:#7b1fa2
Quick Example#
from nemotron.kit import PretrainBlendsArtifact, ModelArtifact
from pathlib import Path
# Load data artifact
data = PretrainBlendsArtifact.load(Path("/output/data"))
print(f"Training on {data.total_tokens:,} tokens")
# ... training code ...
# Save model artifact with lineage
model = ModelArtifact(path=Path("/output/checkpoint"), step=10000, loss=2.5)
model.save(name="ModelArtifact-pretrain")
Concepts#
Artifacts#
Artifacts are path-centric objects with typed metadata. The core field is always path – the filesystem location of the data. See Artifact Lineage for details.
from nemotron.kit import PretrainBlendsArtifact
# Load from semantic URI
artifact = PretrainBlendsArtifact.from_uri("art://PretrainBlendsArtifact:latest")
print(f"Path: {artifact.path}")
print(f"Tokens: {artifact.total_tokens:,}")
Lineage Tracking#
Kit tracks artifact lineage through pluggable backends. The WandbTracker logs to W&B; the FileTracker writes to local filesystem. See W&B Integration for credential handling and Artifact Lineage for the lineage graph.
from nemotron.kit import set_lineage_tracker, WandbTracker
# Use W&B for tracking
set_lineage_tracker(WandbTracker())
W&B Integration#
from nemotron.kit import WandbConfig, init_wandb_if_configured, add_run_tags
# Initialize W&B from config
wandb_cfg = WandbConfig(entity="nvidia", project="nemotron")
init_wandb_if_configured(wandb_cfg)
# Add tags to the run
add_run_tags(["pretrain", "nano3"])
Module Structure#
src/nemotron/kit/
├── __init__.py # Public API exports + kit.init()
├── artifact.py # Artifact base class, ArtifactInput, display helpers
├── artifacts/ # Artifact type definitions (base, model, data blends, etc.)
├── trackers.py # LineageTracker, WandbTracker, FileTracker, NoOpTracker
├── wandb_kit.py # WandbConfig, init_wandb_if_configured, add_run_tags, monkey patches
├── train_script.py # Training script utilities (init_wandb_from_env, config parsing)
├── recipe_loader.py # Recipe loading utilities
└── megatron_stub.py # Megatron stub for testing
API Reference#
Artifacts#
Export |
Description |
|---|---|
|
Base artifact class |
|
Pretrain data with train/valid/test splits |
|
Raw pretrain data |
|
Packed SFT sequences |
|
RL JSONL data |
|
Generic data blends |
|
Model checkpoints |
|
Tracking metadata for artifacts |
Tracking#
Export |
Description |
|---|---|
|
Abstract base for lineage tracking |
|
W&B-backed lineage tracker |
|
File-based lineage tracker |
|
No-op tracker (for testing) |
|
Set the global lineage tracker |
|
Get the current lineage tracker |
|
Convert artifact to W&B URI |
|
Convert tokenizer to URI |
W&B#
Export |
Description |
|---|---|
|
W&B configuration dataclass |
|
Conditional W&B initialization |
|
Add tags to W&B runs |
Kit Initialization#
Export |
Description |
|---|---|
|
Initialize kit with storage backend (fsspec or wandb) |
|
Check if kit has been initialized |
Further Reading#
nemo_runspecPackage – CLI toolkit, config loading, execution, packagingNVIDIA AI Stack – Megatron-Core, Megatron-Bridge, NeMo-RL
OmegaConf Configuration – artifact interpolations and unified W&B logging
Artifact Lineage – artifact versioning and W&B lineage
W&B Integration – credential handling
Execution through NeMo-Run – execution profiles and packagers
CLI Framework – building recipe CLIs
Data Preparation – data prep module