PyTorch稱霸頂會:CVPR論文佔比是TensorFlow 4 倍

2021-01-11 TechWeb

在開源框架領域,PyTorch 與 TensorFlow 之爭一直存在,研究人員在寫論文時也會有不同的偏向。但近年來,得益於 PyTorch 本身的一些優勢,越來越多的學者偏向於選擇 PyTorch,TensorFlow 的使用比例也因此逐漸下降。

自 2009 年深度學習再度成為焦點以來,很多機器學習框架成為研究者和業界開發者的新寵。從早期的學術框架 Caffe、Theano 到如今 Pytorch、TensorFlow 這樣越來越大規模的開發框架。

發展到 2020 年,我們可以看到國內外越來越多的科技巨頭、創業公司都在研發、使用自家的深度學習框架,如國內的也有百度飛槳、華為 MindSpore、曠視天元。

但不得不說,當前最為火熱的開源框架,依然是谷歌的 TensorFlow 與 Facebook 手中的 PyTorch。兩者之間的競爭,也是社區內津津樂道的話題。

在機器之心往期文章中,我們曾報導,雖然 2018 年 TensorFlow 依然碾壓 PyTorch,但自 2019 年以來 PyTorch 的發展可謂是火力全開,特別是在學界,幾乎是獨領風騷。

這兩年,我們從各類自然語言處理(NLP)、計算機視覺(CV)國際學術頂會接收論文中使用 PyTorch 和 TensorFlow 的佔比情況,就可以發現這種趨勢 。

最近,隨著 ICLR 2020 和 CVPR 2020 會議的相繼結束,前 PyTorch 實習生、一直致力於研究機器學習領域深度學習框架發展趨勢的學者 Horace He 更新了 ICLR 2020 和 CVPR 2020 接收論文中 PyTorch 和 TensorFlow 的使用及相關佔比,結果顯示:在 ICLR 2020 和 CVPR 2020 會議中,使用 PyTorch 的論文數遠超 TensorFlow,研究人員對 PyTorch 的偏愛程度進一步加深。

PyTorch 繼續稱霸學界

在最新的圖表數據中,Horace He 依然以 ICLR 2020 和 CVPR 2020 接收論文中 PyTorch 使用量在 TensorFlow/PyTorch 使用總數中的佔比情況,以及 PyTorch/TensorFlow 具體使用數及佔接收論文總數的比例為評估指標。

圖表的交互版本參見:http://horace.io/pytorch-vs-tensorflow/

ICLR 2020 論文 PyTorch/TensorFlow 使用分析

首先看下 ICLR 2020 接收論文中,PyTorch 使用數在 TensorFlow/PyTorch 使用總數的佔比情況:佔比超過 50% 則意味著該頂會接收論文中使用 PyTorch 的多於 TensorFlow。

從下圖可以看到,在 ICLR 2020 接收論文中,PyTorch 的這一比例達到了 69.80%,相較於 ICLR 2018 的 28.05%、ICLR 2019 的 55.91%,這說明了 ICLR 2020 接收論文中 PyTorch 使用數大大超過了 TensorFlow。

下圖更直觀地展示了 ICLR 2020 接收論文中,PyTorch 和 TensorFlow 的具體使用數。可以看到,PyTorch 使用了 141 次,而 TensorFlow 使用了 61 次,PyTorch 使用數是 TensorFlow 的兩倍還多。並且,PyTorch 使用數多於 TensorFlow 的情況出現在了 2019 年,而在之前 TensorFlow 使用數多於 PyTorch。

PyTorch 和 TensorFlow 各自使用數佔接收論文總數的比例如下圖所示。可以看到 PyTorch 佔比 20.52%,相較於 ICLR 2018 的 6.82%、ICLR 2019 的 14.14% 出現了持續上升;

與此同時,TensorFlow 佔比僅為 8.88%,相較於 ICLR 2018 的 17.51%、ICLR 2019 的 11.16% 出現了持續下降。由此可見自 2019 年以來,PyTorch 和 TensorFlow 的使用情況發生了根本性變化。

CVPR 2020 論文 PyTorch 和 TensorFlow 使用分析

首先如下圖所示,在 CVPR 2020 接收論文中,PyTorch 使用數在 TensorFlow/PyTorch 使用總數的佔比為 79.88%,佔比變化情況與 ICLR 2020 會議相似,都呈現出了增長的趨勢。

PyTorch 和 TensorFlow 在 CVPR 2020 會議接收論文中出現的具體使用數如下圖所示,可以看到 PyTorch 使用了 405 次,TensorFlow 使用了 102 次,PyTorch 使用數是 TensorFlow 的近 4 倍。並且,PyTorch 使用數多於 TensorFlow 的情況同樣出現在 2019 年,而在之前 PyTorch 使用數少於 TensorFlow。

下圖展示了 CVPR 2020 接收論文中,PyTorch 與 TensorFlow 使用數佔接收論文總數的比例,可以看到 PyTorch 佔比 27.61%,TensorFlow 佔比 6.95%,兩者的佔比情況變化與具體使用數變化趨勢相同,都是在 2019 年出現了轉折。

由此可見,在 ICLR 和 CVPR 會議中,PyTorch 與 TensorFlow 的使用數及佔比情況在 2019 年發生了根本性變化,自此 PyTorch 的使用數超過了 TensorFlow,佔比也不斷地增加。

為什麼研究者們那麼偏愛 PyTorch

今年 4 月份,PyTorch 1.5 宣布上線,對 C++ 前端進行重大更新,並推出了全新的高級自動梯度 API,使用戶更方便地執行 jacobian、hessian、jvp 和 vjp 等函數。

而谷歌自 2019 年 10 月推出 TensorFlow 2.0 正式版以來,卻被用戶吐槽太難用,這不僅表現在缺乏官方指南、詳細的說明文檔以及來自官方開發團隊的答疑,而且本身存在的一些問題,如與 Keras 的整合等。所有這些都迫使一些用戶偏向了 PyTorch。

那麼,就框架本身來說,為何越來越多的研究者選擇在論文中使用 PyTorch 呢?大概可以總結為以下三個原因:

簡單。與 numpy 類似,PyTorch 可以很容易地與 Python 生態系統融合。例如,向 PyTorch 模型的任意位置放入一個 pdb 斷點,它都可以正常工作。而在 TensorFlow 中,調試模型需要一個激活的會話,最後會變得非常棘手;

優秀的 API。相較於 TensorFlow,多數研究者更喜歡 PyTorch 的 API。部分原因在於 PyTorch 的設計更加合理,還有一部分原因在於:TensorFlow 在將 API 轉換多次之後已經自損元氣;

性能。儘管 PyTorch 的動態圖留給優化的機會非常之少,但有不少非正式報告稱 PyTorch 與 TensorFlow 一樣快。目前還不清楚這是不是真的,但至少,TensorFlow 在這方面還沒有取得決定性優勢。

PyTorch 的這些優勢或許就是越來越多的學者選擇它的理由吧!

 

相關焦點

  • TensorFlow與PyTorch之爭,哪個框架最適合深度學習
    官方研究發布於論文《TensorFlow:異構分布式系統上的大規模機器學習》。論文地址:http://download.tensorflow.org/paper/whitepaper2015.pdfTensorFlow 現已被公司、企業與創業公司廣泛用於自動化工作任務和開發新系統,其在分布式訓練支持、可擴展的生產和部署選項、多種設備(比如安卓)支持方面備受好評。
  • 【注意力機制】transformers之轉換Tensorflow的Checkpoints
    你可以通過使用convert_tf_checkpoint_to_pytorch.py將任意的BERT的Tensorflow的Checkpoints轉換為PyTorch格式(特別是由Google發布的預訓練模型(https://github.com/google-research
  • 如何在PyTorch和TensorFlow中訓練圖像分類模型
    我相信你會發現無窮的資源來學習這些深度學習框架之間的異同。在本文中,我們將了解如何在PyTorch和TensorFlow中建立基本的圖像分類模型。我們將從PyTorch和TensorFlow的簡要概述開始。然後,我們將使用MNIST手寫數字分類數據集,並在PyTorch和TensorFlow中使用CNN(卷積神經網絡)建立圖像分類模型。
  • Github 上打星超過 1 萬的可復現頂會論文項目
    收錄頂會:NIPS論文連結:http://papers.nips.cc/paper/6870-bridging-the-gap-between-value-and-policy-based-reinforcement-learning.pdf復現代碼:https://github.com/tensorflow
  • TensorFlow 攜手 NVIDIA,使用 TensorRT 優化 TensorFlow Serving...
    HTTP/REST API at:localhost:8501 …$ curl -o /tmp/resnet/resnet_client.py https://raw.githubusercontent.com/tensorflow/serving/master/tensorflow_serving/example/resnet_client.py
  • PyTorch Hub輕鬆解決論文可復現性
    用戶可以提交、瀏覽模型,極大的改善了論文的可復現性難題。機器學習論文的可復現性一直是個難題。許多機器學習相關論文要麼無法復現,要麼難以重現。有時候論文讀者經常為了調用各種經典機器學習模型,還要重複造輪子。隨著提交給arXiv以及各種會議上的論文數量開始暴漲,可復現性的重要性也越來越凸顯。
  • TensorFlow極速入門
    最後給出了在 tensorflow 中建立一個機器學習模型步驟,並用一個手寫數字識別的例子進行演示。1、tensorflow是什麼?tensorflow 是 google 開源的機器學習工具,在2015年11月其實現正式開源,開源協議Apache 2.0。
  • 步履不停:TensorFlow 2.4新功能一覽!
    系統會在參數伺服器上創建變量,然後工作節點會在每個步驟中進行讀取和更新。變量的讀取和更新會在各工作節點上獨立進行,同時無需採取任何同步操作。由於工作節點互不依賴,因此該策略具有工作器容錯的優勢,並會在使用搶佔式伺服器時有所助益。如要開始使用此策略,請查閱參數伺服器訓練教程。
  • PyTorch 1.6、TensorFlow 2.3、Pandas 1.1 同日發布!都有哪些新...
    TensorPipe是PyTorch分布式訓練的通信工具,詳情可參閱GitHub:pytorch/tensorpipe。還有其他分布式並行訓練(Distributed Data Parallel,DDP)和(Remote Procedural Call,RPC)包的改進。
  • 玩轉TensorFlow?你需要知道這30功能
    如果你關心如何使模型保持最新並監控它們,那麼你可以了解一下這個產品、看看它的論文。地址是:tensorflow.org/tfx/?https://www.tensorflow.org/tfx/data_validation/?hl=zh-cn4)TFX -TensorFlow 變換同樣地,你可能希望用於重新訓練的數據也能被自動進行預處理:對特定特性進行歸一化、將字符串轉換為數值等。Transform 不僅可以對單個樣本進行這些操作,還能批處理數據。
  • 從R-CNN到YOLO,一文帶你了解目標檢測模型(附論文下載)
    大數據文摘作品編譯:Yanruo、小魚這是一份詳細介紹了目標檢測的相關經典論文、學習筆記、和代碼示例的清單,想要入坑目標檢測的同學可以收藏了!在大數據文摘後臺回復「目標檢測」可打包下載全部論文~R-CNNR-CNN是2014年出現的。
  • 初學AI神經網絡應該選擇Keras或是Pytorch框架?
    起初的計算後臺為Theano(和tensorflow差不多的一個框架),後來經過一系列的劇情,現在默認的計算後臺就為tensorflow了。另外由於tensorflow1.0的細節過於繁瑣混亂,升級版的tensorflow2.0基本拋棄了上述編寫語法。其自家小弟tensorflow.keras 已經和keras版本同步了。
  • tensorflow初級必學算子
    在之前的文章中介紹過,tensorflow框架的核心是將各式各樣的神經網絡抽象為一個有向無環圖,圖是由tensor以及tensor變換構成;雖然現在有很多高階API可以讓開發者忽略這層抽象,但對於靈活度要求比較高的算法仍然需要開發者自定義網絡圖,所以建議開發者儘量先學習tf1.x
  • TensorFlow 中文資源全集,學習路徑推薦
    https://gitee.com/fendouai/Awesome-TensorFlow-Chinese很多內容下面這個英文項目:Inspired by https://github.com/jtoy/awesome-tensorflow官方網站官網:https://www.tensorflow.org/中文:https://tensorflow.google.cn
  • TensorFlow 資源大全中文版
    (點擊上方藍字,快速關注我們)譯文:伯樂在線專欄作者 - Yalye英文:jtoy如有好文章投稿
  • Tensorflow基礎教程15天之創建Tensor
    在將Tensor定義為Variable之後,Tensorflow才會將其傳入計算圖。如何操作我們將在這裡介紹創建Tensor的主要方法。zeros_similar = tf.zeros_like(constant_tsr)ones_similar = tf.ones_like(constant_tsr)注意:通過這種方法創建的Tensor,要首先初始化原Tensor,如果同時初始化系統會報錯。序列TensorTensorflow允許我們定義數組Tensor。
  • 5個簡單的步驟掌握Tensorflow的Tensor
    在這篇文章中,我們將深入研究Tensorflow Tensor的細節。我們將在以下五個簡單步驟中介紹與Tensorflow的Tensor中相關的所有主題:第一步:張量的定義→什麼是張量?我們經常將NumPy與TensorFlow一起使用,因此我們還可以使用以下行導入NumPy:import tensorflow as tfimport numpy as np張量的創建:創建張量對象有幾種方法可以創建tf.Tensor對象。讓我們從幾個例子開始。
  • 在Windows中安裝Tensorflow和Kears深度學習框架
    圖 3-31.4.單機I Agree按鈕,如圖3-4所示:在命令提示符窗口輸入下列命令: 建立Tensorflow Anaconda虛擬環境 conda create --name tensorflow python=3.5 anaconda 執行後屏界面顯示如圖3-9所示。
  • TensorFlow Lite發布重大更新!支持移動GPU、推斷速度提升4-6倍
    在Pixel 3和三星S9上,提升程度大概為4倍,在iPhone 7上有大約有6倍。為什麼要支持GPU?眾所周知,使用計算密集的機器學習模型進行推斷需要大量的資源。但是行動裝置的處理能力和功率都有限。雖然TensorFlow Lite提供了不少的加速途徑,比如將機器學習模型轉換成定點模型,但總是會在模型的性能或精度上做出讓步。
  • 深度解讀TensorFlow,了解它的最新發展!
    TensorBoard  TensorBoard是一套可視化工具,研發人員使用TensorFlow寫的神經網絡看上去會顯得非常複雜混亂,為了可以更加直觀的調試、優化神經網絡,谷歌開發了TensorBoard。