LoginSignup
5
5

More than 1 year has passed since last update.

【徹底解説】初心者のためのGoogle Colaboratoryの使い方

Last updated at Posted at 2021-10-09

1. 背景

Google Colaboratory(略称 Google Colab)はブラウザから Python を記述、実行できるサービスです。
今回はその使い方を覚書程度に残していきたと思います。

2.新規ノートの作成

新規ノートの作成には
・Google Colabサイトから作成
・Google Driveから作成
の2通りの方法があります。

いずれもノートブックを作成するとマイドライブ下に「Colab Notebooks」というフォルダが作成されます。

2-1. Google Colabサイトから作成

以下のリンクがGoogle Colabの紹介ページのようなものになっています。

このページの「ファイル」- 「ノートブックを新規作成」で作成することができます。

image.png

2-2. Google Driveから作成

Google Drive左上の「+新規」ボタンを押すと以下の選択肢が表示されます。
ここで「その他」-「Google Colaboratory」を押すことで新規作成することができます。

image.png

3. GPUの設定

Google Colabの特徴として、GPUを無料で使えることがあげられます。
(実行時間は12時間に限られる)

GPUを使用する設定の仕方を説明します。

「ランタイム」-「ランタイムのタイプを変更」を選択し、
image.png

この部分をGPUにすれば良いです。
image.png

4. ライブラリの追加

Google Colabには機械学習に必要な主要ライブラリがあらかじめインストールされています。
インストール済みライブラリは以下のコードで表示できます。

from pip._internal.utils.misc import get_installed_distributions
installed_packages = get_installed_distributions()
installed_packages_list = sorted(["%s==%s" % (i.key, i.version)
     for i in installed_packages])
print(installed_packages_list)
['absl-py==0.12.0', ・・・,'matplotlib==3.2.2', ・・・, 'numpy==1.19.5', ・・・, 'pandas==1.1.5', ・・・, 'tensorflow==2.6.0', ・・・, 'zipp==3.6.0']

例えば、janomeを追加したいときは以下のコマンドとなります。
(!で始めまるセルはLinuxコマンドとして解釈されます。)

!pip install janome

5. データの保存(アウトプット)

学習済みのモデル等をGoogle Driveに保存する方法を説明します。
まず、Google Driveをマウントした後に、パスを指定して保存となります。

5-1. Google Driveをマウント

まず以下のコードを実行します。

from google.colab import drive
drive.mount('/content/gdrive')

するとこんな表示が出てくるので、①のリンクにアクセスし、Googleにログインします。
ログイン後に出てくるコードをコピーして②に入力するとマウントされます。
image.png
 
マウント完了すると以下のような表示になります。
image.png

5-2. 学習済みのモデルの保存

「3. GPUの設定」で少し述べた通り、
Google Colabでの実行時間は12時間に限られます。

12時間を超える処理の際などは、一度モデルを保存する必要があります。

例えばサンプルで以下のようなモデルを作成してみます。

import os
import tensorflow as tf
from tensorflow import keras

# サンプルデータセット取得
(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()

train_labels = train_labels[:1000]
test_labels = test_labels[:1000]

train_images = train_images[:1000].reshape(-1, 28 * 28) / 255.0
test_images = test_images[:1000].reshape(-1, 28 * 28) / 255.0

# モデルの定義
def create_model():
  model = tf.keras.models.Sequential([
    keras.layers.Dense(512, activation='relu', input_shape=(784,)),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(10)
  ])

  model.compile(optimizer='adam',
                loss=tf.losses.SparseCategoricalCrossentropy(from_logits=True),
                metrics=[tf.metrics.SparseCategoricalAccuracy()])

  return model

# モデル作成
model = create_model()

model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense (Dense)                (None, 512)               401920    
_________________________________________________________________
dropout (Dropout)            (None, 512)               0         
_________________________________________________________________
dense_1 (Dense)              (None, 10)                5130      
=================================================================
Total params: 407,050
Trainable params: 407,050
Non-trainable params: 0
_________________________________________________________________

このモデル全体を保存するには、以下のコードを実行します。

!mkdir -p ColabNotebooks
model.save("/content/gdrive/MyDrive/ColabNotebooks") 

以下の2ファイルがGoogle Driveに保存されます。
image.png

モデルの読み込みは以下の通り。

new_model = tf.keras.models.load_model("/content/gdrive/MyDrive/ColabNotebooks")

new_model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense (Dense)                (None, 512)               401920    
_________________________________________________________________
dropout (Dropout)            (None, 512)               0         
_________________________________________________________________
dense_1 (Dense)              (None, 10)                5130      
=================================================================
Total params: 407,050
Trainable params: 407,050
Non-trainable params: 0
_________________________________________________________________

モデルが読み込まれていることが確認できます。

フォルダのパスについては、画面左側のフォルダマークをクリックすることで確認できます。
右クリックでパスのコピーもできます。
image.png

6. データのアップロード

データのアップロードは、マウント無し/有りの2パターンがあります。

6-1. ドラッグ&ドロップ(マウント無し)

ファイルをドラッグ&ドロップすることで簡単にアップロードすることができます。

image.png

ファイルはランタイムのリサイクル時に削除されてしまうので、
一時的に使いたいファイルの時に用います。

中身は以下のコードで確認することができます。

import csv

with open('/content/sample_data/test.csv') as f:
    print(f.read())
1,2
3,4

6-2. Google Driveにアップロード(マウント後)

「4-1 Google Driveをマウント」でマウントした後であれば、
Google Driveにファイルをアップロードし、
そこから読み込むこともできます。
image.png

Google Drveにアップロードすると以下のように反映されます。
image.png

ここにファイルアップロードしていれば、以下のコードで読み込めます。

import csv

with open('/content/gdrive/MyDrive/Colab Notebooks/test.csv') as f:
    print(f.read())
1,2
3,4

7. 備考:90分ルールと120分ルール

Google Colaboratoty には90分ルールと12時間ルールがあり、注意が必要です。

90分ルール:ノートブックの使用をやめてから90分
12時間ルール:ノートブックを実行し、仮想マシンの割り当てから12時間

で実行が停止されてしまいます。

90分ルールにはChromeのAutoRefresh機能が有効です。

この画面で時間をセットしStartを押すと、一定時間ごとに画面が更新されます。
image.png

1回目の更新時は下記のポップアップが出ますので、再度読み込みが必要となります。
image.png

また、90分/12時間ルールからオーバーし、最初から実行する場合は、
「ランタイム」- 「再起動してすべてのセルを実行」を選択すると良いと思います。

image.png

8. まとめ

以上にGoogle Colaboratoryの使い方をまとめてみました。
無料でこれだけ使えるのはありがたいですね。
その分、実行内容などはGoogleに情報を蓄積されているのかとは思いますが。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5