CoolFace
Datasetpublic

Yooniel/olmo3-7b-nla-warmstart-data

OLMo-3-7B-Instruct NLA warm-start data (layer 21) SFT warm-start data for training a Natural Language Autoencoder (NLA) on allenai/OLMo-3-7B-Instruct, in the format consumed by EasyNLA's nla.train_sft. An NLA has two learned parts: AV (verbalizer) — reads a residual-stream activation (injected at a marker token) and writes a natural-language explanation of it. AR (reconstructor) — maps that explanation back to the activation vector. What's here file rows… See the full description on the dataset page: https://huggingface.co/datasets/Yooniel/olmo3-7b-nla-warmstart-data.

sourceHugging Faceupdated 2mo agoView on Hugging Face
0likes63downloads
Dataset Card

OLMo-3-7B-Instruct NLA warm-start data (layer 21)

SFT warm-start data for training a Natural Language Autoencoder (NLA) on `allenai/OLMo-3-7B-Instruct`, in the format consumed by EasyNLA's nla.train_sft.

An NLA has two learned parts:

  • —AV (verbalizer) — reads a residual-stream activation (injected at a marker token) and writes a natural-language explanation of it.
  • —AR (reconstructor) — maps that explanation back to the activation vector.

What's here

filerowsstage
av_sft_train.parquet363,961AV SFT (train)
av_sft_val.parquet7,307AV SFT (held-out)
ar_sft_train.parquet363,988AR SFT (train)
ar_sft_val.parquet7,405AR SFT (held-out)

Each parquet ships a *.nla_meta.yaml sidecar — the contract EasyNLA asserts against the live tokenizer at load time (injection marker, prompt templates, d_model, extraction layer). Load those; never hardcode them.

Extraction: raw (unnormalized) residual-stream activation at layer 21 (2/3 depth of OLMo-3-7B's 32 layers), taken at the last token of each text prefix. d_model = 4096. The injection marker for OLMo's tokenizer is 一.

How it was made

The gold explanations are model-agnostic — the teacher (Claude Sonnet 4.6) wrote them from the source text alone, never seeing an activation. So this dataset reuses the explanations from `asher577/easynla-warmstart-data` (originally Qwen3-8B) and re-extracts only the `activation_vector` column from OLMo-3-7B-Instruct — every row's detokenized_text_truncated was forwarded through OLMo and the layer-21 last-token residual replaces the old Qwen vector. Everything else (prompt, response/explanation, provenance) is carried through unchanged. See scripts/reextract_activations.py in EasyNLA.

The RL split (regenerate, not shipped)

The GRPO RL rollout pool isn't shipped — it carries no new information. RL uses <INJECT> prompt + activation with no gold summary (the AV generates explanations on-policy), and the activations are exactly the ar_sft_train vectors (doc-disjoint from av_sft, so the AV meets activations it never saw in SFT). So the RL parquet is just ar_sft_train with the AR prompt swapped for the AV <INJECT> prompt — regenerate it locally (CPU only, no model):

python
from dataclasses import replace
from pathlib import Path
from nla.datagen.sidecar import read_sidecar_local, write_sidecar_local

# 1. recast ar_sft_train's sidecar to a stage-0 "base" sidecar for a symlink
m = read_sidecar_local(Path("ar_sft_train.parquet"))
write_sidecar_local(Path("rl_base.parquet"), replace(
    m, dataset_id="base_rl", stage="base",
    tokens=None, prompt_templates={}, api_summaries=None))
Path("rl_base.parquet").symlink_to("ar_sft_train.parquet")
bash
# 2. rebuild as the rl split (adds the AV <INJECT> prompt, recomputes token meta)
python -m nla.datagen.stage3_build \
  --input rl_base.parquet --stage rl --output rl.parquet --keep-debug-metadata

The av_sft_val split doubles as the doc-disjoint held-out set for FVE eval.

Usage

bash
python -m nla.train_sft --mode av --base-ckpt allenai/OLMo-3-7B-Instruct \
  --parquet av_sft_train.parquet --sidecar av_sft_train.parquet \
  --heldout-parquet av_sft_val.parquet --save-dir ckpts/av \
  --use-lora --lora-r 128 --lora-alpha 16 --lr 1e-4

python -m nla.train_sft --mode ar --base-ckpt allenai/OLMo-3-7B-Instruct \
  --parquet ar_sft_train.parquet --sidecar ar_sft_train.parquet \
  --heldout-parquet av_sft_val.parquet --save-dir ckpts/ar \
  --ar-num-layers 22 --use-lora --lora-r 128 --lora-alpha 16 --lr 2e-5

Built on Celeste's nanoNLA / EasyNLA. Explanations derived from asher577/easynla-warmstart-data.