「精品教程」Google Colab 免費 GPU 使用教程(轉)

原文地址:谷歌Colab免費GPU教程

作者:fuat

譯文出自:掘金翻譯計劃

本文永久鏈接:https:
//github.com/xitu/gold-miner/blob/master/TODO1/google-colab-free-gpu-tutorial.md

譯者:haiyang-tju

校對者:DevMcryYu

Google Colab 免費 GPU 使用教程

現在你可以使用 Google Colaboratory(帶有免費的 Tesla K80 GPU)使用 Keras、Tensorflow 和 PyTorch 來開發深度學習的程序了。

「精品教程」Google Colab 免費 GPU 使用教程(轉)

大家好!我將向大家展示如何使用 Google 面向 AI 開發者的免費雲服務 —— Google Colab。在 Colab 上,你可以使用免費的 GPU 來開發深度學習應用程序。

感謝 KDnuggets!

我很高興地宣佈,這篇博文在 2018 年 2 月被選為 KDnuggets 的銀質博文!文章內容可以在 KDnuggets 看到。

「精品教程」Google Colab 免費 GPU 使用教程(轉)

Google Colab 是什麼?

Google Colab 是一個免費的雲服務,現在它還支持免費的 GPU!

你可以:

  • 提高你的 Python 語言的編碼技能。
  • 使用 KerasTensorFlowPyTorchOpenCV 等流行庫開發深度學習應用程序。

Colab 與其它免費的雲服務最重要的區別在於:Colab 提供完全免費的 GPU。

關於這項服務的詳細信息可以在 faq 頁面上找到。

準備好使用 Google Colab

在 Google Drive 上創建文件夾

「精品教程」Google Colab 免費 GPU 使用教程(轉)

由於 Colab 是在 Google Drive 上工作的,所以我們需要首先指定工作文件夾。我在 Google Drive 上創建了一個名為 “app” 的文件夾。當然,你可以使用不同的名稱或選擇默認的 Colab Notebooks 文件夾,而不是 app 文件夾

「精品教程」Google Colab 免費 GPU 使用教程(轉)

我創建了一個空的 “app” 文件夾

創建新的 Colab 筆記(Notebook)

通過 右鍵點擊 > More > Colaboratory 步驟創建一個新的筆記。

「精品教程」Google Colab 免費 GPU 使用教程(轉)

右鍵點擊 > More > Colaboratory

通過點擊文件名來

重命名筆記

「精品教程」Google Colab 免費 GPU 使用教程(轉)

設置免費的 GPU

通過很簡單的步驟就可以將默認硬件從 CPU 更改為 GPU,或者反過來。依照下面的步驟 Edit > Notebook settings 或者進入 Runtime > Change runtime type,然後選擇 GPU 作為 Hardware accelerator(硬件加速器)

「精品教程」Google Colab 免費 GPU 使用教程(轉)

使用 Google Colab 運行基本的 Python 代碼

現在我們可以開始使用 Google Colab 了。

「精品教程」Google Colab 免費 GPU 使用教程(轉)

我會運行一些 Python Numpy 教程中關於基本數據類型的代碼。

「精品教程」Google Colab 免費 GPU 使用教程(轉)

可以正常運行!:) 如果你對在 AI 中最流行的編程語言 Python 還不是很瞭解,我推薦你去學習這個簡明教程。

在 Google Colab 中運行或導入 .py 文件

首先運行這些代碼,以便安裝一些必要的庫並執行授權。

from google.colab import drive
drive.mount('/content/drive/')
複製代碼

運行上面的代碼,會得到如下的結果:

「精品教程」Google Colab 免費 GPU 使用教程(轉)

點擊 這個鏈接,複製驗證代碼並粘貼到下面的文本框中。

完成授權流程後,應該可以看到:

「精品教程」Google Colab 免費 GPU 使用教程(轉)

現在可以通過下面的命令訪問你的 Google Drive 了:

!ls "/content/drive/My Drive/"
複製代碼

安裝 Keras

!pip install -q keras
複製代碼

上傳文件 mnist_cnn.py 到你的 Google Driveapp 文件夾中。

「精品教程」Google Colab 免費 GPU 使用教程(轉)

mnist_cnn.py 文件內容

在 MNIST 數據集上運行下面的代碼來訓練一個簡單的卷積網絡(convnet)。

!python3 "/content/drive/My Drive/app/mnist_cnn.py"
複製代碼
「精品教程」Google Colab 免費 GPU 使用教程(轉)

從結果可以看到,每輪次(epoch)運行只用了 11 秒

下載 Titanic 數據集(.csv 文件)並顯示文件的前 5 行內容

如果你想從一個 url 中下載 .csv 文件到 “app” 文件夾,只需運行下面的命令:

!wget raw.githubusercontent.com/vincentarel… -P "/content/drive/My Drive/app"

不使用 wget 方法,你可以直接將自己的 .csv 文件上傳到 “app” 文件夾中。

「精品教程」Google Colab 免費 GPU 使用教程(轉)

讀取 “

app” 文件夾中的 .csv 文件並顯示前 5 行的內容

import pandas as pd
titanic = pd.read_csv(“/content/drive/My Drive/app/Titanic.csv”)
titanic.head(5)
複製代碼
「精品教程」Google Colab 免費 GPU 使用教程(轉)

克隆 GitHub 倉庫到 Google Colab

使用 Git 可以很輕鬆克隆 GitHub 倉庫。

步驟 1: 找到 GitHub 倉庫並獲取 “Git” 鏈接

找到所需的 GitHub 倉庫。

比如: github.com/wxs/keras-m…

點擊 Clone or download(克隆或下載) > Copy the link(複製鏈接)!

「精品教程」Google Colab 免費 GPU 使用教程(轉)

2. 使用 Git 克隆

運行以下命令即可:

!git clone github.com/wxs/keras-m…

「精品教程」Google Colab 免費 GPU 使用教程(轉)

3. 打開 Google Drive 中對應的文件夾

當然,Google Drive 中對應的文件夾與 GitHub 倉庫名是相同的。

「精品教程」Google Colab 免費 GPU 使用教程(轉)

4. 打開筆記

右鍵點擊 > Open With > Colaboratory

「精品教程」Google Colab 免費 GPU 使用教程(轉)

5. 運行

現在你可以在 Google Colab 中運行 GitHub 倉庫代碼了。

「精品教程」Google Colab 免費 GPU 使用教程(轉)

一些有用的提示

1. 如何安裝第三方庫?

Keras

!pip install -q keras
import keras
複製代碼

PyTorch

from os import path
from wheel.pep425tags import get_abbr_impl, get_impl_ver, get_abi_tag
platform = '{}{}-{}'.format(get_abbr_impl(), get_impl_ver(), get_abi_tag())
accelerator = 'cu80' if path.exists('/opt/bin/nvidia-smi') else 'cpu'
複製代碼

!pip install -q download.pytorch.org/whl/{accele… torchvision

import torch

或者試試這個:

!pip3 install torch torchvision

MxNet

!apt install libnvrtc8.0
!pip install mxnet-cu80
import mxnet as mx
複製代碼

OpenCV

!apt-get -qq install -y libsm6 libxext6 && pip install -q -U opencv-python
import cv2
複製代碼

XGBoost

!pip install -q xgboost==0.4a30
import xgboost
複製代碼

GraphViz

!apt-get -qq install -y graphviz && pip install -q pydot
import pydot
複製代碼

7zip 閱讀器

!apt-get -qq install -y libarchive-dev && pip install -q -U libarchive
import libarchive
複製代碼

其它庫

!pip install 或者 !apt-get install 安裝其它庫。

2. GPU 是否正常工作?

要查看是否在 Colab 中正確使用了 GPU,可以運行下面的代碼進行交叉驗證:

import tensorflow as tf
tf.test.gpu_device_name()
複製代碼
「精品教程」Google Colab 免費 GPU 使用教程(轉)

3. 我使用的是哪一個 GPU?

from tensorflow.python.client import device_lib
device_lib.list_local_devices()
複製代碼

目前, Colab 只提供了 Tesla K80

「精品教程」Google Colab 免費 GPU 使用教程(轉)

4. 輸出 RAM 信息?

!cat /proc/meminfo
複製代碼
「精品教程」Google Colab 免費 GPU 使用教程(轉)

5. 輸出 CPU 信息?

!cat /proc/cpuinfo
複製代碼
「精品教程」Google Colab 免費 GPU 使用教程(轉)

6. 改變工作文件夾

一般,當你運行下面的命令:

!ls
複製代碼

你會看到 datalab 和 drive 文件夾。

因此,在定義每一個文件名時,需要在前面添加

drive/app

要解決這個問題,更改工作目錄即可。(在本教程中,我將其更改為 app 文件夾)可以使用下面的代碼:

import os
os.chdir("drive/app") 
# 譯者注:掛載網盤目錄後,前面沒有切換過目錄,這裡應該輸入
# os.chdir("drive/My Drive/app")
複製代碼

運行上述代碼後,如果你再次運行

!ls
複製代碼

你會看到 app 文件夾的內容,不需要再一直添加 drive/app 了。

7. “No backend with GPU available” 錯誤解決方案

如果你遇到這個錯誤:

Failed to assign a backend No backend with GPU available. Would you like to use a runtime with no accelerator? #指定後端失敗。沒有可用的 GPU 後端。需要使用沒有加速器的運行時嗎?

可以稍後再試一次。有許多人現在都在使用 GPU,當所有 GPU 都在使用時,就會出現這種錯誤信息。

參考這裡

8. 如何清空所有單元行的運行輸出?

可以依次點擊 Tools>>Command Palette>>Clear All Outputs

9. “apt-key output should not be parsed (stdout is not a terminal)” 警告

如果你遇到這個警告:

Warning: apt-key output should not be parsed (stdout is not a terminal) #警告:apt-key 輸出無法被解析(當前 stdout 不是終端)
複製代碼

這意味著你已經完成了授權。只需要掛載 Google Drive 即可:

!mkdir -p drive
!google-drive-ocamlfuse drive
複製代碼

10. 如何在 Google Colab 中使用 Tensorboard?

我推薦參考這個倉庫代碼:

github.com/mixuala/col…

11. 如何重啟 Google Colab?

要重啟(或重置)你打開的虛擬機器,運行下面的命令即可:

!kill -9 -1
複製代碼

12. 如何向 Google Colab 中添加表單(Form)?

為了避免每次在代碼中更改超參數,你可以簡單地向 Google Colab 中添加表單。

「精品教程」Google Colab 免費 GPU 使用教程(轉)

例如,我添加了一個包含有 learning_rate(學習率) 變量和 optimizer(優化器) 字符串的表單。

「精品教程」Google Colab 免費 GPU 使用教程(轉)

13. 如何查看方法的參數?

在 TensorFlow、Keras 等框架中查看方法的參數,可以在方法名稱後面添加問號標識符(?)

「精品教程」Google Colab 免費 GPU 使用教程(轉)

這樣不需要點擊 TensorFlow 的網站就可以看到原始文檔。

「精品教程」Google Colab 免費 GPU 使用教程(轉)

14. 如何將大文件從 Colab 發送到 Google Drive?

# 需要發送哪個文件?
file_name = "REPO.tar"
from googleapiclient.http import MediaFileUpload
from googleapiclient.discovery import build
auth.authenticate_user()
drive_service = build('drive', 'v3')
def save_file_to_drive(name, path):
 file_metadata = {'name': name, 'mimeType': 'application/octet-stream'}
 media = MediaFileUpload(path, mimetype='application/octet-stream', resumable=True)
 created = drive_service.files().create(body=file_metadata, media_body=media, fields='id').execute()
 
 return created
save_file_to_drive(file_name, file_name)
複製代碼

15. 如何在 Google Colab 中運行 Tensorboard?

如果你想在 Google Colab 中運行 Tensorboard,運行下面的代碼。

# 你可以更改目錄名
LOG_DIR = 'tb_logs'
!wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
!unzip ngrok-stable-linux-amd64.zip
import os
if not os.path.exists(LOG_DIR):
 os.makedirs(LOG_DIR)
 
get_ipython().system_raw(
 'tensorboard --logdir {} --host 0.0.0.0 --port 6006 &'
 .format(LOG_DIR))
get_ipython().system_raw('./ngrok http 6006 &')
!curl -s http://localhost:4040/api/tunnels | python3 -c \
 "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"
複製代碼

你可以通過創建 ngrok.io 鏈接來追蹤 Tensorboard 日誌。你可以在輸出的最後找到這個 URL 鏈接。

注意,你的 Tensorboard 日誌將保存到 tb_logs 目錄。當然,你可以更改這個目錄名。

「精品教程」Google Colab 免費 GPU 使用教程(轉)

之後,我們就可以看到 Tensorboard 了!運行下面的代碼,可以通過 ngrok URL 鏈接來追蹤 Tensorboard 日誌。

from __future__ import print_function
import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras import backend as K
from keras.callbacks import TensorBoard
batch_size = 128
num_classes = 10
epochs = 12
# 輸入圖像維度
img_rows, img_cols = 28, 28
# the data, shuffled and split between train and test sets
(x_train, y_train), (x_test, y_test) = mnist.load_data()
if K.image_data_format() == 'channels_first':
 x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols)
 x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols)
 input_shape = (1, img_rows, img_cols)
else:
 x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)
 x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)
 input_shape = (img_rows, img_cols, 1)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
print('x_train shape:', x_train.shape)
print(x_train.shape[0], 'train samples')
print(x_test.shape[0], 'test samples')
# 將類別向量轉換成二分類矩陣
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),
 activation='relu',
 input_shape=input_shape))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))
model.compile(loss=keras.losses.categorical_crossentropy,
 optimizer=keras.optimizers.Adadelta(),
 metrics=['accuracy'])
tbCallBack = TensorBoard(log_dir=LOG_DIR, 
 histogram_freq=1,
 write_graph=True,
 write_grads=True,
 batch_size=batch_size,
 write_images=True)
model.fit(x_train, y_train,
 batch_size=batch_size,
 epochs=epochs,
 verbose=1,
 validation_data=(x_test, y_test),
 callbacks=[tbCallBack])
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
複製代碼

Tensorboard :)

「精品教程」Google Colab 免費 GPU 使用教程(轉)

總結

我認為 Colab 會給全世界的深度學習和 AI 研究帶來新的氣息。

如果你發現了這篇文章很有幫助,那麼請給它一些掌聲 ,並與他人分享,這將會非常有意義。歡迎在下面留言。

作者:leeyang-tju

鏈接:
https://juejin.im/post/5c05e1bc518825689f1b4948

來源:掘金

著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。


分享到:


相關文章: