從0到1到無窮,vivo大規模機器學習實踐!

相信大家都對IT大廠的機器學習應用的建設很感興趣,如果有技術大咖們能夠從零開始和大家詳細分享一下他們大規模機器學習實踐,是不是一件再好不過的事情了。2017年10月19日-21日,由IT168主辦的第九屆系統架構師大會,就邀請到了vivo互聯網算法團隊負責人李珂和我們分享vivo從0到1再到無窮的機器學習實踐。

從0到1到無窮,vivo大規模機器學習實踐!

▲vivo互聯網算法團隊負責人 李珂

機器學習算法在vivo落地的時候,李珂團隊遇到了所有初創團隊都會遇到的問題——人少坑多技術弱。當時整個vivo互聯網算法團隊只有李珂和應屆畢業生兩個人,但是他們克服了這些種種困難在2016年推出了第一代解決方案架構。

從0到1到無窮,vivo大規模機器學習實踐!

這個解決方案很好的利用了現有大數據架構,不僅對算法團隊的技能要求單一,而且對於工程團隊的要求也很低,出錯的幾率也較小。但是由於離線預測,很多實時特徵用不了,而且離線訓練,模型更新也較慢,使用Spark進行訓練,可選模型少,效率低,訓練數據的規模有瓶頸。

為了解決第一代離線使用的弊端,vivo互聯網算法團隊在2017年上半年推出了第二代解決方案。與第一代相比,第二代最顯著的特點就是實現了實時預測和在線訓練,不僅能夠使用上下文,時間等場景信息,而且能夠學習新廣告,適應概念漂移。

從0到1到無窮,vivo大規模機器學習實踐!

但是第二代解決方案大量使用實時數據,工程端承擔線上預測部分開發,出錯的可能性增大,而且算法迭代涉及大數據和工程改動,成本高週期長。李珂表示在第二代解決方案開發的過程中得到了重要的經驗,實時特徵工程一定要存原始數據,客戶端上傳日誌的時候要透傳預測的CTR和requestID,模型要先做線下驗證,不光是整體的,還要單個item的。

從0到1到無窮,vivo大規模機器學習實踐!

現在vivo使用的是第三代解決方案,這個方案主要增加了召回模塊,支持多條拉鍊的並行召回,支持離線或者在線更新拉鍊,支持灰度拉鍊熱拔插。據李珂介紹該解決方案主要應用在vivo信息流推薦、關聯廣告和搜索廣告等業務中。

李珂認為現在的解決方案也不是完美的,還存在很多不足,主要問題還是出在Spark上,Spark不支持FM,DNN等業界較先進的模型,而且因為沒有Parameter Server,executor的CPU利用率最多到30%。所以未來會考慮選擇TensorFlow CPU Cluster來做替補,通過Kubernetes+Docker彈性部署。


分享到:


相關文章: