V4_C11_Transformer
八月。
许畅把一份论文打印了出来。A4纸。二十六页。全英文。标题很长。但中间有五个字很短:Attention Is All You Need。
他没有拿在手里。没有走到刘海洋面前说"你看看这个"。他把论文放在刘海洋的桌上。放在键盘旁边。放完就走了。
刘海洋回到工位的时候看到了。拿起来。翻了翻。封面是Google的。作者一长串。他认识其中两个名字。
"什么意思?"他问。没有抬头。在问空气。但许畅在三个工位之外听到了。
"你看第五页。"
刘海洋翻到第五页。Self-Attention机制的图示。一张不大的图。几个方框。几条箭头。Query、Key、Value。他看了五分钟。五分钟里他的手指在桌面上敲了几下。这是他在思考的信号。敲得慢说明在消化。敲得快说明在否定。
这次敲得慢。
五分钟过去了。他放下论文。纸在桌面上发出轻轻的沙沙声。他的手指在论文边缘停了一下。纸被他翻过的地方有折痕了。他看的时候翻得不轻。说明他在认真看。
"然后呢。"
许畅从工位上站起来。走过来。站在他旁边。没有坐下来。他站着说的话比坐着的多。站着是因为他要说的东西比一句话长。
"然后我们应该往这个方向走。"
这句话在办公室里落下去的时候,张富贵在看手机——大概在看客户微信。周小薇在对Excel。林工在调服务器。小陈在标注数据。苏晨曦在她的工位上。她停了一下。大概听到了。但没有转头。她继续做她的事。她的小绿植在窗台上。叶子朝着光的方向偏了。
刘海洋没有立刻回答。他把论文又翻了一下。翻到第八页。实验结果。BLEU score。他的手指在数字上面划了一下。指甲剪得很短。指腹的皮有一点粗糙。写了三年代码的手。和这份论文的作者用的是同一种手。
"这是NMT的。机器翻译。跟我们的客服场景不一样。"
"架构是通用的。NLP都能用。Attention机制本身不分场景。"
"通用的意思就是还没有在我们的场景下验证过。你拿Google的数据来说我们应该跟。Google有多少GPU。我们有几台。"
他说的不是没道理。Google有TPU集群。我们有四台GPU。Google的工程师上千人。我们有三个半技术。规模不同。照搬不行。
"我不是说照搬。我是说方向。"许畅的声音低了一点。但没有退。"先看方向对不对。对了再想怎么做。"
两个人对视了一秒。许畅的眼睛没有躲。刘海洋的眼睛也没有躲。两双眼睛之间是两种判断。一种说"太早了"。一种说"不早了"。
许畅没有接话。他回到了工位。坐下来。打开了一个文件夹。文件夹的名字我从他屏幕上看到了:Transformer_proposal。
他已经在准备了。在那天之前就开始准备了。论文放在刘海洋桌上不是试探。是通知。他已经决定了要做这个提案。刘海洋看不看论文不影响他的计划。
一周后。周三。全员会。
这一周里许畅比平时安静。他的commit数量少了三分之一。平时他每天提交三到四次代码。这周每天两次。少的那一次去了哪里我知道。去了那四十页PPT。
他在准备一场战争。他不知道会是战争。他以为是讨论。但在这家公司里,当你对CTO的技术方向说"不对"的时候,讨论就是战争。不管你语气多温和。
周三早上。他来得比平时早。八点半。比刘海洋还早了十分钟。他坐在工位上检查PPT。一页一页翻。我经过的时候看到他在第二十三页停了很久。那一页是什么我没看清。
九点半。全员会。
许畅做了一个PPT。四十页。
我坐在对面。他站在投影仪旁边。白衬衫。袖子卷到了小臂。他的手臂很瘦。腕骨突出来。手指在笔记本电脑的触控板上滑动。翻页。他的手没有抖。一周前他把论文放在刘海洋桌上的时候也没有抖。他不是一个会抖的人。他的紧张不在手上。在嘴唇上。他紧张的时候会抿一下嘴唇。很快。不仔细看看不到。开始讲之前他抿了一下。
第一部分。技术分析。十五页。Transformer架构的核心原理。Self-Attention。Multi-Head Attention。位置编码。他的数学部分有推导。不是从论文里截图贴过来的。是他自己推的。每一步推导旁边有注释。注释是中文的。写给非数学专业的人看的。写给我看的。写给张富贵看的。
第二部分。工程拆解。十页。把Transformer落地到我们的NLP场景需要多少工作量。代码量估算。服务器需求。训练时间。部署成本。每一项都有数字。不是大概。不是估计。是精确的。他花了一周做这些估算。一周里他的commit比平时少了三分之一。少的那三分之一给了这个PPT。
第三部分。商业分析。八页。市场预测。如果我们在2017年底开始做Transformer,2018年中有初步产品,2019年可以形成技术壁垒。如果不做,BiLSTM的天花板会在2018年底到达。到那时候竞品用了Transformer,我们的准确率会被追上。被追上以后唯一的差异化就没了。
第四部分。风险分析。七页。他列了五个主要风险。训练成本高。工程人力不足。现有产品需要同步维护。客户可能感受到过渡期的不稳定。团队技术栈需要转型。每个风险后面有应对方案。
四十页。他演示了四十分钟。中间没有停。没有喝水。没有看手机。他在用四十分钟赌一次机会。四十页是他能给出的全部。如果四十页说服不了这间屋子里的人,那就没有第四十一页了。
他讲完了。最后一页停在屏幕上。白色背景。黑色字。一行。
"建议:成立Transformer预研小组,两人,三个月出原型。"
两人。三个月。不是要推翻什么。是要开一条新路。旧路继续走。新路同时挖。两条路。两个方向。旧路是刘海洋的BiLSTM。新路是许畅的Transformer。两条路最终哪条通他不知道。但他赌新的那条。
会议室安静了。空调嗡嗡。投影仪的风扇转着。窗帘拉了一半。外面的光从窗帘的缝隙里进来。一道光。正好照在许畅的衬衫上。白的。很亮。
刘海洋坐在对面。他听了四十分钟。中间喝了两口咖啡。保温杯的盖子拧开又拧上。拧了四次。每次拧的时候手指在盖子上停一下。他在听。在想。在算。在权衡。
四十页。他每一页都看了。他的技术功底比许畅深。他能判断哪些数学推导是严谨的。哪些是跳步的。许畅的推导没有跳步。他承认这一点。但承认推导对不等于承认方向对。
他放下杯子。杯子在桌面上顿了一声。轻的。
"风险太大。"
三个字。很轻。但很重。每个字都有分量。三年的分量。六万行代码的分量。
"先做好现有产品。"
许畅站在投影仪旁边。他的手还放在触控板上。手指没有动。
"BiLSTM有天花板。"
"你他妈天天天花板!"刘海洋的声音突然大了。椅子往后推了一下。保温杯在桌面上滑了两厘米。"你在这家公司才一年!你知道我们在BiLSTM上投了多少?六万行代码!三年!你让我推倒重来?"
会议室安静了。比刚才更安静。
张富贵低下了头。周小薇的笔停了。苏晨曦在角落。她没有动。她的手放在膝盖上。目光在刘海洋和许畅之间。没有站队。没有表态。
许畅没有提高声音。
"我没有说推倒重来。我说的是成立预研小组。两个人。三个月。不影响现有业务。"
"两个人从哪来?我们总共才几个技术?"
"我可以带一个新人做。不占现有团队的时间。"
刘海洋看着他。呼吸重了一点。鼻翼张了一下。他在控制。他刚才那一声"你他妈"已经越线了。他知道。但收不回来。
"不做。"
两个字。他的嗓子里还有刚才"你他妈"的余温。但这两个字是冷的。冷的比热的重。
他站起来。拿了保温杯。椅子被推开的时候腿在地板上划了一声。他走到门口。手按在门把手上。回头看了我一眼。
他在等我说话。等我说"海洋你等一下""我们再讨论一下""许畅的方案有些值得考虑的"。他在等我站队。
我没有说。
他推开了门。关上了。力度比平时大一点。但没有摔。他不是会摔门的人。他只是关的时候用力了一点。那一点力气是他没有说出口的东西。
散会后。
许畅在走廊等我。
他靠在墙上。手插在口袋里。白衬衫的袖子还卷着。走廊的声控灯照着他。他的影子拉得很长。
"赵总。"
"嗯。"
"如果不走Transformer路线,两年后我们会被淘汰。"
他的声音平。没有激动。没有愤怒。不是在争论。是在陈述。他把激动留在了会议室里。走廊里他是另一个人。
"我不是说今天就要上。但至少开始研究。三个月。两个人。不影响现有。如果三个月以后原型跑不通我就不提了。"
我看着他。他比我年轻七八岁。二十九还是三十。他的眼睛很亮。不是兴奋。是那种看到了方向以后的确定。他确定Transformer是对的。就跟他确定85.1%是对的一样。
但确定不够。在这家公司里确定不够。还需要另一件事。共识。他有确定。但他没有共识。刘海洋不同意。刘海洋是联合创始人。是CTO。是六万行代码的人。他不同意就是全票否决。
"你很聪明。"我说。
他看着我。等下一句。
"但聪明人容易犯一个错。觉得自己什么都对。"
他沉默了三秒。三秒里他的嘴角动了一下。不是笑。是在忍什么东西。
"好。"
一个字。他说"好"的时候嘴巴合得很紧。"好"不是同意。是结束。是"我不跟你吵了"。是"我知道你不会帮我了"。
他转身。走了。白衬衫在走廊的光里晃了几下。平底鞋在地板上发出轻轻的声音。走了十步。声控灯灭了。他消失在走廊的暗处。
被否的不只是一个提案。是他对自己判断力的信心。他花了一周做的四十页PPT。每一页都是他的判断。每一页都在说"我看到了方向"。现在刘海洋说"不做"。我说"你太聪明了"。两个人加起来把他的四十页变成了零。
此刻他还是一个受了委屈的年轻人。不是叛逃者。不是对手。只是一个受了委屈的人。
但委屈这件东西。放在心里会发酵。
我站在走廊里。
声控灯灭了以后我没有动。过了三秒。灯重新亮了。感应到了我还在。
"聪明人容易觉得自己什么都对。"
我刚才说了这句话。
这句话是什么?
是对许畅的诊断吗?不是。他确实聪明。但这不是他的问题。他的问题是他来得晚。来了一年。刘海洋来了三年。三年的人和一年的人说的同一句话分量不一样。不是对错的问题。是资历的问题。是关系的问题。
那我刚才那句话是什么?
是我自己的防御。我不知道怎么处理这件事。许畅是对的。苏晨曦的数据也指向同一个方向。Transformer可能确实是未来。但刘海洋是联合创始人。是我和他在车库里喝凉白开熬过第一个夏天的人。是我打电话给他说"出来创业"他第二天就来了的人。如果我现在说"我支持Transformer方案",他的脸会怎样?他会不会觉得我背叛了他?
我不能说"你是对的但我要保住刘海洋的面子"。
我不能说"再想想"因为"再想想"就是不想。
所以我说了"你太聪明了"。
这不是一个好的说法。但我找不到更好的。
走廊的灯又灭了。我动了一下。灯亮了。
晚上。
所有人都走了。刘海洋没走。
他坐在工位上。屏幕上不是代码。是一张空白的文档。光标在闪。他什么都没写。他在想。
我走过去。从冰箱里拿了两瓶啤酒。青岛。三块五一瓶。公司冰箱里常备的。张富贵放的。
"喝一杯?"
他接了。拧开。泡沫冒了一点。他用手指擦了擦瓶口。喝了一口。
我们坐在窗前。窗外是张江的夜。灯亮着几栋。跟去年年底看到的差不多。但季节不一样。去年是冬天。今年是夏天。冬天的张江安静。夏天的张江有虫子叫。蛐蛐还是什么。从园区的草坪方向传过来的。窗户开了一条缝。热风从缝里挤进来。带着外面草地浇灌系统的水气。湿的。啤酒在手里凉的。风在脸上热的。
"我知道你不好处理。"他说。声音低了。啤酒让他的声音软了一点。平时他的声音是硬的。现在软了。
"嗯。"
"但如果你支持他的方案——"
"我没有支持他。"
"你也没有否定。"
他说得对。我没有否定。散会的时候我没有说"不做"。是刘海洋说的。我没说。我什么都没说。我把"不做"这两个字让给了刘海洋。我自己的嘴一直闭着。然后在走廊里对许畅说了一句模棱两可的话。
"我需要看数据。"
"你需要做决定。"
他喝了一口啤酒。把瓶子放在窗台上。窗台上有一层薄灰。瓶底在灰上印了一个圆。
"老赵。我不是怕许畅对。我怕的是——如果他对了。那我这三年做的东西就没有意义了。"
他的声音很低。低到我差一点没听到。但我听到了。
他怕的不是许畅对。他怕的是自己错。不是现在错。是从一开始就选错了方向。三年。六万行代码。从BiLSTM的第一行到今天的85.1%。如果Transformer是对的。那BiLSTM就是一条走到头的路。走到头不可怕。可怕的是你走了三年才发现是死胡同。
他不想面对这个可能。所以他说"不做"。"不做"不是一个技术判断。是一种自我保护。
我不能说破这一点。说破了他会崩。他是这家公司最硬的柱子。柱子不能崩。柱子崩了屋顶会塌。屋顶下面有七个人的工资。七个人的房租。七个人的生活。
所以我喝了一口啤酒。没有接话。
窗外有一架飞机飞过。很高。灯在闪。红色的。一闪一闪。从浦东方向往西飞。虹桥。或者更远。飞机上的人不知道张江有一栋楼的五楼有两个人在喝啤酒。两个人也不知道飞机上的人去哪里。互不相干。各自在自己的轨道上。
两个人喝了一会儿。没有说话。啤酒在瓶子里剩了小半。
刘海洋站起来。把空瓶放在桌上。
"我先走了。"
"嗯。"
他拿了包。走到门口。停了一下。没有回头。
"老赵。你做什么决定我都跟。但你得做。不能不做。"
他走了。
门关了。很轻。
办公室里只剩我一个人。窗外的热风从缝里进来。啤酒瓶里的泡沫消了。那份Transformer论文还在刘海洋桌上。二十六页。A4纸。他上午翻过了。翻到了第五页。第五页合着。看不到了。
许畅的PPT在投影仪的U盘里。四十页。还在。
两份东西。一份是别人的论文。一份是自己人的提案。两份都指向同一个方向。
我需要做决定。
但今天不做。
今天喝完这瓶啤酒。明天再说。
啤酒凉了。夏天的夜。凉的啤酒。热的风。
论文在刘海洋桌上。PPT在U盘里。两份材料。两个人。一个说"不做"。一个说"好"。
我说了什么?
我说了"你很聪明但聪明人容易觉得自己什么都对"。
这句话。到底是给许畅的。还是给我自己的。
我把空瓶子放在窗台上。旁边已经有了刘海洋的那瓶。两个空瓶并排站着。一瓶是他的。一瓶是我的。
窗外的张江。灯灭了几盏。又亮了几盏。不知道是谁走了谁来了。
明天再说。