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

2021-01-20 雷鋒網

雷鋒網(公眾號:雷鋒網) 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,高效實現CNN與RNN的分布式訓練
    今日 AWS 發布博客宣布 Apache MXNet 已經支持 Keras 2,開發者可以使用 Keras-MXNet 深度學習後端進行 CNN 和 RNN 的訓練,安裝簡便,速度提升,同時支持保存 MXNet 模型。感謝 Keras 和 Apache MXNet(孵化)開源項目的貢獻者,Keras-MXNet 深度學習後端現已可用。
  • 用RNN和TensorFlow創作自己的《哈利波特》小說
    · tf.keras.layers.GRU:有rnn_units個單元數的RNN。(也可以在此處使用LSTM來看看哪種最適合已有數據。)· tf.keras.layers.Dense:輸出層,有vocab_size 大小的輸出。
  • Keras 之父講解 Keras:幾行代碼就能在分布式環境訓練模型 |...
    首先,我不建議把 Keras 看做是 codebase、框架或庫,它只是個高級 API。它有不同的實現,最主要的當然是 TensorFlow,但還有基於其它平臺的——目前有 Theano、MXnet 和 Java;對更多框架的支持正在路上。
  • TensorFlow 2.4來了:上線對分布式訓練和混合精度的新功能支持
    TensorFlow 2.4 的更新包括對於分布式訓練和混合精度的新功能支持,對 NumPy API 子集的試驗性支持以及一些用於監測性能瓶頸的新工具。像單工作器的 MirroredStrategy 一樣,MultiWorkerMirroredStrategy 通過同步數據並行實現分布式訓練,顧名思義,藉助 MultiWorkerMirroredStrategy 可以在多臺機器上進行訓練,每臺機器都可能具有多個 GPU。
  • TensorFlow、PyTorch、Keras:NLP框架哪家強
    PyTorch:PyTorch提供2種不同層次的類別(class)用於構建循環網絡:· 多層次類別(Multi-layer classes),包括nn.RNN、nn.GRU和nn.LSTM。這些類別的基類(Object)可用於表示深度雙向循環神經網絡。
  • iOS 13 如何藉助快捷指令方便地實現更改桌面應用圖標?
    「快捷指令」是 iOS 系統自帶的一項實用 App,用戶可以藉助該應用更方便地實現一些操作。在 iOS 13 中,也可以使用該應用來為已下載的應用更換圖標,具體操作方法如下:1.打開「快捷指令」,在「我的快捷指令」中,點擊「創建快捷指令」。2.點擊右上角的「…」,根據喜好填寫快捷指令名稱,然後點擊「添加到主屏幕」。
  • 用純NumPy碼一個RNN、LSTM:這是最好的入門方式了
    大多數開發者對底層運行機制,尤其是如何使用純 NumPy 實現神經網絡變得比較陌生。以前機器之心曾介紹過如何使用 NumPy 實現簡單的卷積神經網絡,但今天會介紹如何使用 NumPy 實現 LSTM 等循環神經網絡。一般使用純 NumPy 實現深度網絡會面臨兩大問題,首先對於前向傳播,卷積和循環網絡並不如全連接網絡那樣可以直觀地實現。
  • PyTorch實現TPU版本CNN模型
    為此,PyTorch一直在通過提供最先進的硬體加速器來支持機器學習的實現。PyTorch對雲TPU的支持是通過與XLA(加速線性代數)的集成實現的,XLA是一種用於線性代數的編譯器,可以針對多種類型的硬體,包括CPU、GPU和TPU。本文演示了如何使用PyTorch和TPU實現深度學習模型,以加快訓練過程。
  • Keras官方中文版文檔正式發布了
    Keras 的開發重點是支持快速的實驗。能夠以最小的時延把你的想法轉換為實驗結果,是做好研究的關鍵。如果你有如下需求,請選擇 Keras:允許簡單而快速的原型設計(用戶友好,高度模塊化,可擴展性)。同時支持卷積神經網絡和循環神經網絡,以及兩者的組合。在 CPU 和 GPU 上無縫運行與切換。
  • 基於netX90晶片實現PROFINET從站開發(二)
    上期為大家介紹了netX90作為單晶片解決方案的實例,對於客戶來說,單晶片解決方案最直觀的優勢就是節約成本,不需要額外配一個MCU,單個晶片就可以實現PROFINET從站開發。當然,netX90也可以作為配有HOST CPU的通訊協處理器,僅實現通訊功能。
  • 從系統和代碼實現角度解析TensorFlow的內部實現原理 | 深度
    摘要2015年11月9日,Google發布深度學習框架TensorFlow並宣布開源,並迅速得到廣泛關注,在圖形分類、音頻處理、推薦系統和自然語言處理等場景下都被大面積推廣。TensorFlow系統更新快速,官方文檔教程齊全,上手快速且簡單易用,支持Python和C++接口。
  • 從零開始碼一個皮卡丘檢測器-CNN目標檢測入門教程(下)
    from mxnet.contrib.ndarray import MultiBoxTargetdef training_targets(default_anchors, class_predicts, labels):    class_predicts = nd.transpose(class_predicts, axes=(0, 2, 1))
  • TensorFlow 2.1指南:keras模式、渴望模式和圖形模式(附代碼)
    這種方法可擴展嗎?我們是否考慮到可擴展性?如果你像我一樣是一個普通人,那麼可能已經體驗到有時會陷入應用程式開發的困境,以至於很難停下來,去思考一下我們是否採取了有效的方式。在AI領域尤其如此。眾所周知,人工智慧是一個快速發展的領域。當天發表了新的研究。正在迅速開發的主要AI框架之間存在著巨大的鬥爭。
  • 利用Zookeeper實現 - 分布式鎖
    本文主要探討如何利用Zookeeper來實現分布式鎖。關於分布式鎖分布式鎖是控制分布式系統之間同步訪問共享資源的一種方式。>鎖的特性支持(阻塞鎖、可重入鎖、公平鎖、聯鎖、信號量、讀寫鎖)在使用分布式鎖時需要注意:分布式鎖的開銷(分布式鎖一般能不用就不用,有些場景可以用樂觀鎖代替)加鎖的粒度(控制加鎖的粒度
  • Hadoop開源社區正式支持騰訊雲對象存儲COS
    8月4日消息,知名大數據開源社區Hadoop近日宣布對騰訊雲對象存儲COS的正式支持。後續,開發者在基於Hadoop架構進行大數據分析時,能夠在不修改代碼的情況下,無縫高效地使用騰訊雲COS來處理海量數據的讀寫任務。這標誌著騰訊雲對象存儲技術受到了全球最主流大數據開源社區的認可。
  • 支持鴻蒙 2.0 手機版,華為 DevEco Studio 2.0 Beta3 發布
    IT之家獲悉,HarmonyOS 應用基於 HUAWEI DevEco Studio 工具開發,採用應用程式框架、系統自帶的 UI 控制項、豐富的 API 接口,開發者可以輕鬆地實現具有多維、自然交互特點的應用程式。HarmonyOS 採用了多種分布式技術,使得應用程式的開發實現與不同終端設備的形態差異無關。
  • 支持鴻蒙 HarmonyOS 2.0 手機版,華為 DevEco Studio 2.0 Beta3...
    IT之家獲悉,HarmonyOS 應用基於 HUAWEI DevEco Studio 工具開發,採用應用程式框架、系統自帶的 UI 控制項、豐富的 API 接口,開發者可以輕鬆地實現具有多維、自然交互特點的應用程式。
  • 微軟開源 WCF 分布式服務框架,併入 .NET Foundation 項目
    微軟北京時間昨晚在其 .NET Foundation GitHub 開源項目頁中開放了 WCF 分布式服務框架的代碼WCF 是 Windows Communication Foundation 的簡稱,它以 .NET Core 框架為目標平臺,意在讓開發者搭建分布式架構,並以此搭建可跨平臺運行的服務。WCF 最早構建與 Windows 平臺,但隨著 .NET Core 的開源,WCF 在未來也會支持 OS X 和 Linux。