PyTorch1.5更新發布,與Python配合使用的C ++前端API奇偶校驗

2020-12-21 人工智慧研究院

PyTorch團隊發布

今天,我們宣布PyTorch 1.5以及新的和更新的庫的可用性。此版本包括幾個主要的新API添加和改進。PyTorch現在包括對C ++前端的重大更新,用於計算機視覺模型的「通道最後」存儲格式,以及用於模型並行訓練的分布式RPC框架的穩定版本。該發行版還提供了針對粗麻布和雅各布派的autograd的新API,以及一個允許創建受pybind啟發的Custom C ++類的API。

你可以在下面的連結中找到詳細的發行說明:https://github.com/pytorch/pytorch/releases

C ++前端API(穩定)

現在,C ++前端API與Python相當,並且總體功能已移至「穩定」狀態(以前標記為實驗性)。一些主要亮點包括:

現在覆蓋率達到100%,並提供有關C ++ torch :: nn模塊/功能的文檔,用戶可以輕鬆地將其模型從Python API轉換為C ++ API,從而使模型創作體驗更加流暢。C ++中的優化器已經偏離了Python等效器:C ++優化器不能將參數組作為輸入,而Python可以。此外,步驟功能的實現也不完全相同。在1.5版中,C ++優化器的行為將始終與Python等效器相同。C ++中缺少張量多維度索引API是一個眾所周知的問題,並在PyTorch Github問題跟蹤器和論壇中引起了很多帖子。先前的解決方法是使用narrow/ select/ index_select/ 的組合,masked_select與Python API的優雅tensor[:, 0, ..., mask]語法相比,此組合笨拙且容易出錯。在1.5版本中,用戶可以使用tensor.index({Slice(), 0, "...", mask})以達到相同的目的。COMPUTER VISION模型的「 CHANNELS LAST」存儲格式(實驗性)

「最後使用通道」的內存布局釋放了使用高效性能卷積算法和硬體(NVIDIA的Tensor Core,FBGEMM,QNNPACK)的能力。此外,它被設計為通過運算符自動傳播,從而允許在內存布局之間輕鬆切換。

在此處了解更多有關如何編寫內存格式感知運算符的信息。

自定義C ++類(實驗性)

此版本添加了新的API,torch.CutomClassHolder用於將自定義C ++類同時綁定到TorchScript和Python。該API的語法與pybind11幾乎相同。它允許用戶向TorchScript類型系統和運行時系統公開其C ++類及其方法,以便他們可以實例化和操作TorchScript和Python中的任意C ++對象。C ++綁定示例:

template <class T>

struct MyStackClass : torch::CustomClassHolder {

std::vector<T> stack_;

MyStackClass(std::vector<T> init) : stack_(std::move(init)) {}

void push(T x) {

stack_.push_back(x);

}

T pop() {

auto val = stack_.back();

stack_.pop_back();

return val;

}

};

static auto testStack =

torch::class_<MyStackClass<std::string>>("myclasses", "MyStackClass")

.def(torch::init<std::vector<std::string>>())

.def("push", &MyStackClass<std::string>::push)

.def("pop", &MyStackClass<std::string>::pop)

.def("size", [](const c10::intrusive_ptr<MyStackClass>& self) {

return self->stack_.size();

});

它公開了可以在Python和TorchScript中使用的類,如下所示:

@torch.jit.script

def do_stacks(s : torch.classes.myclasses.MyStackClass):

s2 = torch.classes.myclasses.MyStackClass(["hi", "mom"])

print(s2.pop()) # "mom"

s2.push("foobar")

return s2 # ["hi", "foobar"]

您可以在這裡的教程中嘗試一下。https://pytorch.org/tutorials/recipes/recipes/torsh_script_custom_classes.html

分布式RPC框架API(現在穩定)

分布式RPC框架在1.4版本中以實驗性形式啟動,該提議是將分布式RPC框架標記為穩定且不再具有實驗性。這項工作涉及許多增強功能和錯誤修復,以使分布式RPC框架總體上更可靠和更健壯,並添加了兩個新功能,包括概要分析支持,在RPC中使用TorchScript函數以及多項易於使用的增強功能。以下是框架內各種API的概述:

RPC API

RPC API允許用戶指定要在遠程節點上運行的函數和要實例化的對象。這些功能被透明記錄,因此可以使用Distributed Autograd通過遠程需求反向傳播梯度。

分布式Autograd

分布式Autograd連接跨多個節點的autograd圖,並允許在向後傳遞過程中流經漸變。漸變被累積到一個上下文中(與Autograd中的.grad欄位相反),用戶必須在with dist_autograd.context()管理器下指定其模型的前向傳遞,以確保正確記錄所有RPC通信。當前,僅實現FAST模式(有關FAST和SMART模式之間的差異,請參見https://pytorch.org/docs/stable/notes/distributed_autograd.html#smart-mode-algorithm)。

分布式優化器

分布式優化器使用需要漸變的參數在每個工作器上為優化器創建RRef,然後使用RPC API遠程運行優化器。用戶必須收集所有遠程參數並將它們包裝在中RRef,因為這是對分布式優化器的必需輸入。用戶還必須指定分布式自動梯度,context_id以便優化器知道在哪個上下文中尋找梯度。

在此處了解有關分布式RPC框架API的更多信息。

新的高級AUTOGRAD API(實驗性)

PyTorch 1.5為torch.autograd.functional子模塊帶來了新功能,包括jacobian,hessian,jvp,vjp,hvp和vhp 。此功能建立在當前API的基礎上,並允許用戶輕鬆執行這些功能。

不再支持PYTHON 2

從PyTorch 1.5.0開始,我們將不再支持Python 2,特別是2.7版。今後,對Python的支持將僅限於Python 3,特別是Python 3.5、3.6、3.7和3.8(在PyTorch 1.4.0中首次啟用)。

感謝整個PyTorch團隊和社區為這項工作做出的所有貢獻。

相關焦點

  • TensorRT 加速 PyTorch 模型基本方法
    但是TensorRT坑爹的地方在於,有些模型操作是不支持的、又或者就算支持但是支持並不完善,對於這些難題,要麼自己寫插件,要麼就只能等待官方的更新了。現在我們訓練深度學習模型主流的框架有tensorflow,pytorch,mxnet,caffe等。
  • 國產新一代前端開發工具—HBuilderX
    參與實驗的程式設計師在充分休息後,分別使用綠柔和黑色主題的編程工具進行編碼半小時,並監測腦電波的數據變化。通過對實驗者的腦電波產生的17萬條數據的分析,利用醫院儀器列印出的疲勞值、緊張度和注意力集中程度數值,實驗後測試者的疲勞度均上升,但,使用綠柔工作的程式設計師疲勞值上升相對緩慢,緊張程度最低,注意力最集中。使用黑色主題編碼後疲勞值的上升幅度最高達到使用綠柔上升幅度的700%!
  • PyTorch官方教程大更新:增加標籤索引,更加新手友好
    在生產環境中部署PyTorch模型使用Flask來部署PyTorch模型TorchScript簡介在C++中加載TorchScript模型將模型從PyTorch中導出到ONNX,並使用ONNX RUNTIME運行前端API
  • 在前端業務場景下的設計模式
    說到前端代碼中的 if...else 代碼,最常見的恐怕就是表單校驗了functiononFormSubmit(params) {if (!代理模式:erdua 移動端調試面板代理模式主要是封裝對某些對像的訪問,在後端中最典型的應用就是 Spring 中的 AOP,對前端而言,比較熟悉的大概就是 Vue3 中響應式原理核心實現Pxory,此外還有諸如網絡代理、緩存代理等各種代理術語。接下來介紹一種在前端業務中使用代理模式的場景。
  • Pytorch 中文文檔和中文教程
    簡單介紹GitHub項目管理:https://github.com/apachecn/pytorch-doc-zhPytorch 版本地址:https://pytorch.apachecn.org/issues/487)正在校驗中...敬請期待,也歡迎加入校驗工作,相信自己,你可以的!
  • smart-doc 2.0.1 發布,Java 零註解 API 文檔生成工具
    支持JavaBean上的JSR303參數校驗規範,支持分組驗證。 對json請求參數的接口能夠自動生成模擬json參數。 對一些常用欄位定義能夠生成有效的模擬值。 支持生成json返回值示例。 支持從項目外部加載原始碼來生成欄位注釋(包括標準規範發布的jar包)。
  • smart-doc 2.0.0 重磅發布,Java 零註解 API 文檔生成工具
    支持JavaBean上的JSR303參數校驗規範,支持分組驗證。 對json請求參數的接口能夠自動生成模擬json參數。 對一些常用欄位定義能夠生成有效的模擬值。 支持生成json返回值示例。 支持從項目外部加載原始碼來生成欄位注釋(包括標準規範發布的jar包)。
  • 如何選擇具有奇偶校驗的洗面奶?這是一個基本的清潔
    如何選擇具有奇偶校驗的洗面奶?這是一個基本的清潔,這是高度讚揚擁有光滑細膩的肌膚是每個女孩的心願,好皮膚能讓自己的分數加倍,俗話說「一白遮百醜」是一樣的。雖然指望潔面變白並不現實,但如果膚色較暗,你還是可以試試,然後可以和美白精華一起使用。黑色這只是添加竹炭,主要集中在深層清潔,清潔力更強丟丟。男孩也可以用這個,你可以買一個男朋友無論是使用感還是包裝~不過,小編還是認為黃米精是最好用的,主要成分是胺基酸,非常溫和和溼潤,洗臉後,沒有乾燥緊張感,並具有一定的保溼效果。
  • 高性能PyTorch是如何煉成的?整理的10條脫坑指南
    # Profile CPU bottlenecks python -m cProfile training_script.py --profiling  # Profile GPU bottlenecks nvprof --print-gpu-trace python train_mnist.py  # Profile system calls bottlenecks strace -
  • 高性能PyTorch是如何煉成的?過來人吐血整理的10條避坑指南
    # Profile CPU bottleneckspython -m cProfile training_script.py --profiling# Profile GPU bottlenecksnvprof --print-gpu-trace python train_mnist.py
  • 使用Visual Studio 和 python 設置自己的數據科學工作區
    步驟如下:安裝 Anaconda使用最新版本的 python 創建新環境將包安裝到你的環境中下載並安裝 Anaconda去 Anaconda 網站下載最新版本的 Anaconda,你可以使用 python 3.7 和 python 2.7 下載 Anaconda
  • 柳小白Python學習筆記 18 外部模塊安裝問題
    這幾天都沒有更新,是因為在裝pandas的過程中遇到了問題,到現在還是沒有解決。我以前以為安裝不成功是因為網絡資源不好。在公司電腦上安裝失敗後,我查看了一下說明,因為是英文我以前都放棄查看的,結果前前後後裝了3回,還是不能利索地搞定外部模塊,讓我很鬱悶。所以就想弄明白問題出在了哪兒。
  • Python隨身聽-2020-10-01技術精選
    本文的結構和內容會經常更新,每天10:24左右發布(🤟),感謝訂閱🆙和收藏☆。s=20Older animations:https://www.youtube.c...id=409比賽團隊(Team):FZU-CS510團隊成員:福州大學甘敏教授團隊的博士生蘇建楠,帝視科技張東陽,澳門大學的博士後研究員陳光永,香港城市大學博士生諸漢煒等方案分享數據處理:png圖片的不做處理,jpg的GT和LR全部是使用cv2默認的插值,做2倍降採樣 (自己從test數據集找答案,或者討論區交流)最終使用MSE 作為loss訓練,追求極致的
  • 一個使用pytorch的圖片分類教程——以明信片分類為例
    2020-12-17 37 min read # pandas # pytorch # 計算機視覺 # 自動化 # python # 雜談
  • Novel 1.3.1 發布 - OSCHINA - 中文開源技術交流社區
    Novel v1.3.1 已發布,更新日誌: 修復當用戶再次打開菜單時
  • Mars-java 3.0.0 發布,面向聲明式 API 編程(DAP)的框架
    本次更新帶來了兩個變動 面向聲明式API編程(DAP) 單元測試改動單元測試 取消了抽象方法before,而採用了註解的方式,在單測類上加上MarsTest註解即可面向聲明式API編程(DAP)
  • 使用scikitlearn、NLTK、Docker、Flask和Heroku構建食譜推薦API
    將Flask API部署到Heroku如果使用Github,將flaskapi部署到Heroku非常容易!首先,我在我的項目文件夾中創建了一個沒有擴展名的Procfile文件。你只需在該文件中輸入:web: gunicorn app:app下一步是創建一個名為requirements.txt的文件,它包含了我在這個項目中使用的所有python庫。
  • 使用UART協議與計算機進行通信
    這些設備正是使用UART協議與計算機進行通信。 雖然USB幾乎完全取代了舊的電纜和連接器,但UART絕對沒有過時。你會發現目前許多項目中使用UART的GPS模塊、藍牙模塊和RFID讀卡器模塊等連接到Raspberry Pi,Arduino或其他微控制器上。
  • Python乾貨項目:【新聞急先鋒】新聞API獲取谷歌頭條新聞
    使用它,可以獲取任何新聞網站上運行的頂級新聞,也可以搜索特定主題(或關鍵字)的頂級新聞。 以下是上述想法的實施情況: # importing requests package import requests def NewsFromBBC(): # BBC news api