手把手教你用英偉達Jetson Nano運行PyTorch & Fast.ai

原作 Interogativ

郭一璞 編譯

量子位 報道 | 公眾號 QbitAI

英偉達Jetson Nano,作為老黃家最便宜的硬件,只要99美元。

看到便宜就想撿,拿到手裡怎麼玩?

造機器人、造小車、在家裡DIY一個語音控制的窗簾,都得先裝輪子。

如果你使用的框架是PyTorch,那你最好再裝一個Fast.ai。

Fast.ai是在PyTorch上非常好用的深度學習庫,來自MOOC平臺Fast.ai,只要一個API,就包含了所有常見的深度學習應用。

那麼,拿到Jetson Nano之後,如何把輪子部署上去呢?一位名叫Interogativ的用戶就把用它運行PyTorch 1.0和Fast.ai 1.0的攻略發在了Fast.ai的論壇上,量子位全文編譯如下:

手把手教你用英偉達Jetson Nano運行PyTorch & Fast.ai

英偉達Jetson Nano,配備了ARM Cortex A57處理器和4G內存,CUDA和PyTorch兩者都可以在上面運行,這塊開發板有難以置信的價值。

當然,你也可以用它來運行截至2019年4月最新最好的PyTorch和Fast.ai版本,這裡是攻略。本攻略僅適用於Python 3,如果你沒有Linux經驗,不知道如何使用SSH,不知道IP網絡的原理或者IP地址是什麼,不建議用本攻略來安裝。

軟硬件準備

1、花99美元買一塊英偉達Jetson Nano,現在國內已經可以買到了,當然,價格會比99美元(665人民幣)要貴一點。

2、一張64G的Micro SD卡,確保它是class 10或者更高級別。

手把手教你用英偉達Jetson Nano運行PyTorch & Fast.ai

△ SD卡速度等級,來自SD協會網站

3、USB鍵盤,就臺式機上那種。

4、2.5Amp電源線,帶一個Micro-USB插頭。

5、一個HDMI或者DisplayPort連接線顯示器

6、連網:以太網網線,無線路由器或者HUB,這塊板子沒有本機無線支持,所以請確保你能用有線網絡

7、能插Micro SD卡的PC,不能插SD卡的話你還需要準備讀卡器。

8、可以創建SSH終端的PC軟件,以及可以使用SSH傳輸文件的軟件。如果你用Windows的話,我推薦Tera Term(免費)和WinSCP(免費),下載鏈接在文末。

9、把這些zip文件下載到你的PC上,下載鏈接請參見文末傳送門。裡面有作者Interogativ寫的腳本,包括:

setup_swapfile.sh

fastai_jetson.sh

setup_jupyter.sh

jetson_headless.sh

jupyter_notebook_config.py

當然,得記住你的存儲路徑。

可以開箱啦

你的新板子到貨之後,無視裡面自帶的紙架,找一些防靜電的泡沫塑料,其他的防靜電的材料也行,把你的板子放上去。

手把手教你用英偉達Jetson Nano運行PyTorch & Fast.ai

去文末傳送門裡複製英偉達開發者網站Jetson Nano開發套件指南的鏈接到瀏覽器打開,按照裡面寫的一步一步操作,確保:

1、下載帶有SD卡映像的Nvidia zip文件。

2、按照說明把這些文件裝到SD卡里。

3、將SD卡插入Nano,插上USB鍵盤、顯示器和網線。

4、開機,接受各種許可協議之類的。

5、設置用戶名密碼,別忘了。

聯網之後

1、在網絡設置裡找到你Nano的IPV4地址,記下來,或者如果你懂IP網絡的話,設置一個固定的IP地址。

2、用PC終端程序打開與Jetson Nano的SSH會話。

3、用文件傳輸軟件把之前下載的zip文件傳到Nano的用戶主目錄下。

4、通過SSH把你的PS和Nano的IP地址連起來。

5、從控制檯或通過SSH連接,為剛剛下載的腳本設置執行權限:

1chmod +x fastai_jetson.sh

2chmod +x jetson_headless.sh

3chmod +x setup_swapfile.sh

4chmod +x setup_jupyter.sh

設置交換文件

Nano只有4GB的RAM(GPU共享),你需要設置一個交換文件,如果已經有了就跳過此步驟。你可以從終端會話中運行setup_swapfile.sh:

./setup_swapfile.sh

確保這一步只進行一次,因為腳本里沒寫檢查是否已設置,你可以執行以下操作檢查是否設置了交換文件:

free

這時候你就應該看到創建了一個8GB的交換文件。

安裝PyTorch和Fast.ai

如果這會兒你就想安裝標準的Fast.ai和PyTorch,那就裝吧,反正裝不上。

這會兒,標準的pip命令根本沒法用,但是如果你只是運行fastai_jetson.sh腳本,就可以把倆都裝上。這個過程需要幾個小時,所以不用屏住呼吸。

./fastai_jetson.sh

安裝Jupyter筆記本

安裝好Fast.ai後,它會告訴你:

Done with part1 – now logout, login again and run setup_jupyter.sh

這是因為Jupyter安裝不會導出運行所需的shell變量。所以現在,關閉所有終端、SSH會話等,從圖形界面重啟Nano。重啟完了就從圖形界面打開終端,然後:

1、確保您下載的jupyter_notebook_config.py文件位於Nano的主目錄中。

2、運行./setup_jupyter.sh。

./setup_jupyter.sh

這也得一陣兒,所以這裡也不用屏住呼吸。

此腳本的最後一步需要Jupyter密碼,記住:

不是Jupyter登錄密碼!

不是Jupyter登錄密碼!

不是Jupyter登錄密碼!

就是設置一個單獨的密碼,你可以用這個密碼在你網絡上的任何PC上登錄Jupyter筆記本,設置好密碼後記住它。

默認的Jupyter筆記本安裝只能從控制檯或圖形界面登錄,之前下載的修改後的jupyter_notebook_config.py文件和腳本安裝可以從你網絡上的任何計算機登錄。

運行Jupyter筆記本的話,需要打開終端或SSH實例並運行:

jupyter notebook

如果它沒有運行,可能是因為你沒有退出後再次登錄。

好了,現在你可以運行PyTorch和Fast.ai了。

但如果你像我一樣,你不需要在Nano上使用圖形界面,並且想把所有內存都拿來跑程序的話,就接著往下看。

關於Python,Pip和VirtualEnv

一些有經驗的Python用戶習慣於虛擬環境(virtualenv,conda),它要求您在安裝或運行軟件之前激活“source activate”,我們現在還沒安裝,其中一個副作用是pip和Python命令將在活動環境中自動運行Python 3或pip 3。

你必須用pip3和Python3分別運行pip和Python。因此,如果你正在運行一些使用!python xyz的筆記本,除非你將代碼更改為!python3 xyz,否則它將無效。

存儲空間不是一切,但絕對非常重要:

過去,比如說2010年,4GB的內存很大。如果不在這塊板子上跑GPU,那就足以讓筆記本電腦運行良好(8 GB的交換文件有很大幫助)。但是你要想跑CUDA,那就沒法在交換磁盤上運行,因此它佔滿了4GB的每個字節。

所以,為了省下一些存儲空間,放棄圖形界面吧,通過SSH用遠程控制檯操作。

現在,如果你準備好了,就找到最後一個腳本jetson_headless.sh,運行它,卸載圖形界面,還能順帶清除300多M的不必要的軟件包。

運行之後,重新啟動,你就能擁有Nano控制檯訪問權限,現在機器只佔用了大約378M的內存,留下了3.6G左右的空間可以運行PyTorch和Fast.ai。

1、運行

./jetson_headless.sh

2、重啟,用SSH連接Nano。

最後說明一下,本文發佈的2019年4月,這種方法是可以安裝PyTorch 1.0和Fast.ai 1.0的,如果以後版本更新了或者需要裝別的東西,歡迎去原文git repo~

傳送門

https://forums.fast.ai/t/share-your-work-here/27676/1274

Tera Term

https://ttssh2.osdn.jp/index.html.en

WinSCP

https://winscp.net/eng/docs/lang:chs

zip文件下載鏈接:

https://gist.github.com/interogativ/4f5669dad3f9252a5709dc6844e12a29/archive/50845f5e9e8994eec78a4b27c6f23e4822ba00d7.zip

英偉達開發者網站Jetson Nano開發套件指南

https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit

— 完 —

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回覆“招聘”兩個字。

量子位 QbitAI · 頭條號簽約作者

վ'ᴗ' ի 追蹤AI技術和產品新動態


分享到:


相關文章: