主頁 >  其他 > 【更新發布】TensorFlow 2.4 新功能一覽!

【更新發布】TensorFlow 2.4 新功能一覽!

2020-12-28 13:02:36 其他

TensorFlow 2.4 正式發布!隨著對分布式訓練和混合精度提供更多支持,加入新的 Numpy 前端及用于監控和診斷性能瓶頸的工具,這個版本的亮點在于推出新功能,以及對性能和擴展方面的增強,

tf.distribute 的新增功能

引數服務器策略

在版本 2.4 中,實驗性引入了 tf.distribute 模塊的支持,可通過 ParameterServerStrategy 和自定義訓練回圈對 Keras 模型進行異步訓練,與 MultiWorkerMirroredStrategy 一樣,ParameterServerStrategy 是一種多作業器資料并行策略;但其梯度更新方式為異步執行,

引數服務器訓練集群包含作業節點和引數服務器,系統會在引數服務器上創建變數,然后作業節點會在每個步驟中進行讀取和更新,變數的讀取和更新會在各作業節點上獨立進行,同時無需采取任何同步操作,由于作業節點互不依賴,因此該策略具有作業器容錯的優勢,并會在使用搶占式服務器時有所助益,

如要開始使用此策略,請查閱引數服務器訓練教程,此教程介紹了如何設定 ParameterServerStrategy,并說明了如何使用 ClusterCoordinator 類來創建資源、調度函式和處理任務失敗,

多作業節點鏡像策略

MultiWorkerMirroredStrategy 多作業節點鏡像策略 已順利度過實驗階段,現已成為穩定 API 的組成部分,與單個作業節點副本 MirroredStrategy 一樣,MultiWorkerMirroredStrategy 通過同步資料并行化實作分布式訓練,但利用 MultiWorkerMirroredStrategy,您可以在多臺機器上進行訓練,且每臺機器可以都搭載多個 GPU,

在同步訓練中,每個作業節點會在輸入資料的不同片段上計算正向和反向傳遞次數,并且在每個步驟結束時匯總梯度,對于這種稱為 All Reduce 的匯總, MultiWorkerMirroredStrategy 會使用集合運算保持變數同步,集合運算是 TensorFlow 圖表中的單個算子,可以根據硬體、網路拓撲和張量大小在 TensorFlow 運行時中自動選擇 All Reduce 演算法,集合運算還可實作其他集合運算,例如廣播和 All Gather,

如要開始使用 MultiWorkerMirroredStrategy,請查閱使用 Keras 進行多作業器訓練教程,該教程已更新了有關資料集分片、保存/加載使用分布策略訓練的模型,以及使用 BackupAndRestore 回呼進行故障恢復的詳細資訊,

如果您不熟悉分布式訓練,并希望了解入門方法,或者有興趣在 Google 云端平臺 (GCP) 上進行分布式訓練,請參閱本博文,以獲取關于關鍵概念和步驟的介紹,

Keras 的相關更新

混合精度

在 TensorFlow 2.4 中,Keras 混合精度 API 已順利度過實驗階段,現已成為穩定的 API,大多數 TensorFlow 模型使用的是 float32 dtype;但也存在使用更少記憶體的低精度型別(如 float16),混合精度指在同一模型中通過使用 16 位和 32 位浮點型別,以加快訓練速度,該 API 可使模型在 GPU 上性能提高 3 倍,在 TPU 上提高 60%,

如要使用混合精度 API,您必須使用 Keras 層和優化工具,但無需使用其他 Keras 類,例如模型或損失,如果您對如何利用此 API 實作性能優化頗有興趣,請查閱混合精度教程,

優化工具

此版本支持重構 tf.keras.optimizers.Optimizer 類,使 model.fit 或自定義訓練回圈的用戶能夠撰寫任何適用于優化工具的訓練代碼,現所有內置的 tf.keras.optimizer.Optimizer 子類均可支持使用 gradient_transformersgradient_aggregator 引數,您可借此輕松定義自定義梯度轉換,

通過重構,您現在可以在撰寫自定義訓練回圈時將損失張量直接傳遞給 Optimizer.minimize

tape = tf.GradientTape()
with tape:
  y_pred = model(x, training=True)
  loss = loss_fn(y_pred, y_true)

# 如下所示,在使用損失“張量”時,您可以在“tf.GradientTape”中進行傳遞,

optimizer.minimize(loss, model.trainable_variables, tape=tape)

此類更改旨在使 Model.fit 和自定義訓練回圈都能擺脫優化工具細節的限制,從而使您無需修改,即可撰寫任何適用于優化工具的訓練代碼,

函式式 API 模型構建的內部改進

最后,在 Keras 中,TensorFlow 2.4 可支持對 Keras Functional API 內部主要結構的重構,從而可降低函式式模型構建的記憶體消耗并簡化觸發邏輯,開展此類重構操作還能夠確保 TensorFlowOpLayers 行為可預測,并可與 CompositeTensor 型別的簽名一起使用,

隆重推出 tf.experimental.numpy

TensorFlow 2.4 以 tf.experimental.numpy 形式,實驗性引入了對 NumPy API 子集的支持,您可借此模塊,運行由 TensorFlow 加速的 NumPy 代碼,由于此 API 基于 TensorFlow 構建而成,因此可支持訪問所有 TensorFlow API,與 TensorFlow 實作無縫互操作,并會通過編譯和自動矢量化開展優化,例如,TensorFlow ND 陣列可以與 NumPy 函式進行互動,同樣地,TensorFlow NumPy 函式也可以接受包括 tf.Tensornp.ndarray 在內的不同型別的輸入,

import tensorflow.experimental.numpy as tnp ```

# 在輸入流水線中使用 NumPy 代碼

dataset = tf.data.Dataset.from_tensor_slices(
    tnp.random.randn(1000, 1024)).map(
    lambda z: z.clip(-1,1)).batch(100)

# 通過 NumPy 代碼計算梯度

def grad(x, wt):
  with tf.GradientTape() as tape:
    tape.watch(wt)
    output = tnp.dot(x, wt)
    output = tf.sigmoid(output)
  return tape.gradient(tnp.sum(output), wt)

您可以查閱 TensorFlow 指南上的 NumPy API,了解更多關于使用此 API 的資訊,

全新性能分析器工具

TensorFlow Profiler 中的多作業器支持

TensorFlow Profiler 是一套用于評估 TensorFlow 模型訓練性能和資源消耗情況的工具,TensorFlow Profiler 可幫助您了解模型中算子的硬體資源消耗、診斷瓶頸并最終加快訓練速度,

之前版本的TensorFlow Profiler 支持監控多 GPU、單主機訓練作業,在現在 2.4 版本中,您可以分析 MultiWorkerMirroredStrategy 訓練作業的性能,例如,您可以使用采樣模型 API 來執行按需分析,并連接到 MultiWorkerMirroredStrategy 作業節點上正在使用的同一服務器埠:

# 在模型運行之前啟動性能分析器服務器,

tf.profiler.experimental.server.start(6009)

# 在此處插入模型代碼……

# 例如,您的作業器 IP 地址是 10.0.0.2、10.0.0.3、10.0.0.4,然后您
# 希望執行 2 秒鐘的性能分析,性能分析資料將
# 保存至 Google Cloud Storage 路徑“your_tb_logdir”,

tf.profiler.experimental.client.trace(
    'grpc://10.0.0.2:6009,grpc://10.0.0.3:6009,grpc://10.0.0.4:6009',
    'gs://your_tb_logdir',
    2000)

或者,您可以通過向 Capture Profile(捕獲分析結果)工具提供作業節點地址來使用 TensorBoard 組態檔插件,

分析完成后,您可以使用新的 Pod Viewer 工具選擇一個訓練步驟,并查閱所有作業節點的分步時間類別細分,

圖片

有關如何使用 TensorFlow Profiler 的更多資訊,請查閱新發布的 GPU 性能指南,此指南介紹了您在對模型訓練作業進行性能分析時可能遇到的常見情況,并提供了除錯作業流程來幫助您優化性能,無論您是使用單個 GPU、多個 GPU 還是使用多臺機器進行訓練,均可從中受益,

TFLite Profiler

在 2.4 版本中,您亦可在 Android 中啟用對 TFLite 內部結構的跟蹤,現在,您可以使用 Android 版 TFLite Profiler 來識別性能瓶頸,TFLite 性能評估指南介紹了如何使用 Android Studio CPU 性能分析器和系統跟蹤應用添加跟蹤事件,啟用 TFLite 跟蹤以及捕獲跟蹤,

圖片

使用 Android 系統跟蹤應用進行跟蹤的示例

提供 GPU 支持的新功能

TensorFlow 2.4 可與 CUDA 11 和 cuDNN 8 一起運行,以支持最新上市的 NVIDIA Ampere GPU 架構,如需了解 CUDA 11 功能的更多資訊,請查閱此 NVIDIA 開發者博客,

此外,我們亦會默認在搭載 Ampere 的 GPU 上啟用對 TensorFloat-32 的支持,TensorFloat-32(簡稱為“TF32”)是 NVIDIA Ampere GPU 的一種數學模式,可加快令某些 float32 算子(例如矩陣乘法和卷積)在 Ampere GPU 上的運行速度,但精度降低,如需了解更多資訊,請查閱 tf.config.experimental.enable_tensor_float_32_execution 檔案,

后續步驟

請參閱版本說明了解更多資訊,如欲分享您的構建成果,請通過 Community Spotlight 計劃向我們提交您的作品,如需提供反饋,請在 GitHub上提交問題,

如果你對本文中提到的更新存在疑問,歡迎移步“問答”版塊發帖提問,你的問題有機會得到 CSDN 百大熱門技術博主、資深社區作者或者 TensorFlow 資深開發者的解答哦!同時,我們也歡迎你積極地在這個版塊里,回答其他小伙伴提出的問題,成為 CSDN 社區貢獻者,馬上開始討論吧!

想了解更多產品最新資訊?掃碼關注TensorFlow官方微信公眾號(TensorFlow_official),產品更新、課程教學、技術實踐、應用實體等精彩內容一網打盡!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/241463.html

標籤:AI

上一篇:Ozone Streaming方式的寫優化

下一篇:技術經理成長復盤-要懂一些專案管理的知識

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more