十年一梦
103/180

32016·深水区

103V3_C31_天花板

4497字 · 约9分钟

阅读进度 0%已读 0 分钟 / 共 9 分钟

V3_C31_天花板

十二月中旬。周三下午。

许畅把一页PPT贴在了白板上。

不是投影。是打印出来的。A4纸。用透明胶带粘在白板右边。白板左边还有上周留下的数字——84.3%。红色的85。黑色的"→五月"。

他的PPT只有一页。上面画了两条线。

第一条线是当前模型的准确率上限。一条水平的虚线。标着"85%~86%"。意思是:按现在的模型架构,不管怎么调参,不管喂多少数据,天花板就在这里。85到86。到不了90。

第二条线是新模型的理论准确率。一条斜向上的实线。从86%出发。往右上角延伸。延伸到90%。延伸到95%。标着"新架构。更多参数。更多层。更多数据。"

两条线之间的差距。从86%到95%。这个差距需要什么?需要更大的模型。更多的GPU。更多的训练时间。更多的钱。

许畅站在白板旁边。手指点了一下那条虚线。

"当前模型已经接近天花板了。"他说。"工程手段——差量更新、数据增强、超参调优——能把准确率推到85%,也许86%。但到90%,必须换架构。更多参数。更大的模型。"

他停了一下。

"简单说。更多钱。"

他说"更多钱"的时候没有犹豫。他不需要犹豫。钱不是他的。他不算账。他只算准确率。准确率需要什么他就说需要什么。至于钱够不够。那是创始人的事。不是算法工程师的事。

这不是冷漠。这是分工。他的分工是技术。我的分工是活着。

全场安静了三秒。

三秒里每个人在想不同的事。许畅在等反馈。刘海洋在算工程替代方案。周小薇在心里加减。张富贵在看我的脸。林工戴着耳机没听到(也许听到了但不参与)。小陈在另一边整理客户反馈表。

张富贵看了一眼白板。看了一眼周小薇。周小薇没有表情。她在等。等数字。许畅还没说数字。

"换架构需要多少?"我问。

"加两台A100。算力成本翻一倍。月烧从现在的十二万涨到十五六万。再加上新的训练数据——大约三四十万的额外投入。"

三四十万。账上一百三十七万。减掉三四十万等于不到一百万。一百万按十五六万月烧等于六个月。到明年六月。

比现在少了五个月。


刘海洋从椅子上站起来了。

他很少站起来反驳人。上次站起来是说"三周到一个月能到85%"。那次是为了支持一件事。今天是为了反对。

"现在的模型够用了。"他说。声音平的。但平里面有硬。"先工程优化。把84.3%推到85%。靠工程手段做得到。差量更新已经在跑了。推理速度优化了百分之四十。内存降了百分之二十。这些优化留出来的算力空间可以跑更多轮训练。到85%不需要换架构。"

"85%是天花板。"许畅说。"工程优化能到85%。但之后呢?"

"之后是之后。先到85%。拿85%去签客户。签了客户有收入。有收入再考虑换架构。"

"可是到90%要多久?"

"那取决于你换不换架构。"

"我的意思是——如果不换,到不了90%。"

"那就先不到。先到85%。先签单。先活着。活着以后再想90%。"

两个人面对面。不是吵架的那种面对面。是两种思维方式正面碰撞的那种。许畅想的是终点——90%,95%,商用级的AI客服。刘海洋想的是下一步——85%,签单,活下去。

一个看远的。一个看近的。看远的人觉得看近的人短视。看近的人觉得看远的人不切实际。两种都对。两种加在一起才是完整的。但在会议室里两种加在一起就变成了对立。

许畅是研究员出身。他的本能是——做到最好。最好是90%。最好是95%。最好是行业第一。这是学术圈的训练。论文要发最好的。实验要做最好的。不是最好的不发。

刘海洋是工程师出身。他的本能是——做到能用。能用是85%。能用是客户付钱。能用是活到明天。这是创业的训练。不是最好的没关系。能用就行。先活着。活着的公司可以慢慢变好。

两种训练。两种本能。在同一间办公室里撞在了一起。

周小薇在旁边。她的笔没有动。她在等。等我做决定。她不会在技术分歧上发表意见。她只管数字。不管方向。方向是创始人的事。

张富贵也在旁边。他的笔记本翻开了一页空白的。准备记。记什么取决于我说什么。他不参与技术讨论。他只记结果。结果出来了他去执行。

"要到90%要多久?"我问许畅。

"快则三个月。慢则半年。"

"要烧多少钱?"

"加两台服务器。算力成本翻一倍。大约三四十万的额外投入。"

张富贵低头在笔记本上写了三个字。没有括号。"无底洞"。然后抬起头继续看我。

刘海洋转过来看着许畅。声音没有升高。但每个字都很清楚。

"这个钱从哪来?"

"融资来的。"

"融资的钱是用来活到下一轮的。不是全烧在模型上的。"

许畅没有立刻回答。他想了两秒。

"你以为那200万是从天上掉下来的?"

这句话出来以后全场安静了。

不是因为它凶。是因为它对。200万不是从天上掉的。是陈峰投的。陈峰投的不是AI研究经费。是一家公司的命。命是用来活的。不是用来做实验的。

两个人都看着我。


我坐在中间。

两个方案在白板上。一个省钱。85%天花板。活着。一个烧钱。理论上到90%。也许活得更好。也许烧完了。

两分钟。我想了两分钟。

两分钟在安静的办公室里非常长。长到能听见暖气管道里的水在响。咕噜一声。热胀冷缩。长到能听见远处标注间的咔嗒声从走廊传过来。

我把每一个数字过了一遍。

刘海洋方案:差量更新+工程优化。月烧约12万。到85%大约两三周。不需要额外投入。到了85%以后天花板。不能到90%。但能签单。能拿TS。

许畅方案:换模型架构。月烧涨到15-16万。额外投入30-40万。到85%大约两周。之后能冲90%。三到六个月。但钱烧得更快。到明年六月可能就没了。

选哪个?

如果Pre-A的300万在三月到。许畅方案能跑。有了300万烧得起。能到90%。90%的公司比85%的公司值钱。

如果Pre-A在三月没到。许畅方案会让公司死得更快。因为多烧了三四十万。死线从六月提前到四月。

赌Pre-A能到吗?

"先走许畅的方案。"我说。

全场看着我。

"试两周。两周后如果准确率没有突破——"

我停了一下。本来想说"切回刘海洋的方案"。但我没这么说。我说的是另一个版本。

"两周后如果准确率没有超过当前水平。切回工程优化路线。"

说完了。

刘海洋没有说话。他看了我一秒。然后站起来。转身。回到工位。坐下。打开电脑。开始敲代码。

他没有摔椅子。没有甩门。没有说"你做错了"。什么都没有。

他只是回去了。

但我知道他听到了什么。他听到的不是"先走许畅的方案"。他听到的是——又一次被绕过了。

我说的是"许畅的方案"。不是"方案B"。不是"换架构方案"。是"许畅的方案"。

选的不是方案。是人。

我把他的名字绑在了方案上。方案可以换。名字换不了。他的名字不在那句话里。

这是第三次了。

第一次。七月那次。他变成翻译官以后。我开始无意识地先看许畅等他翻译。刘海洋开会一句话没说。张富贵在楼梯间提醒我。

第二次。还是那段时间。我更多地找许畅讨论方向。找刘海洋只谈bug和架构。技术方向的话我跟许畅说。日常维护的话我跟刘海洋说。无意中把他定位成了"维护者"而不是"共建者"。

第三次。今天。我直接说了"许畅的方案"。把方案和人绑在了一起。

三次。每一次都有合理的理由。许畅的翻译能力更强。许畅的方案更前沿。许畅的思路更接近投资人想听的东西。每一次都是对的选择。

但每一次"对的选择"都在刘海洋心里留了一个印子。印子不深。但三个印子加在一起就是一条线了。一条从"被绕过"到"不被需要"到"也许该走了"的线。

这条线今天我看不见。也许明年会看见。也许后年。

也许我应该说"先试新架构路线"。不提名字。只提事情。但我没有。我下意识地说了"许畅的方案"。因为这三个月来我已经习惯了。

习惯。最无意识的东西。最伤人的东西。


散会以后。四点半。

张富贵拉着我走到了走廊。

"海洋下午状态不对。"

"我知道。"

"你是不是——"

"我知道了,富贵。"

我的语气比我想要的重了一点。重了一点。我心虚了。

张富贵闭上嘴。点了头。没再说。

他不会追着一个不想听的人说。这是他的规矩。说一次。你听了就听了。没听——他记在本子里。以后你后悔了他翻出来给你看。

他出去以后没有回自己的工位。他走到了刘海洋旁边。

拉了一把椅子。坐下。没有看刘海洋的屏幕。不问他在写什么。不问他什么感受。不说"你没事吧"。不说"老赵不是那个意思"。

他就坐在那里。坐了大概三十秒。什么都没做。刘海洋在敲代码。张富贵在旁边坐着。两个人都不看对方。但一个人坐在另一个人旁边不说话。有时候比说一千句话都有用。

三十秒以后张富贵开口了。

"今晚沙县。一起?"

"嗯。"

两个字。"今晚沙县"是邀请。"嗯"是接受。不需要更多。

张富贵不懂AI。不懂模型架构。不懂工程优化和新架构的区别。但他懂人。他知道刘海洋下午被绕过了。他知道刘海洋不会说出来。他知道刘海洋需要的不是安慰。是陪伴。

沙县是他们的语言。跟蒸饺一样。跟红牛一样。热的。实在的。不需要翻译的。

许畅能翻译。张富贵不需要翻译。他的语言本来就是人话。蒸饺是人话。沙县是人话。"一起"是人话。

他是全公司唯一一个从来不需要许畅翻译的人。因为他说的从来就不是术语。是人。


十二月的上海。窗外。

梧桐树光秃秃的。枝丫在灰白色的天空里伸展。没有叶子的枝丫在冬天很好看。因为结构暴露了。你能看清每一根枝是怎么生长的。从主干到侧枝到末梢。很清楚。

偶尔有一只鸟落上去。停了一秒。飞走了。梧桐树不留鸟。十二月的梧桐树什么都不留。

办公室的暖气开着。但不匀。靠门那边凉。靠服务器那边热。中间的温度是混合的。不冷不热。将就的温度。这间办公室从一月到十二月一直是这种将就的温度。冬天暖气不够。夏天空调不行。中间不冷不热。刚好够工作。不够舒服。

我站在窗前。手指放在窗台上。玻璃是凉的。十二月的玻璃。冰的。手指放上去三秒就冻红了。指节发白。跟口袋里攥钥匙太紧的时候一样。

窗外。梧桐树。光秃秃的。枝丫在灰白色的天空里伸展。没有叶子的树在冬天很好看。因为它诚实。有叶子的时候你看不见结构。叶子遮住了一切。落光了你才看清楚。

人也是。忙的时候你看不见裂缝。停下来了才看见。

我收回手。看了一眼刘海洋的背影。他坐在工位上。面对屏幕。白色的衬衫。微微弓着肩膀。跟第一天认识他的时候一样。七年了。从大学到创业。背影没变。脾气没变。代码还是那么写。受了委屈还是不说。不说的方式也没变。回去。坐下。敲代码。用代码说话。

七年了。他每次被绕过都是同一个反应。回去。坐下。敲。

不吵。不闹。不辞职。不消极。不发朋友圈吐槽。不跟朋友抱怨。

他把所有的情绪都变成了代码。变成了凌晨的Git提交。变成了推理速度百分之四十的提升。变成了内存占用百分之二十的降低。

情绪有多重。代码就有多好。

这是刘海洋的方式。七年没变。也许永远不变。也许有一天会变。

但不是今天。


当天晚上。十一点。

我打开Git日志。习惯性地看最近提交。

一个新的commit。时间戳:23:07。

作者:刘海洋。

refactor: 底层优化,推理速度提升40%,内存占用降低20%

他在"试许畅方案"的同时。把自己的工程优化也写了。

没有等任何人同意。没有告诉任何人。没有在群里说"我做了一个东西"。没有等我说"切回你的方案"。

他直接做了。

推理速度提升百分之四十。内存占用降低百分之二十。

我点开diff。红色和绿色交替。删了一些旧代码。加了一些新代码。修改了七个文件。新增了三个文件。总共大约两千行。

两千行。不是两万行。比六月那次的两万行少了很多。但这两千行每一行都是精确的。没有多余的。没有实验性的。是他想了一个下午以后的结果。从下午四点半被绕过以后。到晚上十一点零七分提交。六个半小时。

六个半小时里他做了什么?先去吃了沙县。跟张富贵。蒸饺加拌面。吃完了回来。大概七点多。然后坐下来。敲了四个小时。写了两千行。

这两千行做了一件事——让许畅的新架构在他的底层上跑得更快。

他没有站在许畅的对面说"你错了"。他站在了许畅的下面说"我托着你"。

他没有反对许畅的方案。他让许畅的方案更好。

这是什么?这是一种我不知道该怎么命名的东西。不是妥协。不是配合。不是原谅。

也许是骨头的自觉。骨头不抗议。骨头不离开。骨头撑住。不管上面站的是谁。

被绕过了。但他没有停止工作。他没有背叛。没有放弃。没有消极怠工。他只是在被绕过以后。回到工位。坐下。继续做他认为对的事。

我看着这个commit。看了很久。屏幕的光照在脸上。办公室暗了。只有我的屏幕还亮着。

我应该跟他说什么?应该说"谢谢"?不够。应该说"对不起下午选了许畅的方案"?太晚了。应该说"你的优化很好"?太轻了。

最后我什么都没说。关了电脑。走了。

他比我先走的。他去吃沙县了。跟张富贵。蒸饺加拌面。十二块。热的。

我回家的路上想了一件事。

如果有一天他不再回去坐下敲代码了。如果有一天他站起来走了不回来了。那一天会是什么样子?

我不知道。

但我知道那一天不是今天。今天他还在。十一点零七分。推理速度提升百分之四十。内存占用降低百分之二十。

他用代码回答了我。回答不是"你做错了"。回答是"你选了别人的方案。但我的方案也做了。你不需要选择。我替你都做了。"

这是刘海洋。他不跟你争。他跟自己争。他的对手不是许畅。是他自己。他要证明的不是许畅的方案不好。是他的方案也好。好到即使没被选中。也值得存在。

十一点零七分。安静地存在在Git日志里。没有感叹号。没有@任何人。只有一行提交信息和两万行新代码。

今天他还在。

够了。今天够了。

明天醒来。两个方案同时在跑。许畅的新架构在上面。刘海洋的优化在下面。刀在切。骨头在撑。

方教授说得对。它们不需要胶水。它们自己找到了各自的位置。

只是找到位置的过程有一点疼。对两个人都疼。对我也疼。

因为我是中间那个人。我选了一边。另一边疼了。但另一边没有走。没有走。他接受了疼。他比我想的更强。

我欠他的比我以为的更多。

这笔账没有写在周小薇的Excel里。但它在。跟蓝色笔记本一样。跟白板上的"无底洞"一样。

有些账不在纸上。在人心里。

十二月。2016年快结束了。公司还在。人还在。代码在跑。准确率在爬。钱在烧。

一切都在。

够了。