Hotdry.
ai-systems

Anadim 进位传播标记化:最小 Transformer 实现 10 位加法

通过零填充与输出反转的标记化策略,小型 Transformer 无需显式溢出逻辑即可处理 10 位加法,提供模型参数、训练阈值与复现清单。

在 Transformer 模型处理算术运算如多位加法时,核心挑战在于进位(carry)传播的长程依赖:低位结果影响高位,需要模型在序列中维持状态。传统逐字符标记化导致序列冗长,注意力机制负担加重,难以在小型模型上训练稳定。Anadim 的 AdderBoard 项目精炼出 “进位传播标记化” 策略,通过固定长度零填充和输出反转,将问题简化为唯一长程依赖 —— 进位传递,使 6080 参数的微型 Transformer 实现 100% 准确率,无需显式溢出处理逻辑。

这种策略的核心观点是:标记化设计应匹配 Transformer 的自回归生成机制(从左到右),而加法进位天然从低位向高位传播。因此,反转输出序列,使生成从最低有效位(LSB)开始,顺应进位流向;同时零填充输入到固定 10 位,确保位置对齐,消除变长序列的复杂性。结果,模型无需学习停止信号或长度预测,仅专注列加法与进位更新。证据来自 anadim/smallest-addition-transformer-claude-code 仓库:2 层 decoder-only Transformer(d_model=16,heads=2,ff_dim=48),vocab=15(0-9、+、=、PAD、BOS、EOS),固定 seq_len=35。在 30K 步训练(~10 分钟 Apple MPS)后,10K held-out 测试集达 100% exact-match 准确率,展现经典 grokking 现象 —— 前 4K 步准确率近零,后突变至 99%+。

具体实现参数如下:

  • 输入格式:两个操作数零填充至 10 位,格式 <bos>XXXXXXXXXX+YYYYYYYYYY=(X/Y 为 0-9 或 PAD)。
  • 输出格式:结果反转并零填充至 11 位,后接 <eos>,如 123+45=168 → 输出 86100000000<eos>(反转 168 补零)。
  • 模型超参
    参数
    层数 2
    d_model 16
    heads 2
    ff_dim 48
    vocab_size 15
    seq_len 35
    Pre-LN
    bias
    权重共享 输入 / 输出嵌入
  • 训练设置:batch_size=256,lr=6e-4(cosine decay),warmup=100 步,AdamW(β1=0.9,β2=0.95),clip_grad=1.0。数据:随机生成 10 位加法对,train/val/test 各 100K/10K/10K。
  • 监控要点:观察 loss 分解(输入 / 输出),准确率曲线;grokking 前关注 perplexity plateau,后验证泛化(虽固定长度,但测试未见样本)。

可落地复现清单:

  1. 环境:PyTorch ≥2.0,pip install torch transformers datasets。
  2. 数据生成:随机 uniform (0, 10^10-1),零垫输入,反转输出。
  3. 模型构建:GPT-style,无 pos_embed(因固定位置),RoPE 可选但未用。
  4. 训练脚本:循环至 val_acc >99.9%,保存 best.pt(~22K 步收敛)。
  5. 评估python eval.py --inference A B,输出 A + B = RESULT [CORRECT/WRONG]
  6. 优化扩展
    • 阈值:参数 <4K 失败,6K 阈值尖锐。
    • 回滚:若 grokking 延迟,增 lr 至 1e-3 或 dropout=0.1。
    • 泛化:测试 11 位(预期 OOD 失败),改变长需加长度 token。
    • 监控:TensorBoard 追踪 train_loss、val_acc、perplexity;警报若 10K 步 acc<10%。

此设计揭示小型 Transformer 的计算极限:通过任务特定标记化,隐式编码进位状态于隐藏表示,注意力头专职传播(可视化可见低位 attend 高位)。风险包括固定长度不适变长输入,及 grokking 非确定性(种子敏感)。相较通用 LLM,此为 “手术刀” 方案,适用于嵌入式 AI 系统如边缘计算器。

资料来源:

(正文字数:1028)

查看归档