1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        TensorFlow 2.4 來(lái)了:新功能解讀

        共 3939字,需瀏覽 8分鐘

         ·

        2020-12-23 02:07

        ↑↑↑點(diǎn)擊上方藍(lán)字,回復(fù)資料,10個(gè)G的驚喜

        選自 | TensorFlow Blog?轉(zhuǎn)自 | 機(jī)器之心?編輯 | 小舟、蛋醬


        近日,谷歌正式發(fā)布了 TensorFlow 2.4,帶來(lái)了多項(xiàng)新特性和功能改進(jìn)。


        TensorFlow 2.4 的更新包括對(duì)于分布式訓(xùn)練和混合精度的新功能支持,對(duì) NumPy API 子集的試驗(yàn)性支持以及一些用于監(jiān)測(cè)性能瓶頸的新工具。

        根據(jù) TensorFlow 官方博客,本次更新的主要內(nèi)容整理如下:

        tf.distribute 中的新功能

        參數(shù)服務(wù)器策略

        在 TensorFlow 2.4 中,tf.distribute 模塊引入了對(duì)使用 ParameterServerStrategy 和自定義訓(xùn)練循環(huán)進(jìn)行模型異步訓(xùn)練的試驗(yàn)性支持。和 MultiWorkerMirroredStrategy 類似,ParameterServerStrategy 是一種多工作器(multi-worker)數(shù)據(jù)并行策略,但梯度更新是異步的。

        參數(shù)服務(wù)器訓(xùn)練集群由工作服務(wù)器和參數(shù)服務(wù)器組成。變量在參數(shù)服務(wù)器上創(chuàng)建,然后在每個(gè)步驟中由工作器讀取和更新。變量的讀取和更新在工作器之間是獨(dú)立進(jìn)行的,不存在任何同步。由于工作器彼此不依賴,因此該策略具有工作器容錯(cuò)的優(yōu)勢(shì),如果使用可搶占 VM,該策略將很有用。

        多工作器鏡像策略

        MultiWorkerMirroredStrategy 已經(jīng)脫離試驗(yàn)階段,成為穩(wěn)定的 API。像單工作器的 MirroredStrategy 一樣,MultiWorkerMirroredStrategy 通過(guò)同步數(shù)據(jù)并行實(shí)現(xiàn)分布式訓(xùn)練,顧名思義,借助 MultiWorkerMirroredStrategy 可以在多臺(tái)機(jī)器上進(jìn)行訓(xùn)練,每臺(tái)機(jī)器都可能具有多個(gè) GPU。


        Keras 更新

        混合精度

        在 TensorFlow 2.4 中,Keras 混合精度 API 已經(jīng)脫離試驗(yàn)階段,成為穩(wěn)定的 API。大多數(shù) TensorFlow 模型使用 float32 dtype,但現(xiàn)在有些低精度數(shù)據(jù)類型占用的內(nèi)存更少,比如 float16。混合精度指的是在同一模型中使用 16 位和 32 位浮點(diǎn)數(shù)以進(jìn)行更快的訓(xùn)練。這一 API 可將模型性能在 GPU 上提高到 3 倍,在 TPU 上提高 60%。要使用混合精度 API,必須使用 Keras 層和優(yōu)化器,但不一定需要使用其他 Keras 類。

        優(yōu)化器

        本次更新包括重構(gòu) tf.keras.optimizers.Optimizer 類,讓 model.fit 的用戶和自定義訓(xùn)練循環(huán)的用戶能夠編寫可與任何優(yōu)化器一起使用的訓(xùn)練代碼。所有內(nèi)置 tf.keras.optimizer.Optimizer 子類都可接受 gradient_transformers 和 gradient_aggregator 參數(shù),輕松定義自定義梯度變換。

        重構(gòu)之后,使用者可以在編寫自定義訓(xùn)練循環(huán)時(shí)直接將損失張量傳遞給 Optimizer.minimize:

        tape = tf.GradientTape()with tape:  y_pred = model(x, training=True)  loss = loss_fn(y_pred, y_true)# You can pass in the `tf.GradientTape` when using a loss `Tensor` as shown below.
        optimizer.minimize(loss, model.trainable_variables, tape=tape)

        這些更新的目標(biāo)是讓 Model.fit 和自定義訓(xùn)練循環(huán)與優(yōu)化器細(xì)節(jié)更加不相關(guān),從而讓使用者無(wú)需修改即可編寫出與任何優(yōu)化器共同使用的訓(xùn)練代碼。

        最后,TensorFlow 2.4 的更新還包括 Keras Functional API 內(nèi)部的重構(gòu),改善了函數(shù)式模型構(gòu)造所產(chǎn)生的內(nèi)存消耗并簡(jiǎn)化了觸發(fā)邏輯。這種重構(gòu)可以保證 TensorFlowOpLayers 的行為可預(yù)測(cè),并且可以使用 CompositeTensor 類型簽名(type signature)。

        tf.experimental.numpy

        TensorFlow 2.4 引入了對(duì) NumPy API 子集的試驗(yàn)性支持。該模塊可以運(yùn)行由 TensorFlow 加速的 NumPy 代碼,由于這一 API 是基于 TensorFlow 構(gòu)建的,因此可與 TensorFlow 無(wú)縫銜接,允許訪問(wèn)所有 TensorFlow API 并通過(guò)編譯和自動(dòng)矢量化提供優(yōu)化后的運(yùn)行。

        例如,TensorFlow ND 數(shù)組可以與 NumPy 函數(shù)互通,類似地,TensorFlow NumPy 函數(shù)可以接受包括 tf.Tensor 和 np.ndarray 在內(nèi)的不同類型輸入。

        import tensorflow.experimental.numpy as tnp# Use NumPy code in input pipelines
        dataset = tf.data.Dataset.from_tensor_slices( tnp.random.randn(1000, 1024)).map(lambda z: z.clip(-1,1)).batch(100)# Compute gradients through NumPy codedef 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 Profiler 是度量 TensorFlow 模型的訓(xùn)練性能和資源消耗情況的工具,用來(lái)診斷性能瓶頸,最終加快訓(xùn)練速度。

        此前,TensorFlow Profiler 支持多 GPU 單主機(jī)訓(xùn)練。到了 2.4 版本,使用者可以測(cè)試 MultiWorkerMirroredStrategy 的訓(xùn)練工作了,比如使用采樣模式 API 按需配置,并連接到 MultiWorkerMirroredStrategy 工作器正在使用的同一服務(wù)器。

        # Start a profiler server before your model runs.

        tf.profiler.experimental.server.start(6009)# Model code goes here....# E.g. your worker IP addresses are 10.0.0.2, 10.0.0.3, 10.0.0.4, and you# would like to profile for a duration of 2 seconds. The profiling data will# be saved to the Google Cloud Storage path “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)

        另外,你可以通過(guò)向捕獲配置文件工具提供工作器地址來(lái)使用 TensorBoard 配置文件插件。配置之后,你可以使用新的 Pod Viewer tool 來(lái)選擇訓(xùn)練步驟,并查看所有工作器上該步驟的 step-time 的細(xì)分。

        TFLite Profiler

        TFLite Profiler 則支持在 Android 中跟蹤 TFLite 內(nèi)部信息,以識(shí)別性能瓶頸。

        GPU 支持

        TensorFlow 2.4 與 CUDA 11 和 cuDNN 8 配合運(yùn)行,支持最新發(fā)布的英偉達(dá)安培架構(gòu) GPU,對(duì)于 CUDA 11 的新特性,可以參考英偉達(dá)開發(fā)者博客:
        https://developer.nvidia.com/blog/cuda-11-features-revealed/

        在新版本中,默認(rèn)情況下會(huì)啟用安培 GPU 的新特性——對(duì) TensorFloat-32 的支持。TensorFloat-32 又簡(jiǎn)稱為 TF32,是英偉達(dá) Ampere GPU 的一種數(shù)學(xué)精度模式,可導(dǎo)致某些 float32 運(yùn)算(如矩陣乘法和卷積)在安培架構(gòu) GPU 上運(yùn)行得更快,但精度略有降低。

        若想更深入了解,可參閱文檔:
        https://www.tensorflow.org/api_docs/python/tf/config/experimental/enable_tensor_float_32_execution


        推薦閱讀

        pip 的高階玩法

        再見,360安全衛(wèi)士

        我愛線代,線代使我快樂(lè)

        Python數(shù)據(jù)可視化,被Altair圈粉了

        你真的懂print('Hello World!')?我不信

        缺失值可視化Python工具庫(kù):missingno

        機(jī)器學(xué)習(xí)深度研究:特征選擇中幾個(gè)重要的統(tǒng)計(jì)學(xué)概念

        瀏覽 177
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            欧美操婷婷| 操逼大战 | 西西444WWW无码大胆图 | 中文字幕北条麻妃在线 | 又粗又长顶的很深 | 香蕉自拍视频 | 野外伦理片 | 忘穿内裤被同桌摸出水 | 亚洲综合成人电影 | 丝袜A片午夜www丝袜 |