分词与文件压缩比率详解 | AI生成和翻译

Home 2026.04

是的,这完全正常!原因如下:

数学原理

Raw textTokenized (uint16) 转换:

原始:  "The cat sat on the mat"
字符:     20 characters × 1 byte = 20 bytes
Tokens:    ~5 tokens × 2 bytes = 10 bytes  (GPT-2 BPE tokenization)

压缩比率:文本到 tokens ~2-4x

您的数据

文件 大小 Token 数量 计算
Raw text (full) 61 GB ~15B tokens* 61GB ÷ ~4 chars/token
Raw text (sample) 477 MB ~114M tokens 477MB ÷ ~4 chars/token
train.bin 27 MB 14M tokens 14M × 2 bytes
val.bin 191 MB 100M tokens 100M × 2 bytes

*假设使用 GPT-2 tokenizer 的英文文本平均 ~4 chars/token

为什么这么小?

  1. Text → Tokens:英文在分词时压缩 ~2-4x(常见单词变为单个 token)
  2. uint16:每个 token 存储为 2 字节(相较 Python int 的 ~4 字节)
  3. 部分数据:您只准备了 61GB 文件的 477MB 样本(不到 1%)

现实世界比较

nanoGPT 的标准 Shakespeare 数据集:


因此,从 477MB 文本样本得到 27MB train.bin = ~18x 压缩。这是正常的。 如果您准备完整的 61GB,将得到总计 ~30GB 的 .bin 文件。


Back Donate