Instructions to use GoodStartLabs/nemotron3-nano-30b-a3b-spiral-step130 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use GoodStartLabs/nemotron3-nano-30b-a3b-spiral-step130 with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16") model = PeftModel.from_pretrained(base_model, "GoodStartLabs/nemotron3-nano-30b-a3b-spiral-step130") - Notebooks
- Google Colab
- Kaggle
Commit ·
eb88ea6
0
Parent(s):
Duplicate from maxbittker/nemotron3-nano-30b-a3b-spiral-step130
Browse filesCo-authored-by: max bittker <maxbittker@users.noreply.huggingface.co>
- .gitattributes +35 -0
- README.md +63 -0
- adapter_config.json +31 -0
- adapter_model.safetensors +3 -0
.gitattributes
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 29 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 32 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 33 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
README.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
base_model: nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16
|
| 3 |
+
library_name: peft
|
| 4 |
+
tags:
|
| 5 |
+
- spiral
|
| 6 |
+
- self-play
|
| 7 |
+
- reinforcement-learning
|
| 8 |
+
- lora
|
| 9 |
+
- nemotron
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# nemotron3-nano-30b-a3b-spiral-step130 (LoRA)
|
| 13 |
+
|
| 14 |
+
LoRA adapter trained with the [SPIRAL](https://arxiv.org/abs/2506.24119) self-play RL framework on top of
|
| 15 |
+
`nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16`.
|
| 16 |
+
|
| 17 |
+
## Training
|
| 18 |
+
|
| 19 |
+
- **Base model**: `nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16` (30B-total / 3B-active MoE, reasoning-capable)
|
| 20 |
+
- **Renderer**: `nemotron3` (thinking enabled)
|
| 21 |
+
- **Environments**: `TicTacToe-v0`, `KuhnPoker-v1`, `SimpleNegotiation-v1` (self-play, role-conditioned advantage estimation / RAE)
|
| 22 |
+
- **LoRA rank**: 64 (`target_modules=all-linear`, alpha 32)
|
| 23 |
+
- **Batch size**: 128 self-play games
|
| 24 |
+
- **Max tokens per turn**: 4096
|
| 25 |
+
- **Learning rate**: 4e-5
|
| 26 |
+
- **Checkpointed at**: training step 130 (of planned 400)
|
| 27 |
+
- **Training backend**: [Tinker](https://tinker-docs.thinkingmachines.ai/) (LoRA fine-tuning API from Thinking Machines Lab)
|
| 28 |
+
|
| 29 |
+
## Math benchmark results (step-130 vs base)
|
| 30 |
+
|
| 31 |
+
| Benchmark | Base | Step-130 | Δ |
|
| 32 |
+
|---|---:|---:|---:|
|
| 33 |
+
| AIME24 | 36.7% | 36.7% | 0.0 |
|
| 34 |
+
| AMC23 | 67.1% | 74.4% | +7.3 |
|
| 35 |
+
| MATH500 | 89.0% | 90.8% | +1.8 |
|
| 36 |
+
| Minerva | 29.4% | 30.1% | +0.7 |
|
| 37 |
+
| Olympiad-Bench | 50.1% | 53.2% | +3.1 |
|
| 38 |
+
| **Average** | **54.5%** | **57.0%** | **+2.5** |
|
| 39 |
+
|
| 40 |
+
All evals done with `nemotron3` renderer (thinking enabled), max_tokens 8192, full test sets, unified `\boxed{}` answer extraction.
|
| 41 |
+
|
| 42 |
+
## Load
|
| 43 |
+
|
| 44 |
+
```python
|
| 45 |
+
from peft import AutoPeftModelForCausalLM
|
| 46 |
+
from transformers import AutoTokenizer
|
| 47 |
+
|
| 48 |
+
model = AutoPeftModelForCausalLM.from_pretrained("maxbittker/nemotron3-nano-30b-a3b-spiral-step130",
|
| 49 |
+
device_map="auto",
|
| 50 |
+
torch_dtype="auto")
|
| 51 |
+
tokenizer = AutoTokenizer.from_pretrained("nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16")
|
| 52 |
+
```
|
| 53 |
+
|
| 54 |
+
Or merge and save as a full model:
|
| 55 |
+
|
| 56 |
+
```python
|
| 57 |
+
merged = model.merge_and_unload()
|
| 58 |
+
merged.save_pretrained("./nemotron3-spiral-step130-merged")
|
| 59 |
+
```
|
| 60 |
+
|
| 61 |
+
## Status
|
| 62 |
+
|
| 63 |
+
Training is ongoing — further checkpoints will land at `step200`, `step300`, `step400`.
|
adapter_config.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"alpha_pattern": {},
|
| 3 |
+
"auto_mapping": null,
|
| 4 |
+
"base_model_name_or_path": "nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16",
|
| 5 |
+
"bias": "none",
|
| 6 |
+
"corda_config": null,
|
| 7 |
+
"eva_config": null,
|
| 8 |
+
"exclude_modules": null,
|
| 9 |
+
"fan_in_fan_out": false,
|
| 10 |
+
"inference_mode": false,
|
| 11 |
+
"init_lora_weights": true,
|
| 12 |
+
"layer_replication": null,
|
| 13 |
+
"layers_pattern": null,
|
| 14 |
+
"layers_to_transform": null,
|
| 15 |
+
"loftq_config": {},
|
| 16 |
+
"lora_alpha": 32,
|
| 17 |
+
"lora_bias": false,
|
| 18 |
+
"lora_dropout": 0,
|
| 19 |
+
"megatron_config": null,
|
| 20 |
+
"megatron_core": "megatron.core",
|
| 21 |
+
"modules_to_save": null,
|
| 22 |
+
"peft_type": "LORA",
|
| 23 |
+
"r": 64,
|
| 24 |
+
"rank_pattern": {},
|
| 25 |
+
"revision": null,
|
| 26 |
+
"target_modules": "all-linear",
|
| 27 |
+
"task_type": "CAUSAL_LM",
|
| 28 |
+
"trainable_token_indices": null,
|
| 29 |
+
"use_dora": false,
|
| 30 |
+
"use_rslora": false
|
| 31 |
+
}
|
adapter_model.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b2de86f80a09f1bc1b1db949859a5c715bbc132c8c9d530a7a05cb528d934baa
|
| 3 |
+
size 3088638968
|