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

2021-01-12 電子產品世界

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

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

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

  本文的主要內容包括:

  1)在本機和EC2實例間複製數據

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

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

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

  0、環境約定

  假設AWS 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

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

  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 命令保持終端處於運行中

  在本地執行遠程命令

相關焦點

  • Linux系統入門命令學習經驗
    我大學的專業是電氣工程及其自動化,平時的課程也涉及不到linux,所以旁邊也沒有掌握linux的同學能夠一塊交流,通過自己這段時間的學習,我覺得有些學習總結可以簡單的介紹給大家,供大家在開始業餘學習linux的時候能夠作為一點參考。
  • AWS Ubuntu 18.04 鏡像採用滾動內核模型
    可作為 linux-aws-edge 內核進行預覽,建議僅在非生產部署中使用。那些想要在 Ubuntu AWS 機器上安裝 Linux 5.0 rolling kernel 的用戶需要在終端窗口中運行以下命令。成功安裝後,必須使用下面列出的第二個命令集重新引導計算機,並且重新啟動之後,可以使用下面的第三條命令查看正在運行哪個內核。
  • dialog命令在linux系統中使用方法
    CentOS7.3學習筆記總結(七十六)-dialog命令在linux系統中使用方法前面我們介紹了dialog的基本功能(請查閱《CentOS7.3學習筆記總結(七十五)-Linux系統中的窗口製作工具dialog介紹》),今天我們來介紹怎麼在linux系統的shell腳本中怎麼使用
  • 新手必須掌握的Linux命令
    本書精挑細選出讀者有必要首先學習的數十個Linux命令,它們與系統工作、系統狀態、工作目錄、文件、目錄、打包壓縮與搜索等主題相關通過把上述命令歸納到本章中的各個小節,讓您可以分門別類地逐個學習這些最基礎的Linux命令,為今後學習更複雜的命令和服務做好必備知識鋪墊。
  • 在Linux命令行中使用計算器的5個命令
    在使用 Linux 時,我們有時會需要做一些計算,那麼我們就可能需要用到計算器。在 Linux 命令行裡,有許多計算器工具,這些命令行計算器可以讓我們執行科學計算、財務計算或者一些簡單的計算。當然,我們也可以在 Shell 腳本中使用這些命令執行更為複雜的數學運算。
  • 完全基於 Java 的開源深度學習平臺,亞馬遜的大佬帶你上手
    一個完全使用 Java 構建的深度學習平臺。你可以輕鬆在線使用,或者離線使用它們來構建你的深度學習應用。我們的目標是,將深度學習更好的貼近 Java 開發者。下面將介紹能夠讓你快速上手 DJL 的在線嘗試地址或工具。
  • 學習Linux,你必會的基本Linux命令
    前言Linux是一套免費使用和自由傳播的作業系統內核,是一個基於POSIX和Unix的多用戶、多任務、支持多線程和多CPU的作業系統內核。它能運行主要的Unix工具軟體、應用程式和網絡協議。它支持32位和64位硬體。
  • 搜索、學習和實踐 Linux 命令!! | Linux 中國
    根據上面的場景,我們可能需要至少三個 Linux 命令,一個用於下載文件,一個用於提取下載的文件,一個用於移動文件。如果你是中高級 Linux 用戶,你可以通過或腳本在幾秒鐘/分鐘內輕鬆完成這一任務。但是,如果你是一個不懂得太多 Linux 命令的菜鳥你可能就需要一些幫助了。  當然,谷歌的快速搜索可能會找到很多結果。或者,你可以使用 。
  • dialog命令在linux系統中使用方法
    CentOS7.3學習筆記總結(七十六)-dialog命令在linux系統中使用方法前面我們介紹了dialog的基本功能(請查閱《CentOS7.3學習筆記總結(七十五)-Linux系統中的窗口製作工具dialog介紹》
  • 在30分鐘內創建你的深度學習伺服器
    在這個博客中,我將嘗試在EC2上以最小的努力建立一個深度學習伺服器,這樣我就可以專注於更重要的事情。本博客明確地由兩部分組成:設置一個預先安裝了深度學習庫的Amazon EC2機器。使用TMUX和SSH隧道設置Jupyter notebook。別擔心,這不像聽起來那麼難。
  • Linux作業系統的學習與使用(二)
    Xftp是基於FTP協議的工具。可以方便的實現網際網路中主機和主機之間的文件傳輸。tar命令解壓文件3、配置環境變量在linux中/etc/profile此文件為環境變量配置文件。下面的命令必須在mysql目錄下執行。# cd /usr/local/mysql給用戶組授權。注意命令中最後有個點,表示對當前目錄進行授權。
  • Python學習第173課--Linux複製文件命令
    我們先通過cd linux_intro這個命令,把目錄切換到linux_intro裡面,然後通過touch linux_oprate.txt這個命令,在linux_intro這個文件夾裡面生成 linux_oprate.txt這個文件。生成之後,還可以通過ls查看一下。
  • 10個你需要了解的Linux網絡和監控命令
    【IT168 技術】我下面列出來的10個基礎的每個linux用戶都應該知道的網絡和監控命令。網絡和監控命令類似於這些:hostname, ping, ifconfig, iwconfig, netstat, nslookup, traceroute, finger, telnet, ethtool 用於查看linux伺服器ip地址,管理伺服器網絡配置,通過 telnet 和ethernet建立與linux之間的網絡連結,查看linux的伺服器信息等。
  • linux刪除命令rm的使用
    在linux中創建文件很容易,系統中隨時會有文件變得過時且毫無用處。用戶可以用rm命令將其刪除。該命令的功能為刪除一個目錄中的一個或多個文件或目錄,它也可以將某個目錄及其下的所有文件及子目錄均刪除。對於連結文件,只是刪除了連結,原有文件均保持不變。
  • CentOS linux作業系統命令之mktemp命令
    CentOS7.3學習筆記總結(七十七)-CentOS linux作業系統命令之mktemp命令在linux作業系統中mktemp命令用於創建一個臨時文件或者目錄(create a temporary file or directory)。
  • Linux系統推薦學習的程式語言以及經驗
    這裡強行推薦一個網站:https://www.linuxprobe.com/,上面有大量的精華帖子值得你去瀏覽,去學習,而且劉老師定期發布一些精選視頻,使得學習事半功倍。如果能購買一本《linux就該這麼學》更合適不過了。
  • Linux命令行與Shell腳本編程學習筆記19
    當使用&>符時,命令生成的所有輸出都會發送到同一位置,包括數據和錯誤。7. 兩種方法來在腳本中重定向輸出:(1) 臨時重定向每行輸出;(2) 永久重定向腳本中的所有命令。用exec命令告訴shell在腳本執行期間重定向某個特定文件描述符。Exec命令回啟動一個新shell並將STDOUT文件描述符重定向到文件。
  • Linux命令行與Shell腳本編程學習筆記8
    環境變量可以作為數組使用,數組是能夠存儲多個值的變量。值可按單個值或整個數組來引用。給某個環境變量設置多個值,可以把值放在括號裡,值與值之間用空格分隔。要引用一個單獨的數組元素,必須要用代表它在數組中位置的數值索引值。數值要用方括號括起來。要顯示整個數組變量,可用星號作為通配符放在索引值的位置。可以用unset命令來刪除數組中的某個值。
  • Linux壓縮打包命令使用筆記
    1、tar命令[root@linux ~]# tar [-cxtzjvfpPN] 文件與目錄 ……  參數:  -c :建立一個壓縮文件的參數指令(create 的意思);  -x :解開一個壓縮文件的參數指令!  -t :查看 tarfile 裡面的文件!
  • linux常用命令:linux常用命令介紹
    今天來聊聊一篇關於linux常用命令:linux常用命令介紹的文章,現在就為大家來簡單介紹下linux常用命令:linux常用命令介紹,希望對各位小夥伴們有所幫助。在Ubuntu下不能直接使用,所以需要轉換一下。sudo alien abc.rpmvim使用:vim三種模式:命令模式、插入模式、編輯模式。使用ESC或i或:來切換模式。命令模式下::q 退出:q!