PyTorch 1.6 發布:原生支持自動混合精度訓練並進入穩定階段 - OS...

2021-01-08 開源中國

PyTorch 1.6 穩定版已發布,此版本增加了許多新的 API、用於性能改進和性能分析的工具、以及對基於分布式數據並行(Distributed Data Parallel, DDP)和基於遠程過程調用(Remote Procedure Call, RPC)的分布式訓練的重大更新。部分更新亮點包括:

原生支持自動混合精度訓練(automatic mixed-precision training),並已進入穩定階段 為 tensor-aware 增加對 TensorPipe 的原生支持 在前端 API 增加了對 complex tensor 的支持 新的分析工具提供了張量級的內存消耗信息 針對分布式數據並行訓練和遠程過程調用的多項改進和新功能

此外,從該版本起,新功能的狀態將分為三種,分別是穩定、Beta 和原型。原型功能即為新功能提案,團隊如果能從用戶獲取對此的良好反饋,那麼原型功能就會進入 Beta 階段,否則就停止開發。另外,原型功能不包含在二進位發行版中,而是通過從 Nightly 版本原始碼構建或通過 compiler flag 使用。詳情查看此博客。

原生支持自動混合精度訓練

由 Nvidia 貢獻的自動混合精度訓練功能已經進入穩定階段,AMP 訓練能在 Tensor Core GPU 上實現更高的性能並節省多達 50% 的內存。

AMP API 提供方便使用混合精度的方法。官方提到,在像線性層(Linear Layer)或是卷積操作上,float16 運算較快,但像 Reduction 運算又需要 float32 的動態範圍,而現在有了 AMP 功能,便可以在部分運算操作使用 float16,另一部分則使用 float32,混合精度功能會嘗試為每個運算使用相匹配的數據類型。

改進分布式訓練

PyTorch 支持兩種強大的範式:用於對模型進行完全同步數據並行訓練的 DDP 和支持分布式模型並行的 RPC 框架。過去這兩個功能獨立運行,用戶無法混合和匹配它們來嘗試混合併行範式。

從 PyTorch 1.6 開始,DDP 和 RPC 可以無縫協作,用戶可以結合這兩種技術來實現數據並行和模型並行。官方舉了一個例子,用戶希望將大型嵌入表放置在參數伺服器上,並使用 RPC 框架嵌入查找,但希望將較小的密集參數存儲在訓練器上,並使用 DDP 來同步密集參數,下面是示例代碼:

// On each trainerremote_emb = create_emb(on="ps", ...)ddp_model = DDP(dense_model)for data in batch: with torch.distributed.autograd.context(): res = remote_emb(data) loss = ddp_model(res) torch.distributed.autograd.backward([loss])

支持 Complex Tensor

PyTorch 1.6 帶來了對 complex tensor 的 Beta 支持,包含 torch.complex64 和 torch.complex128 dtypes 兩種類型。Beta 階段支持通用的 PyTorch 和 complex tensor,以及 Torchaudio、ESPnet 等所需的功能。

>>> x = torch.randn(2,2, dtype=torch.cfloat)>>> xtensor([[-0.4621-0.0303j, -0.2438-0.5874j], [ 0.7706+0.1421j, 1.2110+0.1918j]])

詳情查看 https://pytorch.org/blog/pytorch-1.6-released/

相關焦點

  • PyTorch1.6:新增自動混合精度訓練、Windows版開發維護權移交微軟
    機器之心報導機器之心編輯部剛剛,Facebook 通過 PyTorch 官方博客宣布:PyTorch 1.6 正式發布!新版本增加了一個 amp 子模塊,支持本地自動混合精度訓練。相比於以往的 PyTorch 版本,本次即將發布的 PyTorch 1.6 有哪些吸引人的地方呢?總的來說,PyTorch 1.6 版本包括許多新的 API、用於性能改進和性能分析的工具,以及對基於分布式數據並行(DDP)和遠程過程調用(RPC)的分布式訓練的重大更新。
  • PyTorch 源碼解讀之 torch.cuda.amp: 自動混合精度詳解
    FP32 和 FP16 混合精度計算。也在 2018 年提出一個 PyTorch 拓展 apex,來支持模型參數自動混合精度訓練。自動混合精度(Automatic Mixed Precision, AMP)訓練,是在訓練一個數值精度 FP32 的模型,一部分算子的操作時,數值精度為 FP16,其餘算子的操作精度是 FP32,而具體哪些算子用 FP16,哪些用 FP32,不需要用戶關心,amp 自動給它們都安排好了。
  • Pytorch中的Distributed Data Parallel與混合精度訓練(Apex)
    除此之外,nn.DataParallel 需要所有的GPU都在一個節點(一臺機器)上,且並不支持 Apex 的 混合精度訓練.總的來說,Pytorch的文檔是全面且清晰的,特別是在1.0版本的那些。完全通過文檔和教程就可以自學Pytorch,這並不是顯示一個人有多大佬,而顯然更多地反映了Pytorch的易用性和優秀的文檔。
  • TensorFlow 2.4來了:上線對分布式訓練和混合精度的新功能支持
    TensorFlow 2.4 的更新包括對於分布式訓練和混合精度的新功能支持,對 NumPy API 子集的試驗性支持以及一些用於監測性能瓶頸的新工具。多工作器鏡像策略MultiWorkerMirroredStrategy 已經脫離試驗階段,成為穩定的 API。
  • PyTorch 1.4 發布:支持 Java 和分布式模型並行訓練
    PyTorch 團隊上周發布了最新的 PyTorch 1.4 版本。1.4 還增加了新的實驗性功能,其中包括基於 RPC 的分布式模型並行訓練以及對 Java 的語言綁定。此外,PyTorch 1.4 是支持 Python 2 的最後一個版本,同時也是支持 C++11 的最後一個版本。因此官方建議從 1.4 開始遷移到 Python 3,並使用 C++14 進行構建,以方便將來從 1.4 過渡到 1.5。
  • 無性能損失,不用更改代碼,Lightning 1.1版本發布,切分訓練新功能...
    在不更改代碼的情況下啟用 Sharded Training為了展示在 Lightning 中使用 Sharded Training 有多簡單,使用 NVIDIA 的一個流行庫 NeMo 來訓練 Lightning 支持的對話 AI 模型。
  • PyTorch 1.6、TensorFlow 2.3、Pandas 1.1 同日發布!都有哪些新...
    作者 | 肖智清7月29日,PyTorch 1.6、TenorFlow 2.3、Pandas 1.1恰巧同時發布。這三個庫都是定期滾動更新,大約每個季度更新一次小版本。在AI內捲化達到「灰飛煙滅」的今日,僅僅會對PyTorch或TensorFlow進行調用已經不具有競爭力。
  • 一行代碼讓訓練速度提升2倍,飛槳自動混合精度技術詳解
    心動不如行動(這可不是電視直銷,別著急換頻道),來和我一起看看這款神器——基於PaddlePaddle核心框架的自動混合精度(Automatic Mixed Precision) 技術,簡稱飛槳 AMP 技術。飛槳 AMP 技術僅僅通過一行代碼即可幫助用戶簡便快速的將單精度訓練的模型修改為自動混合精度訓練。
  • Tesla V100 之使用Tensor Core進行混合精度訓練
    眾所周知,英偉達在最新發布的V100 GPU計算卡中加入了Tensor Core的支持,其提供了高達125TOPS的計算性能,在深度學習方面相較於
  • 【Pytorch】Pytorch多機多卡分布式訓練
    官方pytorch(v1.0.10)在分布式上給出的api有這麼幾個比較重要的:1. torch.nn.parallel.DistributedDataParallel :這個從名字上就能看出來與DataParallel相類似,也是一個模型wrapper。這個包是實現多機多卡分布訓練最核心東西,它可以幫助我們在不同機器的多個模型拷貝之間平均梯度。
  • PyTorch 1.0 正式版發布了!
    同時放出了 PyTorch 1.0 預覽版。近日,在 NeurIPS 2018 大會上,Facebook 官方宣布 PyTorch 1.0 正式版發布了。,「我們在 PyTorch1.0 發布前解決了幾大問題,包括可重用、性能、程式語言和可擴展性。」
  • PyTorch上也有Keras了,訓練模型告別Debug,只需專注數據和邏輯
    在這張圖中,灰色部分代表Lightning能自動完成的部分,而藍色的部分則能夠根據使用者的需求,被定義成任意底層模型,可以是你自己的新模型,也可以是預訓練模型,fast.ai架構等等。舉幾個例子好了。比如說,梯度下降。
  • 分離硬體和代碼、穩定 API,PyTorch Lightning 1.0.0 版本正式發布
    Lightning 能確保自動完成部分的正確性,對於核心訓練邏輯的提煉非常有優勢。今日,PyTorch Lightning 在推特宣布,1.0.0 版本現在可用了,並發布新的博客文章詳細描述了 PyTorch Lightning 的運行原理和新的 API。William Falcon 表示自己非常期待有一天,當用戶查看 GitHub 上的複雜項目時,深度學習代碼不再那麼令人望而生畏。
  • Pytorch-Transformers 1.0 發布,支持六個預訓練框架,含 27 個預...
    上發布了開源 Pytorch-Transformers 1.0,該項目支持 BERT, GPT, GPT-2, Transfo-XL, XLNet, XLM 等,並包含 27 個預訓練模型。哪些支持PyTorch-Transformers(此前叫做pytorch-pretrained-bert)是面向自然語言處理,當前性能最高的預訓練模型開源庫。
  • PyTorch 0.2發布:更多NumPy特性,高階梯度、分布式訓練等
    PyTorch支持Broadcasting,讓它的Tensor arguments無需複製數據,就能自動擴展到相同大小。向量和變量的Advanced IndexingAdvanced Indexing也是一種NymPy特性。
  • Facebook發布PyTorch 1.1,開源AI模型優化簡化工具BoTorch & Ax
    去年秋季發布的《2018 年 GitHub Octoverse 報告》稱 PyTorch 是 GitHub 平臺上最受歡迎的開源項目之一,全世界有 3100 萬開發者使用 PyTorch。去年 12 月,在 NeurIPS 2018 大會上,Facebook 發布了 PyTorch 1.0 正式版。時隔半年,今天,Facebook 發布了 PyTorch1.1。
  • 百度聯合英偉達發布最新論文:使深度學習效率事半功倍的混合精度訓練
    據了解,大多數的深度學習模型使用的是32位單精度浮點數(FP32)來進行訓練,而混合精度訓練的方法則通過16位浮點數(FP16)進行深度學習模型訓練,從而減少了訓練深度學習模型所需的內存,同時由於FP16的運算比FP32運算更快,從而也進一步提高了硬體效率。通過用半精度運算替代全精度運算來提高效率,這一技術原理聽起來很簡單明了,但將其付諸實施並不像聽起來那麼簡單。
  • 提升PyTorch訓練速度,小哥哥總結了17種方法!
    掌握這 17 種方法,用最省力的方式,加速你的 Pytorch 深度學習訓練。該文所提方法,都是假設你在 GPU 環境下訓練模型。具體內容如下。學習率 schedule 的選擇對模型的收斂速度和泛化能力有很大的影響。Leslie N.
  • 當代研究生應當掌握的5種Pytorch並行訓練方法(單機多卡)
    /tczhangzhi/pytorch-distributed/blob/master/dataparallel.py2、使用 torch.distributed 加速並行訓練https://github.com/tczhangzhi/pytorch-distributed/blob/master/distributed.py
  • PyTorch v1.1 重大更新,TensorBoard已加入豪華套餐
    近日在 2019 年 Facebook 開發者大會「F8」上,Facebook 公布了 PyTorch 的重大更新 1.1 版本,同時還發布並開源了其它多個開發工具,繼續降低機器學習/深度學習模型開發調試以及深度學習專用硬體設計的門檻。雷鋒網(公眾號:雷鋒網) AI 科技評論把更新主要內容介紹如下。