1. 程式人生 > >Peter Cnudde談雅虎如何使用Hadoop、深度學習和大資料平臺

Peter Cnudde談雅虎如何使用Hadoop、深度學習和大資料平臺

本文要點

  瞭解雅虎如何利用Hadoop和大資料平臺技術;

  在類似Flickr和Esports這樣的產品中,雅虎如何使用深度學習技術進行場景檢測和物件識別;

  機器學習在影象識別、定向廣告、搜尋排名、濫用檢測和個性化中的應用;

  Hadoop叢集上用於分類和排名的機器學習演算法;

在這裡我還是要推薦下我自己建的大資料學習交流qq裙: 957205962, 裙 裡都是學大資料開發的,如果你正在學習大資料 ,小編歡迎你加入,大家都是軟體開發黨,不定期分享乾貨(只有大資料開發相關的),包括我自己整理的一份2018最新的大資料進階資料和高階開發教程,歡迎進階中和進想深入大資料的小夥伴
 

  團隊在實現大資料和機器學習方案方面遇到的挑戰。

  雅虎 在大資料&機器學習領域的不同場景中使用了 Hadoop 。他們還在類似 Flickr和Esports這樣的產品中使用了深度學習技術。

  為了瞭解雅虎如何利用Hadoop和大資料平臺技術,InfoQ採訪了雅虎工程部門副總裁Peter Cnudde。

  InfoQ:目前,雅虎在什麼場景或應用程式中使用了Hadoop?

  Peter Cnudde:由於Hadoop是雅虎10年前建立的,所以它已經成為雅虎最重要的底層技術之一,支撐著我們的業務,使我們可以實現我們核心的產品體驗。起初,我們將Hadoop用於Web搜尋,但多年來,它已經成為我們服務於全球10億多使用者的核心所在。不管是增加使用者參與度的內容個性化,將合適的廣告展示給合適的人的廣告定向投放和優化,作為新收入來源的“自然廣告”和移動搜尋貨幣化,垃圾郵件過濾,還是一些有趣的特性,如 Flickr的魔法檢視 ——全都跟Hadoop有關。如今,在不同的業務領域裡,我們已經有將近300個獨特的Hadoop平臺應用場景。

  InfoQ:您的團隊還將Apache Spark用於大資料處理和分析需求嗎?

  Cnudde:是的,我們有多個團隊使用Spark,並用它進行試驗。事實上,Spark佔據了Hadoop叢集上12%的月度計算使用率(截止2016年7月)。雅虎其實是Spark的早期資助者,那會加州大學伯克利分校正在開發它。我們一直在使用它,並逐步發展成今天的樣子。我們面臨的最大挑戰仍然是擴充套件和效能,但改進工作一直在不斷地進行。

  有一件事需要注意,就是我們沒有將Spark用於傳統的分析型工作負載或者ETL過程,因為我們發現,對我們而言, Hive 和Pig/ Tez 分別是更好的解決方案。Spark的優勢主要體現在更高階的記憶體密集型應用場景,如圖型計算和機器學習。

  InfoQ:你們如何將Hadoop用於機器學習?什麼應用場景或業務問題是由ML程式解決的?

  Cnudde:和Hadoop一樣,機器學習對於我們的每一項業務而言都很關鍵,從影象識別,到廣告定向投放,到搜尋排名,到濫用檢測,再到個性化。我們一直在尋找更好的機器學習方案解決資料密集型問題。我們在Hadoop叢集上開發了一個可擴充套件的機器學習演算法,基於自主開發的引數伺服器進行分類、排名以及生成詞向量。在雅虎,這些叢集現在已經成為大規模機器學習的首選平臺。一個例子是我們如何實現個性化演算法,以便更好地跟蹤我們的使用者更喜歡閱讀什麼故事或內容(新聞、財經等)。機器學習讓我們可以準確地跟蹤一個人閱讀一篇文章的時長,或者他們是否閱讀了相關的故事,而不只是以“點選”作為基本的參與單元。另一個例子是我們開發了一個分散式詞向量生成演算法,通過使用者的查詢匹配出有類似語義向量的廣告,而不是採用傳統的語法匹配。我們的詞向量生成演算法可以處理1億個詞語,比業內的其他實現多10倍。通過這些演算法,我們可以更好地瞭解使用者的需求和興趣,改進我們的產品和內容,優化我們的搜尋服務,更好地服務於我們的使用者和廣告客戶。

  InfoQ:在類似Flickr和Esports這樣的產品中,你們如何使用深度學習?您可以談一下你們正在使用的演算法和技術嗎?

  Cnudde:深度學習是Flickr場景檢測、物件識別和“計算美學(computational aesthetics)”的基礎,可以自動簡化照片的分類和組織,而且效果更好。我們使用了一個深卷積神經網路,將輸入影象轉換成一個短浮點向量。我們將這個浮點向量傳遞給1000多個二元分類器,其中每個分類器都經過訓練,會針對一個具體的物件/場景類別為我們提供一個是或否的答案。 CaffeOnSpark 讓Flickr可以在Hadoop叢集上訓練數以百萬計的照片,並且顯著地提高了分類準確率。Flickr的使用者已經從準確率的提高受益,他們可以得到更好的影象搜尋結果。

  藉助 Esports ,我們可以自動從現場直播視訊流中實時地檢測比賽的精彩片段。我們的方案以計算機視覺和深度學習為基礎。我們訓練了一個模型“觀看”比賽,根據由領域專家標註的幾百個小時的比賽視訊,預測視訊中任何特定的時刻是否精彩。目前,我們在兩個應用程式中使用了這個方案——自動生成推特和比賽概況生成。

  一般而言,從任何型別的視訊中檢測精彩片段都非常具有挑戰性,因為這個問題存在主觀性——我們如何定義精彩片段?我們沒有構建一個具有多個視覺識別器的系統用於檢測視覺特徵(如英雄聯盟中惹人注目的燈光或炮塔),我們的方案是以卷積神經網路為基礎。這類模型由多個層構成,每個層都從前一個層提取更為高階的資訊。這些網路可以使用標記的樣本以端到端的形式訓練:該網路接收一個影象或者短視訊片段作為輸入,以畫素值的形式讀取它們,然後將這些資訊轉換成語義理解,即在最高層上,影象展示了什麼,結果是,它會生成一個與給定標籤類似的輸出值。簡而言之,我們可以訓練一個模型,讓它學習哪些重要的視覺特徵可以定義比賽精彩片段。

  我們的方案為我們帶來了多方面的好處。首先,我們的系統在執行時無需人為干預,因為經過適當地訓練之後,該模型可以自動從視訊中檢測出比賽精彩片段;這讓我們可以擴充套件到多場比賽,通宵達旦地進行匹配。其次,我們可以標準化多項賽事的開發流程——各項賽事之間唯一的不同是訓練資料集,那是我們在領域專家的幫助下標註的。

  InfoQ:您能從可擴充套件性、效能和安全性等方面談一下實現機器學習方案的最佳實踐嗎?

  Cnudde:任何平臺的擴充套件和演化都很難在不犧牲速度和穩定性的情況下完成,每個人都應該預見到面臨的挑戰。直接在Hadoop叢集上實現可擴充套件的機器學習演算法已經在許多方面簡化了我們的工作,尤其是在資料傳輸和安全方面。我們直接在Hadoop叢集中已有的HDFS資料集上執行演算法,並利用Hadoop的原生安全特性。為了運行鍼對大規模機器學習和深度學習應用程式的引數伺服器,我們還使用大記憶體的GPU伺服器對Hadoop叢集進行了增強。為了操作這些異構的叢集,我們大量地使用了YARN的特性。在GPU伺服器之間,除了如今大多數Hadoop叢集伺服器之間直接通訊所採用的傳統10G乙太網,我們還使用100G的無限頻寬連線對GPU伺服器之間的網路進行了增強。這些增強的主要目的是避免擴充套件瓶頸,加快學習速度。

  另外,我們希望深度學習進一步推動機器學習的發展。一直以來,深度學習都是學術熱點,而深度學習演算法目前在許多基準測試中都勝過了傳統的機器學習演算法。除了類似Spark這樣的東西外,深度學習現在還需要更多的技術專家,但情況正在迅速改變。Spark社群有濃厚的興趣對Spark進行更好的整合,讓執行深度學習演算法和單獨執行Spark一樣簡單。我們開發的 Caffe-on-Spark 就是這樣一種做法,它允許組織將現有的Hadoop或Spark叢集改造成一個強大的深度學習平臺,完全分散式,而且支援增量學習。Caffe-on-Spark提供的高階API讓使用者可以在任何雲(如AWS EC2)上啟動它。

在這裡我還是要推薦下我自己建的大資料學習交流qq裙: 957205962, 裙 裡都是學大資料開發的,如果你正在學習大資料 ,小編歡迎你加入,大家都是軟體開發黨,不定期分享乾貨(只有大資料開發相關的),包括我自己整理的一份2018最新的大資料進階資料和高階開發教程,歡迎進階中和進想深入大資料的小夥伴

  InfoQ:在實現的過程中,您的團隊遇到了哪些挑戰?

  Cnudde:我們為擁有世界上其中一個最大規模的Hadoop部署而自豪。我們的部署有超過36000臺伺服器,跨17個YARN叢集使用680PB的HDFS儲存資料,每月執行4000萬個Job。如果將另外23個多租戶HBase和Storm叢集包含進來,則其規模接近45000臺伺服器。

  此外,我們始終是最先採用新興Hadoop技術並將其穩定性提升至產品級的公司之一。做第一個,有著顯而易見的挑戰和回報——先於他人發現問題並修復它們,但這也讓我們可以先於他人獲得最大收益。我們相信,我們的做法,連同世界上眾多公司和個人的貢獻,推動了Hadoop技術的發展。

  其次,我們以網路規模執行這些技術,發現有許多那種規模所特有的問題需要我們處理。通常,這些問題更難檢測和修復,因為它們在規模較小時不會出現。

  最後,我們將所有的叢集都作為共享的多租戶叢集進行操作,以降低成本,提高利用率。安全和資源管理/隔離非常重要,我們花費了大量的時間和精力來解決我們遇到的挑戰。例如,我們在執行叢集時會啟用安全和高階防護,讓多個團隊使用相同的基礎設施。通過在一個單獨的cgroup容器中執行每項任務,我們實現了很好的隔離,嚴格控制它們可以消耗的記憶體和CPU資源。