nltower-100m-base

The 124M-parameter base language model of the nl_tower study, at iteration 30,000 of its pretraining run. This is the last constant-learning-rate checkpoint before the cooldown. Every CPT-N model in this collection branches from it. It has seen web text only and no nl_tower data, so it cannot solve the puzzles; it is released as the starting point of the CPT-N branch.

This repository is part of the nl_tower (100M) collection on the Hugging Face Hub (5 CPT models, 6 SFT models, the base model and 4 datasets).

nl_tower in brief

nl_tower is a synthetic reasoning task. Each puzzle places 6-12 people on distinct floors (1-40) of a tower. The prompt lists the occupied floors, each person's best friend, and clues that relate the floors of two terms ("greater than", "k floors above", sums, parity, "twice", highest/lowest). Many clues refer to people indirectly, for example "the best friend of the person on the second-highest floor"; such a clue becomes usable only after other clues have pinned part of the answer. Each puzzle has a unique solution that a step-by-step solver reaches without guessing.

The study asks whether reinforcement learning can teach reasoning compositions that the imitation data never shows:

  • Covered patterns (shown in the mid-training traces): friend ("Ava's best friend"), friend2 ("the best friend of Ava's best friend"), order ("the person directly above Ava"), rankn ("the person on the second-highest floor"), dfriend_occ ("the best friend of the person on floor 19").
  • Held-out patterns (appear only in RL prompts and tests): dfriend_rank ("the best friend of the person on the highest floor"), dfriend_above ("the best friend of the person directly above Ava"), and nested (two-level references).

Test rungs: easy (nltw_e, 6-7 people, covered only), covered mid (nltw_m0, 8-9 people, covered only), held-out mid (nltw_m, 8-9 people, 2-4 held-out steps), hard (nltw_h, 9-10 people, 4-6 held-out steps), size-only hard (nltw_hb, 10-11 people, 2-4 held-out steps) and 12 people (nltw_hb12, test only).

Position in the pipeline

base pretraining (iteration 30,000, before the cooldown) --CPT-N (cooldown + N trace sequences per batch)--> CPT-N models --RL--> policies
base pretraining (iteration 38,147, end of the run) --SFT on the same traces--> SFT models --RL (no demos)--> policies

Pretraining

The base run trained the 124M model from scratch with Megatron-Bridge for 38,147 iterations of 256 sequences x 2,048 tokens (524,288 tokens per iteration, about 20.0B tokens). The learning rate followed a warmup-stable-decay (WSD) schedule whose decay ("cooldown") phase starts at iteration 30,518. The data blend was 75 % ClimbMix and 25 % Dolma 3 Dolmino (GPT-2 tokenised, EOS between documents).

This checkpoint was converted from the native Megatron distributed checkpoint to Hugging Face format for this release. The same converter reproduces the authors' earlier Hugging Face export of iteration 38,147 bit for bit (all 110 tensors equal).

Architecture

property value
architecture LlamaForCausalLM (decoder-only)
parameters 123,587,328 (embeddings tied with the output layer)
layers / hidden size / heads 12 / 768 / 12 (head dim 64, no grouped-query attention)
MLP SwiGLU, intermediate size 2,048
normalisation / position RMSNorm (eps 1e-5) / RoPE (theta 10,000)
tokenizer GPT-2 BPE (50,257 tokens; embedding padded to 50,304)
special tokens <|endoftext|> (id 50256) is BOS, EOS and PAD
context length 2,048 tokens
weights model.safetensors, bfloat16

Prompt format and usage

The prompt is the puzzle text followed by "\n\nAnswer: ". The model writes its reasoning and ends with the full assignment in \boxed{Name=floor, ...}. A completion is correct when every Name=floor pair in the boxed answer matches the solution (order does not matter). The chat template only concatenates message contents (no role markers), so apply_chat_template and the raw prompt give the same tokens.

from transformers import AutoModelForCausalLM, AutoTokenizer
from datasets import load_dataset

repo = "sfanm/nltower-100m-base"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo, torch_dtype="bfloat16")

test = load_dataset("sfanm/nltower-env", "tests", split="nltw_m0")
prompt = test[0]["prompt"]                      # question + "\n\nAnswer: "
ids = tok(prompt, return_tensors="pt").input_ids
out = model.generate(ids, max_new_tokens=1280, do_sample=False, pad_token_id=tok.eos_token_id)
print(tok.decode(out[0, ids.shape[1]:], skip_special_tokens=True))   # ... \boxed{Name=floor, ...}
print("gold:", test[0]["answer"])

Evaluation

No nl_tower evaluation of this checkpoint was run; as a pure web-text model it is not expected to produce boxed answers. Its loss on a short English paragraph is 3.40 nats/token (the CPT-N models reach 3.16-3.27 after the cooldown).

Intended use and limitations

  • Intended for research on mid-training, imitation and reinforcement learning at small scale, mainly as the branch point for CPT-N.
  • It is a 124M model trained on about 15.7B tokens up to this checkpoint, mid-schedule (before the learning-rate cooldown). It is not instruction-tuned, not safety-tuned and not suitable for any user-facing use.
  • Web-scale pretraining data can contain biased, offensive or incorrect text, and the model can reproduce it.

Training data

Code

Code: the environment generator, solver, data builders, training recipes and evaluator are not public yet.

License

No license has been chosen for these weights yet, so the metadata says license: other. The base model was pretrained on:

Use the weights only in ways that the terms of these datasets allow. The nl_tower data used after pretraining is the authors' own synthetic data (Apache-2.0, see the dataset repositories).

Authors and citation

Authors and citation: to be added.

This release (files and this card) was prepared with AI assistance (Claude, an Anthropic model) and is being reviewed by the authors.

Downloads last month
436
Safetensors
Model size
0.1B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for sfanm/nltower-100m-base

Finetunes
5 models

Datasets used to train sfanm/nltower-100m-base