在Kaggle免費使用GPU訓練自己的神經網絡

Kaggle上有免費(每週30小時)供大家使用的GPU計算資源,本文教你如何使用它來訓練自己的神經網絡。

Kaggle是什麼

Kaggle是一個數據建模和數據分析競賽平臺。企業和研究者可在其上發佈數據,統計學者和數據挖掘專家可在其上進行競賽以產生最好的模型。

Kaggle,你可以:

  1. 參加競賽贏取獎金。Kaggle上會發布一些賽題,做的好會贏得獎金。

  2. 下載數據集。Kaggle上包含了衆多的數據集供大家免費下載,常見的數據集都可以在上面找到。

  3. 學習別人的代碼。類似GitHub,你可以在Kaggle上學習冠軍的代碼來強化數據科學技能。

  4. 免費使用計算資源。KaggleKernels功能允許你在瀏覽器編程、並通過服務器的GPU來加速你的計算。

  5. 討論交流學習。Kaggle上有論壇交流功能,允許你與相同的愛好者一起交流學習。

  6. 學習PythonMLPandasDL等技能。Kaggle上提供了免費的微課給大家學習,供初學者快速入門學習。

本篇文章側重點是第4條,教你如何將自己的代碼丟到Kaggle上訓練。

注意,Kaggle目前只支持PythonR兩種編程語言。

Kernel硬件配置

GPU:Nvidia Tesla P100-PCIE-16GB 1.3285GHz

GPU連續使用時間:6h

CPU Frequency: 2.3GHz

RAM:14GB

Disk:5.2GB

使用教程

基本介紹

  1. 登陸Kaggle官網,註冊賬號並登陸。在Kaggle註冊賬號是免費的。

  2. 點擊導航欄的Kernels

  1. 點擊頁面上部的New Kernel來創建一個新的Kernel。粗略地說Kernel就是一個代碼的工程項目。

  1. 點擊左邊的Script來創建一個腳本。這個腳本就是你項目運行的主要文件。

  1. 頂部的標題欄的功能。

  1. 側邊狀態欄的主要功能。Sessions顯示資源佔用狀態,Versions顯示版本管理,Draft Environment顯示你上傳數據(注意:上傳後該區域只讀,不能寫),Settings顯示設置(如GPU開關、包的管理)

  1. 底部狀態欄功能。

用完Kernel建議點擊類似電源鍵的按鈕關閉Kernel哦(關閉後所有輸出文件將會丟失)

  1. 代碼輸入窗口。它已預先幫你輸入一些示例代碼,可以刪掉重寫。

使用示例

我們以Tensorflow平臺的YoloV3-Tiny模型在數據集VOC2007的訓練爲例,介紹如何使用Kaggle訓練我們的模型,並保存結果,將模型下載到本地。

提示:Kaggle已經爲我們準備好常用的環境了,無需我們從頭搭建開發環境。一般直接用就好了。

文件準備

首先我們要在本地弄好相關文件,再上傳到Kaggle上去。

本地的準備參考這篇:【AI實戰】動手訓練自己的目標檢測模型(YOLO篇)

有關YOLO參考這篇:用YOLO實現目標檢測

然後按照實際情況修改train.py的相關參數,例如將batch_size改成128epochs改小一點等等。

注意訓練時間不能超過6個小時,否則Kaggle會自動關閉你的Kernel

並且Keras版的YOLO的標籤文件與Darknet版的不同,標籤文件要重新生成。然後執行:

複製
1
cat 2007_train.txt 2007_val.txt > train.txt

即我們使用驗證集和訓練集混合起來一起訓練,最後替換下路徑前綴。

但有以下幾點要注意下:

  1. 上傳後不能在線修改你上傳的東西,只能刪除該壓縮包(刪除方法見第三節:再次訓練)後重新上傳(如果數據量巨大,重新上傳十分費時)。所以最好需要確保第一次上傳的東西就沒有問題,否則更改會比較繁瑣。

  2. 上傳時,建議是分別上傳幾樣東西(分別壓縮打包上傳):

    • 模型的配置文件
    • 訓練的數據文件
    • 模型.h5文件

上傳方式:點擊右側白色的側邊狀態欄中的+ Add Data按鈕,在彈出的窗口中,點擊右上角的Upload,然後選擇文件去上傳(只能上傳單個文件,這就是爲什麼叫你打包壓縮的原因)。

上傳後,Kaggle會自動幫你解壓縮,點擊右邊的文件樹,點選其中的一個文件,會在左側彈出白色的文件管理彈窗,彈窗的上端會顯示該文件的路徑:

點擊中間的那個藍色的按鈕你可以複製路徑到剪切板中。

當你上傳了多個壓縮包或文件時,路徑的命名規則一般是這樣的:

  • 對於上傳了文件:../input/數據集的名字/上傳的文件名字
  • 對於上傳了壓縮包:../input/數據集的名字/壓縮包的名字/壓縮包底下的路徑
  1. 其中上述的 圖片路徑的.txt文件 不能單純按照【AI實戰】動手訓練自己的目標檢測模型(YOLO篇)來做,你要將路徑替換成上述第二點描述的那樣。因爲你執行的主腳本文件並不是在你上傳的東西里面,你需要使用類似../input/XXX/XXX的格式來調用你上傳的東西。

  2. 對於腳本中的文件路徑也是如此,類似於上述的第三點來做。否則會提示會找不到你上傳的文件。實際上有關路徑的一切東西都要按照上述的路徑規則來做,否則就找不到文件。

  3. 如果提示import時找不到文件,這是因爲你上傳的包沒有加入系統變量,那麼你需要:

    複製
    1
    2
    3
    import sys
    kaggle_path_prefix = "../input/keras-yolov3tiny-voc2007/keras-yolo3/"
    sys.path.append(kaggle_path_prefix)

這裏請根據你的實際情況修改上述kaggle_path_prefix的值。

這裏kaggle_path_prefix目錄下需要包含那個你剛剛上傳的壓縮包里名叫yolo3Python包的文件夾。

  1. 保存文件的路徑請直接填寫文件名,像這樣:
複製
1
model.save_weights('trained_weights_final.h5')

這是因爲input文件夾是隻讀的,且保存到其他地方去無法輸出下載,你也找不到輸出的文件。況且當Kernel關閉後你的一切東西就會丟失。

運行並提交

點擊頂部標題欄亮起的藍色Commit按鈕,以運行全部代碼並保存結果,最後它會保存你輸出的文件。

如果允許的窗口不慎點沒了,可以右側的Versions中,點擊:

重新彈出運行的窗口(除非你點了Cancel commit)。

運行完畢後,點擊:

來打開Kernel頁面。

如果你有輸出文件,在左側的:

點擊Output就可以切換到輸出的文件列表,然後就可以下載你輸出的文件啦,選中你想要的模型下載即可。

如果運行出錯,請點擊上圖所示的Log查看錯誤日誌(有必要時點擊Download Log按鈕下載日誌到本地),按照錯誤提示修復錯誤即可。

再次訓練

只需將原本的模型文件數據集刪除,然後再添加上傳上去,再次Commit就好了。

刪除數據集的步驟:

  1. 點擊數據集旁邊的那個紅色的叉叉,將數據集從當前Kernel移除

  2. 點擊自己的頭像,進入My Profile頁面,然後點擊Datasets

  1. 然後點擊Settings

  1. 最後點擊Delete Dataset並確認即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章