写点什么

那个 CEO 写下 70 万行代码的公司,马上要上市了

2020 年 12 月 11 日

那个 CEO 写下 70 万行代码的公司,马上要上市了

5000 名研发员工,24 万台服务器,22 个网络数据中心,半年研发投入 23 亿,研发中心遍布全球各地,下一代国际视频编码标准的主要贡献者之一,CEO 曾经写下 70 万行 C++ 代码,这是快手不为人知的另一面。


11 月 6 日,快手正式披露了招股书,除了商业上的成功,也首次系统化对外展示了快手的技术建设与核心能力。


  • 在 AI 等技术方面有哪些核心的自研成果?

  • 快手在音视频领域有哪些硬核技术?

  • 贡献了哪些世界性的行业标准?

  • 快手 9 年构建了怎样规模的 IT 基础设施?

  • ……


带着这些问题,InfoQ 深入挖掘了快手上市背后的技术秘密,以飨读者。

快手核心技术揭秘


短视频或许是过去几年的诸多风口里,真正意义上的技术驱动型领域。


无论是内容分发的推荐算法,还是海量视频存储下的大数据技术,亦或是直播热潮下无卡顿低延迟的音视频技术,都是短视频公司修炼的“技术内功”。


国民级短视频社区快手是一家由技术基因驱动的内容公司,CEO、CTO 等几位创始人都是技术出身,对技术的推崇、对极致的追求从创立伊始便印刻在了快手的研发血液里。


拥抱每一种生活背后,是对每一类技术的拥抱。

人工智能:创造内容、理解内容、推荐内容


AI 技术实践过程中的关键一环是如何让用户以更低的成本获取更高的价值。在短视频行业,就是让用户以更低的投入创造出更高质量的短视频。在视频创作环节快手广泛应用了 AI 技术,用科技去赋能普通用户,使他们尽可能接近专业制作视频的水准。


挑战在于,所有这些 AI 技术都要在手机本地实时地进行计算与渲染,而手机机型千差万别,如何让算法在所有机型上流畅运行,对 AI 能力的要求、计算资源的消耗都非常高。为此,快手自研了 YCNN 深度推理学习引擎,解决了 AI 技术运行受限于用户设备计算量的问题。



YCNN 整体架构


主流的 CPU/GPU/NPU,YCNN 都做到了广泛的支持。为了在更大程度上利用手机算力,YCNN 引擎还提供了多种模型,将设备上的最好算力与相应的模型进行匹配,以期达到效果与性能的最佳平衡,给用户带来最好的体验。


理解视频可能是 AI 落地过程中最难的一环。对人脸维度的解析、场景类的解析、音乐类的解析等等,这些都是从单个角度进行建模,但视频需要的是多模态的解析。2016 年,快手将深度学习组改为多媒体理解组(Multimedia understanding,简称 MMU),赶上了人工智能快速应用的高速列车。


得益于 MMU 的多年深耕,快手现在每天可实时分析超 1500 万条视频及上百万小时的直播内容。MMU 开发出的内容分析算法系统可对平台海量数据进行实时多维分析及筛选,同时还可有效过滤非法及侵犯第三方知识产权的内容。根据艾瑞咨询的报告,快手也是中国首家成功大规模应用端到端自动语音识别系统的公司。


推荐内容是与用户最紧密联系的一环,可以说这一环直接决定了短视频 App 的用户粘性。快手内部针对核心场景的 AI 算法引擎部门名为社区科学部,致力于用一整套 AI 解决方案实现核心场景下的算法逻辑。


快手自研了针对短视频 & 直播场景的多任务多目标推荐模型,在触发、粗排、精排到端上重排全链路上,针对快手数十个交互行为进行端到端建模,以留存为最终优化目标融合多个预估目标,实时为几亿用户提供个性化内容推荐。


在图神经网络平台方面,快手自研了图神经网络(KGNN),提供了一套支持超大规模异构动态图推荐模型的标准工具。相比工业界主流方案有以下显著优点:支持规模更大的图模型(比如几十亿节点全用户规模的图);支持动态训练场景,分钟级百万样本的实时训练和图更新。这也使得快手成为短视频行业首批将深度强化学习算法大规模应用于视频推荐的公司之一。


在大规模实时推荐训练平台领域,快手自研了 Kuiba,提供了一套自研流式深度学习模型的训练系统。与国内其他同类型方案相比,Kuiba 可以支持千亿样本万亿特征推荐模型的在线实时并行训练,并且具备优秀的在线预估服务性能。同时 API 接口丰富,与主流平台接口如 TensorFlow、PyTorch 等兼容,模型研发迭代快。此外还支持 GPU 和 FPGA 等各种异构行硬件,线上训练和预估的能效比高。


而在视频的分发逻辑上,快手也有一个非常有意思的现象:快手不希望头部的视频内容占据太多的曝光,希望用经济学上的基尼系数控制平台上用户之间的“贫富差距”。


快手设计的推荐机制,对明星、普通人都一视同仁。

音视频:左手协议,右手标准


互联网的光鲜亮丽好像都在灯红酒绿的城市之中,然而鲜为人知的是,中国农村网民规模已经突破了 2.25 亿。在这 2 亿多人口的农村网民群体中,低端的千元机型仍是绝对主流。


另一方面,不同地区互联网普及程度不一,网速快慢有别,山区和城市的信号不可相提并论,不同机型在性能、屏幕分辨率等方面都存在大大小小的差异。如何让同一片蓝天下的人群享受到短视频给大家带来的快乐?这背后对技术的要求可能超乎你的想象。


为了解决这些问题,快手音视频技术团队自研了私有传输协议 KTP (Kuaishou Transport Protocol) 和基于流式的直播多码率标准 LAS(Live Adaptive Streaming)

私有传输协议 KTP


为了满足快手多样化的业务需求,一个可行的传输协议需要具备以下特性,丰富高效的传输算法以适应快手用户千差万别的网络环境;再有,灵活的扩展性,满足不同的业务需求。


遗憾的是,业界并没有任何协议、算法可以直接满足业务需求,自研成为了唯一的解决方案,这也是 KTP 协议诞生的由来。


KTP 协议包含两层:底层的传输控制层,通过丰富高效的传输算法,提升网络的传输效率,并满足不同业务的需求;上层的业务感知层,作为业务与网络的桥梁,结合传输控制层的网络特性与业务的需求特性,实现跨层的信源信道联合优化。



KTP 架构示意图


KTP 协议全量上线至今,成效卓著:


业务层面,KTP 支持短视频发布、直播、PK、连麦、视频会议等多种业务场景。


弱网优化层面,对于短视频上传,可以在 90% 丢包率的条件下,依然发布成功。对于直播,KTP 能做到 40% 丢包无感知。在典型的高丢包、高延时波动、带宽抖动等复合网络场景下,通过 KTP 依然能获得流畅、清晰、超低延迟的实时音视频体验。这也是快手用户,无论在哪里,在什么时候都能享受快手带来乐趣的最大技术保障。


今年除夕,春晚互动次数达到破纪录的 639 亿,单分钟视频播放次数过亿。快手春晚直播间累计观看人次 7.8 亿,最高同时在线人数 2524 万。这庞大的分母下,不分城市农村,不分机型优劣,不分网络快慢,所有人享受到的,都是科技带来的乐趣。

直播多码率标准 LAS


今年疫情影响,不论是在线会议还是视频网站都受到了流量激增的冲击,不得不以加购服务器、降低视频分辨率的方式匆忙应对。


在快手,直播的清晰度、流畅度和延迟是影响用户体验的三个核心因素。快手用户分布广,网络环境差异大;网络具有极强的时变特性,同一用户在同一网络下,不同时间网络条件也可能差异很大。因此,单一的直播码率(清晰度)无法适应多样化的网络环境。


多码率技术能在清晰度和流畅度之间取得平衡,依据实时网络条件为用户提供不同的视频体验。但已有的多码率方案延迟大,不能满足低延迟直播的需求。为此,一种低延迟的直播多码率方案成为了当务之急。


今年 6 月,快手正式发布了基于流式的直播多码率自适应标准 LAS(Live Adaptive Streaming),并开源了 LAS 端到端的解决方案,帮助业界更多用户实现零门槛接入和使用 LAS 。


与 KTP 协议相类似,LAS 同样是快手在拿来主义和自研之间做出的选择。LAS 自诞生至今近两年时间,已在快手直播业务上全量部署。目前,多家国内主流 CDN 厂商均已支持 LAS 标准,可直接提供基于 LAS 的服务。与此同时,业内知名开源流媒体服务器 SRS 也已升级并支持 LAS 标准。基于 SRS 4.0 及更高版本,企业客户可以自主搭建 LAS 服务以满足个性化的需求。

参与多个国际视频标准制定


除了 KTP 和 LAS 以外,快手音视频技术团队还参与了多个国际视频标准的制定,行业求发展,标准需先行。视频压缩是视频服务的核心技术,该方面技术的研发与积累,对迅速成长的快手的长远发展至关重要。快手自 2018 年起积极布局,先后参与了诸如 VVC、AVS3 等当今最重要的国际视频标准的制定。


在世界瞩目的最新一代视频压缩国际标准 VVC 的制定中,快手凭借出色的技术实力,提交了过百篇技术提案,并推动数十件拥有快手知识产权的提案进入 VVC 标准,是主要的技术贡献者。该标准目前具备世界最优的压缩性能,加上其制定过程的开放性以及对前一代标准的良好的延续性,业界预计该标准将具有广泛的应用前景,包括对 5G 条件下超高清视频产业等产生深远影响。



架构实践与基础设施建设


一般来说,成长型企业的基础架构演进是线性的,大的基础架构演进的频率并不会太高,很多单体就能解决的问题一般也不会强行微服务。但对于快速成长型的企业而言,业务的规模化、多样化和海量的数据会倒逼基础架构快速迭代,以兼顾高性能、高可靠、高可用的业务需求。


以快手的春晚红包活动为例:


短视频领域惯用的解决方案是将视频放到内容分发网络(CDN)上,既把视频文件输送到离用户最近的地方,又利用大量 CDN 节点分担用户观看的流量,这是业界成熟的解决方案。但在春晚视频红包的数亿瞬时流量面前,这个方案却是完全顶不住的。春晚主持人口播抢红包的时间节点,预估出来的视频播放瞬时流量会超过中国的 CDN 带宽容量总和,快手预估如果要保证春晚活动的体验,至少需要数百 TB 带宽资源。架构师们需要设计高效的资源预分发策略,并建立准确的带宽预测模型,基础设施建设人员也要做好合理的采买准备。


对于基础架构团队来说,硬件不仅考验公司的采购以及部署能力,从另一个层面上,服务器从十到一百、一千、一万、十万… 更考验基础设施的架构能力。


业界常说架构要做到高并发、高可用。高并发很好理解,高可用却很难衡量。究竟什么样的高可用设计是行之有效的呢?在此以前,这是一种薛定谔的状态,只有真到出问题的时候,才能得到验证。


全链路压测是应对高并发流量洪峰的“核武器”,所有服务的高并发能力都需要通过压力测试来确定和验证。快手的做法是用混沌工程的理念做故障注入,核心思路是在包括单机、服务在内的所有服务器上随机注入不同级别的故障,去模拟部分机器高负载、高延迟导致服务器宕机或半死不活的状态,从而检测高可用设计是否行之有效。


把一只猴子放进机房,随便你破坏,宕机算我输。


与架构升级配套的,还有基础设施的建设。


  • 人才是 21 世纪最宝贵的“基础设施”。截至 2020 年 6 月 30 日,快手拥有逾 5000 名研发人员,超过 2300 名研发人员拥有硕士或以上学位。

  • 研发投入是验证一家企业对技术的重视程度。2017 年、2018 年、2019 年及截至 2020 年 6 月 30 日,快手研发开支分别为 476.6 百万元、18 亿元、29 亿元及 23 亿元,分别占同期经营开支的 23.1%、26.8%、21.5% 及 13.6%。

  • 研发中心是技术成果产出的关键来源。快手在全球多地建有研发中心,国内在北京、杭州、成都、深圳等多地建有研发中心,海外有总部位于硅谷的快手科技美国研发中心,在西雅图和圣地亚哥都设有研发团队。



斯坦福大学附近的快手硅谷研发中心


  • 网络基础设施是服务稳定性的直接保障。目前快手已有超过 24 万台服务器,分布在全国 22 个网络数据中心,做到了真正意义上的异地多活。今年 6 月,快手和乌兰察布举行仪式,正式布局超大规模数据中心,预计明年将投入使用。

要自研,更要开源


为了追求极致的用户体验,快手利用前沿技术为用户带来消费与互动上的极致体验;利用多模态内容理解,对用户、内容及二者互动做深度理解,应用在内容安全、推荐、广告等环节;利用深度学习、强化学习、图表达学习实现个性化内容推荐,提高用户消费内容的体验和效率。此外,以研发人才、研发投入、数据中心等为代表的 IT 基础设施,成为快手业务快速发展的技术底座。


而这些高精尖技术,很多都是快手技术团队自研并贡献给业界的。


技术圈一直对科技公司“造轮子”这个现象颇有负面评论,有人认为开源解决方案能搞定的事情不应该再去自研一个方案出来。但对快手而言,自研的出发点都是因为业界现有的开源方案无法满足快手短视频、直播场景下的复杂业务需求。在这样的背景下,自研成了唯一出路。


今年以来,快手已先后自研并开源直播多码率自适应标准 LAS、OOM 解决方案 KOOM 等多个解决方案。自研是一家科技公司证明自己技术实力的名片,也能在复杂场景下给具有相似痛点的企业提供新的解题思路。


自研是技术实力,开源是普惠情怀。


受国际环境影响,开源与自研两条腿走路的方案已经被广大中国互联网企业所重视,做好技术创新、技术储备也已经是国内科技企业的共识。快手成立 9 年以来,一直在耕耘技术,在各种不同的业务场景下,想要为用户提供上佳体验,让用户保持新鲜感,就需要企业不断实现技术创新,这是快手内部的一种共识。


正如快手 CTO 陈定佳所言:


“我们希望快手作为一个连接器, 可以更好地连接人与人, 能够消除一点点孤独感, 增加一点点幸福感。快手的使命, 是用有温度的科技提升每个人独特的幸福感。”


随着快手体量的持续扩大,未来还将会有更多来自快手内部的技术实践落地经验成为可供业界参考的解决方案,不论是开源方案还是实现思路都是对中国技术力量的一种正向反馈。


追求技术的极致,制定行业的标准,实现用户的价值,未来假如有更多“快手”出现,我们也终将听到中国技术人的呦呦鹿鸣。

2020 年 12 月 11 日 15:026147
用户头像
小智 InfoQ 主编

发布了 397 篇内容, 共 308.5 次阅读, 收获喜欢 1719 次。

关注

评论 5 条评论

发布
用户头像
70万行代码都是手写的?
2020 年 12 月 31 日 08:55
回复
用户头像
快手开源了什么?
2020 年 12 月 20 日 21:04
回复
不需要他们开源, 抄的DASH, 或者说是一个简化版的dash 实现
2020 年 12 月 22 日 17:12
回复
用户头像
所以,技术就是为这些乌七八糟的内容服务的?呵呵
2020 年 12 月 20 日 11:04
回复
用户头像
自研是技术实力,开源是普惠情怀。
2020 年 12 月 12 日 22:19
回复
没有更多了
发现更多内容

JVM真香系列:轻松理解class文件到虚拟机(下)

田维常

JVM

week07学习总结

追风

架构师一期

第三周设计模式总结

leo

极客大学架构师训练营

Newbe.ObjectVisitor 0.2.10 发布,更花里胡哨

newbe36524

C# dotnet

架构师训练营 2 期 - 第三周总结

Geek_no_one

极客大学架构师训练营

极客时间架构 1 期:第7周 性能优化(一) - 学习总结

Null

Newbe.ObjectVisitor 样例 1

newbe36524

C# dotnet

寻找性能更优秀的动态 Getter 和 Setter 方案

newbe36524

C# dotnet

寻找性能更优秀的不可变小字典

newbe36524

C# dotnet

架构师训练营 1 期第 7 周:性能优化(一)- 作业

灵霄

极客大学架构师训练营

AI会取代人类劳动吗?

脑极体

《Java并发编程的艺术》.pdf

田维常

电子书

第三周学习总结

晴空万里

架构师训练营第 7 周课后练习

叶纪想

极客大学架构师训练营

Netty源码解析 -- PoolSubpage实现原理

binecy

Netty 内存管理 源码阅读

性能压测

橘子皮嚼着不脆

架构2期 - 第三周作业(2)

浮生一梦

极客大学架构师训练营 第三周总结 2组

架构师训练营第七周作业

月殇

极客大学架构师训练营

第3周作业-设计模式

Rocky·Chen

Fedora32安装MySQL8

ilovealt

MySQL Linux

架构师训练营 第三周作业

文江

第三周作业

晴空万里

第七周总结

_

极客大学架构师训练营 第七周总结

异步并发分布式编程框架Akka

天天向上

极客大学架构师训练营

极客时间架构 1 期:第 7 周 性能优化(一) - 命题作业

Null

组合模式

猴子胖胖

golang 设计模式

架构师训练营第三周作业

leo

极客大学架构师训练营

Architecture Phase1 Week7:Summarize

phylony-lu

极客大学架构师训练营

简单工厂模式

猴子胖胖

golang 设计模式

架构师训练营第七周总结

月殇

极客大学架构师训练营

你不好奇 CPU 是如何执行任务的吗?

小林coding

Linux cpu 操作系统 计算机基础

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

那个 CEO 写下 70 万行代码的公司,马上要上市了-InfoQ