新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于AWS使用深度學習的10個Linux命令

        基于AWS使用深度學習的10個Linux命令

        作者: 時間:2017-09-18 來源:網絡 收藏

          在上執行大規模的深度學習處理是一個廉價而且有效的學習和開發方式。花少量的錢就可以使用數十GB的內存,數十個CPU,多個GPU,這是值得推薦的。

        本文引用地址:http://www.104case.com/article/201709/364415.htm

          如果你是使用EC2或者 命令的新人,在云端執行深度學習腳本的時候, 這些命令是非常有效的。

          本文的主要內容包括:

          1)在本機和EC2實例間復制數據

          2)使腳本按天,周,月安全地運行

          3)監測進程,系統和GPU 的性能

          注意:所有命令在類linux環境中執行(,OS x 或者 cygwin)

          0、環境約定

          假設 EC2 已經正常運行,方便起見,對環境做如下的設定:

          1)EC2 服務器的IP地址為 54.218.86.47

          2)用戶名為ec2-user

          3)SSH 密鑰位于 ~/.ssh/ 中,文件名為aws-keypair.pem;

          4)使用python 腳本工作

          關于如何搭建一個 基于GPU的EC2實例來 執行深度學習,可以參見:

          https://machinelearningmastery.com/develop-evaluate-large-deep-learning-...

          1、 登陸到服務器

          在做任何操作之前,首先要登陸到目標服務器。簡單地,使用SSH命令。將SSH 密鑰存儲在 ~/.ssh/ 中,使用有意義的文件名,例如aws-keypair.pem。使用如下命令登陸EC2主機,注意地址和用戶名:

          ssh -i ~/.ssh/aws-keypair.pem ec2-user@54.218.86.47

          2、 拷貝文件到服務器

          使用SCP命令拷貝本地文件到服務器,例如將script.py 文件拷貝到EC2 服務器的命令如下:

          scp -i ~/.ssh/aws-keypair.pem script.py ec2-user@54.218.86.47:~/

          3、使腳本在服務器的后臺運行

          在服務的后臺執行腳本,可以忽略其他進行的信號量,忽略標準的輸入輸出,將所有的輸出和錯誤信息重定向到一個日志文件中。對于需要長時間運行的深度學習模型而言, 這是非常必要的。

          > nohup python /home/ec2-user/script.py >/home/ec2-user/script.py.log &1 &

          該命令中script.py 和 script.py.log 都位于 /home/ec2-user/ 目錄下。關于 nohup 和重定向 參考其他的詳細介紹(例如wikipedia中的介紹)。

          4、在服務器的指定 GPU 上執行腳本

          如果EC2 支持的話,推薦在同時運行多個腳本。例如,EC2有4個GPU的話, 可以在每個GPU上單獨運行一個腳本,示例代碼如下:

          CUDA_VISIBLE_DEVICES=0 nohup python /home/ec2-user/script.py >/home/ec2-user/script.py.log &1 &

          如果有4個GPU的話,可以指定CUDA_VISIBLE_DEVICES從0到3。這在TF做后臺的Keras上是可行的,在Theano 沒有測試過。

          關于CUDA_VISIBLE_DEVICES 的更多信息可以參見 https://devblogs.nvidia.com/parallelforall/cuda-pro-tip-control-gpu-visi...

          5、監測腳本的輸出

          如果輸出結果中有項目評分或者一個算法的運行結果,實時監控腳本的輸出是很有意義的。示例如下:

          tail -f script.py.log

          遺憾的是,當屏幕上在一段時間沒有輸出的時候, 會關閉這個終端,所以最好使用:

          watch "tail script.py.log"

          有的時候看不到python的標準輸出,不知道是python的問題還是EC2的問題。

          6、監測系統和進程的性能

          監測EC2系統的性能是有意義的,尤其是已經使用了或還剩下多少內存。例如:

          top -M

          或者指定進程標識PID:

          top -p PID -M

          7、監測GPU 性能

          如果在GPU上同時執行多個腳本,并行執行的話,查看每個GPU 的性能和使用率是不錯的主意。例如:

          watch "nvidia-smi"

          8、檢查腳本是否還在服務器上運行

          一般地,會保持終端一直是開著的。

          watch "ps -ef | grep python"

          9、在服務器上編輯文件

          一般不建議在服務器直接修改,當然你熟知vi除外:

          vi ~/script.py

          vi 的用法就不在這里贅述了。

          10、從服務器上下載文件

          與上傳文件相對,這是一個下個png文件的例子:

          scp -i ~/.ssh/aws-keypair.pem ec2-user@54.218.86.47:~/*.png .

          需要注意的幾點

          如果希望同時運行多個腳本,最好選用擁有多個GPU 的EC2

          最好在本地編寫腳本

          將執行結果輸出到文件,下載到本地進行分析

          使用watch 命令保持終端處于運行中

          在本地執行遠程命令



        關鍵詞: AWS Linux

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 象州县| 临漳县| 贵港市| 儋州市| 德安县| 黔南| 确山县| 都兰县| 乌兰察布市| 博客| 砀山县| 安塞县| 定西市| 集安市| 呼伦贝尔市| 聂拉木县| 柳林县| 方山县| 麻阳| 比如县| 双峰县| 沙湾县| 万源市| 长汀县| 祁门县| 太仆寺旗| 固安县| 理塘县| 西乌珠穆沁旗| 敖汉旗| 鹤峰县| 舟山市| 壶关县| 恩施市| 玉屏| 西平县| 焉耆| 朝阳市| 布拖县| 岫岩| 淮南市|