深度學習框架不能“包治百病”,開發者如何選出最適合自己的?

隨著深度學習關注度和勢頭上升,深度學習被越來越多的企業和組織的生產實踐結合起來。這時,無論是對于深度學習相關專業的初學者,還是已經在企業和組織中從事工業場景應用和研發的開發者來說,選擇一個適合自己,適合業務場景需求的深度學習框架顯得尤為重要。

那么,對于不同學習階段和不同崗位的開發者來說,什么樣的深度學習框架才是適合自己的呢?為此,AI 前線邀請了來自BAT的深度學習框架專家來解答這個疑問。

以下是選擇深度學習框架時常見的幾個問題:

目前,國內外有哪些主流的深度學習框架?分別有什么優缺點?

TensorFlow:谷歌大廠出品,社區資源豐富,用戶群體廣泛。如果你的業務是實現一個比較成熟的應用場景,選擇TensorFlow是個不錯的選擇,畢竟大部分坑前人已經踩過了。如果你還是一名初學者,想要去實現全新的算法,那要慎重選擇TensorFlow,因其發展時間較久,代碼庫龐大,想要真正看懂它的代碼會是一個不小的挑戰。

PaddlePaddle:百度出品,跟TF類似,PaddlePaddle也是在百度內部實際應用的工業框架。值得一提的是,PaddlePaddle為大量工業級模型提供官方支持;大規模分布式訓練技術能力強,支持大規模稠密參數和稀疏參數場景的并行訓練;基于其中文文檔友好、簡單易上手的特點,社區活躍度不斷提高。本土開發者中文交流非常方便。PaddlePaddle 已經升級為全面的深度學習開發套件,除了核心框架,還開放了VisualDL、PARL、AutoDL、EasyDL、AI Studio等一整套的深度學習工具組件和服務平臺,更好地滿足不同層次的深度學習開發者的開發需求。18年百度加大了生態投入,在工業制造、農林領域有不少案例,對于想要落地應用場景,特別是針對中文語言處理的場景和大規模推薦場景,PaddlePaddle或許是個不錯的選擇。

PyTorch+Caffe2:臉書出品。PyTorch前身是Torch(一個基于Lua語言的深度學習庫)。PyTorch 靈活性相比TensorFlow大大增強,支持動態構圖,開發者可以隨時改變神經網絡的結構。PyTorch今年因其易用性表現突出,越來越受到學術界的青睞。如果你是一名初學者,想要去復現前沿的算法,推薦使用PyTorch。如果你是工業場景開發者,最好先搜一搜是否已經有使用PyTorch的成功落地案例。因為在運算效率、工業部署上,PyTorch還不算成熟。Caffe2為生產環境設計,提供在各種平臺(包括移動設備)的運行時。Caffe2意在彌補Pytorch在生產環境的不足,目前還沒有看到太多開發者反饋Caffe2的工業表現,需要更多時間驗證。

MxNet:已被亞馬遜?(Amazon) 選為?AWS 上的深度學習框架,支持動態圖計算。優勢是高效小巧,更適合自定義需求高的公司和研究者。如果你的工作需要對框架進行修改時,改MxNet要比改TF高效多了。MXNet的用戶相比其他框架并不算太多,有少量擁戴者。MXNet在文檔質量方便經常被詬病,新手還需要多磨合一下。
Keras:是一個用于快速構建深度學習原型的高層神經網絡庫,Keras由純Python編寫而成,并基于Tensorflow、Theano以及CNTK后端。Keras隱藏了大部分的內部運算,對于新手來說非常友好。如果想要快速入門,建議可以選擇Keras。但真的想成為深度學習大拿,還是要手動從零開始寫一個神經網絡的代碼,否則容易依賴于Keras的易使用性而忽略底層原理。

XDL:阿里出品。X-Deep Learning (XDL) 是針對特定工業級場景(比如廣告)深度學習問題的解決方案,而不是與其他框架并列的底層框架。實際上,XDL 采用橋接的方式支持使用 TensorFlow 和 MXNet 作為單節點的計算后端。對于已經使用TensorFlow、MXNet的開發者來說,如果需要在大規模稀疏場景應用可以選擇XDL試試, XDL依賴于阿里提供特定的部署環境,對非阿里系用戶不是很人性化。

不同學習階段、不同崗位的開發者,面對不同的業務場景需求應該選擇什么深度學習框架?選擇和衡量的標準是什么?

不同類型的用戶,選擇和衡量的標準會有一定差異。選擇框架通常要考慮易用性、性能、社區、平臺支持等問題。初學者應該考慮容易上手的框架。偏研究性的開發者,一般選擇易用而且有領先的模型基線的框架。偏工業應用的開發者可以考慮使用穩定性高、性能好的框架。比較高階的用戶,往往需要同時掌握多個框架。最新的開源算法可能會基于某個框架,掌握多個框架可以更快復現前沿成果。同時不同框架在不同模型上有性能差異,掌握多個框架也可以選擇在某個場景下最適合的框架。

在選擇深度學習框架時有哪些經驗可以分享?需要考慮哪些因素?

開發者通常用深度學習框架組建網絡,去解決實際企業級業務中的具體問題,比如:詞法分析、機器翻譯等。選擇框架時通常需要關注以下一些因素:

  1. 框架是否已經官方支持了當前最好的算法,比如中文詞法分析任務。
  2. 框架是否高效。同樣的算法用不同框架實現,訓練速度更快,意味著更少的線下資源,更快的迭代速度;預測速度更快,意味著實際部署時可以為企業節省大量的機器資源,也具有更高的響應速度。
  3. 框架的接口是否容易使用。

掌握一個深度學習框架,開發者需要做哪些準備?

在開發者已經學習 Python 程序開發和深度學習基礎知識的前提下,掌握一個深度學習框架,開發者需要了解框架的基本原理,學習并掌握框架的基本概念和用法。

  1. 通常可以先從官方文檔開始,通過大致瀏覽官方文檔對框架基本概念和用法有一個大致的了解。
  2. 另外可以結合官方提供的快速入門例子,在自己的機器上安裝并練習使用。
  3. 然后可以再從官方的模型庫里面挑選一些算法,進行學習參考。
  4. 結合自己具體任務組建網絡,查看API接口文檔,解決實際任務。

深度學習框架能“包治百病”嗎?是否適用于所有應用場景需求?

需要提醒大家的是,深度學習框架不能包至百病,深度學習框架能夠解決的是適合使用深度學習技術的應用場景。

深度學習(DL)是機器學習(ML)的一個分支,也是當下最流行的機器學習方法,雖然近幾年在圖像、語音、自然語言處理等應用方向,深度學習技術都取得了突破性的進展,但是我們依然不應該神話深度學習,認為深度學習無所不能。

適合掌握深度學習的任務應具備這樣一些特點:

一、具備大量樣本數據。如果樣本數據難以獲取或者數量太少,我們認為就不適合深度學習技術解決
二、樣本數據對場景的覆蓋度足夠完善。深度學習模型的效果完全依賴樣本數據表現,如果出現樣本數據外的情況,模型的推廣性會變差
三、結果對可解釋性的要求不高。如果應用場景不僅要機器能夠完成某項任務,還需對完成過程有明確的可解釋性,這樣的場景就不那么適合深度學習。

中國的深度學習框架有哪些不同于歐美國家主流深度學習開發框架的特點和創新?

從深度學習框架的特點來講,中國和歐美的的區分未必是一個合適的分類方式。很多中國深度學習框架研發的主體是中國工程師,也是在中國公司成長起來的,自然對國內的實際應用特點把握得會更精準,而且在中文文檔、中文教程以及中文模型配套上是獨具特色的。

未來,框架發展會出現哪些趨勢?

首先,當前仍處于深度學習研究和應用的持續火熱期,深度學習框架及平臺在研究界和工業界的需求仍持續增長。深度學習框架和平臺在產業界的市場占有還未進入穩定期,當然未來一段時間應該也不會出現完全一家獨大的壟斷局面。一方面整體的市場需求是很大也很多樣化的,另一方面不同框架在特性及發力點上自然會有一些差異性的適配。隨著深度學習在各行各業的廣泛應用,服務能力強的、更貼近用戶需求的框架會有更大的提升機會。

過去一段時間,動態圖的靈活性、易用性展現出對科研人員極大的吸引力,更多框架開始支持動態圖,但需要進一步解決動態圖下的性能優化問題。因為在工業界,訓練效率和規模化始終是最重要的。所以,各框架取長補短趨同性比較明顯,前端易用性、計算高效性、框架穩定性成為持續優化方向。當然,不同框架的先天基因的特性還是非常明顯的。
????
此外需要注意的是,AI專有芯片也在快速發展,框架和底層芯片的軟硬結合一體化研發也日益引起關注。AI應用部署場景快速擴張,框架對各硬件平臺的快速部署和高效推理能力變得非常重要。整體而言,需要支持多硬件的高效計算。這也使得框架內部架構上傾向于更好的抽象分層,保持整體邏輯的統一性和異構硬件執行的高效性。

另一方面,深度學習框架的內涵也在延展。深度學習框架的出現本身就是為了深度學習研究、實驗和應用的便利性,節省了開發者很大的編程代價。但對于深度學習技術而言,網絡設計其實也是非常重要的一環,基礎的深度學習框架是無法解決這個問題的。所以當下神經網絡結構的自動設計AutoDL技術就成為新的熱點,也和深度學習框架進行更緊密的結合

從便利深度學習技術應用來講,只靠開源框架還是不夠的,需要場景化組件、模塊、平臺和產品的組合打法,框架之上的平臺、配套組件構成的深度學習全流程解決方案對實際應用非常關鍵。若想深度學習框架在實際應用中發揮更大作用,是需要更全面的綜合服務配套建設的

如何看待接下來的框架之爭?

隨著深度學習技術的普及,各家框架的成熟化,深度學習技術的門檻會越來越低。在研究場景中,好用、靈活易擴展是最重要的考量因素,從目前的趨勢來看,PyTorch在易用性上有一定優勢。PaddlePaddle在實際生產場景中,框架的易用性、穩定性、生態資源的豐富度將取代技術的領先性成為開發者更重要的考量因素。從這點上,擁有完整生態資源、有實際應用場景支撐的框架會爭奪到越來越多的企業開發者用戶。在國外,依賴于谷歌生態的 TensorFlow,依賴于 AWS 云生態的MXNet,未來都有一定的機會。

想要形成自己的產品生態,需要哪些必備條件?

想要形成自己的產品生態,需要具備四大條件:
一、 掌握能為最終用戶提供巨大收益的核心技術。如深度學習領域框架所涉及的異構計算、并行訓練、多路通信、多端部署及核心算法等關鍵技術。廠商需要擁有深度學習核心技術并形成自己的特色,才具備了生態號召力。
二、 核心產品或服務能夠規模化地應用和落地。在生態拓展的過程中,廠商有能力通過平臺和資源沉淀足夠多的通用解決方案。
三、 能為最終用戶提供全面的體驗。深度學習框架應用門檻較高,真正在企業廣泛落地,還有很多的工作要做,比如結合企業需求的深度定制優化、深度學習配套工具建設、細致的企業服務等等,這要求廠商能夠有效整合生態系統中的各個伙伴能力,為最終用戶提供更全面的產品體驗。
四、 擁有持續創新的能力。廠商應該有足夠的資金和動力讓核心技術和產品持續創新,使得生態系統的用戶相信核心業務能夠一直使他們受益。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252491.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252491.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252491.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux+CLion+cmake 動態鏈接庫的使用

在作《劍指offer》中的單向鏈表的題目時,需要一些常用到的操作鏈表的函數放在一個文件下,我想把這些函數的聲明都寫在list.h文件中,把這些函數的定義都寫在list.cpp文件中,這樣就可以在測試文件test.cpp中調用list.cpp中定義的函數…

PAT(乙級)1009

1009. 說反話 (20)給定一句英語,要求你編寫程序,將句中所有單詞的順序顛倒輸出。 輸入格式:測試輸入包含一個測試用例,在一行內給出總長度不超過80的字符串。字符串由若干單詞和若干空格組成,其中單詞是由英文字母&…

庫存扣減問題

2019獨角獸企業重金招聘Python工程師標準>>> 并發減庫存 并發扣庫存問題總結 庫存扣減還有這么多方案? | 架構師之路 轉載于:https://my.oschina.net/u/2939155/blog/3004363

HSRPSTPACL

1 HSRP配置 1.1 問題 在企業網絡到外部的連接方案中,要求不高的條件下可以是單出口。一旦該出口線路出現問題,整個企業網絡就不能連接到外網了。為了使得企業網絡到外網連接的高可用性,可以設置兩個以上的出口,然而多個出口對…

java 的 CopyOnWriteArrayList類

初識CopyOnWriteArrayList 第一次見到CopyOnWriteArrayList,是在研究JDBC的時候,每一個數據庫的Driver都是維護在一個CopyOnWriteArrayList中的,為了證明這一點,貼兩段代碼,第一段在com.mysql.jdbc.Driver下&#xff0…

科技的趨勢!AI將進軍了37%的企業

2019獨角獸企業重金招聘Python工程師標準>>> 市場研究機構Gartner調查了全球89個國家的逾3,000名信息長(CIO),顯示有37%的企業已經或打算于近期內部署人工智能(AI),在4年內成長270%。Gartner研究…

CMakeLists.txt編寫規則

在PROJECT_SOURCE_DIR下新建了src, include, lib, bin四個子文件夾。 src文件夾用來存放所有的.cpp文件,include文件夾用來存儲所有的.h文件, lib中存放生成的自己編寫的共享庫, bin中存放所有的可執行文件 用SET來設置.exe可執行文件和共享…

nginx.conf配置詳解

######Nginx配置文件nginx.conf中文詳解######定義Nginx運行的用戶和用戶組 user www www;#nginx進程數,建議設置為等于CPU總核心數。 worker_processes 8;#全局錯誤日志定義類型,[ debug | info | notice | warn | error | crit ] error_log /usr/local…

更新 hadoop eclipse 插件

卸載hadoop 1.1.2插件。并安裝新版hadoop 2.2.0插件。 假設直接刪除eclipse plugin文件夾下的hadoop 1.1.2插件,會導致hadoop 1.1.2插件殘留在eclipse中,在eclipse perspective視圖中有Map/Reduce視圖,可是沒有圖標,新建項目也不會…

【K8S學習筆記】Part1:使用端口轉發訪問集群內的應用

本文介紹如何使用kubectl port-forward命令連接K8S集群中運行的Redis服務。這種連接方式有助于數據庫的調試工作。 注意:本文針對K8S的版本號為v1.9,其他版本可能會有少許不同。 0x00 準備工作 在進行該操作之前,需要滿足以下條件&#xff1a…

Ubuntu 16.04 桌面菜單欄 任務欄 標題欄消失的解決辦法

將home目錄下的.cache刪除掉就可以了 & cd & sudo rm -r ./.cache

瓜子二手車發12月二手車價格:漢蘭達奧德賽CR-V保值率居首

中新網1月22日電 日前,基于海量個人對個人的二手車成交數據,瓜子二手車公布了12月全國及多個核心城市的二手車交易“瓜子價”數據。數據顯示,2018年12月全國瓜子二手車嚴選直賣簽約均價為87934元,環比上漲0.16%,同比上…

概率分布之間的距離度量以及python實現(三)

概率分布之間的距離,顧名思義,度量兩組樣本分布之間的距離 。 1、卡方檢驗 統計學上的χ2統計量,由于它最初是由英國統計學家Karl Pearson在1900年首次提出的,因此也稱之為Pearson χ2,其計算公式為 (i1,2&…

Windows vs Linux:\r\n 與 \r

Linux 下文本文件的換行符為 \nWindows 下文本文件的換行符為 \r\n,占兩個字節: \r:歸位鍵(CR),ascii 碼為 13\n:換行鍵(LF),ascii 碼位 10也即單行無換行文本…

C++求職題

文章大部分內容轉載https://www.cnblogs.com/lanxuezaipiao/p/4127904.html 1.冒泡排序法: 如果有N個數字需要排序,那么需要進行(N-1)趟循環,第i趟循環需要對比的次數為(N-i)。所以可以用雙重循環,外層循環用于控制循環的趟數&a…

Python-爬蟲-requests

簡介 #介紹:使用requests可以模擬瀏覽器的請求,比起之前用到的urllib,requests模塊的api更加便捷(本質就是封裝了urllib3)#注意:requests庫發送請求將網頁內容下載下來以后,并不會執行js代碼&am…

JS如何監聽動畫結束

場景描述 在使用JS控制動畫時一般需要在動畫結束后執行回調去進行DOM的相關操作,所以需要監聽動畫結束進行回調。JS提供了以下事件用于監聽動畫的結束,簡單總結學習下。 CSS3動畫監聽事件 transitionEnd事件 transitionEnd事件會在CSS transition動畫結束…

封裝一個ViewPager真正的實現圖片無限循環滾動帶導航點

效果圖: 大家在寫項目的過程中常常會碰到須要實現Viewpager里面載入幾張圖片來循環自己主動輪播的效果,假設不封裝一下的話代碼分散在activity里面會顯得非常亂。并且也不利于我們下次復用,所以這里我把viewpager的相關代碼抽取出來放在了一個…

畢業論文頁眉頁腳頁碼插入

用word這么多年,第一次完整的操作了一遍頁眉頁腳頁碼的插入過程,其實三者都要要求奇偶頁不同 1.頁面布局-》右下角箭頭-》版式-》奇偶頁不同 因為文章不同的部分需要插入不同的頁眉頁腳頁碼,所以要在不同的部分插入分解符斷開它們的連接 2、…

巴黎市中心降下2019年第一場雪

當地時間1月22日,法國巴黎市中心降下2019年第一場雪,氣溫也隨之下降,街上的行人和車輛均有所減少。中新社記者 李洋 攝一對情侶在埃菲爾鐵塔前合影留念。無家可歸者在長椅上睡覺。游客在盧浮宮前拍照。