學界| 谷歌提出基於強化學習的優化配置方法:可讓TensorFlow更充分...

2021-01-07 機器之心Pro

作者:Azalia Mirhoseini等機器之心編譯參與:吳攀、李澤南

眾所周知,深度學習是非常計算密集的,合理分配計算資源對於提升運算速度、節省能源等有著至關重要的價值。近日,谷歌的一篇 ICML 2017 論文提出了一種使用強化學習優化設備配置的方法,據稱可以在一些網絡計算上實現優於專家優化的方法的表現。機器之心對本文進行了摘要介紹。

論文:使用強化學習的設備配置優化(Device Placement Optimization with Reinforcement Learning)

論文地址:https://arxiv.org/abs/1706.04972

摘要

過去幾年,我們見證了神經網絡的訓練和推理推動著計算能力需求的增長。目前解決這種需求的常用辦法是搭建異構分布式計算環境,其中包含 CPU 和 GPU 這樣的硬體設備。重要的是,神經網絡模型在設備上的計算資源分配通常是由人類專家依靠簡單的探索和直覺做出的。在本文中,我們提出了一種為 TensorFlow 計算圖學習並優化設備任務分配的方法。其中最關鍵的思路是使用序列到序列模型來預測 TensorFlow 圖中哪些子集應該運行在哪些可用設備上,然後將預測分配的執行時間用作獎勵信號以優化序列到序列模型的參數。我們的結果在用於 ImageNet 分類的 Inception-V3 任務、RNN LSTM 語言建模和神經機器翻譯任務上的表現優於普通手動設備配置(device placement)方式。

圖 1 :基於強化學習的設備配置模型概覽

圖 2:設備配置模型的架構

3.2 架構細節

我們使用了一種序列到序列模型(Sutskever et al., 2014)來預測設備配置,該模型帶有 LSTM(Hochreiter & Schmidhuber, 1997)和一個基於內容的注意機制(Bahdanau et al., 2015)。圖 2 展示了我們模型的整體架構,其可以分成兩個部分:編碼器 RNN 和解碼器 RNN。

編碼器 RNN 的輸入是輸入圖(input graph)的指令的序列。我們通過連接它們的信息嵌入這些指令。具體來說,對於每一個圖 G,我們首先收集其指令的類型。其指令的類型描述了其基本的計算,比如 MatMul 或 conv2d。對於每一種類型,我們都存儲一個可調節的嵌入向量。然後我們記錄輸出張量的每個指令列表的大小,然後把它們連接成一個固定大小的填充了 0 的列表,稱為輸出形狀(output shape)。我們也取其 one-hot 編碼向量,其表徵了那些將輸入和輸出指引到每個指令的指令。最後,每個指令的嵌入都是其類型、其輸出形狀和其 one-hot 編碼的鄰接信息的連接。

該解碼器是一個帶有固定時間步驟數量的 attentional LSTM(Bahdanau et al., 2015),這個數量等於圖 G 中的指令的數量。在每一步,該解碼器輸出該設備(device)以運行在同一編碼器時間步驟的指令。每個設備都有其自己的可調節嵌入,然後其被用作下一個解碼器時間步驟的輸入。

圖 3:分布式和異步的參數更新與獎勵評估

表 2:由基於強化學習的方法所找到的設備配置方式和基準方法的運行時間比較(單位:秒,越低越好)。

對於每一個模型,第一行給出了帶有 1 個 CPU 和 2 個 GPU 的結果;第二行給出了帶有 1 個 CPU 和 4 個 GPU 的結果。最後一列給出了基於強化學習的配置優於最快基準方法的運行時間的提升。為了減少方差,少於 10 秒的運行時間都測試了 15 次,這裡給出的是平均值。OOM 是指內存不足(Out Of Memory)。

圖 4:神經機器翻譯圖的基於強化學習的配置。上面是編碼器,下面是解碼器。設備用不同顏色表示,其中無色表示指令在 CPU 上運行,不同的其它顏色表示不同的 GPU。相比於專家精心設計的配置,這個配置在運行時間上實現了 19.3% 的提升。

圖 5:Inception-V3 的基於強化學習的配置。設備用不同顏色表示,其中無色表示指令在 CPU 上運行,不同的其它顏色表示不同的 GPU。相比於專家設計的配置,這個配置在運行時間上實現了 19.7% 的提升

相關焦點

  • 谷歌深度學習框架TensorFlow 1.0 正式發布,更快更穩定
    2月15日,在山景城舉辦的首屆TensorFlow開發者峰會上,谷歌官方正式發布了TensorFlow 1.0版,包括多項新特性。作為一個開源軟體庫,TensorFlow可應用於各種感知和語言理解的機器學習任務。
  • TensorFlow 攜手 NVIDIA,使用 TensorRT 優化 TensorFlow Serving...
    而在本文中,我們要展示的是:以同樣的方法來運行經 TF-TRT 轉換的模型到底有多簡單。一如既往地,我們嘗試將 ResNet 模型部署到生產環境中。下文的所有案例都在配備 Titan-V GPU 的工作站上運行。
  • TensorFlow與PyTorch之爭,哪個框架最適合深度學習
    選自builtin作者:Vihar Kurama機器之心編譯參與:吳攀、杜偉谷歌的 Tensorflow 與 Facebook 的 PyTorch 一直是頗受社區歡迎的兩種深度學習框架。那麼究竟哪種框架最適宜自己手邊的深度學習項目呢?
  • 如何提升Tensorflow服務性能
    Tensorflow已經成長為事實上的機器學習(ML)平臺,在業界和研究領域都很流行。對Tensorflow的需求和支持促成了大量圍繞訓練和服務機器學習(ML)模型的OSS庫、工具和框架。Tensorflow服務是一個構建在分布式生產環境中用於服務機器學習(ML)模型的推理方面的項目。今天,我們將重點討論通過優化預測伺服器和客戶機來提高延遲的技術。
  • TensorFlow 2.0正式版官宣!深度集成Keras
    雖然仍然保留了傳統的基於會話的編程模型,但我們建議使用常規的Python開發和eager execution。tf.function可用於將代碼轉換成可遠程執行的、序列化和性能優化的圖形。此外,Autograph還可以將常規的Python控制流直接轉換為TensorFlow控制流。
  • 人工智慧學習入門之TensorFlow2.2版本安裝(Windows10)
    谷歌的TensorFlow目前已經成為最為流行的人工智慧開源項目。很多公司基於TensorFlow實現自己的人工智慧程序。最新版本的TensorFlow不僅支持Linux作業系統,而且可以支持MacOS和Windows,今天我們就介紹一下如何在Windows10上安裝TensorFlow。
  • TensorFlow Lite 正式發布,谷歌移動端深度學習框架
    快速:專為行動裝置進行優化,包括大幅提升模型加載時間,支持硬體加速。現在,越來越多行動裝置內置了專門的自定義硬體以高效處理機器學習工作負載。TensorFlow Lite 支持安卓神經網絡 API,以充分利用新的可用加速器。當加速器硬體不可用時,TensorFlow Lite 返回至經優化的 CPU 執行操作,確保模型仍然可在大量設備上快速運行。
  • 兩月不到,如何從Python新手成為谷歌認證TensorFlow開發者?
    為什麼應該學習它?簡而言之:TensorFlow 是一個得到廣泛應用的機器學習軟體庫。具體而言,TensorFlow 是一個免費的開源框架,支持用戶開發端到端的機器學習和深度學習項目,覆蓋從預處理到模型訓練和部署的整個流程。該框架最早由谷歌大腦團隊開發,在谷歌內部使用,現在已經得到廣泛應用。
  • TensorFlow 2.X,會是它走下神壇的開始嗎?|tensorflow|深度學習|...
    這樣的開原始碼,即使到現在,很多最新的前沿模型,尤其是谷歌大腦的各項研究,仍然採用的 1.X 的寫法與 API。  比如說,預訓練語言模型 T5、Albert、Electra 或者圖像處理模型 EfficientNet 等等。他們實際上還是用 1.X 那一套方法寫的,只不過能兼容 TensorFlow 2.X。
  • 玩轉TensorFlow Lite:有道雲筆記實操案例分享
    :將圖片形式的「文字」識別成可編碼的文字;生成筆記:根據文檔圖片的布局,從 OCR 的結果中生成帶有格式的筆記。目前,TFLite 的代碼位於 TensorFlow 工程中 "tensorflow/contrib/lite" 文件夾下。文件夾下有若干頭/源文件和一些子文件夾。其中,一些比較重要的頭文件有:model.h:和模型文件相關的一些類和方法。
  • TensorFlow是什麼?
    TensorFlow 實質上是一個編程系統,官方說法是一個使用數據流圖(data flow graphs)技術來進行數值計算的開源軟體庫,也是人工智慧時代的「作業系統」。 數據流圖中這些數據「線」可以代表傳輸多維數據數組,即「張量」(tensor),張量從圖中流過的直觀圖像是這個工具取名為「Tensorflow」的原因。 TensorFlow 對於開發人員來說帶來了哪些好處?
  • TensorFlow入門簡介,新手請看這裡!
    TensorFlow是一個使用數據流圖進行數值計算的開源軟體庫,是谷歌基於DistBelief研發的第二代人工智慧學習系統,命名來源於本身的運行原理。谷歌推出過一款AlphaGo人工智慧圍棋程序,其工作原理就是基於「深度學習」,並且是第一個擊敗人類職業選手的人工智慧程序。  TensorFlow支持算法  TensorFlow表達了高層次的機器學習計算,大大簡化了第一代系統(DistBelief),並且具備更好的靈活性和可延展性。
  • 谷歌和DeepMind研究人員合作提出新的強化學習方法Dreamer 可利用...
    谷歌和DeepMind研究人員合作提出新的強化學習方法Dreamer 可利用世界模型實現高效的行為學習 將門創投 發表於 2020-03-26 11:41:12 近年來隨著強化學習的發展
  • 基於RTX2060構建TensorFlow-gpu(keras)學習平臺
    開始菜單運行anaconda navigator檢查是否安裝了notebook(默認有安裝)三、安裝tensorflow/keras在激活的環境中安裝:1. 如果機器上有gpu,則安裝gpu版本,沒有GPU就安裝cpu版。版本問題,現在TensorFlow到了最新的2.0.0版本,但是很多函數不兼容1.**版本。
  • 使用Amazon SageMaker 運行基於 TensorFlow 的中文命名實體識別
    二、中文命名實體識別算法NER一直是自然語言處理(NLP)領域中的研究熱點,從早期基於詞典和規則的方法,到傳統機器學習的方法,到近年來基於深度學習的方法,NER研究進展的大概趨勢大致如下圖所示。早期的命名實體識別方法基本都是基於規則的。之後由於基於大規模的語料庫的統計方法在自然語言處理各個方面取得不錯的效果之後,一大批機器學習的方法也出現在命名實體類識別任務。
  • 小叮噹機器學習:Python3.6配置TensorFlow的GPU版詳細安裝教程
    谷歌的開源機器學習工具TensorFlow,自發布以來,便迅速躋身於激動人心的機器學習庫的行列之中。然而網上的大多數都是圍繞python2.7版本的tensorflow教程,下面我們就來看看在Centos7 +pyton3.6的環境下,我們怎麼安裝使用這個功能強大的開源庫的GPU版本。
  • 這裡有一份TensorFlow2.0中文教程
    今年 3 月份,谷歌在 Tensorflow Developer Summit 2019 大會上發布 TensorFlow 2.0 Alpha 版。作為當前最為流行的深度學習框架,2.0 Alpha 版的正式發布引人關注。近兩個月,網上已經出現了大量 TensorFlow 2.0 英文教程。在此文章中,機器之心為大家推薦一個持續更新的中文教程,以便大家學習。
  • 基於TensorFlow2.0的中文深度學習開源書來了!GitHub趨勢日榜第一
    近日,一個叫做深度學習開源書的項目在火了。GitHub趨勢日榜排名全球第一,已斬獲2K+星。為什麼這麼火?因為這是一本基於TensorFlow 2.0 正式版的中文深度學習開源書。還包含電子書和配套原始碼。話不多說,一起來看看這本爆款書籍吧!深度學習開源書介紹這本書共包含15個章節。
  • 如何在AMD的GPU上運行TensorFlow?
    對於 AMD 正在進行的深度學習加速工作而言,這是一座重大的裡程碑。 ROCm 即 Radeon 開放生態系統 (Radeon Open Ecosystem),是我們在 Linux 上進行 GPU 計算的開源軟體基礎。而 TensorFlow 實現則使用了 MIOpen,這是一個適用於深度學習的高度優化 GPU 例程庫。
  • TensorFlow 2.0開源工具書,30天「無痛」上手
    既然非學不可,那怎麼讓這個學習過程變得更加平滑呢?有人在 GitHub 開源了一個名為《30 天吃掉那隻 TensorFlow2.0》的入門工具書,或許可以讓你無痛上手 TensorFlow 2.0。開源電子書地址:https://lyhue1991.github.io/eat_tensorflow2_in_30_days/GitHub 項目地址:https://github.com/lyhue1991/eat_tensorflow2_in_30_days為什麼一定要學