PyTorch和TensorFlow比較 - thegradient
在2019年,機器學習框架之戰還有兩個主要競爭者:PyTorch和TensorFlow。我的分析表明,研究人員正在放棄TensorFlow並大量湧向PyTorch。
為什麼研究人員喜歡PyTorch?
- 簡單。它類似於numpy,非常具有python風格,並且可以輕鬆地與Python生態系統的其餘部分整合。
- 很棒的API。與TensorFlow的API相比,大多數研究人員更喜歡PyTorch的API。部分原因是因為PyTorch的設計更好,部分原因是TensorFlow透過多次切換API(例如“圖層”->“ slim”->“估算器”->“ tf.keras”)而變得殘障。
- 效能。儘管事實上PyTorch的動態圖提供的最佳化機會很少,但有許多傳聞稱PyTorch的速度甚至快於TensorFlow。目前尚不清楚這是否真的成立,但至少,TensorFlow在這一領域還沒有獲得決定性的優勢。
PyTorch和TensorFlow用於生產
儘管PyTorch現在在研究中處於主導地位,但工業界表明TensorFlow仍然是主導框架。
研究人員關心他們能夠以多快的速度進行研究,該研究通常是在相對較小的資料集(可以容納在一臺計算機上的資料集)上執行的,並且執行在<8個GPU上。通常,這不是由效能方面的考慮來決定的,而是由他們快速實施新想法的能力來解決的。
另一方面,工業界認為效能是重中之重。儘管將執行時間提高10%對研究人員而言毫無意義,但這可以直接為公司節省數百萬美元的費用。
工業界行業有很多限制/要求。
- 沒有Python。一些公司將執行伺服器,這些伺服器的Python執行時開銷太大。
- 移動。您無法在移動二進位制檔案中嵌入Python直譯器。
- 服務。功能全面,例如無停機更新模型,在模型之間無縫切換,在預測時進行批處理等。
TensorFlow是專門針對這些要求而構建的,併為所有這些問題提供瞭解決方案:圖形格式和執行引擎本來就不需要Python。TensorFlow Lite和TensorFlow Serving服務分別解決了移動和服務兩個事項。
從歷史上看,PyTorch未能滿足這些考慮,因此大多數公司目前在生產中使用TensorFlow。
因此,我們得出了ML框架的當前狀態。PyTorch擁有研究市場,並且正在嘗試將這一成功擴充套件到工業領域。TensorFlow試圖在不犧牲太多生產能力的情況下,在研究界中盡其所能。PyTorch對行業產生有意義的影響肯定需要很長時間-TensorFlow根深蒂固且行業發展緩慢。但是,從TensorFlow 1.0到2.0的過渡將很困難,並且為公司評估PyTorch提供了自然點。
未來?
未來誰獲勝?將取決於誰能最好地回答以下問題。
- 研究人員的偏好會在多大程度上影響行業?當前博士學位的畢業生開始畢業時,他們將帶來PyTorch。這種偏好是否足夠強大,以至於公司會出於招聘目的選擇PyTorch?畢業生會創辦基於PyTorch的創業公司嗎?
- TensorFlow的熱切模式能否在可用性上趕上PyTorch?問題跟蹤器和線上社群給我的印象是TensorFlow Eager嚴重遭受效能/記憶體 問題的困擾,而Autograph擁有自己的問題份額。谷歌將花費大量的工程精力,但是TensorFlow受到歷史包bag的困擾。
- PyTorch可以多快達到生產狀態?PyTorch仍然有許多基本問題尚未解決-沒有好的量化指標,移動性,服務性等。在這些問題解決之前,PyTorch甚至不會成為許多公司的選擇。PyTorch能否為公司提供足夠引人入勝的故事來做出改變?注意:在本文釋出之日,PyTorch宣佈支援量化和移動。兩者都仍處於試驗階段,但代表了PyTorch在這方面的重大進展。
- Google在行業中的孤立會傷害到它嗎?Google推動TensorFlow的主要原因之一是幫助其迅速發展的雲服務。由於Google試圖擁有整個ML垂直市場,這激勵了Google與之競爭的公司(微軟,亞馬遜,Nvidia)支援唯一的替代機器學習框架。
詳情點選標題進入。
相關文章
- js 深比較和淺比較JS
- 01_pytorch和tensorflow的區別PyTorch
- Oracle date 型別比較和String比較Oracle型別
- not in 和 not exists 比較和用法
- etcd和redis比較Redis
- TCP和UDP比較TCPUDP
- Redis 和 Memcached 比較Redis
- Java和JavaSciprt比較Java
- Go和Python比較的話,哪個比較好?GoPython
- PyTorch一週年戰績總結:是否比TensorFlow來勢凶猛?PyTorch
- 比較器-Comparable和Comparator
- ImageMagic 和 GraphicsMagick 的比較
- ArrayList和LinkedList的比較
- ==和equals方法的比較
- 比PyTorch、TensorFlow更快,MindSpore開源一週年升級巨量新特性PyTorch
- PaddleFluid和TensorFlow基本使用概念對比UI
- Go 與 C++ 的對比和比較GoC++
- Transformer和MoE架構比較ORM架構
- Java 中 Comparable 和 Comparator 比較Java
- TreeMap和HashMap的元素比較HashMap
- 比較Windows和Linux SQL容器WindowsLinuxSQL
- 檢視tensorflow,pytorch是否可用GPUPyTorchGPU
- pytorch和tensorflow的愛恨情仇之基本資料型別PyTorch資料型別
- pytorch和tensorflow的愛恨情仇之引數初始化PyTorch
- powershell中的where和foreach比較
- 檔案和影像比較工具Kaleidoscope
- 360°全方位比較PostgreSQL和MySQLMySql
- 堆排序和快速排序效能比較排序
- 字符集和比較規則
- tbase和postgres-xl的比較
- EXCEL,POI,EASYEXCEL的使用和比較Excel
- 定製排序和比較器排序排序
- Airflow替代方案:Prefect和Dagster比較AI
- 類和類之間的比較
- mongodb和hbase的簡單比較MongoDB
- jQuery的prop和attr方法比較jQuery
- Mysql中的Datetime和Timestamp比較MySql
- BigDecimal的equals() 和 compareTo() 方法比較Decimal