字節跳動副總裁楊震原:抖音如何用好機器學習

4月19日消息,火山引擎日前發布自研DPU等系列云產品,并推出新版機器學習平臺,支持企業客戶更好地訓練AI大模型。字節跳動副總裁楊震原以《抖音的機器學習實踐》為主題,分享了他對機器學習的理解。
楊震原認為,機器學習系統的核心競爭力,在于每次實驗都能很快、很便宜。算法工程師能聚焦在自己的工作上,用很低成本不斷去試錯,這樣才能實現業務的敏捷迭代和創新。他表示:“火山引擎機器學習平臺是內外統一的,火山引擎客戶和抖音用的是同樣的平臺。我希望公司內部打磨的這些技術能夠服務更多的客戶,支持大家做智能化的創新。”
(字節跳動副總裁楊震原)來源:字節跳動官微
以下為楊震原演講全文:
上午好!大家知道,抖音等業務是火山引擎的內部客戶,都跑在火山引擎的云上。今天我會分享下公司內部業務的一些實踐經驗:火山引擎是怎樣支持抖音用好機器學習的。
首先說說為什么要聊機器學習,什么場景、什么情況下要用機器學習系統?用機器學習會有什么樣的挑戰?我們是怎么解決這些挑戰的?
我認為機器學習很重要的一點,是把問題數字化。先數字化,然后讓這個問題可以定量評估。當問題可以定量評估的時候,接下來就可以智能化,進一步用一些機器學習的方法來優化。
之前有些朋友問我,說“震原,能不能幫我搞一個模型?”我問他想用這個模型干什么?他其實自己并沒有想清楚。
我想通過幾個例子來具體說明下機器學習的用法。
比如效果廣告,對于商家來講,是不是能用合理的錢找到客戶?對平臺來講,有一個廣告位,是不是能夠把最適合的廣告放到這個位置上?這個問題怎么評估呢?很簡單,我們看轉化率就可以了,所以它的目標可以很清晰地定義出來。
能夠清晰定義目標,就可以做A/B實驗,可以判斷什么方法更好,進而可以用機器學習進一步去優化。最后往往就會發現,用人工的方法,比如圈選用戶這些方法做效果廣告,很難干得過用機器學習。
再比如,優惠券發放。同樣的錢應該發給哪些用戶,能給平臺帶來更長期的留存?這也是可以被精確定量和評估的問題。這樣的問題,我們就可以思考用什么樣的算法,用什么樣的機器學習去優化。
運力調度,這是大家很熟悉的網約車領域,也是可以定量評估的,可以通過成單率評估。如果匹配得不好,我就不能把司機和乘客有效匹配起來。自動駕駛就不多說了,這個領域想評估效果,實際上的維度更多,比如說安全性、時間、舒適度等等。
講了這么多,核心的問題是要能夠把問題定義清楚,先數字化,再去做智能化。
我們用機器學習做智能化,會有什么樣的問題呢?主要說兩個問題,第一個是復雜,第二個是貴。
為什么說復雜?因為機器學習軟件棧很深,它需要有平臺,有PyTorch平臺,有TensorFlow,還有很多的平臺。也涉及到框架、操作系統,還有底層的硬件。大家最近出門,都問對方有多少張GPU卡,你如果沒有,都不好意思跟人家打招呼。但其實很多人并不知道用這些卡的效率到底是什么樣子。所以機器學習的軟件棧是很深的,是挺復雜的一件事情,每個環節都要做對、做好。
再說說很貴的問題。人力貴,一個非常優秀的算法工程師很貴,也不是那么容易就能找到。除了人才昂貴,數據也很貴,高質量的數據成本很高。硬件就不說了,高性能GPU的價格大家都知道。
所以,機器學習是一件既復雜又昂貴的事情。那抖音是怎么處理這個既復雜又昂貴的事情,更好地使用機器學習助力業務發展的呢?
先簡單介紹一下我們的平臺,我們最主要的兩個平臺,一個是推薦廣告平臺,還有一個是通用平臺,包括CV(計算機視覺)、NLP(自然語言處理)平臺等等。
推薦平臺,每周會有上萬個模型在上面訓練,因為我們有很多產品,不同場景都會頻繁訓練模型。CV/NLP平臺,模型訓練的數字會更大,每周有大約20萬個模型的訓練規模。而且這兩個平臺上日常還跑著大量的在線服務。
舉個例子。比如,抖音的推薦系統有很多模型,其中某個模型需要用15個月的樣本來訓練,也就是說在15個月的時間里不斷構筑訓練數據,這個數據量是非常大的。但是在我們的機器學習平臺上,我們只需要5個小時,就可以完成這個模型的訓練,核算下來成本只要5000塊人民幣。對于一個算法工程師來講,他早晨做這個模型訓練,下午就到線上做AB實驗了,極大提高了產品迭代效率。
機器學習做得好不好,我覺得可以用這個三角形來表示,其中最重要的是算法。算法在效果上做到領先,就能對業務產生很大的價值。支撐算法效果的需求,有兩件事,一個是硬件ROI,一個是人力ROI。
硬件ROI指的是單位模型的成本。在市場競爭里,別人花一萬塊錢做一個模型,你如果花一萬塊能做十個同類的模型,這場仗就穩了。人力ROI,是說招一個厲害的算法工程師進來,他能否發揮最大潛能,主要看系統能否支持他足夠容易、足夠敏捷地去嘗試新的想法。
如何提高硬件ROI?潮汐、混部,這是我們常用的一些方法。本質上一句話,就是如何提高設備利用率,這也是云原生的一個基本思想。我們把不同任務混合在一起,互相錯峰,通過智能調度,把它們的利用率都跑得很高,這樣可以極大地提升資源的利用率,去壓縮每個實驗的成本。
在硬件成本以外,還有很重要的一點,就是機器學習的這套基礎設施是不是足夠易用。開個玩笑:很多做數學的人,不喜歡你搞計算機科學,尤其做深度學習,說你們這幫人就在這里“煉丹”,經常不能解釋你這個東西為什么好,你為什么需要不斷做實驗?但是我們從實用的角度來講,必須得不斷做實驗,不斷去嘗試,這個領域很多新的發現,都是不斷嘗試做出來的。
如何讓每次嘗試更快、更便宜,這就是核心競爭力。想一勞永逸,一把做出一個非常完美的模型,這是很難實現的。
火山引擎要做的,就是把平臺的工作做好。大家可以看到,數據處理的整個過程、模型訓練、評估到上線,再到AB測試,全平臺有統一的集成。算法工程師不需要反反復復去溝通各種環節,串聯各種業務,他可以更聚焦在自己的工作上。
再看個例子,這是一個很有意思的特效(抖音AI繪畫),估計很多朋友都用過。大概是在去年年底,這個特效特別火。大家猜猜,做這個特效對抖音來講投入了多少人力?可能很多人都想不到,算法工程師就投入了一個人,他在平臺上寫了一些調研的代碼,大概用了一個星期就完成了模型的訓練,經過一些調教之后就發布到線上了。
當時產品預估可能有200QPS的峰值流量,上線我們按照2000QPS來做的,沒想到上線幾個小時就打滿了。我們很快做了大量擴容,很短時間內容量再擴大10倍,到支持20000QPS。
可以看到整個過程,參與的人數是非常少的,同時擴容效率也非常高。很多人說模型訓練的開銷大,其實從長期來看,推理的開銷會顯著大于訓練。AI繪畫這個模型,在火山引擎平臺推理的效率大概比原生Pytorch 模型快5倍。上線之后又做了一些針對性的優化,還可以更快,大概快10倍,提高了一個數量級。
有了這樣的平臺支持,工程師就可以快速嘗試各種想法,不管是跟進進展,還是開拓創新,都可以做得很快。
最后,大家能夠看到,在抖音、今日頭條、懂車帝這樣一些APP上,開屏會顯示:火山引擎提供計算服務。我們所講的機器學習平臺是內外統一的,火山引擎客戶和抖音用的是同樣的平臺。我希望公司內部打磨的這些技術能夠服務更多的客戶,支持大家做智能化的創新。謝謝大家。
