一人工程 · solus opus

← 全部作品

一人工程solus-opus音乐AIsimedwmidi-autocomplete表征实验

simedw 14 次实验里的五个意外 — midi-autocomplete 不只是 5× speedup

← 全部作品 / 2026-08-25 essay / [一人工程] [音乐] [AI] [simedw] [midi-autocomplete] [实验] [表征]

125M。 4 张 RTX 4090。 14 次实验。 iPhone 端 108 notes/sec。

这是 RollTab 的全部硬件预算。


simedw 是谁

Simon Edwardsson。 V7 contractor。 业余时间一个人做钢琴 MIDI 续写。

第一人称:

"I build strange little systems with AI, software, and hardware. Then I write up what worked, what failed, and what I learned."

solo engineer 的标准开场白。


14 次实验不是 14 个 idea

simedw 在博客里反复说:14 experiments。

不是 14 个 idea。 不是 14 个 ablation。 是 14 次跑完整个 training pipeline 的实验。

solo engineer 的耐心 = 同一组硬件跑 14 次。


五件意外

跑完 14 次实验后,simedw 在博客里讲了五件意外的事。


意外 1:5× speedup 不来自调参

最初 simedw 把 MIDI 生成拆成 4 次 transformer pass:

  • NOTE_ON
  • NOTE_OFF
  • velocity
  • duration

每次 pass 一次 forward。 约束靠 grammar mask 保证。

后来 simedw 合成一种 token:

NOTE(pitch, delta, duration, velocity)

一次 transformer pass 出来。 约束内嵌进 vocab 几何。

5× 快。

simedw 自己解释:

"Originally I split generation into four grammar-masked passes: NOTE_ON/NOTE_OFF/velocity/duration. Each pass did one transformer forward. The combined result is on average much slower than a single pass with a compound token representation."

不是调超参。 不是换优化器。 不是堆数据。

换表征。


意外 2:5× 数据打不过一轮数据清洗

"Cleaning beats more data."

早期 simedw 试着把数据量扩张 5 倍。

val loss 没动。

后来一轮仔细的数据清洗——

同样的样本量,val loss 明显降。

solo engineer 的发现:数据质量比数据规模重要 5 倍。


意外 3:DPO β 不是越大越好

用 Gemini 3.5 Flash 做 pairwise 比较,做 DPO。

β=0.10 → 推太远,模型反而变差。 β=0.03 → 比较合适。

69% preference vs base 24.55%。 接近 3× preference gain。

但前提是 β 不能贪心。

solo engineer 的发现:偏好优化的距离不是越大越好。


意外 4:val loss 上升,但 rollout 更好

增加 scheduled sampling(用模型自己预测当 teacher forcing 输入)。

validation loss 上升。 rollout 质量更好。

simedw 重新定义 overfit:

  • val loss 不是唯一信号
  • rollout 质量是另一个轴

solo engineer 的发现:评估函数不止一个。


意外 5:Core ML 不暴露 KV cache

Core ML runtime 不暴露 KV cache。 没法做 ring buffer streaming。 每次生成都要重新 forward 整个 context。

simedw 选择接受。

"算了,挺快乐。"

solo engineer 哲学:不跟工具较劲。


对照

路线 规模 时间 部署
Stanford Anticipatory Music Transformer 360M 2023 学术
Aria-Duet 100k+ hours 2025 Nov 学术
simedw RollTab 125M 2026 iPhone

solo engineer 跑得最慢,但跑得最远。


表征 vs 调参 vs 数据 vs 规模

  • OpenAI 看到的是 scaling laws。
  • Stanford 看到的是 anticipation tokens。
  • simedw 看到的是 token geometry。

solo engineer 没卡路里。 solo engineer 改表征。 改数据。 改评估。 接受工具限制。


一人工程的 14 次实验

solo engineer 的耐心 = 14 次跑完整个 training pipeline 的实验。

每一次实验都换想法。

  • 换表征 → 5× speedup
  • 换数据 → 同样样本量 val loss 降
  • 换 DPO β → 3× preference
  • 换评估信号 → rollout 改善
  • 接受工具限制 → Core ML 上线

不是 14 次调参。 是 14 次换想法。


表征是房子地基

solo engineer 卡住的时候。 先别问:我的超参对吗。 先问:我的表征对吗。

房子地基不对。 刷漆没用。

签名:solus opus。