...宣布支持 Keras 2,可更加方便快捷地實現 CNN 及 RNN 分布式訓練

2020-12-11 雷鋒網

雷鋒網(公眾號:雷鋒網) AI 研習社按,近期,AWS 表示 MXNet 支持 Keras 2,開發者可以使用 Keras-MXNet 更加方便快捷地實現 CNN 及 RNN 分布式訓練。AI 研習社將 AWS 官方博文編譯如下。

Keras-MXNet 深度學習後端現在可用,這要歸功於 Keras 和 Apache MXNet(孵化)開源項目的貢獻者。Keras 是用 Python 編寫的高級神經網絡 API,以快速簡單的 CNN 和  RNN 原型而聞名。

Keras 開發人員現在可以使用高性能 MXNet 深度學習引擎進行 CNN 和遞歸神經網絡 RNN 的分布式訓練。通過更新幾行代碼,Keras 開發人員可以使用 MXNet 的多 GPU 分布式訓練功能來提高訓練速度。保存 MXNet 模型是該發行版本一個極具價值的功能。開發者可以在 Keras 中進行設計,使用 Keras-MXNet 進行訓練,並且在生產中用 MXNet 進行大規模推算。

用 Keras 2 和 MXNet 做分布式訓練

本文介紹如何安裝 Keras-MXNet 並演示如何訓練 CNN 和 RNN。如果您之前嘗試過使用其他深度學習引擎做分布式訓練,那麼您應該知道這過程可能很乏味而且很困難。現在,讓我們看看用 Keras-MXNet  訓練會怎樣。

安裝只需要幾步

  • 部署 AWS Deep Learning AMI

  • 安裝 Keras-MXNet

  • 配置 Keras-MXNet

1.部署 AWS Deep Learning AMI

按照此教程部署 AWS Deep Learning AMI(DLAMI)。要利用多 GPU 訓練示例,請啟動一個 p3.8xlarge 或類似的多 GPU 實例類型。

想要自己安裝依賴來運行 CUDA,Keras,MXNet 和其他框架(比如 TensorFlow)? 請按照 Keras-MXNet 安裝指南來安裝。

2.安裝 Keras-MXNet

將 Keras-MXnet 及其依賴項安裝在您 DLAMI 上的 MXNet Conda 環境中。 由於它已經有Keras 1.0,所以你需要首先卸載它。登錄您的 DLAMI 並運行以下命令:

# Activate the MXNet Python 3 environment on the DLAMI

$ source activate mxnet_p36


# Install a dependency needed for Keras datasets

$ pip install h5py


# Uninstall older versions Keras-MXNet

$ pip uninstall keras-mxnet


# Install Keras-MXNet v2.1.6 

$ pip install keras-mxnet

Keras-MXnet 及其依賴現已安裝在 DLAMI 的 MXNet Conda 環境中。

3.驗證 Keras-MXNet 安裝

使用以下方式運行 MXNet 後端來驗證你的 Keras:

$ python

>>>import keras as k

   Using MXNet backend

CNN 支持

現在讓我們在 CIFAR-10 數據集上訓練一個 ResNet 模型以確定 10 個分類:飛機、汽車、鳥、貓、鹿、狗、青蛙、馬、船和卡車。

我們可以使用 Keras-MXNet 存儲庫的示例的部分 Keras 2 腳本。用 MXNet 作為 Keras 的後端只需要對腳本進行非常少的更新。

首先從 Keras-MXNet 庫文件中下載示例腳本。

$ wget https://raw.githubusercontent.com/awslabs/keras-apache-mxnet/master/examples/cifar10_resnet_multi_gpu.py

該腳本調用 multi_gpu_model API 並傳遞要使用的 GPU 數量。

其次,在終端窗口中運行 nvidia-smi 以確定 DLAMI 上可用的 GPU 數量。 在下一步中,如果您有四個 GPU,您將按原樣運行腳本,否則運行以下命令打開腳本進行編輯。

$ vi cifar10_resnet_multi_gpu.py

該腳本以下行可以定義 GPU 的數量,如果有必要的話可以更新它:

model = multi_gpu_model(model, gpus=4)

訓練:

$ python cifar10_resnet_multi_gpu.py

(可選)在訓練運行期間,使用 nvidia-smi 命令檢查 GPU 利用率和內存使用情況。

RNN 支持

Keras-MXNet 目前提供 RNN 實驗性的支持。 在使用帶有 MXNet 後端的 RNN 時存在一些限制。更多相關信息,請查閱 Keras-MXNet 文檔。 這裡的例子包括你需要的解決方法,以便使用 LSTM 層訓練 IMDB 數據集。儘管有解決方法,但在多 GPU AMI 上訓練此 RNN 將比你習慣的要容易和快速。

使用 imdb_lstm 示例腳本。 在嵌入層中傳遞輸入長度,並按如下所示設置 unroll = True。

首先,在 DLAMI 的終端會話中,從 Keras-MXNet repo 文件夾下載示例腳本。

$ wget https://raw.githubusercontent.com/awslabs/keras-apache-mxnet/master/examples/imdb_lstm.py

其次,打開腳本並跳轉到下面一行來查看它:

model.add(Embedding(max_features, 128, input_length=maxlen))

model.add(LSTM(128, unroll=True))

第三,示例腳本已被修改為與 MXNet 後端兼容,因此您可以運行它:

$ python imdb_lstm.py

(可選)在訓練運行期間,使用 nvidia-smi 命令檢查 GPU 利用率和內存使用情況。 為此打開另一個終端會話。

Benchmarks

為幫助您評估不同 Keras 後端的性能,我們為 Keras-MXNet 添加了基準測試模塊。通過在該表中描述的 CPU,單 GPU 和多 GPU 機器上使用各種模型和數據集,您可以看到 Keras-MXNet 具有更快的 CNN 訓練速度,以及跨多個 GPU 的高效縮放, 這將顯示在訓練速度的條形圖中。有關如何運行基準腳本並生成詳細基準測試結果的信息,請參閱 Keras 基準測試自述文件。

基準配置:

由於數據集圖像本身較小,因此對 CIFAR10 數據集進行訓練會導致子線性縮放。該數據集由 50,000 個尺寸為 32×32 像素的圖像組成,傳送這些小圖像的通信開銷高於從四個跳轉到八個 GPU 所提供的計算能力。

與 Keras-MXNet 的圖像處理速度比較

下一步?

嘗試一些額外的 Keras-MXNet 教程或閱讀發行說明中的詳細信息。

更多資料


Via:AWS Blog

雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • MXNet 宣布支持 Keras 2,可更加方便快捷地實現 CNN 及 RNN 分布式...
    雷鋒網 AI 研習社按,近期,AWS 表示 MXNet 支持 Keras 2,開發者可以使用 Keras-MXNet 更加方便快捷地實現 CNN 及 RNN 分布式訓練。AI 研習社將 AWS 官方博文編譯如下。
  • MXNet開放支持Keras,高效實現CNN與RNN的分布式訓練
    今日 AWS 發布博客宣布 Apache MXNet 已經支持 Keras 2,開發者可以使用 Keras-MXNet 深度學習後端進行 CNN 和 RNN 的訓練,安裝簡便,速度提升,同時支持保存 MXNet 模型。
  • CNN與RNN中文文本分類-基於TensorFlow 實現
    相比早起的底層代碼,如今的實現更加簡潔和優雅。本文是基於TensorFlow在中文數據集上的簡化實現,使用了字符級CNN和RNN對中文文本進行分類,達到了較好的效果。本文採用了清華NLP組提供的THUCNews新聞文本分類數據集的一個子集(原始的數據集大約74萬篇文檔,訓練起來需要花較長的時間)。
  • 小白學CNN以及Keras的速成
    Keras Documentation 就是Keras的官方文檔,裡面可以查閱所有的函數,並且可以在github上看他的開原始碼,非常方便。安裝也很簡單,打開終端,輸入pip install keras 就可以等待安裝了。下面就給一個簡單的例子,來看一看Keras到底有多簡單。
  • 評測| CNTK在Keras上表現如何?能實現比TensorFlow更好的深度學習嗎?
    參閱機器之心報導《開源 | 微軟發行 Cognitive Toolkit 2.0 完整版:從性能更新到應用案例》。CNTK v2.0 還有一個關鍵特性:兼容 Keras。就在上周,對 CNTK 後端的支持被合併到官方的 Keras 資源庫(repository)中。
  • 十分鐘掌握Keras實現RNN的seq2seq學習
    很多人問這個問題:如何在Keras中實現RNN序列到序列(seq2seq)學習?本文將對此做一個簡單的介紹。序列到序列學習(seq2seq)是一種把序列從一個域(例如英語中的句子)轉換為另一個域中的序列(例如把相同的句子翻譯成法語)的模型訓練方法。
  • TextCNN 模型完全解讀及 Keras 實現
    該算法利用多個不同大小的kernel來提取句子中的關鍵信息,從而能更加高效的提取重要特徵,實現較好的分類效果。3、模型實現(1)數據預處理:TextCNN進行文本分類,原始數據為語句和對應的標籤,數據預處理的流程為先將各句子進行分詞,接著將每個詞轉換為正整數用來代表詞的編號,最後利用多刪少補的原則將每句話設置為等長的詞語,得到測試集和訓練集的數據。
  • Keras vs PyTorch vs Caffe:CNN實現對比
    使用深度學習框架,它通過提供內置的庫函數來減少開發人員的工作,從而使我們能夠更快更容易地構建模型。在本文中,我們將構建相同的深度學習框架,即在Keras、PyTorch和Caffe中對同一數據集進行卷積神經網絡圖像分類,並對所有這些方法的實現進行比較。最後,我們將看到PyTorch構建的CNN模型如何優於內置Keras和Caffe的同行。
  • TensorFlow 2.4來了:上線對分布式訓練和混合精度的新功能支持
    TensorFlow 2.4 的更新包括對於分布式訓練和混合精度的新功能支持,對 NumPy API 子集的試驗性支持以及一些用於監測性能瓶頸的新工具。ParameterServerStrategy 和自定義訓練循環進行模型異步訓練的試驗性支持。
  • 【深度學習】Keras vs PyTorch vs Caffe:CNN實現對比
    使用深度學習框架,它通過提供內置的庫函數來減少開發人員的工作,從而使我們能夠更快更容易地構建模型。在本文中,我們將構建相同的深度學習框架,即在Keras、PyTorch和Caffe中對同一數據集進行卷積神經網絡圖像分類,並對所有這些方法的實現進行比較。最後,我們將看到PyTorch構建的CNN模型如何優於內置Keras和Caffe的同行。
  • 易用的新深度學習框架Keras簡介及使用
    ,就要花很多時間去編程,所以想過將代碼模塊化,方便重複使用,但因為實在太忙沒有時間去做。訓練的epoch數設為10,batch_size為100.#數據經過隨機打亂shuffle=True。verbose=1,訓練過程中輸出的信息,0、1、2三種方式都可以,無關緊要。show_accuracy=True,訓練時每一個epoch都輸出accuracy。#validation_split=0.2,將20%的數據作為驗證集。
  • 用RNN和TensorFlow創作自己的《哈利波特》小說
    如果數據量較少,那麼GRU參數更少,因此訓練更快,並能很好地泛化。為什麼是基於字符的?在處理這樣的大型數據集時,一個語料庫中不重複單詞的總量遠遠高於唯一字符的數量。一個大型數據集有許多不重複的單詞,當為如此大的矩陣分配獨熱編碼時,很可能會遇到內存問題。光是標籤本身就可以佔據Tb級的內存。
  • tf2+cnn+中文文本分類優化系列(2)
    之前是使用filter_size=2進行2-gram特徵的識別,本次使用filter_size=[3,4,5]三個不同的卷積核抽取三個不同的gram特徵,這樣就能通過卷積獲取更多的詞特徵。其實,本次主要看cnn在做中文文本分類中single kernel與multi kernel的對比。2 前期處理數據集仍是復旦大學開源的文本數據集,label種類為20。
  • 深度集成Keras
    對於高性能的訓練場景,你可以使用 Distribution Strategy API以最小的代碼更改來分布訓練,並獲得出色的開箱即用性能。它通過 Keras 的 Model.fit 支持分布式訓練,還支持自定義訓練循環。此外,現在可以使用多GPU支持,Cloud TPU支持將在未來發布。
  • TensorFlow2.1正式版上線:最後一次支持Python2,進一步支持TPU
    從本次更新的日誌來看,TensorFlow 2.1 將成為最後一個支持 Python2 的版本了。同時,本次更新的重點是增加了對 TPU 的多項支持,而 tf.keras 和 tf.data 這兩個常用的 API 也得到了很多新的更新。
  • Keras 2發布:實現與TensorFlow的直接整合
    Keras 2 有很多新變化,下面是簡明概覽:與 TensorFlow 整合儘管 Keras 自 2015 年 12 月已經作為運行時間後端(runtime backend)開始支持 TensorFlow,Keras API 卻一直與 TensorFlow 代碼庫相分離,這種情況正在改變:從 TensorFlow 1.2 版本開始,Keras API 可作為
  • 基礎級tf2.0+cnn 中文文本分類實踐練習
    數據集是復旦大學開源的文本數據集,label種類為20,該數據集有點久遠,感興趣可網上搜到。這次文本分類,主要基於字級別+cnn來實現的。相對於詞級別,字級別的優勢就是處理簡單些,不用去考慮分詞錯誤帶來的誤差;缺陷就是,字所帶的語義含義沒詞豐富,此外同樣長度限制下,詞級別處理的文本長度要遠遠大於字級別。但操作方法的角度來看,二者本質是一致的。接下來詳細介紹如何實現字級別的文本分類。
  • 單機《星際爭霸2》AI,不用GPU集群,支持多種訓練環境
    今天,有人在Github開源了他潛心研究一年半的成果,一個新手和資深研究人員都能受益的深度強化學習框架,單機運行速度快、方便調式,支持多種強化學習訓練環境。上周結束的 AI Challenger 星際爭霸競賽,讓 AI 挑戰星際爭霸這個議題又稍稍火了一把。雖然這屆冠軍使用的仍然是硬編碼方法,但從其他解決方案中不難看出,AI 算法的佔比在不斷提升。
  • Mask R-CNN官方實現「又」來了!訓練速度是原來2倍
    不過它是基於Caffe 2深度學習框架編寫的。這一次,在Caffe2項目併入PyTorch半年之後,Facebook換上了更受歡迎的PyTorch框架。 除了更改框架,Mask R-CNN Benchmark相比它的「前輩」Detectron,訓練速度提高了一倍。