#1. 背景
Google Colaboratory(略称 Google Colab)はブラウザから Python を記述、実行できるサービスです。
今回はその使い方を覚書程度に残していきたと思います。
#2.新規ノートの作成
新規ノートの作成には
・Google Colabサイトから作成
・Google Driveから作成
の2通りの方法があります。
いずれもノートブックを作成するとマイドライブ下に「Colab Notebooks」というフォルダが作成されます。
##2-1. Google Colabサイトから作成
以下のリンクがGoogle Colabの紹介ページのようなものになっています。
このページの「ファイル」- 「ノートブックを新規作成」で作成することができます。
##2-2. Google Driveから作成
Google Drive左上の「+新規」ボタンを押すと以下の選択肢が表示されます。
ここで「その他」-「Google Colaboratory」を押すことで新規作成することができます。
#3. GPUの設定
Google Colabの特徴として、GPUを無料で使えることがあげられます。
(実行時間は12時間に限られる)
GPUを使用する設定の仕方を説明します。
#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にログインします。
ログイン後に出てくるコードをコピーして②に入力するとマウントされます。
マウント完了すると以下のような表示になります。
##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")
モデルの読み込みは以下の通り。
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
_________________________________________________________________
モデルが読み込まれていることが確認できます。
フォルダのパスについては、画面左側のフォルダマークをクリックすることで確認できます。
右クリックでパスのコピーもできます。
#6. データのアップロード
データのアップロードは、マウント無し/有りの2パターンがあります。
##6-1. ドラッグ&ドロップ(マウント無し)
ファイルをドラッグ&ドロップすることで簡単にアップロードすることができます。
ファイルはランタイムのリサイクル時に削除されてしまうので、
一時的に使いたいファイルの時に用います。
中身は以下のコードで確認することができます。
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にファイルをアップロードし、
そこから読み込むこともできます。
Google Drveにアップロードすると以下のように反映されます。
ここにファイルアップロードしていれば、以下のコードで読み込めます。
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を押すと、一定時間ごとに画面が更新されます。
1回目の更新時は下記のポップアップが出ますので、再度読み込みが必要となります。
また、90分/12時間ルールからオーバーし、最初から実行する場合は、
「ランタイム」- 「再起動してすべてのセルを実行」を選択すると良いと思います。
#8. まとめ
以上にGoogle Colaboratoryの使い方をまとめてみました。
無料でこれだけ使えるのはありがたいですね。
その分、実行内容などはGoogleに情報を蓄積されているのかとは思いますが。