在Kaggle上免费使用GPU
Intro
Kaggle提供免費訪問內核中的NVidia K80 GPU。該基準測試表明,在深度學習模型的訓練過程中,為您的內核啟用GPU可實現12.5倍的加速。
這個內核是用GPU運行的。我將運行時間與在CPU上訓練相同模??型內核的運行時間進行比較。
GPU的總運行時間為994秒。僅具有CPU的內核的總運行時間為13,419秒。這是一個12.5倍的加速(只有一個CPU的總運行時間是13.5倍)。
將比較僅限于模型訓練,我們看到CPU從13,378秒減少到GPU的950秒。因此,模型訓練加速有點超過13倍。
確切的加速度取決于許多因素,包括模型架構,批量大小,輸入管道復雜性等。也就是說,GPU在Kaggle內核中開辟了很多可能性。
如果您想將這些GPU用于深度學習項目,您可能會發現我們的深度學習課程是最快速的路徑,以便您可以運行自己的項目。我們還在我們的數據集平臺上添加了新的圖像處理數據集,我們總是有許多競賽讓您使用這些免費的GPU來嘗試新的想法。
以下文本顯示了如何啟用GPU并提供有關基準測試的詳細信息。
Adding a GPU
我們通過首先打開內核控件來設置此內核以在GPU上運行。
?
選擇“設置”項卡。 然后選中啟用GPU的復選框。 驗證GPU是否已連接到控制臺欄中的內核,它應在資源使用情況指標旁邊顯示GPU ON。
?
GPU支持的實例具有較少的CPU功率和RAM。 而且,許多數據科學庫無法利用GPU。 因此,GPU對某些任務很有價值(特別是在使用TensorFlow,Keras和PyTorch等深度學習庫時)。 但是對于大多數其他任務而言,如果沒有GPU,你會更好。
The data
該數據集包含美國手語中29種不同符號的圖像。 這些是26個字母(A到Z)加上空格,刪除和無標記。 我們的模型將查看這些圖像,并學習如何對每張圖像中的符號進行分類。
以下示例圖片
[1]
# Imports for Deep Learning from keras.layers import Conv2D, Dense, Dropout, Flatten from keras.models import Sequential from keras.preprocessing.image import ImageDataGenerator# ensure consistency across runs from numpy.random import seed seed(1) from tensorflow import set_random_seed set_random_seed(2)# Imports to view data import cv2 from glob import glob from matplotlib import pyplot as plt from numpy import floor import randomdef plot_three_samples(letter):print("Samples images for letter " + letter)base_path = '../input/asl_alphabet_train/asl_alphabet_train/'img_path = base_path + letter + '/**'path_contents = glob(img_path)plt.figure(figsize=(16,16))imgs = random.sample(path_contents, 3)plt.subplot(131)plt.imshow(cv2.imread(imgs[0]))plt.subplot(132)plt.imshow(cv2.imread(imgs[1]))plt.subplot(133)plt.imshow(cv2.imread(imgs[2]))returnplot_three_samples('A') Samples images for letter BData Processing Set-Up
[3]
data_dir = "../input/asl_alphabet_train/asl_alphabet_train" target_size = (64, 64) target_dims = (64, 64, 3) # add channel for RGB n_classes = 29 val_frac = 0.1 batch_size = 64data_augmentor = ImageDataGenerator(samplewise_center=True, samplewise_std_normalization=True, validation_split=val_frac)train_generator = data_augmentor.flow_from_directory(data_dir, target_size=target_size, batch_size=batch_size, shuffle=True, subset="training") val_generator = data_augmentor.flow_from_directory(data_dir, target_size=target_size, batch_size=batch_size, subset="validation")Model Specification
[4]
my_model = Sequential() my_model.add(Conv2D(64, kernel_size=4, strides=1, activation='relu', input_shape=target_dims)) my_model.add(Conv2D(64, kernel_size=4, strides=2, activation='relu')) my_model.add(Dropout(0.5)) my_model.add(Conv2D(128, kernel_size=4, strides=1, activation='relu')) my_model.add(Conv2D(128, kernel_size=4, strides=2, activation='relu')) my_model.add(Dropout(0.5)) my_model.add(Conv2D(256, kernel_size=4, strides=1, activation='relu')) my_model.add(Conv2D(256, kernel_size=4, strides=2, activation='relu')) my_model.add(Flatten()) my_model.add(Dropout(0.5)) my_model.add(Dense(512, activation='relu')) my_model.add(Dense(n_classes, activation='softmax'))my_model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=["accuracy"])Model Fitting
[5]
my_model.fit_generator(train_generator, epochs=5, validation_data=val_generator) Epoch 1/5 1224/1224 [==============================] - 206s 169ms/step - loss: 1.1439 - acc: 0.6431 - val_loss: 0.5824 - val_acc: 0.8126 Epoch 2/5 1224/1224 [==============================] - 179s 146ms/step - loss: 0.2429 - acc: 0.9186 - val_loss: 0.5081 - val_acc: 0.8492 Epoch 3/5 1224/1224 [==============================] - 182s 148ms/step - loss: 0.1576 - acc: 0.9495 - val_loss: 0.5181 - val_acc: 0.8685 Epoch 4/5 1224/1224 [==============================] - 180s 147ms/step - loss: 0.1417 - acc: 0.9554 - val_loss: 0.4139 - val_acc: 0.8786 Epoch 5/5 1224/1224 [==============================] - 181s 148ms/step - loss: 0.1149 - acc: 0.9647 - val_loss: 0.4319 - val_acc: 0.8948<keras.callbacks.History at 0x7f5cbb6537b8>?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的在Kaggle上免费使用GPU的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网易云音乐发布首款音乐社交APP:主打高
- 下一篇: 2.Functions and Gett