一人工程的 9 个角色:simedw 的全栈
simedw 一个人做了 9 个角色。OpenAI 一个角色 = 一个团队。一人工程 = 全栈单干。
9 个角色
- 数据收集者:爬 BitMidi + Classical Archives + 自家私藏,共 60 万 MIDI 文件。
- 数据清洗者:写 5 步流水线(钢琴主导 → 多轨砍 → 维度筛 → 指纹去重 → split 归一),60 万 → 21 万。
- 训练者:PyTorch 训 33M / 64M / 125M 三档 transformer,14 次实验迭代。
- 部署者:PyTorch → ONNX → Core ML + INT8 量化 + iPhone 真机测试。
- 评测者:Gemini 3.5 Flash pairwise(70% 一致)+ autoregressive loss + rollout 偏好 + 真用户反馈。
- App Store 沟通者:提交 iOS app + 苹果审核 11 天等待 + V1 提交审核中。
- HN 营销:写 14 次实验公开记 HN 评论 +「deliberately haven't read a lot of papers」工作哲学传播。
- README 作者:GitHub README = 「论文综述」+「Limitations」+「下一步研究」三个学术部分合一。
- iOS 用户支持:回复 App Store 评论 + Reddit 邮件 + GitHub issues,决定 V1 3 个修复方向。
OpenAI 对照:190+ 人
| 角色 | simedw | OpenAI |
|---|---|---|
| 数据收集者 | simedw | 5+ 数据工程师 |
| 数据清洗者 | simedw | 20+ 数据工程师 |
| 训练者 | simedw | 30+ 研究科学家 |
| 部署者 | simedw | 15+ ML 系统工程师 |
| 评测者 | simedw | 50+ 评估工程师 |
| App Store 沟通者 | simedw | 5+ 产品经理 |
| HN 营销 | simedw | 10+ 内容营销 |
| README 作者 | simedw | 5+ 技术写作 |
| iOS 用户支持 | simedw | 50+ 客服 + 5+ 产品经理 |
| 总计 | 1 | 190+ |
OpenAI 一个角色 = 一个团队(5-50 人)。simedw 一个角色 = 一个人。
总规模差 190×。但产品形态一致——iOS 上线 + 数据干净 + 模型 work + 评测 honest + 用户支持。
全栈的代价
simedw 一个人做 9 个角色,每个角色都不是「专家级」:
- 数据清洗:教科书 5 步组合,没有新算法。
- 训练:标准 transformer + 已知 tricks,没有架构创新。
- 部署:PyTorch → Core ML 标准流水线,没有自定义推理引擎。
- 评测:Gemini pairwise + autoregressive loss + rollout 偏好,没有新评估方法。
- 营销:HN 评论 + Reddit,没有 press release。
- 用户支持:App Store 评论回复,没有客服系统。
每个角色都是「工程师水平」,不是「专家水平」。simedw 不会写自定义推理引擎(像 vLLM 那样),不会训 RLHF(像 OpenAI 那样),不会建客服系统(像 Apple 那样)。
但「工程师水平 × 9」覆盖了「产品上线 + 用户能用 + 用户反馈」的完整链路。
全栈的优势
simedw 一个人做 9 个角色,每个角色的反馈都直达:
- 数据清洗的反馈(训练效果)→ 改清洗流水线。
- 训练的反馈(rollout 偏好)→ 改训练目标。
- 部署的反馈(iOS 真机)→ 改 Core ML 配置。
- 评测的反馈(V0 上线)→ 改 V1 设计。
- 营销的反馈(HN 评论)→ 调整工作哲学表述。
- 用户支持的反馈(App Store 评论)→ 决定 V1 3 个修复方向。
OpenAI 一个角色 = 一个团队 = 「反馈经过多个角色 → 多层 interpretation → 慢 10×」。
simedw 一个角色 = 一个人 = 「反馈直达 → 自己 interpretation → 快 10×」。
V0 → V1 = 1 周(simedw)。 GPT-3 → GPT-3.5 = 1 年(OpenAI)。
角色切换的隐性成本
simedw 一周的角色切换:
- 周一:写数据清洗(5 步流水线第 4 步的 fingerprint 算法)。
- 周二:训练实验 9(scheduled sampling 微调)。
- 周三:iOS 真机测试(Core ML 加载 + 推理速度验证)。
- 周四:写 HN 评论(实验 9-12 公开记)。
- 周五:回复 App Store 评论(3 类反馈 → V1 设计)。
- 周末:V1 实现 + 提交苹果审核。
每天切换 1 个角色。5 天 5 个角色。周末收尾。
一人工程的隐性成本 = 「每天切换上下文」。simedw 不能「专注一件事」,必须 9 个角色并行。
OpenAI 的隐性优势 = 「专注一件事」。一个数据工程师专注 5 年清洗数据,越洗越好。simedw 洗 1 周就跑训练,下次清洗是几个月后。
角色切换的「意外创新」
但 9 个角色并行有意外好处:跨角色的灵感。
- 数据清洗发现的「指纹去重算法」启发训练实验的「同曲不同版本归到同一 split」。
- 训练实验发现的「β=0.03 偏好」启发部署的「64M 蒸馏」。
- 部署发现的「INT8 量化 -2%」启发评测的「consensus 去噪」。
- 评测发现的「validation loss 漏 rollout」启发训练的「scheduled sampling」。
跨角色灵感 = 「一个人同时懂 9 个角色的好处」。OpenAI 一个团队 = 「懂 1 个角色」。
一人工程的意外优势 = 「跨角色灵感」。9 个角色串成 1 个人的知识图谱。
全栈的极限
simedw 的全栈是「钢琴 MIDI 续写 iOS app」的极限:
- 任务域小(钢琴 + MIDI)→ 一个人能 cover。
- 数据源小(60 万 MIDI)→ 一个人能清洗。
- 模型小(125M)→ 一个人能训。
- 部署平台小(iOS)→ 一个人能部署。
任务域变大(多模态 + 多任务)→ 一个人 cover 不了 → 必须团队。
OpenAI 的 GPT-4:
- 任务域大(多模态 + 多任务 + 多语言)。
- 数据源大(几亿文档 + 几亿图片)。
- 模型大(1.7T)。
- 部署平台大(云服务 + 100+ 国家)。
GPT-4 必须团队。simedw 的 RollTab 必须一人。
「全栈的极限」= 任务域能小到一个人 cover。
14 次实验里 9 角色的体现
- 实验 0:数据收集 + 数据清洗(角色 1 + 2)。
- 实验 1-3:训练(角色 3)。
- 实验 4-8:训练 + 评测(角色 3 + 5)。
- 实验 9-12:部署 + 训练(角色 4 + 3)。
- 实验 13:用户支持 + 决定 V1 方向(角色 9)。
- 实验 14:V1 实现 + 提交苹果(角色 6 + 4 + 3)。
- HN 评论(角色 7)+ README(角色 8):贯穿全部 14 次。
9 角色 = 14 次实验的全部工作量。
signature
solus opus。