Kaggle上有免費供大家使用的GPU計算資源,本文教你如何使用它來訓練自己的神經網絡。
Kaggle是什么
Kaggle
是一個數據建模和數據分析競賽平台。企業和研究者可在其上發布數據,統計學者和數據挖掘專家可在其上進行競賽以產生最好的模型。
在Kaggle
,你可以:
-
參加競賽贏取獎金。
Kaggle
上會發布一些賽題,做的好會贏得獎金。 -
下載數據集。
Kaggle
上包含了眾多的數據集供大家免費下載,常見的數據集都可以在上面找到。 -
學習別人的代碼。類似
GitHub
,你可以在Kaggle
上學習冠軍的代碼來強化數據科學技能。 -
免費使用計算資源。
Kaggle
的Kernels
功能允許你在瀏覽器編程、並通過服務器的GPU
來加速你的計算。 -
討論交流學習。
Kaggle
上有論壇交流功能,允許你與相同的愛好者一起交流學習。 -
學習
Python
、ML
、Pandas
、DL
等技能。Kaggle
上提供了免費的微課給大家學習,供初學者快速入門學習。
本篇文章側重點是第4
條,教你如何將自己的代碼丟到Kaggle
上訓練。
注意,Kaggle
目前只支持Python
和R
兩種編程語言。
Kernel硬件配置
GPU
:Nvidia Tesla P100-PCIE-16GB 1.3285GHz
GPU連續使用時間
:6h
CPU Frequency
: 2.3GHz
RAM
:14GB
Disk
:5.2GB
使用教程
基本介紹
-
登陸
Kaggle
官網,注冊賬號並登陸。在Kaggle
注冊賬號是免費的。 -
點擊導航欄的
Kernels
- 點擊頁面上部的
New Kernel
來創建一個新的Kernel
。粗略地說Kernel
就是一個代碼的工程項目。
- 點擊左邊的
Script
來創建一個腳本。這個腳本就是你項目運行的主要文件。
- 頂部的標題欄的功能。
- 側邊狀態欄的主要功能。
Sessions
顯示資源占用狀態,Versions
顯示版本管理,Draft Environment
顯示你上傳數據(注意:上傳后該區域只讀,不能寫),Settings
顯示設置(如GPU
開關、包的管理)
- 底部狀態欄功能。
用完Kernel
建議點擊類似電源鍵的按鈕關閉Kernel
哦(關閉后所有輸出文件將會丟失)
- 代碼輸入窗口。它已預先幫你輸入一些示例代碼,可以刪掉重寫。
使用示例
我們以Tensorflow
平台的YoloV3-Tiny
模型在數據集VOC2007
的訓練為例,介紹如何使用Kaggle
訓練我們的模型,並保存結果,將模型下載到本地。
提示:Kaggle
已經為我們准備好常用的環境了,無需我們從頭搭建開發環境。一般直接用就好了。
文件准備
首先我們要在本地弄好相關文件,再上傳到Kaggle
上去。
本地的准備參考這篇:【AI實戰】動手訓練自己的目標檢測模型(YOLO篇)
有關YOLO
參考這篇:用YOLO實現目標檢測
然后按照實際情況修改train.py
的相關參數,例如將batch_size
改成128
,epochs
改小一點等等。
注意訓練時間不能超過6
個小時,否則Kaggle
會自動關閉你的Kernel
。
並且Keras
版的YOLO
的標簽文件與Darknet
版的不同,標簽文件要重新生成。然后執行:
1 |
cat 2007_train.txt 2007_val.txt > train.txt |
即我們使用驗證集和訓練集混合起來一起訓練,最后替換下路徑前綴。
但有以下幾點要注意下:
-
上傳后不能在線修改你上傳的東西,只能刪除該壓縮包(刪除方法見第三節:再次訓練)后重新上傳(如果數據量巨大,重新上傳十分費時)。所以最好需要確保第一次上傳的東西就沒有問題,否則更改會比較繁瑣。
-
上傳時,建議是分別上傳幾樣東西(分別壓縮打包上傳):
- 模型的配置文件
- 訓練的數據文件
- 模型
.h5
文件
上傳方式:點擊右側白色的側邊狀態欄中的+ Add Data
按鈕,在彈出的窗口中,點擊右上角的Upload
,然后選擇文件去上傳(只能上傳單個文件,這就是為什么叫你打包壓縮的原因)。
上傳后,Kaggle
會自動幫你解壓縮,點擊右邊的文件樹,點選其中的一個文件,會在左側彈出白色的文件管理彈窗,彈窗的上端會顯示該文件的路徑:
點擊中間的那個藍色的按鈕你可以復制路徑到剪切板中。
當你上傳了多個壓縮包或文件時,路徑的命名規則一般是這樣的:
- 對於上傳了文件:
../input/數據集的名字/上傳的文件名字
- 對於上傳了壓縮包:
../input/數據集的名字/壓縮包的名字/壓縮包底下的路徑
-
其中上述的
圖片路徑的
.txt文件
不能單純按照【AI實戰】動手訓練自己的目標檢測模型(YOLO篇)來做,你要將路徑替換成上述第二點描述的那樣。因為你執行的主腳本文件並不是在你上傳的東西里面,你需要使用類似../input/XXX/XXX
的格式來調用你上傳的東西。 -
對於腳本中的文件路徑也是如此,類似於上述的第三點來做。否則會提示會找不到你上傳的文件。實際上有關路徑的一切東西都要按照上述的路徑規則來做,否則就找不到文件。
-
如果提示
import
時找不到文件,這是因為你上傳的包沒有加入系統變量,那么你需要:1
2
3import sys
kaggle_path_prefix = "../input/keras-yolov3tiny-voc2007/keras-yolo3/"
sys.path.append(kaggle_path_prefix)
這里請根據你的實際情況修改上述kaggle_path_prefix
的值。
這里kaggle_path_prefix
目錄下需要包含那個你剛剛上傳的壓縮包里名叫yolo3
的Python
包的文件夾。
- 保存文件的路徑請直接填寫文件名,像這樣:
1 |
model.save_weights('trained_weights_final.h5') |
這是因為input
文件夾是只讀的,且保存到其他地方去無法輸出下載,你也找不到輸出的文件。況且當Kernel
關閉后你的一切東西就會丟失。
運行並提交
點擊頂部標題欄亮起的藍色Commit
按鈕,以運行全部代碼並保存結果,最后它會保存你輸出的文件。
如果允許的窗口不慎點沒了,可以右側的Versions
中,點擊:
重新彈出運行的窗口(除非你點了Cancel commit
)。
運行完畢后,點擊:
來打開Kernel
頁面。
如果你有輸出文件,在左側的:
點擊Output
就可以切換到輸出的文件列表,然后就可以下載你輸出的文件啦,選中你想要的模型下載即可。
如果運行出錯,請點擊上圖所示的Log
查看錯誤日志(有必要時點擊Download Log
按鈕下載日志到本地),按照錯誤提示修復錯誤即可。
再次訓練
只需將原本的模型文件數據集刪除,然后再添加上傳上去,再次Commit
就好了。
刪除數據集的步驟:
-
點擊數據集旁邊的那個紅色的叉叉,將數據集從當前
Kernel
移除 -
點擊自己的頭像,進入
My Profile
頁面,然后點擊Datasets
- 然后點擊
Settings
- 最后點擊
Delete Dataset
並確認即可