當前位置:
首頁 > 最新 > 如何免費雲端運行Python深度學習框架?

如何免費雲端運行Python深度學習框架?

想運行TuriCreate,卻沒有蘋果電腦,也沒有Linux使用經驗,怎麼辦?用上這款雲端應用,讓你免安裝Python運行環境。一分錢不用花,以高性能GPU,輕鬆玩兒轉深度學習。

痛點

《如何用Python和深度神經網路識別圖像?》一文發布後,收到了很多讀者的留言。大家對從前印象中高不可攀的深度神經網路圖片識別來了興趣,都打算親自動手,試用一下簡單易用的TuriCreate框架。

有的讀者嘗試之後,很開心。

有的讀者卻遇到了問題:

我在《如何用Python和深度神經網路尋找近似圖片?》一文中,對這個疑問做了回應——TuriCreate目前支持的操作系統有限,只包括如下選項:

如果你用的操作系統是Windows 7及以下版本,目前TuriCreate還不支持。

解決辦法有兩種:

第一種,升級到Windows 10,並且使用WSL。

第二種,採用虛擬機安裝好Linux。

這兩種解決方法好不好?

不好。

它們都是沒有辦法的辦法。

因為都需要用戶接觸到Linux這個新系統。

對於IT專業人士來說,Linux確實是個好東西。

首先,它免費。因此可以把軟硬體的綜合使用成本降到最低;

其次,它靈活。從系統內核到各種應用,你都可以隨心所欲定製。不像Windows或者macOS,管你用不用西班牙語和文本語音朗讀功能,統統默認一股腦給你裝上;

第三,它結實。Linux雖然免費,但是從創生出來就是以UNIX作為參考對象,完全可以勝任運行在一年都不關機一回的大型伺服器上。

但是,Linux這些優點,放到我專欄的主要閱讀群體——「文科生」——那裡,就不一定是什麼好事兒了。

因為Linux的學習曲線,很陡峭。

所以,如果你固執地堅持在自己的電腦上運行TuriCreate,又不願意學Linux,那可能就得去買台Macbook了。

但是,誰說運行代碼一定要在自己的機器上呢?

雲端

你可以把TuriCreate安裝在雲端——只要雲端的主機是Linux就好。

你可能怒了,覺得我是在戲耍你——我要是會用Linux,就直接本地安裝了!本地的Linux我都不會用,還讓我遠程使用Linux?!你什麼意思嘛?

別著急,聽我把話說完。

雲端的Linux主機,大多是只給你提供個操作系統,你可以在上面自由安裝軟體,執行命令。

這樣的雲端系統,往往需要你具備相當程度的IT專業知識,才能輕鬆駕馭。

更要命的是,這種租用來的雲主機,要麼功能很弱,要麼很貴。

那種幾十塊錢一個月的主機,往往只有一個CPU核心。跑深度學習項目?只怕你還沒獲得結果,別人的論文都發出來了。

有沒有高性能主機?當然有。

例如亞馬遜的AWS,就提供了p2.xlarge這樣的配置供你選擇。有了它,運行深度學習任務遊刃有餘。

但是它很貴

有人計算過,如果你需要長期使用深度學習功能,還是本地組裝一台高性能電腦比較划算。

另外,雖然亞馬遜已經幫你做了很多準備工作。你從開始折騰這台雲主機到真正熟練掌握使用,還是要花些功夫。

從網上找一篇靠譜的教程後,經過自己的反覆實踐,不斷求助,最終你會掌握以下技能:

了解了如何最省錢地運行高配置AWS虛擬主機,知道該在何時啟動和關閉實例。一個月下來,你看著賬單上的金額如此之少,會特別有成就感吧。

問題是,你最初是想要幹什麼來著?

你好像只是打算把手頭的照片,利用TuriCreate上的卷積神經網路快速做個分類模型出來吧?

所以,這種折騰不是正道。

在某些時刻,做出正確的選擇比盲目付出努力重要得多。

你應該選擇一個雲平台,它得具有如下特色:

你不必會Linux,也不用從頭裝一堆基礎軟體。打開就能用,需要哪個額外的功能,一條指令就搞定。提供高性能GPU用來運行深度學習代碼……最好還免費。

你是不是覺得我在做夢?猶豫著要不要趕緊喊我醒過來?

這不是做夢,真的有這樣的好事兒。

發現

本文推薦給你的雲運行環境,是由Google提供的Colaboratory,下文簡稱Colab。

其實這個工具已經存在了好幾年了。

最初版本由Google和Jupyter團隊合作開發。只是最近才迭代到漸入佳境的狀態。經過這篇Medium文章的推廣,吸引了很多研究者和學習者的關注。

官方的介紹是:

Colaboratory 是一款研究工具,用於進行機器學習培訓和研究。它是一個 Jupyter 筆記本環境,不需要進行任何設置就可以使用。

請用Google Chrome瀏覽器打開這個鏈接,你可以看到這份「Colaboratory簡介」。

雖然外觀不同,但是它實際上就是一份Jupyter Notebook筆記本。

我們嘗試運行一下其中的語句。

注意這個筆記本裡面的語句,其實是Python 2格式。但是默認筆記本的運行環境,是Python 3。

所以,如果你直接執行第一句(依然是用Shift+Enter),會報錯。

解決辦法非常簡單,打開上方工具欄中的「代碼執行程序」標籤頁。

選擇最下方的「更改運行時類型」。

將默認的Python 3改成Python 2之後,點擊右下角的保存按鈕。

然後我們重新運行第一個代碼區塊的語句。這次就能正常輸出了。

語句區塊2就更有意思了。它直接調用Google自家的深度學習框架——tensorflow軟體包。

我曾經專門為tensorflow的安裝寫過教程。但是在這裡,你根本就沒有安裝tensorflow,它卻實實在在為你工作了。

不僅是tensorflow,許多常用的數據分析工具包,例如numpy, matplotlib都默認安裝好了。

對於這些基礎工具,你一概不需要安裝、配置、管理,只要拿過來使用就行。

我們運行最後一個代碼單元。

看,圖片輸出都毫無問題。

編程環境領域的即插即用啊!太棒了!

可是興奮過後,你可能覺得不過如此——這些軟體包,我本地機器都正確安裝了。執行起來,再怎麼說也是本地更方便一些啊。

沒錯。

但是安裝TuriCreate時,你的Windows操作系統不支持,對不對?

下面我為你展示如何用Colab運行TuriCreate,進行深度學習。

數據

我把需要分類的圖像數據以及ipynb文件都放到了這個github項目中。請點擊這個鏈接下載壓縮包。

下載後解壓到本地硬碟。

可以看到,其中包含一個ipynb文件和一個image目錄。

image目錄內容,就是你之前在《如何用Python和深度神經網路尋找近似圖片?》一文中已經見過的哆啦a夢和瓦力的圖片。

這是藍胖子的圖片:

這是瓦力的圖片:

請用Google Chrome瀏覽器(目前Colab尚不支持其他瀏覽器)打開這個鏈接,開啟你的Google Drive。

當然,如果你還沒有Google賬號,需要註冊一個,然後登錄使用。

下面,把你剛剛解壓的那個文件夾拖拽到Google Drive的頁面上,系統自動幫你上傳。

上傳完成後,在Google Drive里打開這個文件夾。

在文件上單擊滑鼠右鍵。選擇打開方式為Colaboratory。

Colab打開後的ipynb文件如下圖所示。

確認運行時類型為Python 2,硬體加速器為GPU。如果不是這樣的設置,請修改。然後點擊保存。

數據有了,環境也已配置好。下面我們正式開始運行代碼了。

代碼

我們嘗試讀入TuriCreate軟體包。

結果會有如下報錯。

遇到這個報錯很正常。

因為我們還沒有安裝TuriCreate。

不是說不需要安裝深度學習框架嗎?

那得看是誰家的深度學習框架了。

Colab默認安裝Tensorflow,因為它是Google自家開發的深度學習框架。

而TuriCreate是蘋果的產品,所以需要咱們手動安裝。

手動安裝很麻煩嗎?

才不會。

新開一個代碼單元,然後輸入以下一行語句:

你就可以看到Colab幫你辛勤地安裝TuriCreate以及全部依賴包了,根本不用自己操心。瞬間就安裝好了。

我們重新調用TuriCreate。

這次成功執行,再沒有出現報錯。

下面我們需要做一件事情,就是讓Colab可以從我們的數據文件夾裡面讀取內容。

可是默認狀態下,Colab根本就不知道我們的數據文件夾在哪裡——即便我們本來就是從Google Drive的演示文件夾下面打開這個ipynb文件的。

我們首先要讓Colab找到Google Drive的根目錄。

這原本是一個相對複雜的問題。但是好在我們有現成的代碼,可以拿來使用。

請執行下面這個單元格的代碼。看不懂不要擔心。因為你不需要調整其中的任何語句。

執行剛開始,你會看到下面的運行狀態。

過了一小會兒,你會發現程序停了下來。給你一個鏈接,讓你點擊。並且囑咐你把獲得的結果填入下面的文本框。

點擊你自己的Google賬號。

然後會提示你Google Cloud SDK的許可權請求。

點擊允許後,你就獲得了一長串字元了。複製它們。

回到Colab頁面上,把這一長串字元粘貼進去,回車。

你可能認為運行完畢。不對,還需要第二步驗證。

又出來了一個鏈接。

點擊之後,還是讓你選擇賬號。

然後Google Cloud SDK又提出了許可權要求。注意和上次的請求許可權數量不一樣

你需要再複製另外的一串新字元。

粘貼回去,回車。這次終於執行完畢。

好了,現在Colab已經接管了你的Google Drive了。我們給Google Drive雲端硬碟的根目錄起個名字,叫做drive。

然後,我們告訴Colab,請把我們當前的工作目錄設定為Google Drive下的demo-python-image-classification-Google-colab-master文件夾。

好了,準備工作完畢,我們繼續。

我們需要告訴TuriCreate,圖像數據文件夾在哪裡。

然後,我們讀入全部圖像文件到數據框data。

這裡,你會發現讀入速度比較慢。這確實是個問題,是否是因為TuriCreate的SFrame數據框在Colab上有些水土不服?目前我還不能確定。

好在咱們樣例中的文件總數不多,還能接受。

終於讀取完畢了。

我們看看data中包含哪些數據吧。

跟Jupyter Notebook本地運行結果一致,都是文件路徑,以及圖片的尺寸信息。

下面,我們還是給圖片打標記。

來自哆啦a夢文件夾的,標記為doraemon;否則標記為walle。

再看看data數據框內容。

可見,標記已經成功打好。

我們嘗試用函數瀏覽data數據框,查看圖片。

但是很不幸,TuriCreate提示我們,該功能暫時只支持macOS.

別忘了,我們現在使用的,是Linux操作系統,所以無法正常使用函數。不過這只是暫時的,將來說不定哪天就支持了。

幸好,這個功能跟我們的圖像分類任務關係不大。我們繼續。

把數據分成訓練集與測試集,我們使用統一的隨機種子取值,以保證咱們獲得的結果可重複驗證。

下面我們正式建立並且訓練模型。

運行的時候,你會發現,原本需要很長時間進行的預訓練模型參數下載,居然瞬間就能完成。

這是怎麼回事兒?作為思考題,留給你自行探索解答。給你一個小提示:雲存儲。

TuriCreate自動幫我們處理了圖像尺寸歸一化,並且進行了多輪迭代,尋找合適的超參數設置結果。

好了,我們嘗試用訓練集生成的模型,在測試集上面預測一番。

預測結果如何?我們用函數來做個檢驗。

結果如下:

我們看看預測的結果:

再看看實際的標記:

兩相比對,我們希望找出那些錯誤預測的圖片存儲位置:

下面我們需要直觀瀏覽一下預測錯誤的圖像。

讀入Jupyter的Image模塊,用於展示圖像。

我們先來展示第一幅圖像:

結果如下:

還是老樣子,50層的深度神經網路模型,已經無法讓人直觀理解。所以我們無法確切查明究竟是哪個判定環節上出了問題。

然而直觀猜測,我們發現在整個照片里,方方正正的瓦力根本就不佔主要位置。反倒是圓頭圓腦的機器人成了主角。這樣一來,給圖片形成了比較嚴重的雜訊。

我們再來看看另一幅圖:

結果是這樣的:

這幅圖裡面,同樣存在大量的干擾信息,而且就連哆啦a夢也做了海盜cosplay。

好了,到這裡,我們的代碼遷移到Colab工作順利完成。

如你所見,我們不需要在本地安裝任何軟體包。只用了一個瀏覽器和一個從github下載的文件夾,就完成了TuriCreate深度學習的(幾乎)全部功能。

比起虛擬機安裝Linux,或者自己設定雲端Linux主機,是不是輕鬆多了呢?

小結

通過閱讀本文,希望你已經掌握了以下知識點:

另外,請你在為需求選擇工具的時候,記住哈佛大學營銷學教授萊維特(Theodore Levitt)的那句經典名言:

人們其實不想買一個1/4英寸的鑽頭。他們只想要一個1/4英寸的洞。

這句話不僅對學習者和開發者有用。

對於產品的提供者,意義只怕更為重大。

討論

你之前正確安裝了TuriCreate了嗎?用的什麼操作系統?你嘗試過在雲端運行Python代碼嗎?有沒有比Colab更好的雲端代碼運行環境?歡迎留言,把你的經驗和思考分享給大家,我們一起交流討論。

如果本文可能對你身邊的親友有幫助,也歡迎你把本文通過微博或朋友圈分享給他們。讓他們一起參與到我們的討論中來。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

阿里程序員相親被拒;90後創以太幣狂賺5000億;用Python做直播競答外掛
Python與豆瓣讀書

TAG:Python |