您的位置:首頁>科技>正文

亞馬遜研究員手把手教你用AWS Batch玩轉深度學習

本文編譯自aws.amazon, 該文說明了如何在AWS Batch上運行基於GPU的深度學習工作任務。 亞馬遜研究員Chris Barclay介紹了一個訓練卷積神經網路(LeNet)的示例, 使用ApacheMXNet識別使用MNIST資料集的手寫數位。

GPU實例與深度學習自然搭配的神經網路演算法可以利用其自身巨大的並行處理能力。 AWS提供GPU實例系列, 如g2和p2, 可以讓客戶運行可擴展的GPU工作負載。 你可以通過AWS Batch高效地利用這種可擴展性。

AWS Batch可以以你的名義進行基礎計算資源的管理, 使你能夠專注於建模任務, 而無需擔心資源管理的支出。 AWS Batch中的計算環境(即集群)就是你帳戶中的實例池, 其中AWS Batch可動態地上下調度, 配置並終止關於作業數的實例。 這可以最大限度地減少空閒實例, 從而優化成本。

除此之外, AWS Batch可以確保提交的作業都被安置在適當的實例上, 從而管理作業的生命週期。 隨著客戶提供的AMI的增加, AWS Batch中的使用者現在可以利用這種彈性和便利性來更好地完成那些需要GPU的作業。

在AWS Batch中運行MXNet作業

Apache的MXNet是一個全功能、靈活可程式設計且高度可擴展的深度學習框架, 支持最先進的深層模型, 包括卷積神經網路(CNN)和長短期記憶網路(LSTM)。

運行一個AWS Batch作業需要三個步驟:

創建自訂AMI

創建AWS Batch實體

提交訓練工作

★創建自訂AMI

首先創建一個包含NVIDIA驅動程式和AmazonECS代理的AMI。 在AWS Batch中, 可以通過在創建計算環境時指定imageId來啟動具有所選擇的特定AMI的實例。 由於你正在運行一個需要GPU的作業, 因此你需要一個安裝了NVIDIA驅動程式的AMI。

選擇啟動堆疊以便在你帳戶中的us-east-1中啟動CloudFormation範本:

如下所示, 請注意CloudFormation堆疊的“輸出”選項卡中的AMI值。 因為在下一節中創建計算環境時, 你可以將其用作imageId值。

或者, 你也可以按照AWS Batch文檔來創建一個支持GPU的AMI。

(http://docs.aws.amazon.com/batch/latest/userguide/batch-gpu-ami.html)

★創建AWS Batch資源

當你完成AMI的構建後, 你可以開始創建以下資源:

計算環境

作業佇列

作業定義

計算環境是相同或不同實例類型的實例(計算資源)的集合。 在這種情況下, 你將創建一個託管計算環境, 在這個環境中實例的類型為p2.xlarge。 而至於imageId, 你可以指定在上一節中構建的AMI。

然後, 創建一個作業佇列。 在AWS Batch中, 作業將被提交到與計算環境的有序列表相關聯的作業佇列中。 當低階計算環境被填滿後, 作業會溢出到下一個計算環境中。 對於此示例, 你把一個單個計算環境與作業佇列相關聯。

最後, 創建作業定義, 這是作業規範的一個範本。 對於熟悉Amazon ECS的用戶, 這類似于任務定義。 將主機上包含NVIDIA驅動程式的目錄裝載到容器上的/ usr / local / nvidia上。

除此之外, 你還需要在容器屬性上設置特權標誌。

以下代碼在AWS Batch中創建了上述資源。 想要瞭解更多有關資訊, 請參閱AWS Batch使用者指南。

★提交訓練作業

現在, 你提交了一個訓練卷積神經網路模型的作業, 而這個卷積神經網路模型是用來實現手寫數位識別的。 這和Amazon ECS任務很相似, AWS Batch中的作業按照Docker容器中的命令運行。 要使用MXNet作為你的深度學習庫, 你需要一個包含MXNet的Docker映射。 對於這個例子, 你可以使用mxnet / python:gpu(https://hub.docker.com/r/mxnet/python/)。

這個submit-job.py腳本提交作業, 並從CloudWatch Logs中拖出輸出。

你應該會看到如下所示的輸出結果(點圖放大):

實際上, 你可能需要修改作業命令從而將經過訓練的模型工件保存到AmazonS3, 以便隨後的預測作業可以針對模型生成預測。 有關如何在作業中引用Amazon S3中的物件的資訊, 請參閱創建簡單的獲取並運行”AWS Batch作業的文章。

總結

在這篇文章中, 我向大家展示了一個在AWS Batch中運行支持GPU的作業的示例, 使用MXNet作為深度學習庫。 AWS Batch揭示了框架原語, 從而讓你專注於為你的工作負載實施最有效的演算法。 它使你能夠管理提交的作業的生命週期, 並在指定的範圍內動態調整作業的基礎架構要求。利用AWS提供的計算實例,我們可以以一個經濟高效的方式輕鬆利用其水準可擴展性。

另一方面,MXNet提供了一整套高度優化和可擴展的構建塊來開始實現你自己的深度學習演算法。總而言之,你不僅可以解決需要大型神經網路模型的問題,還可以通過利用Amazon EC2中看似無限的計算資源來減少反覆運算時間。

通過AWS Batch中以你的名義來管理資源,你可以輕鬆實施諸如超參數優化之類的工作負載,並行排列數十甚至數百個搜索,從而為你的問題空間找到最佳的模型參數集。此外,由於你的作業在Docker容器中運行,你可以選擇與你的需求最匹配的工具和庫,構建Docker映射,並使用你選擇的映射提交作業。

我們鼓勵你自己可以進行嘗試,並且,我們十分希望你可以讓我們知道你的想法!

機器人圈附上回饋位址,有興趣嘗試的圈友可以去留言

https://aws.amazon.com/cn/blogs/compute/deep-learning-on-aws-batch/?from=groupmessage&isappinstalled=0

並在指定的範圍內動態調整作業的基礎架構要求。利用AWS提供的計算實例,我們可以以一個經濟高效的方式輕鬆利用其水準可擴展性。

另一方面,MXNet提供了一整套高度優化和可擴展的構建塊來開始實現你自己的深度學習演算法。總而言之,你不僅可以解決需要大型神經網路模型的問題,還可以通過利用Amazon EC2中看似無限的計算資源來減少反覆運算時間。

通過AWS Batch中以你的名義來管理資源,你可以輕鬆實施諸如超參數優化之類的工作負載,並行排列數十甚至數百個搜索,從而為你的問題空間找到最佳的模型參數集。此外,由於你的作業在Docker容器中運行,你可以選擇與你的需求最匹配的工具和庫,構建Docker映射,並使用你選擇的映射提交作業。

我們鼓勵你自己可以進行嘗試,並且,我們十分希望你可以讓我們知道你的想法!

機器人圈附上回饋位址,有興趣嘗試的圈友可以去留言

https://aws.amazon.com/cn/blogs/compute/deep-learning-on-aws-batch/?from=groupmessage&isappinstalled=0

Next Article
喜欢就按个赞吧!!!
点击关闭提示