企業應該怎樣選擇數據科學和機器學習平台?
選自kdnuggets
機器之心編譯
參與:吳攀、黃小天、Nurhachu Null
一個彈性的數據科學平台(Data Science Platform)對於大型企業內的每個集中化數據科學團隊都是不可或缺的。它能幫助團隊在 PB 級尺度上對模型進行集中化、再利用和產品化。本文作者為 Algorithmia 的 Ahmad AlNaimi。
你開發了一個 R/Python/Java 模型。它運行得很好。然後呢?
首先你的 CEO 要聽聞機器學習,並且知道數據是新的石油。數據倉庫團隊中有個人剛提交了他 1PB Teradata 系統的預算,而 CIO 聽說 FB 正在用 Hadoop 驅動商用存儲服務,還超級便宜。這掀起了一場完美的風暴,你被指派去組建一個數據優先(data-first)的創新團隊。於是你聘請了一個數據科學家團隊,突然間所有人都很興奮,都想從你那裡得到一點數字魔法去谷歌化(Googlify)他們的生意。但你的數據科學家們並沒有基礎設施可用,只能把時間都花在構建執行程序的項目表上,所以投資回報率並不看好,這下大家又都來怪你沒有對他們的商業盈虧(P&L)投入足夠的核心技術了。- Vish Nandlall
在 PB 級尺度上分享、復用和運行模型並不屬於數據科學家工作流的一部分。在企業環境中,這種低效率更是顯眼,因為數據科學家們的每一個工作步驟都需要和 IT 部門協作,導致連續部署流程的混亂(如果不是無法進行的話),可重用性也很低,並且這個痛點還會隨著公司不同角落開始「谷歌化(Googlify)他們的業務」而滾雪球式地放大。
為了滿足這種需求,數據科學和機器學習平台(Data Science & Machine Learning Platform)應運而生了。作為一個基礎層,在它之上是三個內部利益相關體的合作:產品數據科學家、中心數據科學家和 IT 基礎設施。
圖 1:一個數據科學平台服務於三個利益相關體:產品、中心和基礎設施。對於那些有著對機器學習不斷增長的依賴性的複雜大型企業,這個系統是非常有必要的。
在這篇博文中,我們將討論以下幾個問題:
誰需要一個數據科學和機器學習平台(Data Science & Machine Learning Platform,DS & ML)?
數據科學和機器學習平台(Data Science & Machine Learning Platform)是什麼?
如何區別不同的平台?
平台的實例
你需要一個數據科學平台(Data Science Platform)嗎?
它並不適用於所有人。對於只有一兩個用例的小團隊,最好還是圍繞共享和拓展來即興創作自己的解決方案(或者使用私人託管方案)。但如果你是一個有很多內部客戶的中心化團隊,你很有可能面臨著下面幾種癥狀的困擾:
癥狀#1 你在分裂代碼庫
你的數據科學家構建出一個模型(比方說是基於 R 和 Python 的),想把它嵌入產品,用在一個網路或移動應用里。而你的後端功能是,本來用 Java 或 .NET 構建了基礎架構,現在卻只能用他們所選擇的技術棧從頭開始重寫這個架構。結果你就有兩個代碼庫要調適和同步。隨著構建模型數量的增加,這種低效率會加倍放大。
癥狀#2 你正在重新造輪子
不論是小到一個預處理的函數還是大到一個成熟的訓練模型。你的團隊產出的東西越多,在現有成員和以前的成員間就越有可能出現系統性的成果複製,尤其是項目。
癥狀#3 你很難僱傭到頂尖人才
你公司的每個角落都會產生要脫穎而出的數據科學或機器學習想法,但你只有少數幾個真正出色的專家,他們一次也只能接受一項挑戰。你本應僱傭更多的人,但數據科學家和機器學習天才是非常稀有的,而他們中的明星級人物的薪水堪比一個頂尖的美國國家橄欖球聯盟(NFL)四分衛。
癥狀#4 你的雲賬單正在不斷堆積(太多 P2 了!)
你在一個網路伺服器後端部署了一個模型。在深度學習(deep learning)世界中你很可能想要一個配置好現成 GPU 的機器,比如說 AWS EC2(或著 Azure N-Series VM)上的 P2 實例。為每個產品化的深度學習模型來運行這些機器很容易就花費高昂,尤其對於棘手的工作任務或難以預測的模式。
數據科學和機器學習平台(Data Science & Machine Learning Platform)是什麼?
它與所有事都相關,除了訓練。一個數據科學和機器學習平台(Data Science & Machine Learning Platform)關注的是過了訓練階段後的模型的生命。這包括了:模型註冊、展示它們如何從一個版本升級到兩一個版本的傳承、將它們中心化讓其他用戶能找到、並讓它們轉化為獨立的人造產物,能嵌入到任何數據流程中。
庫 vs. 註冊表
像是機器學習演算法庫(scikit-learn)和 Spark MLlib 這樣的東西儲存了一系列獨特的演算法。這是一個庫。而數據科學和機器學習平台則是一個註冊表。它包括了一個演算法的多種執行方法,有不同的來源,而且每個演算法都有自己的版本(或族系),這些版本的可發現性和可獲取性是同等的。一個註冊表用戶能很容易找到並對比一個演算法的不同執行方法的輸出。
訓練 vs. 推理
數據科學家會用合適的工具來解決對應的問題。有時這些工具就是一種機器學習演算法庫(scikit-learn)和 Keras 的結合,或者 Caffe 和 Tensorflow 的結合體,又或者是一個用 R 語言寫的 H2O 腳本。一個平台不會對這門技藝的工具發出指令,但能夠註冊並運營這些模型,這個過程獨立於模型訓練和實現的方式。
人工 vs. 自動部署
把一個模型部署到生產中的方式有很多,最終結果都會是一個 REST API。不同的部署途徑會引發很多風險,包括前後不一致的 API 介面設計、不一致的認證和登錄,以及逐漸枯竭的開發資源。一個平台應該能夠用最少的步驟自動完成這個工作,通過一致的 API 和授權來提供模型,並降低開發運營的執行壓力。
如何區別不同的數據科學和機器學習平台?
從表面來看,所有的數據科學平台都差不多,但魔鬼隱藏在細節里。下面是一些可比較的數據點:
支持的語言
R 語言和 Python 對絕大部分數據科學和機器學習項目都是標配。Java 是接近的第二選擇,因為有著像 deeplearning4j 和 H2O 的 POJO 模型提取器這樣的庫。而 C++ 在科學計算或 HPC 的環境下尤其適用。其他執行時間則是可有可無的,這取決於你的用例和你的非數據科學同事所用的主要技術堆棧,比如 NodeJS/Ruby/.NET 這些。
CPU vs. GPU(深度學習)
隨著這一領域的成熟和模型規模的增長,深度學習在數據科學和機器學習中的重要性會日益凸顯。TensorFlow 雖然很受歡迎,但它並不能總是做到反向兼容,Caffe 則需要特定的編譯器標識,cuDNN 只會給你的 GPU 簇增加一層管理的複雜度。在沒有強制要求的情況下,完全容器化(containerizing)且產品化的異構模型(在代碼、節點權重、框架和底層驅動方面),和在 GPU 架構上運行它們對一個平台來說是非常不同的。
單一 vs. 多重的版本控制
版本化是指能夠把模型的族系演變列出來並獲取每個版本獨立訪問許可權的能力。當模型被版本化以後,數據科學家就能測試模型隨時間的變化規律。一個單一版本的架構只會顯示出模型(目前穩定的那個版本)的單個 REST API 端點,而只有創作者能通過他們的控制面板在不同的模型間「切換」。一個多版本的架構除了顯示「穩定」版本的一個 REST API 端點之外,還能顯示以往每個版本的,使得它們都能同時可被獲取,這能消除反向兼容困難,還能讓後端工程師進行局部發布展示或實時 A/B 測試。
垂直 vs. 水平擴展
僅僅讓模型作為一個可獲取的 REST API 是不夠的。垂直拓展就是在一個更大型的機器上部署你的模型。水平擴展就是在多個機器上部署你的模型。而 Algorithmia Enterprise 所執行的無伺服器擴展,這是應需求進行的垂直拓展,這裡的需求是指把模型封裝進一個專用容器中,把容器沿計算集群即時部署,並且在執行完成後將其消除以釋放資源。無伺服器計算帶來了拓展和經濟性方面的好處。
單一 vs. 多個租戶
當你在共享硬體資源時,處理敏感或保密性的模型是很有挑戰的。單一租戶的平台會在同樣的資源(機器實例、虛擬內存等)上運行所有的產品模型。多租戶平台把模型作為虛擬隔離的系統(給每個模型不同的容器或虛擬機)來部署,可能會提供額外的安全措施(比如防火牆規則和審計跟蹤)。
固定的 vs. 可交替的數據源
數據科學家可能需要在來自 S3 的模型上運行離線數據,而一個後端工程師則同時通過 HDFS 在同一個模型上運行產品數據。一個固定的數據源平台需要模型的作者安裝兩種數據連接器:HDFS 和 S3。而一個可交替的數據源則只需要作者安裝一個通用的數據連接器,它可以作為多種數據源的適配器,同時也是一種讓不會過時的模型與以後出現的任何數據源都能兼容的方式。
數據科學和機器學習平台的實例
這絕不是一個詳盡的清單。如果有建議的話請留下你的評論。
Algorithmia Enterprise:http://algorithmia.com/enterprise
Domino Data Lab:http://dominodatalab.com/
yHat:https://www.yhat.com/
Dataiku:https://www.dataiku.com/
Cloudera Workbench:https://www.cloudera.com/products/data-science-and-engineering/data-science-workbench.html
Alteryx:http://www.alteryx.com/
RapidMiner:https://rapidminer.com/
※28款GitHub最流行的開源機器學習項目
※JavaScript 中的 10 個機器學習示例
※1小時入門機器學習
※這個可以框架解決幾乎所有機器學習問題
※10個基於JavaScript的機器學習案例
TAG:機器學習 |
※技術是科學的應用嗎
※數據科學、機器學習和AI的區別
※哲學家應怎樣看科學?
※數據科學家必備的10種機器學習演算法
※數學是科學嗎?
※數據科學、機器學習、人工智慧,都有哪些區別?
※告別低效學習——內科學和外科學的學習與備考方法
※科學家提出超越傳統機器學習的量子演算法
※科學家解析不同生物反應器流體動力學機制
※科學補鈣應該這樣做
※數據科學與數據科學家
※「老師,我也想學數據科學呢!」
※純粹科學和應用科學須兩者並重
※科學家們使用無人機研究動物行為方式
※數據科學對科學研究的影響
※大數據研究項目中數據科學家需要掌握遷移學習
※都說要跨學科學習,究竟哪些學科值得學?
※「計算機科學」與「軟體工程」有什麼區別?哪個專業更適合你?
※文字直接轉視頻,科學家用機器學習演算法實現這種操作
※科學家該怎樣做科普?