今天突然看到一篇推文,里面講解了如何薅資本主義羊毛,即如何免費使用Google免費提供的GPU使用權。
可以免費使用的方式就是通過Google Colab,全名Colaboratory。我們可以用它來提高Python技能,也可以用Keras、TensorFlow、PyTorch、OpenCV等等流行的深度學習庫來練習開發深度學習的應用。
現在我們介紹如何免費的使用這個非常非常給力的應用!!!
一 項目建立與配置
(1)在Google Drive上創建文件夾:這項功能的使用主要是通過Google Drive,首先需要在Google Drive里面創建新的文件夾,因為我們所有的操作都是通過Google Drive文件的方式進行的,這里我們創建了一個名為gpu的文件夾,然后打開文件夾;
(2)創建新的Colaboratory:右鍵更多選擇Colaboratory, 如果更多沒有的話,可以點擊關聯更多應用搜索添加即可!
並且這里可以隨意修改文件名
(3)設置后端Python版本和免費的GPU使用:然后就可以進行代碼編寫了~~~
二 授權與掛載
(4)當完成基本的文件建立和配置后,就需要先運行下面這些代碼,來安裝必要的庫、執行授權:
1 !apt-get install -y -qq software-properties-common python-software-properties module-init-tools 2 !add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null 3 !apt-get update -qq 2>&1 > /dev/null 4 !apt-get -y install -qq google-drive-ocamlfuse fuse 5 from google.colab import auth 6 auth.authenticate_user() 7 from oauth2client.client import GoogleCredentials 8 creds = GoogleCredentials.get_application_default() 9 import getpass 10 !google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL 11 vcode = getpass.getpass() 12 !echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}
點擊運行可以看到如下結果:此時,點擊鏈接地址,獲取驗證碼。
點擊鏈接地址,獲取驗證碼。
提示成功!
(5)授權完成后,就可以掛載Google Drive了
1 !mkdir -p drive 2 !google-drive-ocamlfuse drive
三 測試階段
我們使用安裝Keras中的測試樣例代碼進行效果的測試:
1 # -*- coding: utf-8 -*- 2 3 4 '''Trains a simple convnet on the MNIST dataset. 5 Gets to 99.25% test accuracy after 12 epochs 6 (there is still a lot of margin for parameter tuning). 7 16 seconds per epoch on a GRID K520 GPU. 8 ''' 9 10 from __future__ import print_function 11 import keras 12 from keras.datasets import mnist 13 from keras.models import Sequential 14 from keras.layers import Dense, Dropout, Flatten 15 from keras.layers import Conv2D, MaxPooling2D 16 from keras import backend as K 17 18 batch_size = 128 19 num_classes = 10 20 epochs = 12 21 22 # input image dimensions 23 img_rows, img_cols = 28, 28 24 25 # the data, shuffled and split between train and test sets 26 (x_train, y_train), (x_test, y_test) = mnist.load_data() 27 28 if K.image_data_format() == 'channels_first': 29 x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols) 30 x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols) 31 input_shape = (1, img_rows, img_cols) 32 else: 33 x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1) 34 x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1) 35 input_shape = (img_rows, img_cols, 1) 36 37 x_train = x_train.astype('float32') 38 x_test = x_test.astype('float32') 39 x_train /= 255 40 x_test /= 255 41 print('x_train shape:', x_train.shape) 42 print(x_train.shape[0], 'train samples') 43 print(x_test.shape[0], 'test samples') 44 45 # convert class vectors to binary class matrices 46 y_train = keras.utils.to_categorical(y_train, num_classes) 47 y_test = keras.utils.to_categorical(y_test, num_classes) 48 49 model = Sequential() 50 model.add(Conv2D(32, kernel_size=(3, 3), 51 activation='relu', 52 input_shape=input_shape)) 53 model.add(Conv2D(64, (3, 3), activation='relu')) 54 model.add(MaxPooling2D(pool_size=(2, 2))) 55 model.add(Dropout(0.25)) 56 model.add(Flatten()) 57 model.add(Dense(128, activation='relu')) 58 model.add(Dropout(0.5)) 59 model.add(Dense(num_classes, activation='softmax')) 60 61 model.compile(loss=keras.losses.categorical_crossentropy, 62 optimizer=keras.optimizers.Adadelta(), 63 metrics=['accuracy']) 64 65 model.fit(x_train, y_train, 66 batch_size=batch_size, 67 epochs=epochs, 68 verbose=1, 69 validation_data=(x_test, y_test)) 70 score = model.evaluate(x_test, y_test, verbose=0) 71 print('Test loss:', score[0]) 72 print('Test accuracy:', score[1])
這里使用Google GPU的效率每個Epoch大概需要11s左右即可完成
而我們使用實驗室的工作站
每個率每個Epoch大概需要130s+完成
四 相關命令
(1)查看是否使用GPU:
1 import tensorflow as tf 2 tf.test.gpu_device_name()
(2)在使用哪個GPU:
1 from tensorflow.python.client import device_lib 2 device_lib.list_local_devices()
(3)RAM大小:
1 !cat /proc/meminfo
當然Google的使用需要自備翻牆工具!
原文鏈接:https://medium.com/deep-learning-turkey/google-colab-free-gpu-tutorial-e113627b9f5d