The Definitive Guide toAI Data Centers
Ask the GuideAboutAccount
Guide › Storage & Data › 9.9

Chapter 9.9

In this chapter · 8 sections
Term help
Terms in this chapter (21)

The Data-Prep Supercomputer: Offline Data Processing

Before any GPU sees a token, a second cluster must dedupe, filter, decontaminate and tokenize trillions of tokens. Undersize it and you starve the training fleet or waste GPU-hours on string processing.

ThreadsGoodputPower-bound

What you'll decide here

  1. A prep cluster with its own CPU, storage and network, or idle GPU nodes, and what each does to GPU goodput and prep wall-clock.
  2. Exact, MinHash/LSH or embedding-based dedup, and how aggressive a similarity threshold you can afford before it deletes the high-quality long tail.
  3. Heuristic quality and safety filters (cheap, CPU, interpretable) or classifiers (costly, often GPU, higher ceiling), and who owns the false-positive rate silently shaping your model.
  4. How rigorously you decontaminate against every eval you will report, since leakage you miss becomes a leaderboard number you cannot trust.
  5. Whether preprocessing is CPU-bound at your volume (cores, memory bandwidth) or measured GPU code shifts the limit to extraction, dedup, classification, scratch or network.

A frontier training program runs two supercomputers, and only one of them is GPU-dominant. The first, the one this Part has been about, keeps thousands of accelerators saturated with a clean, shuffled, tokenized stream. The second runs before it, often weeks before, and manufactures that stream. It ingests raw web crawls and licensed corpora, strips boilerplate, deduplicates at corpus scale, filters for quality and safety, scrubs out anything that overlaps your evaluations, and tokenizes the survivors into the exact binary format the loader will memory-map. This is the data-prep supercomputer, and it is the most consistently undersized, under-instrumented and under-respected machine in the building.

It gets disrespected because it looks like ETL, and every organization thinks it already knows ETL. But web-scale prep for a frontier run is not a nightly Spark job. It is a multi-petabyte, trillion-token batch pipeline whose stages have opposite hardware appetites. Some are embarrassingly parallel and CPU-bound, some are metadata-storm small-file workloads, some are GPU-accelerated classifier sweeps, and some are all-to-all shuffles that look like a network benchmark. Size it as one thing and you bottleneck on whichever stage you got wrong. This chapter walks the pipeline stage by stage, then sizes the cluster that runs it, whose power, network and storage profile is deliberately unlike the GPU fleet next door.

Why prep is a goodput problem, not a side quest

The case for taking prep seriously is a goodput case, and it cuts two ways. First, prep is on the critical path to the run. If the corpus takes six weeks to prepare and your GPU cluster is energized and idle for four of them, you have paid frontier-cluster lease or depreciation for a month of string processing. Prep wall-clock comes straight out of the training schedule, and the GPUs cannot start a training release until its authorized, versioned input is ready. Incremental corpus releases need their own quality gates. Second, the quality of prep sets the ceiling on what the GPUs can achieve. The open-data era (FineWeb, RefinedWeb, DataComp-LM, Dolma) taught that careful filtering and deduplication beat raw scale at a fixed token budget: a smaller, cleaner corpus trains a better model than a larger, dirtier one. Nemotron-CC (NVIDIA, 2024) adds the limit: filters that discard about 90% of a crawl leave too few unique tokens for a 15T-token run, and its 6.3T-token set matched DCLM on MMLU with about four times the unique real tokens. Size the filter to the token horizon you plan to train on, not to the highest short-run score. Every duplicate you fail to remove is a GPU-hour spent memorizing boilerplate, and every leaked benchmark sample is a leaderboard number you have to caveat.

The decision is rarely whether to do prep at all; it is how much engineering to invest, and on what hardware. The expensive failure is the one nobody plans. Two weeks before launch you discover that the pipeline cannot tokenize the licensed corpus fast enough on your CPU pool, and you either delay the run or, far worse, borrow GPU nodes to brute-force tokenization. That is an expensive way to run a Rust regex engine if the exact tokenizer and normalization pipeline still execute on the CPU while the accelerators sit idle.

The pipeline, stage by stage

A web-scale prep pipeline is a directed sequence of stages, each with a distinct hardware personality and a distinct fork. The canonical order is text extraction, language ID, quality/heuristic filtering, exact dedup, fuzzy dedup, classifier filtering, decontamination, tokenization, then shuffle/shard. It is not arbitrary: you filter cheaply before you filter expensively, and you dedup before you tokenize so you never tokenize a duplicate. The table maps each stage to what binds it, so you can see where the prep cluster's bottleneck actually lives.

Prep pipeline stages → what binds each one
StageWhat it doesBinds onHardware fitConsequence of underspeccing
Text extractionWARC/HTML to clean text; strip boilerplateCPU + sequential read bandwidthCPU pool, streaming from object storeThroughput floor for the whole pipeline
Language ID + heuristic filtersfastText langID, C4-style rules, repetition/perplexity gatesCPU; cheap per-docCPU poolCheap to run; skipping it makes later stages pay
Exact dedupHash whole docs/lines; drop identicalMemory + hash-table I/OCPU, large RAM, fast scratchLeaves trivial dupes for fuzzy stage to find
Fuzzy near-dedupMinHash signatures + LSH banding; drop near-dupesAll-to-all shuffle + memoryCPU at scale, or GPU (RAPIDS/NeMo Curator)Signature generation, bucket skew or shuffle becomes the bottleneck
Classifier filteringModel-scored quality/safety/domain curationMeasured CPU/GPU inference throughputGPU or accelerated CPUQuality ceiling; false-positive rate set here
Decontaminationn-gram/substring overlap vs eval setsCPU + index lookupsCPU pool, in-memory eval indexBenchmark leakage; untrustworthy evals
TokenizationBPE/Unigram encode to token IDsMeasured end-to-end tokenizer throughputBenchmark CPU and GPU implementationsNormalization, regex, or encoding becomes the wall
Shuffle + shardGlobal shuffle, pack to loader formatNetwork + storage write bandwidthFast scratch + back-end networkLoader stalls or poor mixing at train time
A starting pipeline. Measure the binding resource for your implementation, corpus and release graph, and let those measurements set the CPU/GPU split.

Deduplication: the highest-leverage and most dangerous stage

The web mirrors, syndicates and templates itself relentlessly. In RefinedWeb (2023), exact and fuzzy dedup removed about half of the documents that had already passed language and quality filtering, about 12% of the original Common Crawl documents. Removing those duplicates is one of the largest levers on token efficiency, alongside quality filtering, because a model wastes capacity memorizing anything it sees too many times, and over-represented duplicates skew the distribution. But dedup is also a deletion from the derived training set. Retained source IDs and an authorized, immutable input make that exclusion reproducible and reversible, and the aggressiveness knob (how similar counts as "the same") is the most consequential single number in the pipeline.

There are three tiers, and they compose. Exact dedup hashes whole documents or lines and drops identical copies. It is cheap, CPU-bound and embarrassingly parallel, and it catches the trivial cases. Fuzzy / near-duplicate dedup is the real work. Compute a MinHash signature per document (a compact sketch of its n-gram set), then use Locality-Sensitive Hashing (LSH) to bucket documents whose signatures collide in any band. You then compare only plausibly similar pairs instead of facing the quadratic all-pairs explosion.

The banding configuration sets a probability curve, not a hard Jaccard cutoff. FineWeb used word 5-grams and 14 bands of eight MinHash values; its method and per-snapshot comparison are documented by the authors in 2024. At similarity s, the candidate probability is 1 − (1 − s8)14; at s = 0.75 it is about 77%. Record the normalization, candidate handling and survivor policy with the corpus they produce. Semantic dedup goes further: embed every document, cluster in embedding space, and drop near-neighbors that are paraphrases or translations a MinHash would miss. The cost is an embedding-model inference pass over the entire corpus.

The deduplication fork: exact vs fuzzy vs semantic
TierMethodKillsCostWhen it is the right last stage
ExactSHA/xxHash on doc or line; drop identicalByte-identical copies and mirrored pagesLowest (CPU, near-linear)Tiny budgets; a pre-pass before fuzzy
FuzzyMinHash + LSH banding; probability curve plus explicit survivor policyNear-dupes: templated, lightly-edited, reformattedModerate; dominated by the all-to-all shuffleDefault for web-scale pretraining corpora
SemanticEmbed corpus, cluster, drop near-neighborsParaphrases, translations, semantic restatementsHighest (an embedding inference pass over everything)When a measured quality gain justifies the embedding pass and deletion risk
Compose them in order. The 'kills' column is what each tier removes that the prior tier cannot. Cost is per-token relative, at trillion-token scale.

The hardware fork inside dedup carries the biggest 2026 swing. Fuzzy dedup at trillion-token scale is an all-to-all shuffle of billions of signatures. On a CPU cluster it can end up the long pole, so time it instead of assuming. GPU-accelerated dedup (NVIDIA's NeMo Curator on RAPIDS, and the FED-class GPU dedup frameworks) collapses that time. In NVIDIA's own test, NeMo Curator v25.07 took 0.5 h on 32 H100 GPUs to deduplicate 1.96 trillion tokens, a RedPajama-v2-scale corpus. Treat that as a vendor result against unnamed baselines, and re-measure with your own corpus and dedup policy. Curator's dedup workflows need GPUs and run on a Ray backend. A prep pool with no GPUs needs a CPU engine instead, such as datatrove, which Hugging Face used to build FineWeb's 2024 release: 15T tokens from 96 Common Crawl snapshots.

NVIDIA’s NeMo Curator deduplication stages put GPU implementations on the shortlist. Compare signature generation, bucketing, shuffle and survivor selection separately, at a fixed corpus, normalization and dedup policy. Keep end-to-end wall-clock, peak memory, spill and accepted output with the CPU/GPU comparison, because a fast signature kernel does not time the complete corpus release. This is the rare case where the prep cluster legitimately wants a few GPUs, not to train but to keep the dedup stage from being the long pole. You either pay for a large CPU pool to grind the shuffle, or borrow a small GPU partition to do dedup in hours and free the CPUs for tokenization.

Quality and safety filtering: heuristics vs classifiers

After dedup, you decide what is worth keeping. The fork is heuristic filtering versus classifier-based curation, and most serious pipelines use both: heuristics first because they are cheap and interpretable, classifiers where a measured quality gain justifies their cost.

Heuristic filters are the C4/Gopher/FineWeb lineage. They drop documents by language-ID confidence, mean line length, fraction of alphabetic characters, repetition ratios, boilerplate or blocklisted terms, and perplexity under a reference model. They are cheap on CPU and fully auditable, and every threshold is a knob you can explain to a regulator or a model-behavior reviewer. Classifier filters score each document with a trained model: a fastText or transformer quality classifier (often trained to recognize "educational" or instruction-like text, as in FineWeb-Edu and the DataComp-LM curation), plus safety classifiers for toxicity, CSAM signals and policy categories. These can capture learned quality signals beyond a hand-written regex. But corpus-scale cost depends on the CPU/GPU implementation you select, and their decisions can be harder to interpret than explicit rules. Their false-positive rate silently shapes the model: a quality classifier that down-weights a dialect, a domain or a non-English register is making a model-behavior decision, not a data-cleaning step.

Fresh crawls also carry a lot of machine-generated text. Pangram Labs sells an AI-text detector, and in a September 2026 preprint with the University of Maryland it ran that detector on web data that had already passed FineWeb-style quality filtering. The detector labeled 27.5% of June 2026 tokens and 31.1% of August tokens as AI-generated. Those are detector labels, not confirmed authorship. Across 800 small models of up to about 1B parameters, mixing such text into a large human-text budget pushed loss on human-written validation data up almost at once. It helped only data-starved runs, and only early on. Budget compute for a detector pass next to your other classifiers, store each document's score so the policy can be re-cut later, and hold out a human-only validation set alongside the mixed one.

For the technical stratum, A rejects 8/1,000 = 0.80% and passes. B rejects 35/1,000 = 3.5% and fails. On the point estimate the crossover is 20 eligible rejections; 21 fails even if the pooled global score improves. A 1,000-record sample is noisy, though. To show the true rate is below 2.0% at 95% confidence (exact binomial, one-sided), the sample may hold at most 12 rejections; A's eight put the upper bound at about 1.4%, so A passes that test too. Between 13 and 20 rejections, a candidate meets the sample limit yet cannot prove the population rate sits below 2.0%; settle with the data owner, before scoring, which of the two tests gates the release. Before you release a real corpus, run the same gate on every required stratum, test the retained corpus for quality and eligibility, and report where the adjudicators disagreed.

Compare dedup scope and filter thresholds at a fixed token budget, tokenizer and evaluation protocol, and inspect source and language retention as well as model outcomes. Preserve excluded IDs and reason codes under authorized retention so you can regenerate the corpus after an approved policy change. FineWeb's controlled curation comparisons supply the experimental method. Chapter 10.10 owns policy, and this chapter owns its execution.

Decontamination: the eval you can trust

Decontamination protects the meaning of every benchmark you will ever report. If your pretraining corpus contains the test items from GSM8K, MMLU, HumanEval or whatever you benchmark on, your model can memorize the answers and your reported scores are fiction. Benchmark items, MMLU among them, can land in a training corpus verbatim or reworded, and every leaked item lets a model score by recall instead of by generalizing. Test both kinds of overlap against the versioned evaluation registry before you interpret a score. A clean mirror shows the size of the damage: on GSM1k, a fresh human-written mirror of GSM8K, accuracy fell by up to 8 points for the most affected model families, while frontier models showed little drop. The fork is how aggressively you scrub, and against which eval sets.

The standard mechanism is n-gram / substring overlap: index every eval set you care about, then drop or flag any training document that shares a long enough contiguous span (commonly an 8- to 13-gram match) with a test item. It is CPU-bound, heavy on index lookups and conceptually simple. The catch is that it is necessary but not sufficient. Paraphrase, translation and reformatting slip straight past a literal n-gram match, so a corpus can pass decontamination and still be semantically contaminated. What works is procedural rather than algorithmic. Maintain a frozen, versioned registry of every benchmark and decontaminate against the entire registry before training. When you add an eval after training, scan the frozen training corpus referenced by its manifest for overlap. If overlap exists, mark the original score contaminated and use a clean mirror or held-out replacement, then add the eval to the registry and remove overlaps before the next training run. Get it wrong and the cost is a credibility event: an outside party reproduces your eval on a clean split and your numbers collapse.

Deep dive: why n-gram decontamination quietly fails, and what to add

The n-gram overlap method has two opposite failure modes, and a serious pipeline mitigates both. False negatives are the contamination it misses. Any transformation that breaks the literal token sequence defeats exact substring matching while preserving the information the model can memorize: paraphrasing a question, translating it, swapping multiple-choice option order, reformatting a code prompt. Put transformed copies alongside exact copies in your overlap test set, then record which mechanism (literal, embedding-based or model-based) catches each one and what clean data it wrongly removes. False positives are clean data it wrongly drops. On multiple-choice benchmarks, unrelated questions share option boilerplate ("A) B) C) D)", common stems), so a naive n-gram match flags and deletes legitimate training documents, a quiet quality tax.

The defensible posture layers three things. (1) Long-n-gram exact matching as the cheap floor, tuned long enough (13-gram is a common choice) to avoid the false-positive flood from short shared spans. (2) Embedding / semantic overlap against the eval registry to catch paraphrase and translation, using the same embedding infrastructure you already stood up for semantic dedup. (3) A held-out clean mirror for the benchmarks you care most about, so you can measure the contamination delta directly rather than trusting that the scrub worked. Running only the standard n-gram script leaves every paraphrased or translated leak in the corpus. → Quality and provenance governance is in Chapter 10.10.

Tokenization: benchmark the exact pipeline

Tokenization is where the prep cluster's hardware profile reveals itself, and where the most common sizing surprise lives. BPE applies ranked pair merges; Unigram selects the best path through a scored segmentation lattice. Widely deployed production tokenizers are often CPU-oriented and parallelize across documents, but GPU BPE implementations can also parallelize merge work within a document. Benchmark the exact tokenizer, normalization and regex path, document-size distribution, batch size, and available CPU and GPU implementations. Those measurements, not an assumed CPU-only limit, size the tokenization fleet.

At frontier-corpus scale, tokenization is a large compute pass whose wall-clock depends on measured end-to-end throughput. The decision is whether to size a dedicated CPU pool, use a GPU implementation, or lean on a managed distributed framework (Spark, Ray, Dask, or NeMo Curator's streaming executor that overlaps CPU and GPU stages). Choose by throughput, cost and pipeline compatibility on the real corpus.

Sizing the prep cluster: a deliberately different machine

The prep supercomputer is sized against the opposite constraints from the GPU fleet. The headline is that CPU-bound extraction and tokenization can make prep CPU-dense, RAM-heavy and storage-bandwidth-bound. GPU dedup or classification changes that mix, so size each stage's compute, memory, storage and network before you call the hall power-light. A CPU-heavy prep rack can fit an air-cooled row where a dense training GPU rack needs liquid cooling, though its populated CPU/GPU mix still sets the real power and cooling limits. Its scarce resources are CPU cores, DRAM capacity (dedup hash tables and shuffle buffers are memory-hungry), fast local scratch (NVMe for intermediate shuffle spill), and sustained sequential read bandwidth from the object/capacity tier where the raw corpus lives (→ Chapter 9.6). The network it stresses is the data-center fabric for all-to-all shuffles, not a non-blocking GPU back-end.

Two structural decisions matter: dedicated or shared, and co-located or remote. A dedicated prep cluster (or a large pool of general CPU compute) decouples prep wall-clock from GPU availability, so you prepare the next corpus while the current run trains. The cost is standing up and powering a second cluster. Sharing idle GPU-node CPUs is capital-efficient, but it couples your prep schedule to GPU idleness and wastes accelerators. On location, prep wants to run where the data already is. Raw corpora are multi-petabyte, and data gravity makes them economically immovable: at 2026 list prices, moving 1 PB out to the internet costs about $90k at the first-tier rate and about $54k at AWS's published volume tiers, and negotiated rates are lower. Prep is therefore the textbook case of move compute to data, the same gravity logic developed in Chapter 9.8.

Prep cluster vs GPU training fleet: the inverse profile
AxisGPU training fleetData-prep cluster
Binding resourceGPU FLOPs + scale-up bandwidthCPU cores + DRAM + read bandwidth
AcceleratorsThe entire pointMeasured benefit in dedup, classification or tokenization
Rack powerPopulated GPU rack power and cooling limitsPopulated CPU/GPU mix and the cooling it needs
NetworkNon-blocking back-end (IB/RoCE)Shuffle fabric; oversubscription must meet the stage deadline
Storage emphasisHot parallel FS, checkpoint write burstsCapacity/object read bandwidth + fast NVMe scratch
Job shapeSynchronous, restart-from-checkpointBatch, idempotent, restartable per-shard
Siting driverCheap firm power, energized soon; climate a secondary termWhere the corpus already lives (data gravity)
Almost every axis is opposite. Sizing the prep cluster with GPU-fleet instincts (liquid cooling, non-blocking fabric, accelerator-first) overspends on the wrong things and underspends on cores, RAM and read bandwidth.
15T tokens
The 2024 FineWeb release: 96 Common Crawl snapshots, ~44 TB of GPT-2 tokens on disk; since grown past 18.5T tokens
112 hashes (14 × 8) over 5-grams
FineWeb's 2024 MinHash setup: probabilistic candidate selection, tested per snapshot, not a hard Jaccard cutoff
Scope & caveats

Word 5-grams and MinHash banding; 0.75 is a similarity target, not a hard cutoff. Collision probability 1−(1−s^8)^14 is about 77% at s=.75. Per-snapshot dedup is an experiment result for that corpus, not a universal policy.

~50%
of already-filtered RefinedWeb documents removed by fuzzy and exact dedup, about 12% of original Common Crawl documents
Scope & caveats

corpus dedup removal share

8–13-gram
Typical contiguous-span length for n-gram decontamination matching against benchmarks
up to 8 pts
Largest accuracy drop on GSM1k, a fresh human-written mirror of GSM8K; frontier models showed little drop
retest on a clean mirror before you trust a benchmark score, because the damage is uneven across model families
Scope & caveats

The largest drop among the model families tested, not an average and not a contamination rate. Frontier models showed minimal signs of overfitting.

The first arXiv version of the paper reported drops of up to 13%; the figure here is from the final version (NeurIPS 2024 Datasets and Benchmarks).

Deep dive: a worked prep budget, and where it goes wrong

Compute each stage as the maximum of its overlapped compute, read, shuffle and write times, then sum the sequential stages. Extraction offers 128 × 64 × 0.010 = 81.92 GB/s of assumed CPU capacity, so the 64 GB/s source is the first bottleneck. Tokenization is the longest stage at the assumed per-core rate. The table below carries the trace, because the stages do not all share one hardware personality.

The six unrounded durations sum to about 26 h. Adding 25% contingency yields about 33 h, inside the 36-hour release window, so the plan works on paper. Flip: a 24-hour deadline fails even before contingency, and the configuration needs at least 33 h. Re-profile and expand the limiting stages or change the release scope; assigning extra GPUs to an unaccelerated CPU stage does not meet the date.

Signatures use 109 × 112 × 8 B = 896 GB; ×2.5 for index allocation gives 2.24 TB. Per worker, 2,240/128 + 48 + 16 = about 82 GB, below 128 GB. Check the largest duplicate bucket, because the uniform average is not a skew guarantee. Scratch needs 200 + 400 = 600 TB. After one worker loss, 127 × 8.0 × 0.75 = about 760 TB is available, and about 160 TB of extra simultaneous spill would exhaust that surviving allocation. Exceeding the memory or scratch bound requires repartitioning or a revised schedule.

The case also undercounts documents to keep the classifier arithmetic round. One billion documents in 150 TB is about 150 KB each, while FineWeb's dataset card (v1.4.0, July 2025) lists 18.5T GPT-2 tokens in about 25.9 billion documents, roughly 700 tokens each. At that size and four bytes per token, 150 TB of web text is about 50 billion documents, and the same 32 GPUs at 2,000 documents/s would need more than 200 h to score them. Per-document stages scale with document count, not bytes, and two of them break here. The classifier needs roughly 50 times as many GPUs, or a model light enough for the CPU pool, the route DataComp-LM took with fastText. The dedup signatures grow by the same factor: 50 billion × 112 × 8 B is about 45 TB, or 112 TB after the 2.5× allocation, which puts about 940 GB on each worker against 128 GB of DRAM. Split the LSH bands into several passes that each fit in memory, and size the dedup plan to the real document count, not the round one.

Publish only an accepted output manifest: source snapshots and eligibility decisions, stage and container hashes, normalization and tokenizer versions, dedup and filter policy, eval-registry hash, object checksums, shard boundaries, token counts and shuffle seed. Rerun a failed partition and require the IDs and contents in the manifest to reproduce, or publish an explicitly new version. The FineWeb experiments motivate measuring curation policy rather than assuming quality follows removal rate; they do not supply this cluster's rates. Hand the accepted manifest to Chapter 9.5 to test the real loader and restart path. Before you book the schedule or buy the hardware, measure the assumed rates and the worst duplicate buckets.

The stage table below shows which resource sets each duration. Its rates are the assumptions above, and a faster isolated kernel changes the release date only if it shortens the limiting term.

Preparation case: stage-by-stage wall-clock trace
StageTrace and limiting resourceDuration
Extraction / early gates1,000,000 GB / 64 GB/s / 3,600 s/h; CPU ceiling 81.92 GB/s; output 200,000/32 sAbout 4.3 h; source binds
Dedupmax(6.0 h compute, 400,000 GB / 40 GB/s / 3,600, 200,000/32/3,600 read, 150,000/32/3,600 write)6.0 h; compute binds
Classification10^9 documents / (32 × 2,000 documents/s) / 3,600; 150 TB input and 41 TB output at 32 GB/s clear soonerAbout 4.3 h; inference binds
Decontaminationmax(2.0 h compute, 41,000/32/3,600 read, 40,000/32/3,600 write)2.0 h; compute binds
Tokenization10^13 tokens / (8,192 × 40,000 tokens/s) / 3,600; 40 TB read at 32 GB/s and 40 TB write at 20 GB/s clear soonerAbout 8.5 h; tokenizer binds
Shuffle / shardmax(1.0 h compute, 80,000/40/3,600 shuffle, 40,000/20/3,600 write, 40,000/32/3,600 read)1.0 h; compute binds
Use unrounded intermediate values when summing, then add the single 25% schedule contingency. Rates and yields are assumptions for this one case.
about 33 hderived
Release time for the sequential preparation case above, under illustrative assumptions
Scope & caveats

Worked-example value, not a measurement: 1.0 PB raw input, 128 workers × 64 cores, 32 classifier GPUs, six sequential stages summing to about 26.2 h, plus 25% contingency. Rerun it with rates measured on your own corpus.

Anti-patterns

The same prep failures recur, because each comes from treating prep as ETL rather than as a sized supercomputer:

  • Tokenizing without implementation benchmarks. Teams size a CPU pool or borrow GPU nodes before benchmarking the exact normalization, regex and tokenizer pipeline. The wrong hardware mix leaves either CPU cores or accelerators idle.
  • Treating a post-training scan as a repair. When a new eval overlaps the frozen training manifest, mark the original score contaminated and use a clean mirror or held-out replacement. Add the eval to the registry and remove overlaps before the next training run.
  • Treating dedup threshold and classifier operating point as hygiene, not hyperparameters. Teams pick a similarity threshold and a quality-classifier cutoff because they sounded reasonable, never ablate them, and discover a quality regression or a silent capability gap after a frontier run. Global dedup that deletes the good recurring web is the canonical case.
  • Sizing the prep cluster with GPU-fleet instincts. Liquid cooling, a non-blocking back-end and accelerator-first design, bought before the prep stages are measured, can overspend on idle GPUs while starving the cores, DRAM, scratch and read bandwidth the CPU-bound stages need. Derive each resource from the complete pipeline budget. → Chapter 9.8.

Choose the prep resource mix by the stage that controls delivery, and the curation policy by accepted output quality at a fixed training budget. Keep corpus release behind both gates: finishing early with an untraceable or over-filtered dataset does not feed the intended run. Under-sizing memory or scratch delays the program, and accepting an untested exclusion policy spends the GPU budget on a different corpus than the one the program meant to train.

Offline prep produces what the runtime loader streams: Chapter 9.5 engineers the online data path, and Chapter 9.6 covers the capacity/object tier the corpus lives on. Chapter 9.8 develops the data-gravity and move-compute-to-data logic that sites the prep cluster. Chapter 9.4 covers the checkpoint write path, which shares the prep cluster's restartable, idempotent batch discipline. What you are legally permitted to put in the corpus (provenance, licensing, opt-outs, PII) is the regime these filters enforce mechanically, and Chapter 10.10 treats it. Running this second cluster as a distinct power and capital line item connects to the on-site generation strategy in Chapter 3.5.
Cite this chapter
Fehn, J. (2026). The Data-Prep Supercomputer: Offline Data Processing (Chapter 9.9). The Definitive Guide to AI Data Centers. https://aidatacenterguide.com/part-9-storage-and-data/9-9-the-data-prep-supercomputer-offline-data-processing (accessed 2026-10-25).
@misc{aidc-9-9,
  author       = {Fehn, Jacob},
  title        = {The Data-Prep Supercomputer: Offline Data Processing (Chapter 9.9)},
  howpublished = {The Definitive Guide to AI Data Centers},
  year         = {2026},
  url          = {https://aidatacenterguide.com/part-9-storage-and-data/9-9-the-data-prep-supercomputer-offline-data-processing},
  note         = {Accessed 2026-10-25}
}
Spotted an error? Suggest an edit