當前位置:
首頁 > 新聞 > 亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

機器之心原創

作者:高靜宜


2017 年 3 月 27 日,亞馬遜雲服務(AWS)機器學習總監 Alex Smola 到北京大學招賢納士,並呈現了一場題為《為什麼你的機器學習代碼運行速度慢(Why your machine learning code is slow)》的精彩演講。讀者可點擊閱讀原文下載完整 PDF。

Alex Smola 曾於 1996 年獲得慕尼黑工業大學物理學碩士學位,1998 年獲得柏林工業大學計算機科學博士學位。在 1999 年到 2007 年期間,先後於澳大利亞國立大學及 NICTA 研究中心擔任研究小組組長。2008 年,他加入雅虎,後在 2012 年加入谷歌。他是加利福尼亞大學伯克利分校的兼職教授,目前擔任卡內基梅隆大學機器學習教授。2015 年,他聯合創立了 Marianas 實驗室。2016 年,Alex 加入亞馬遜,目前擔任亞馬遜 AWS 機器學習總監一職。迄今為止共發表超過 200 篇論文並參與編寫 5 本學術專著。

這次 Alex 中國行的主要目的之一就是代表亞馬遜 AWS 人工智慧團隊招賢納士並分享最前沿科技信息。3 月 28 日上午 10:00,Alex 在北京大學理科教學樓進行了一場針對現代硬體的演算法設計的題為《為什麼你的機器學習代碼運行速度慢(Why your machine learning code is slow)》的學術演講。這次演講圍繞多核、多機器和 GPU 的可擴展數據分析方法,從基礎開始講起,講述可擴展的機器學習並非想像中那麼困難。具體內容包括分布式推薦系統、廣告計算和深度學習。

在介紹來意之後,Alex 為大家展示了此次演講的三個主題。

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

第一部分:存儲器

  • 包括快速緩衝存儲器、隨機存取存儲器、固態硬碟、硬碟、網路

第二部分:計算

  • 包括向量化、多核

第三部分:MxNet

  • 包括語言、並行化、亞馬遜 AMI 和雲形成模板

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

第一部分:存儲器

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

目前存在很多存儲器類型,不同類型的存儲器容量、存取時間不盡相同,可以實現不同的目的。

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

從下面的表格可以看出,從存儲器中每一次讀取數據都會消耗時間,代碼中無用的內容,可能會導致讀取數據時間的消耗。

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

這裡,Alex 介紹了在推薦系統中的用例:

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

可以看出,在這種情況下,內存消耗較大、運行時間較長。

然而,更好的工程代碼是可以大大縮短運行時間的,怎樣做到的呢?

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

協同過濾帶來的影響:

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

這裡,有幾個關鍵概念:

●分層用戶的評價

●在 Cache 中存儲出現頻繁的 Datatable

●避免 socket 之間的偽共享

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

Alex 還介紹了另外一個關於支持向量機優化演算法的用例

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

這裡存在技術難點,一是存在初始下降的可能性導致無法記錄;二是 dual as-cent 是準確的從而導致目標不變。

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

第二部分:計算

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

在這一部分,Alex 首先解釋了向量化如何提升運行速度。

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

之後,介紹了關於 SimHash 演算法用例(Simhash 是用來網頁去重最常用的 hash 方法,速度很快)

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

然後,介紹了無鎖多核心

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

預估廣告系統中的點擊問題

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

邏輯回歸

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

隨機梯度下降

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

第三部分:MxNet

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

  • 命令式和說明式編程

  • 語言支持

  • 後端和自動並行

這一部分一開始,Alex 就提出了一個問題:為什麼我們還需要另外一種深度網路工具?這是出於對資源效率、速度、簡單性的考慮。

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

節省&資源效率

  • 用小內存的廉價 GPU 編程網路

速度

  • 用機器和 GPU 進行線性延展;

  • 在單個機器上也有高效率

簡單性

  • 混合命令式和說明式的代碼

關於代碼的簡潔以及效率

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

在演講的過程中,Alex 不止一次提起代碼簡潔化的重要性,並對命令式和聲明式編程做出解析。

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

命令式編程的優點:

  • 簡單靈活;

  • 利用語言固有的特徵(loop、condition、debugger)

命令式編程的缺點:

  • 難以優化

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

說明式編程的優點:

  • 更多的優化機會;

  • 跨不同的語言;

說明式編程的缺點:

  • 不靈活;

下圖對命令式編程與說明式編程做深度學習進行了對比。

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

而 MXNet 將這些特點結合在了一起。

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

而且混合的 API 能夠進行更快的延展:

  • 不同圖之間運行時間的轉換有輸入所決定;

  • 對序列建模和圖大小的重塑有幫助;

  • 使用 Python 中的命令式代碼,10 行額外的 Python 代碼;

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

多種語言、多種工具包

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

在這裡,Alex Smola 提到他們從用戶那裡所得到的信息:

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

編程語言:

  • Python 很好,但我更喜歡 R/Julia/Matlab 等;

  • 我想要 Scala 與 Spark 管道一起工作;

  • 我需要 C++介面在嵌入式系統上運行;

  • 我喜歡在用戶瀏覽器上運行 Javascript;

框架:

  • 我使用 Torch 7 年了;

  • 我所有的代碼都在 Caffe 中;

  • 我喜歡 Keras;

  • 我用 TensorFlow 開始的深度學習;

  • 之前我只使用過 Numpy,我該如何開始呢?

針對亞馬遜從用戶那裡獲得的建議,MXNet 對編程語言、框架的需求進行了集成:帶有多種編程語言;把 Caffe、Torch、Numpy 都帶入了 MXNet。

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

在計算機視覺領域,Caffe 有普遍的應用,而在 MXNet 中有 Caffe Operators。

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

對科學計算和深度學習而言,Torch 是流行的 Lua 框架。

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

效率以及並行化

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

Alex Smola 表示寫並行程序非常痛苦。每個前端-後端更新涉及到 O(num_layer),通常在 100—1000 之間的張量計算和通信。

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

以下是進行自動並行:

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

數據並行:

  • 讀取數據分隔;

  • 拉動參數;

  • 計算梯度;

  • 推進梯度;

  • 更新參數;

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

分布式實驗:

  • 谷歌 Inception V3;

  • 從 1-47 增加機器量;

  • 如果使用 10 台以上機器,MXNet 要比 TensorFlow 快 2 倍。

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

AMI 和雲形成模板

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

  • 亞馬遜機器圖像(AMI)

  • 深度學習框架

  • 雲形成模板

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

用於深度學習 AMI

  • 面向數據科學家與開發者的工具;

  • 建立深度學習系統需要時間與技巧

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

AWS CloudFormation 組件如下:

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

演講的最後,Alex 對本次演講的內容做出了小結,並再一次表示歡迎同學們加入亞馬遜 AWS 人工智慧團隊(招募郵箱為 aws-ai-event-recruiting@amazon.com)

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

亞馬遜Alex Smola:為什麼你的機器學習代碼運行速度慢

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

馬斯克成立Neuralink:用植入電極增強人腦計算能力
深度|遷移學習全面概述:從基本概念到相關研究
真實版《阿凡達》:韓國研究者開發出意念控制烏龜的腦機介面
觀點|機器學習確實還沒商品化,但也不是必需博士學位

TAG:機器之心 |

您可能感興趣

webpack的Hot Module Replacement運行機制
T-Mobile發布Revvl手機:超便宜,運行Android Nougat
從Hello World說程序運行機制
三星Galaxy S8運行速度對比 iPhone 7 Plus
用 ClojureScript 語法運行 React
IT之家學院:通過Google Chrome運行安卓應用
通過 PHP OPcache 讓你的 Laravel 應用運行速度飛起來
CrossOver Android讓你在英特爾Chromebook上運行Windows應用
pandasql:讓 python 運行 SQL
親爹給力:谷歌Pixel最快8月運行Android O
Google 神秘新系統 Fuchsia 運行畫面曝光,取代 Android 和 Chrome?
構建運行Spring Boot的Docker
谷歌將推Nexus手環 運行Android Wear
亞馬遜雲教程4:安裝Anaconda,多python環境,運行jupyter notebook
微軟Surface Phone再曝光:摺疊屏運行exe
滲透技巧:Windows平台運行Masscan和Nmap
基於Metal的框架Bender:可在iOS上運行TF模型
Eye保護套:在iPhone背面運行Android系統
在 Kubernetes 集群中運行 WordPress