那个 CEO 写下 70 万行代码的公司,马上要上市了
作者 | 小智
5000 研發,24 萬臺服務器,CEO 寫下 70 萬行 C++ 代碼,這家技術基因驅動的短視頻公司,就是快手。
5000 名研發員工,24 萬臺服務器,22 個網絡數據中心,半年研發投入 23 億(截至 2020 年 6 月 30 日),研發中心遍布全球各地,下一代國際視頻編碼標準的主要貢獻者之一,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 陳定佳所言:
“我們希望快手作為一個連接器, 可以更好地連接人與人, 能夠消除一點點孤獨感, 增加一點點幸福感。快手的使命, 是用有溫度的科技提升每個人獨特的幸福感。”
隨著快手體量的持續擴大,未來還將會有更多來自快手內部的技術實踐落地經驗成為可供業界參考的解決方案,不論是開源方案還是實現思路都是對中國技術力量的一種正向反饋。
追求技術的極致,制定行業的標準,實現用戶的價值,未來假如有更多“快手”出現,我們也終將聽到中國技術人的呦呦鹿鳴。
往期推薦這幾款 IDEA 主題也太好看了吧!!
HTTP/2做錯了什么?剛剛輝煌2年就要被棄用了!?
張一鳴活捉上班摸魚員工遭怒懟:不爽退群啊!
?
直面Java第343期:為什么TOMCAT要破壞雙親委派
深入并發第013期:拓展synchronized——鎖優化
如果你喜歡本文,
請長按二維碼,關注?Hollis.
轉發至朋友圈,是對我最大的支持。
點個?在看?
喜歡是一種感覺
在看是一種支持
↘↘↘
總結
以上是生活随笔為你收集整理的那个 CEO 写下 70 万行代码的公司,马上要上市了的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 以 B 站为例,聊聊站内消息系统的设计
- 下一篇: 问题 D: 约数的个数
