流利说张潇君:引入谷歌工程实践,让流利说在人效上更接近硅谷
张潇君现任流利说(NYSE: LAIX)首席算法架构师,TGO 鲲鹏会上海分会的会员,目前全面负责流利说的对话系统。张潇君与计算机结缘是在上海交大的 ACM 试点班,熟悉 ACM 班的人都清楚,ACM 班的名字源于国际科学教育计算机组织——美国计算机学会(Association of Computing Machinery),它是世界上第一个,也是迄今为止最有影响的计算机组织,计算机领域最高奖——图灵奖,就是由该组织设立和颁发的。这寓意 ACM 班旨在培养计算机科学家。
张潇君 | 流利说首席架构师
TGO 鲲鹏会上海分会会员
张潇君的计算机之路就是从这里开始的。读本科时,张潇君凭借优异的表现进入了微软亚洲研究院实习,从事 NLP(Natural Language Processing) 项目研究;研究生的阶段又去了德国人工智能中心读计算语言学,一步步扎实地打稳了自己的专业能力;毕业之后他加入谷歌瑞士,迅速提升了自己的代码编写和系统工程的能力。
2017 年,张潇君回国发展,并加入流利说,引入了诸多谷歌工业规范和最佳实践,并致力于用 NLP 的方法改变语言教学的模式。
从张潇君的经历来看,学生时期已经在计算机语言领域积累了大量实践经验。于是,毕业之后张潇君获得了去谷歌瑞士工作的机会。谷歌瑞士办公室是一个比较特殊的地方,作为欧洲最大的研发中心,谷歌瑞士办公室网罗了欧洲几千名工程师精英,业务组也非常多。谷歌的老牌组,包括:广告、Youtube、 搜索、地图、助手等都有庞大的部门。张潇君有幸加入了广告组,从事商品广告 Campaign 后台管理。
谷歌广告部是一个庞大的部门,张潇君作为其中一员,早期专注在商品和广告的数据模型构建以及数据整合的工作,后期专注于广告在其他平台的输出,比如 Youtube、Gmail 等。这些工作听上去并不复杂,但是因为量级巨大,稍有差池都是上百万美元的差距,所以对工程的要求极高。这对张潇君来说挑战巨大,以早期的商品广告 Data Integration 系统为例,它每天需要处理上十亿级别的 Campaign 更新。 即使用 Map-Reduce 每天若干次更新数据,仍然有若干小时的延迟。但在张潇君的主导下,这个系统变成了流式的系统,大大缩短了 Campaign 的生效时间,使得系统对数据的吞吐量、有效性和延迟都达到了相当高的标准,并且有强大的 fault-tolerance,不需要工程师参与后期维护。
在谷歌瑞士张潇君参与并贡献了构建世界上最复杂系统的工作,“在这些系统的构建过程中,小到工程代码和规范,大到系统结构和业务理解都得到了很大提升,对我的个人成长帮助很大。 ”
在谷歌这样伟大的企业工作三年之后,张潇君意识到:在这样一个工程师的天堂,虽然个人能力提升很快,但是因为机构过于庞大,导致产品上线流程略长,极其考验人的耐心,成就感也会比较延迟。其实,张潇君在加入谷歌之前,也拿到了硅谷独角兽 startup 的 offer,虽然当时没有去,但心中埋下了对创业公司的情节,张潇君一直想体验 “Move Fast and Break Things ”的节奏,所以回国之后他选择了创业型企业流利说。
加入流利说之前,张潇君花了很长时间来深入了解流利说。除了与流利说的三位创始人王翌、胡哲人、林晖一一沟通,张潇君还与技术部的几个 Team leader 也聊过。从产品角度看,张潇君非常认同流利说用 NLP 技术来做教育这件事情,“因为教育本身就有很多重复性的工作,在交互时对学生语言的识别、理解以及和教研、知识点推荐的结合非常紧密,确实能够用 NLP 的技术来做非常大的推动,甚至是改革。”除此之外,张潇君也在沟通中发现了流利说浓厚的硅谷工程师文化,他认为流利说是为数不多的值得加入的创业型公司。
在张潇君看来,硅谷的工程师文化体现在很多方面,整个产品从设计到执行到测试再到上线的流程已经界定的非常清楚,但由于国内很多企业只一味地追求速度,并没有很好地实践。这就导致整个产品流程存在很多问题,产品迭代起来非常困难。
“但流利说在这方面做得非常好,在很多地方都实行了相当严苛的规范。”在经过深思熟虑之后,张潇君决定加入流利说,担任流利说首席算法架构师。
加入流利说之后张潇君开始发挥自己的优势,将之前的工程实践引入流利说。 比如 Bazel 作为 build 工具,使得流利说成为国内为数不多的引入 Bazel 的公司。虽然 Bazel 在谷歌内部是非常高效且完备的工具,但对工程师的要求也比较高。如果没有扎实的工程背景,一下子从其他 Build 工具,比如 CMake 或 Maven 迁移到 Bazel,会有较大的不适应;另一个问题是网络环境的差异使得 Build 过程比较缓慢,会影响工作效率。
为了解决这些问题,张潇君和另一位前谷歌工程师花了很多精力。比如,建立和维护属于流利说的 Bazel 依赖库,并且针对网络做各种优化;建立 Codelab 和培训讲座,让工程师们从入职的第一天就开始熟悉这些工具;提供代码样例,将 Bazel 工具无缝整合到现有的 CI/CD 流程中。 除了 Bazel, 张潇君也大力推动了谷歌的其他成熟工具, 例如 Kubernetes, Docker, gRPC 的运用和普及。
工程实践也离不开日常工作的规范。 比如在每次代码提交都有 Code Review,添加覆盖良好的自动测试,有自动化的 CI/CD,上线之前也有非常严苛的上线服务规范,上线之后也有系统能做 A/B 实验对比。
除了工程上的规范,算法的迭代也很严苛。流利说擅长从真实的用户数据找到痛点在哪里。比如为了解决一个真实的用户问题,上线一个初代模型,先收集用户的数据,再进行标注,迭代模型,验证想法再重新 A/B 上线,从而形成一个良好的“数据 -- 算法”的迭代反馈链路。
“这些其实都是非常成熟的算法和工程实践。我们希望国内工程师能在人效上更加接近硅谷的公司,打造优秀产品的同时能形成良好的文化和氛围。”张潇君告诉 TGO 鲲鹏会记者。
目前,张潇君在流利说负责构建对话系统。对话是教学的常用手段,通过对话做知识点的教学、情景的演练、提升口语和交流功能;同时对话也是人机交互在探索的全新方式。 张潇君和团队开发的功能分布在流利说各个产品线中,同时,他们也在研发独自的产品,希望能通过流利说把更多成熟的 NLP 黑科技带给用户,产生价值。
“对话系统作为自然语言处理的一个子领域,是一个综合了各个 NLP 任务,并且和内容的生产迭代有密切联系的复杂系统。它在学术领域的研究方向和工业领域的实践应用有比较大的鸿沟,需要我们的科学家 / 工程师们和产品经理、教研以及内容生产方一起协作,才能做出让用户满意的落地产品。我们也希望有更多相关领域的专家能加入到流利说,为下一代教育产品的构造一起努力。”张潇君最后对 TGO 鲲鹏会记者说道。
前两家研究机构都是吃皇粮、搞研究的地方。做的事情都超前,但是对产品化没有压力,好比之前我在 MSRA 参与了构建基于大量用户数据的问答系统,更多的是从算法和数据本身解决一些开放问题,最后这个研究工作本身做得还不错,最后被 Bing 用上了。 德国人工智能研究中心也比较偏研究,当时参与过 EuroMatrixPlus 项目,做欧洲多个语言的翻译系统,显然离产品化比较远,更多的是对学术的探索。
相比之前,流利说的算法团队非常产品导向,如果不能产品化,我们认为这些工作就没有意义。所以在流利说,更多的是用成熟的技术为教育产品赋能。 相比之前总是和研究员、工程师有交集,在流利说我们和产品经理、教研、内容、数据、运营甚至客服团队都有非常密切的合作。
谷歌在大范围解决问题,因为掌握世界上体量最大、地域跨度最广的流量,所以处理的工程和算法问题的思路和方法都比较大格局,在某一个点上解决比较细致的问题,能获得很大的收益。流利说是把针对中国人的教英语做到极致的地方,所以相对垂直。
因为几位创始人也是 Ex-googler, 所以我们的工程和算法团队基本照搬了之前的模式,比如 Bazel Build, 自动化 CI/CD、微服务化、K8S 部署。工程实践上我们有严格的 code review,上线遵从严格的规范。算法实践上我们遵从数据驱动的原则,从真实的用户数据出发,建立 benchmark,迭代模型,再收集数据回馈,并形成闭环。工作模式上我们从上到下实施 OKR,每天都有非常明确的目标,和之前不一样的是,流利说的变化比谷歌要大很多,所以我们也常常拥抱变化,在实施期间做动态的调整。成果是长期的,虽然可能比其他公司“快糙猛”的方式相比,当下消耗更多时间,但是长期来看,对项目迭代和业务发展都有很好的支撑。