女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PyTorch可以和TensorFlow一樣快,有時(shí)甚至比TensorFlow更快了?

DPVg_AI_era ? 來源:lq ? 2019-09-07 07:50 ? 次閱讀

PyTorch可以和TensorFlow一樣快,有時(shí)甚至比TensorFlow更快了?這是怎么回事?最近Reddit的一個(gè)帖子引起熱議。

近日,Reddit 上有一個(gè)熱帖:為什么 PyTorch 和 TensorFlow 一樣快 (有時(shí)甚至比 TensorFlow 更快)?

作者說:

由于這兩個(gè)庫都在底層使用 cuDNN,所以我預(yù)想各個(gè)操作的速度是相似的。然而,TensorFlow (在 graph 模式下) 編譯一個(gè) graph,因此當(dāng)你運(yùn)行實(shí)際的訓(xùn)練循環(huán)時(shí),在 session.run 調(diào)用之外沒有任何 Python 開銷。在 PyTorch 中,由于動(dòng)態(tài)圖的關(guān)系,需要經(jīng)常使用 Python,所以我預(yù)想這回增加一些開銷。更不用說,擁有靜態(tài)圖意味著可以進(jìn)行圖優(yōu)化,比如節(jié)點(diǎn)修剪和排序操作。但我在網(wǎng)上看到的許多基準(zhǔn)測試中,在 GPU 上,PyTorch 都可以輕松地趕上 TensorFlow。

一個(gè)具體的例子是,在 PyTorch 和 TensorFlow 兩個(gè)庫中的 Adam 實(shí)現(xiàn):

https://github.com/pytorch/pytorch/blob/master/torch/optim/adam.py https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/training/adam.py

PyTorch 擁有你所期望的所有操作。對于 {_resource} _apply_density 情況下的 TensorFlow (據(jù)我所知這是常見情況), TensorFlow 有一個(gè)專用的 C++ 實(shí)現(xiàn)。因此,在這里,TensorFlow 不會(huì)在 Python 上花費(fèi)額外的時(shí)間,而且它在 C++ 中有一個(gè)優(yōu)化的實(shí)現(xiàn)。在這種情況下,為什么 TensorFlow 版本沒有更快一些呢?

我聽說 PyTorch 在 cuDNN 級別上進(jìn)行了更好的優(yōu)化。有人能提供更多細(xì)節(jié)嗎?是什么阻止了 TensorFlow 做同樣的事情?我所知道的惟一優(yōu)化是 PyTorch 使用 NCHW 格式 (針對 cuDNN 進(jìn)行了更好的優(yōu)化),而 TensorFlow 默認(rèn)使用 NHWC。

更新:看起來新的 Volta GPU 使用 NHWC 格式 (TensorFlow 的默認(rèn)格式) 的性能更好:https://devblogs.nvidia.com/tensor-core-ai-performance- ones/

這個(gè)問題引發(fā)了諸多 Reddit 網(wǎng)友的關(guān)注,大家紛紛給出自己的答案。

SR2Z:

這里的關(guān)鍵是異步執(zhí)行 —— 除非你不斷地在 GPU 之間復(fù)制數(shù)據(jù),否則 PyTorch 操作只會(huì)為 GPU 排隊(duì)。對 torch 函數(shù)的 Python 調(diào)用將在排隊(duì)操作后返回,因此大多數(shù) GPU 工作都不會(huì)占用 Python 代碼。這將瓶頸從 Python 轉(zhuǎn)移到了 CUDA,這就是為什么它們執(zhí)行起來如此相似。

huberloss (回復(fù) SR2Z):

TF 構(gòu)建了一個(gè)執(zhí)行圖,然后由 C++ 后端處理,這意味著你在 Python 中所做的唯一工作就是設(shè)置這個(gè)圖 (至少在 TF1.x 中是這樣)。我不認(rèn)為 TF 會(huì)移動(dòng)移入 / 移出 GPU,除非需要 (例如,op1 運(yùn)行在 CPU 上,op2 運(yùn)行在 GPU 上,op3 運(yùn)行在 CPU 上 -> 這將導(dǎo)致向 GPU 復(fù)制或從 GPU 復(fù)制)。TF 有執(zhí)行程序,它也將異步運(yùn)行所有內(nèi)容 (這意味著獨(dú)立節(jié)點(diǎn)將以一種你能夠盡快滿足輸出節(jié)點(diǎn)的方式執(zhí)行)。

關(guān)于 OP 的觀點(diǎn),我真的不知道為什么有時(shí)候會(huì)更快。我可以想到的唯一猜測是數(shù)據(jù)格式,或者某些 ops 調(diào)用 CUDA/cuDNN 的方式。

entarko:

正如你所說,這兩個(gè)庫都使用 cuDNN,所以在較低級別上使用的大多數(shù)算法是相似的。我的理解是,在默認(rèn)情況下,PyTorch 中的執(zhí)行是異步的。這意味著 Python 命令在 GPU 上執(zhí)行某項(xiàng)調(diào)用,但不等待該調(diào)用的結(jié)果,除非下一個(gè)操作需要該結(jié)果。因此,GPU 操作速度的唯一不同之處在于 python 調(diào)用所需的時(shí)間,這與 GPU 上的實(shí)際計(jì)算相比總體上較小。這并不能解釋為什么有時(shí)候 PyTorch 更快,這在一定程度上來自 NCHW (盡管并不總是這樣),而且還來自算法為不同的操作進(jìn)行的選擇 (cuDNN 的 benchmark flag)。

patrickkidger:

這與 PyTorch 和 TensorFlow 沒有直接關(guān)系,但是既然 NCHW 和 NHWC 被提了出來,我希望這里有人能知道答案……

為什么 batch size N 是第一個(gè)而不是最后一個(gè)?在我看來,由于緩存的局部性,最后使用它通常會(huì)加快速度。

大多數(shù)數(shù)據(jù)集格式不統(tǒng)一應(yīng)該不是大問題:相比于在整個(gè)計(jì)算的其余部分中具有 N-last 格式的好處而言,單個(gè)副本轉(zhuǎn)到 N-last 格式(即在將其送入神經(jīng)網(wǎng)絡(luò)之前)的開銷應(yīng)該是微不足道的。

programmerChilli (回復(fù) patrickkidger):

我認(rèn)為你是正確的,將批處理維度放在最后可以實(shí)現(xiàn)一些非常有趣的優(yōu)化 (想想所有的向量化)。

但是,如果你的 batch size 很小,會(huì)發(fā)生什么呢?比如 batch size 為 2 (可能 3 會(huì)更糟)。突然之間,你可以在批處理維度上進(jìn)行向量化的數(shù)量變得非常少了,并且你已經(jīng)傳播了其余的數(shù)據(jù),但沒有獲得多少收益。

實(shí)際上,以前有幾個(gè)框架使用這種格式,比如來自 Nervana 的 Neon。

我想主要的答案是人們嘗試了,但是由于各種原因,一些政治上 / 技術(shù)上的原因,我們目前已經(jīng)把 batch size 作為第一個(gè)維度確定下來。

un_om_de_cal:

根據(jù)我將項(xiàng)目從 PyTorch 轉(zhuǎn)移到 TF 的經(jīng)驗(yàn),雖然 PyTorch 的基本訓(xùn)練操作 (前向傳播、反向傳播、更新參數(shù)) 更快,但是一些不尋常的操作 (包括 argmax 和 slicing),PyTorch 比 TF 要慢得多。因此,也許 PyTorch 更適合通常基準(zhǔn)測試的更常見的操作,而 TF 針對更廣泛的操作進(jìn)行了優(yōu)化?

我想到的另一點(diǎn)是,PyTorch 教程在 CPU 上做數(shù)據(jù)增強(qiáng),而 TF 教程在 GPU 上做數(shù)據(jù)增強(qiáng) (至少 1-2 年前我看到的教程是這樣)。如果你像這樣做項(xiàng)目,那么你將在 CPU 上執(zhí)行一些計(jì)算,只要你沒有耗盡 CPU, 就可以提高效率。

各位 PyTorcher 和 TF boy,你們怎么看?

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1222

    瀏覽量

    25259
  • tensorflow
    +關(guān)注

    關(guān)注

    13

    文章

    330

    瀏覽量

    61002
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    809

    瀏覽量

    13745

原文標(biāo)題:Reddit熱議:為什么PyTorch比TensorFlow更快?

文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    用樹莓派搞深度學(xué)習(xí)?TensorFlow啟動(dòng)!

    介紹本頁面將指導(dǎo)您在搭載64位Bullseye操作系統(tǒng)的RaspberryPi4上安裝TensorFlowTensorFlow個(gè)專為深度學(xué)習(xí)開發(fā)的大型軟件庫,它消耗大量資源。您可以
    的頭像 發(fā)表于 03-25 09:33 ?282次閱讀
    用樹莓派搞深度學(xué)習(xí)?<b class='flag-5'>TensorFlow</b>啟動(dòng)!

    可以使用OpenVINO?工具包將中間表示 (IR) 模型轉(zhuǎn)換為TensorFlow格式嗎?

    無法將中間表示 (IR) 模型轉(zhuǎn)換為 TensorFlow* 格式
    發(fā)表于 03-06 06:51

    OpenVINO?是否與TensorFlow集成支持Raspberry Pi?

    無法確定OpenVINO?是否與 TensorFlow* 集成支持 Raspberry Pi。
    發(fā)表于 03-05 08:26

    stm32mp135d的板子可不可以tensorflow的模型啊?

    請問是stm32mp135d的板子可不可以tensorflow的模型啊?
    發(fā)表于 07-18 06:49

    如何在Tensorflow中實(shí)現(xiàn)反卷積

    TensorFlow中實(shí)現(xiàn)反卷積(也稱為轉(zhuǎn)置卷積或分?jǐn)?shù)步長卷積)是個(gè)涉及多個(gè)概念和步驟的過程。反卷積在深度學(xué)習(xí)領(lǐng)域,特別是在圖像分割、圖像超分辨率、以及生成模型(如生成對抗網(wǎng)絡(luò)GANs)等任務(wù)中
    的頭像 發(fā)表于 07-14 10:46 ?983次閱讀

    TensorFlow是什么?TensorFlow怎么用?

    TensorFlow是由Google開發(fā)的個(gè)開源深度學(xué)習(xí)框架,它允許開發(fā)者方便地構(gòu)建、訓(xùn)練和部署各種復(fù)雜的機(jī)器學(xué)習(xí)模型。TensorFlow憑借其高效的計(jì)算性能、靈活的架構(gòu)以及豐富的工具和庫,在學(xué)
    的頭像 發(fā)表于 07-12 16:38 ?1158次閱讀

    使用TensorFlow進(jìn)行神經(jīng)網(wǎng)絡(luò)模型更新

    使用TensorFlow進(jìn)行神經(jīng)網(wǎng)絡(luò)模型的更新是個(gè)涉及多個(gè)步驟的過程,包括模型定義、訓(xùn)練、評估以及根據(jù)新數(shù)據(jù)或需求進(jìn)行模型微調(diào)(Fine-tuning)或重新訓(xùn)練。下面我將詳細(xì)闡述這個(gè)過程,并附上相應(yīng)的TensorFlow代碼
    的頭像 發(fā)表于 07-12 11:51 ?727次閱讀

    請問ESP32如何運(yùn)行TensorFlow模型?

    請問ESP32如何運(yùn)行TensorFlow模型?
    發(fā)表于 07-09 07:30

    tensorflowpytorch哪個(gè)更簡單?

    PyTorch更簡單。選擇TensorFlow還是PyTorch取決于您的具體需求和偏好。如果您需要個(gè)易于使用、靈活且具有強(qiáng)大社區(qū)支持的框架,Py
    的頭像 發(fā)表于 07-05 09:45 ?1318次閱讀

    tensorflowpytorch哪個(gè)好

    tensorflowpytorch都是非常不錯(cuò)的強(qiáng)大的框架,TensorFlow還是PyTorch哪個(gè)更好取決于您的具體需求,以下是關(guān)于這兩個(gè)框架的
    的頭像 發(fā)表于 07-05 09:42 ?1064次閱讀

    tensorflow簡單的模型訓(xùn)練

    在本文中,我們將詳細(xì)介紹如何使用TensorFlow進(jìn)行簡單的模型訓(xùn)練。TensorFlow個(gè)開源的機(jī)器學(xué)習(xí)庫,廣泛用于各種機(jī)器學(xué)習(xí)任務(wù),包括圖像識(shí)別、自然語言處理等。我們將從安裝
    的頭像 發(fā)表于 07-05 09:38 ?1163次閱讀

    keras模型轉(zhuǎn)tensorflow session

    在這篇文章中,我們將討論如何將Keras模型轉(zhuǎn)換為TensorFlow session。 Keras和TensorFlow簡介 Keras是個(gè)高級神經(jīng)網(wǎng)絡(luò)API,它提供了種簡單、快
    的頭像 發(fā)表于 07-05 09:36 ?776次閱讀

    如何使用Tensorflow保存或加載模型

    TensorFlow個(gè)廣泛使用的開源機(jī)器學(xué)習(xí)庫,它提供了豐富的API來構(gòu)建和訓(xùn)練各種深度學(xué)習(xí)模型。在模型訓(xùn)練完成后,保存模型以便將來使用或部署是項(xiàng)常見的需求。同樣,加載已保存的模型進(jìn)行預(yù)測或
    的頭像 發(fā)表于 07-04 13:07 ?2447次閱讀

    TensorFlow的定義和使用方法

    TensorFlow個(gè)由谷歌人工智能團(tuán)隊(duì)谷歌大腦(Google Brain)開發(fā)和維護(hù)的開源機(jī)器學(xué)習(xí)庫。它基于數(shù)據(jù)流編程(dataflow programming)的概念,將復(fù)雜的數(shù)學(xué)運(yùn)算表示為
    的頭像 發(fā)表于 07-02 14:14 ?1282次閱讀

    TensorFlowPyTorch深度學(xué)習(xí)框架的比較與選擇

    深度學(xué)習(xí)作為人工智能領(lǐng)域的個(gè)重要分支,在過去十年中取得了顯著的進(jìn)展。在構(gòu)建和訓(xùn)練深度學(xué)習(xí)模型的過程中,深度學(xué)習(xí)框架扮演著至關(guān)重要的角色。TensorFlowPyTorch是目前最受歡迎的兩大深度
    的頭像 發(fā)表于 07-02 14:04 ?1460次閱讀