Executive summary. GPT‑OSS‑120B is open-weight, not a model with a fully disclosed pre-training recipe. As of August 2026, OpenAI has released the weights, architecture, and Harmony interface, but not the original optimizer state, terminal learning rate, total pre-training tokens, or an official continued-pretraining recipe. The CPT ranges below are therefore engineering starting points, triangulated from direct GPT‑OSS fine-tuning configurations, Code Llama, OLMo, Tülu, and public CPT studies—not official OpenAI hyperparameters.
GPT‑OSS‑120B has about 117B total parameters and roughly 5.1B active parameters per token. MXFP4 can place its inference weights near the storage budget of a single 80GB GPU, but that says nothing about full-parameter training: optimizer states, master weights, gradients, and activations are substantially larger. More importantly, GPT‑OSS prompt, reasoning, and tool-use behavior depend on the Harmony response format; its training contract is not ordinary `system/user/assistant` ChatML. Interactive training planner: choose the objective first, then calculate the global token batch from the actual data-parallel degree—not total GPU count.
1. Separate the Four Training Regimes
“Mid-training” is often used to blur settings whose learning rates, data budgets, and batch sizes differ by orders of magnitude. CPT/domain-adaptive pre-training uses raw text, code, and domain documents to change the model distribution. SFT teaches behavior, format, tool use, and task mappings. DPO/preference optimization learns from chosen/rejected comparisons. Online RL learns from rollouts, rewards, and policy versions. Their hyperparameters are not interchangeable. Agent Factory 3 demonstrates agentic RL with GPT‑OSS‑120B, but does not disclose a directly reusable LR or global policy batch. Its useful engineering ideas are attention LoRA, frozen MoE/router weights, asynchronous rollouts, routing replay, and staleness filtering. Missing fields should remain “undisclosed,” rather than inferred from model size.
2. Starting Points: Sweep, Do Not Search for a Magic LR
| Objective | GPT‑OSS‑120B initial / peak LR | Schedule and warmup | Global batch | | -------------------------- | -----------------------------: | ------------------------------------------ | ------------------------------ | | Narrow CPT, <5B tokens | 5e‑6–2e‑5; begin at 1e‑5 | cosine; 1–2% warmup for a reset optimizer | 0.25–1M tokens/update | | Domain CPT, 20–100B tokens | 1e‑5–4e‑5; begin at 2e‑5 | cosine; 0.5–1% warmup | 1–4M tokens/update | | Full SFT | 2e‑6–2e‑5 | linear/cosine or constant+warmup; about 3% | 16–128 sequences/update | | LoRA SFT | 5e‑5–2e‑4; begin at 1e‑4 | cosine; 3% warmup | 8–32 sequences/update | | DPO | 1e‑7–5e‑7; begin at 2e‑7 | linear; 10% warmup | 64–128 preference pairs/update | Direct anchors include Axolotl’s GPT‑OSS‑120B full-parameter recipe at `2e-5` with constant-with-warmup, the GPT‑OSS‑20B Cookbook LoRA recipe at `2e-4` and global batch 16, and Tülu‑3’s 70B SFT/DPO runs at `2e-6`/`2e-7`. For domain CPT, make the first sweep **1e‑5 → 2e‑5 → 4e‑5**. A released GPT‑OSS checkpoint does not include the original optimizer and scheduler state, so a short warmup is safer than assuming a continuous pre-training schedule.
3. Data Scale: From 1k SFT Examples to 100B CPT Tokens
Track unique examples/pairs, consumed tokens, and disk bytes separately. The following GB values are only `tokens × 4 bytes` for int32 token IDs—not JSON, Parquet, or raw-corpus sizes. | Training tokens | int32 token IDs | Practical meaning | | --------------: | --------------: | ---------------------------------- | | 1M | 0.004 GB | small behavioral SFT | | 1B | 4 GB | large SFT / very small CPT | | 20B | 80 GB | meaningful narrow-domain CPT | | 100B | 400 GB | OLMo-scale mid-training ingredient | | 1T | 4 TB | large specialization | For behavior, format, and tool use, 1k–100k high-quality Harmony examples can be enough. Broad instruction tuning is commonly 0.1B–5B tokens or 100k to about 1M conversations. A 0.1–5B-token CPT pilot is a sensible feasibility test; 20–100B tokens is the credible main range for 70B/120B domain adaptation. Use 100B–1T only when the goal is a major capability or distribution shift.
4. Mixture and Retention Matter More Than Feeding Domain Data Forever
Plan replay, staged mixtures, or checkpoint merging. Code Llama retained rehearsal data; Reuse, Don’t Retrain studies general and capability-related blends; Arcee’s SEC adaptation shows domain gains can coincide with general-score loss. A robust sequence is: pilot on 0.5–1B tokens; choose LR and replay ratio using domain and general evaluations; scale to 20–100B tokens; perform a small high-quality Harmony recovery SFT; only then consider DPO or RL.
5. Batch: Use Data-Parallel Degree, Not Physical GPU Count
$$B_{seq}=N_{DP}\times B_{micro}\times N_{accum},\qquad B_{token}=\sum_{batch}\text{non-padding tokens}.$$ With tensor or expert parallelism, `N_DP` is not total accelerators. For CPT, record non-padding tokens/update. Begin around 0.5–4M tokens/update for CPT, 16–128 sequences for full SFT, 8–32 for LoRA, and 64–128 pairs for DPO. On 8×A100‑80GB, validate LoRA/SFT and data/loss correctness first. On 32×A100‑80GB, FSDP2/ZeRO‑3 full FFT and CPT become more realistic; increased hardware should reduce accumulation and wall-clock time, not mechanically scale LR.
6. The GPT‑OSS Prompt and Loss Contract
Strict CPT should remain mostly raw documents and code with a causal-LM objective. Harmony is the native semantic layer for recovery SFT, tool use, and agents. Store structured messages plus `reasoning_effort`, then render them with the official Harmony renderer or a GPT‑OSS-aware template. In multi-turn training retain historical finals but remove historical reasoning traces; only the current turn’s reasoning is a target. Use low, medium, and high effort across the same task families: `high` permits more thought, rather than forcing verbosity. Mask system, developer, user, and tool outputs; train the current assistant analysis/commentary/tool-call/final channels. For pure knowledge injection, down-weight analysis loss or use only verified reasoning traces.
7. Engineering Checklist
- Use BF16, activation checkpointing, and sharded state; do not equate MXFP4 inference footprint with AdamW training memory. - Start CPT with AdamW $\beta=(0.9,0.95)$, weight decay near 0.1, and grad clip near 1; do not blindly transfer that decay to SFT/DPO. - Preserve optimizer, scheduler, RNG, topology, and both best-domain and best-retention checkpoints. - Unit-test Harmony serialization, labels/masks, attention kernels, and logits/loss parity before scaling.
8. Further Reading and Evidence Boundaries
Official sources, open recipes, and comparison studies (click to expand)
These sources support the direct facts and comparison anchors. GPT‑OSS‑120B’s original CPT optimizer state, terminal LR, total token count, TPUv4 recipe, and 120B RL policy batch are not publicly specified; where they are missing, this post labels its advice as engineering extrapolation.
**Bottom line:** run a 0.5–1B-token CPT pilot at 1e‑5/2e‑5/4e‑5, select the best retention mixture, scale to 20–100B tokens, restore behavior with small high-quality Harmony SFT, and only then move to DPO/RL. If the goal is only formatting, tool calling, or a few tasks, skip tens-of-billions-token CPT and begin with 1k–100k high-quality Harmony SFT/LoRA examples.