為什麼說 TensorFlow 是適用於部署生產的機器學習框架?
怎麼做分散式訓練?(老闆說,gpu這幾年買這麼多了,為啥速度還慢?你還要採購新的?沒預算)
多個業務高並發serving?(上千上萬個不同模型,針對不同業務,如何處理?單機?)
這些等你真的要把模型用起來的時候就知道了。
scalability永遠是任何應用最大的落地門檻
不依賴python?
部署生產追求的是部署方便,運行生產效率高。TensorFlow的設計處處體現了一個延後計算的思想。從而可以做更多靜態分析,圖優化,從而達到高運行效率。
訓練與推導的本質是流水線,流水線的本質是DAG運算。
Tensorflow在寫代碼的時候你會感覺到,怎麼我寫了這麼多,什麼有用的都沒有執行呢?為什麼老得用一個session去run才能得到結果。原因是你做的這麼多工作,都是在生成數據載入模型,圖模型。你是在生產一部自動機器,等你把這機器造好了,他還會自動優化一下,比如重複的操作可合併等。sess.run的時候,它會自動吃進去數據,吐出來結果。
因為你在設計之初,就被tensorflow強制考慮數據流的問題了,而按照數據流高度抽象過的程序,很容易被部署在多核/多GPU/多節點環境中。sess.run的時候,即讓數據按設計流程流動起來了。
這本質上呢,可能對researcher不是很友好,因為搞科研的,喜歡第一步,第二步,第三步那樣的邏輯去寫代碼,在jupyter里,寫一步就得一步的結果。
不過呢,為了運算效率,早點神丹煉成,寫tensorflow也逐漸被接受了。
tensorflow serving一系列工具基本上把什麼pytorch mxnet秒殺了。
上陣打仗不需要知道槍是怎麼造出來的。
TensorFlow的學習成本極低,把前幾年由小部分人裝逼用的概念以很傻瓜的形式實現了。
舉個例子,怎麼調用GPU這種事兒,幾年前還是挺費事兒,學習曲線很陡峭。
現在TensorFlow設置調用GPU就差像電飯煲那樣一鍵蒸飯了。
我一個文科生都能搞定。
- 靜態圖設計,對生產部署而言便利十足(這裡就不說什麼beam?search之類的計算的坑了);
- 可擴展,穩定,經歷大規模多應用部署考驗;
- 支持將模型部署到不同的設備,可在移動端產品部署,不需要單獨的模型解碼器;
再加一個就是社區強,資源多。
因為Google作為世界上機器學習實力最強的公司,經驗積累肯定也是最豐富的,這些經驗自然會反映到TensorFlow的設計裡面。再者Google有錢有人,啥都能自己定製一套,其他框架或多或少有點兒湊合的意思在裡面。
因為大部分企業的深度學習的能力和水平不高...
TF提供了全套,從訓練到手機端都有,開箱即用。所以是所謂的「適用於部署生產」的機器學習框架。
看了幾個答案,感覺有點文不對題呢...
應該是因為tf是基於靜態圖的吧,把圖啟動了,喂個數據就可以算,比較適於部署。
還沒開始學機器學習!
簡單方便可擴展。
我個人感覺完全還是因為谷歌的生態圈比較好...TensorFlow JS、還有TPU支持等等的。還有可視化工具也都不錯。也是因為我一直在用TF不了解其他框架的原因...
總結一下
Tensorflow有serving作為部署的獨立方向,用於任務管理,解決比如網路通信和並發的問題,不過適用於GPU,用在嵌入式系統裡面差點,TF lite專門適用於嵌入式系統,支持可視化(tersorboard),分散式結構,適合雲的形式,龐大的社區。官網上直接把部署放在工具欄裡面作為特色進行宣傳。
具體說下
1. TensorFlow Serving是一個高性能、開源的機器學習服務系統,專門為部署而設計。適合多個大規模模型,並支持模型生命周期管理、多種演算法實驗及有效地利用GPU資源。利用Serving可以快速方便的將模型部署到線上,使用 gRPC 作為介面接受外部調用。利用TensorFlow 訓練後,將模型導入到 Serving中,就能對外提供服務了。TensorFlow Serving 的出現使得TensorFlow不僅僅是一個深度學習框架,更是一個包含相關的數據處理的全流程管理。還可以結合docker。
2. TensorBoard。TensorBoard 是一款可視化工具,可以 繪製圖像生成的定量指標圖以及附加數據,直觀地了解神經網路結構,極大的方便了 TensorFlow 程序的理解、調試與優化。
3. TensorFlow採用分散式架構,對雲的處理非常好,所以適合大規模項目的部署。官網上有專門介紹如何在Hadoop上使用的說明。
4. 使用Python,相比於caffe的C語言,python 有很好的可理解性,程序寫起來非常方便,而且生態成熟,有很多庫可以使用,TensorFlow的生態是最大的,另外,對於一個研發人員以跳槽為漲薪最優途徑的市場現狀來說,採用python而不是C,非常有利於代碼和工作的移交和延續,這真是誰用誰知道。
主要是商業化,生產環境啊,成本,穩定性都很重要,serving可以輕量化的解決服務問題,又較為穩定,tensorflow功能強大,可以打通一整套從研發到服務的流程,快速落地。免費又穩定,要啥自行車。
離線支持多機多cpu多gpu分散式訓練,在線提供serving進行預測打分,提供了一整套解決方案,應用直接落地,極大減少了工程成本。
離線評估指標有提升,通過切換模型,導出模型到某個實驗田地址,在線tfs定時自動更新最新模型直接生效,不需要改在線任何代碼或流程。
讓我們只需關注離線模型的調優。
TensorFlow 框架是jeff主導的項目,完全是工業屆上的產品,真的是這幾年用過最棒的機器學習框架,當然還有一些其他的,比如lib系列,可以去查下jeff是誰
推薦閱讀:
TAG:人工智慧 | 科技 | 機器學習 | 深度學習DeepLearning | TensorFlow |