5
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Google Colabを快適に使うための設定、メモ

Last updated at Posted at 2021-09-30

はじめに

Pythonの実行環境構築はJupyter labやVScode、docker、GCPのAI Platformなど色々使ってきましたが、一周回ってGoogle Colab Proが構築の楽さと費用面から良いなあと感じているこの頃。

特に自分のメインの学習内容が、画像データなのでGPUが使えることはマストなのです。

GCPのAI platformは一々立ち上げて、終了してってやるのがめんどくさい。

Google Colabならブラウザで立ち上げるだけで楽ちんです。

と、散々褒めちぎってますが、不便な部分(90分制限、12時間制限など)があるのも確かです。

なんとか快適に画像分類などのタスクを行えないか試行錯誤して今の形に落ち着いたのでメモ。

Google Driveと連携する

元となる画像データなどは全てGoogle Driveにアップロードしておきます。

左のフォルダマークをクリックして上部の一番右のアイコンをクリックすればDriveと連携できます。

以下は連携済みの様子。
スクリーンショット 2021-09-30 15.31.53(2).png

driveフォルダの中にMyDriveというフォルダがありここから、GoogleDrive上のデータにアクセスできます。

データをcontent直下にコピーする

MyDrive上から画像データを持ってきてndarray形式にしたり、データセットを作ってもいいですが、めちゃくちゃ遅いです。
そのためdriveの上の階層のcontent直下にデータをコピーすることでで読み込み速度を速くします。

使うものはフォルダのコピーや移動、削除を行えるshutilというライブラリを使います。

import shutil
shutil.copytree(data_path, '/content/datasets')

datapathはコピーしたい元データのパス
第二引数にコピー先のパスを指定して使用します。

90分制限に対応する

コチラの記事に詳しく書いています。

要は自動的にマウスが動く仕組みならなんでもいいと思います()

12時間(proなら24時間)制限に対応する

これは強制的にストップしてしまうのでどうしようもないです。
従って、途中から学習が再開できる仕組みを整えればokです。

TensorFlowであればcallbackのModelCheckpointを設定しておけばいいですね。

参考
filepath = '/content/drive/MyDrive/checkpoint/epoch_{epoch:02d}-loss_{val_loss:.2f}-psnr_{val_psnr:.4f}-ssim_{val_ssim:.4f}.h5'

checkpoint = tf.keras.callbacks.ModelCheckpoint(filepath, monitor='val_loss', verbose=0, 
                                                save_best_only=False, save_weights_only=False, mode='auto', period=100)

モデルの保存もGoogleDrive上に保存するようにします。
またモデルのパスにはエポック数や評価指標の値を含むようにします。

スクリーンショット 2021-09-30 15.48.35.png

こんな感じで指定のエポックごとにモデルが保存されていきます。

もし学習が途中で止まったらここからload_modelすればokです。

その他便利なコマンドなど

gpu_info = !nvidia-smi
gpu_info = '\n'.join(gpu_info)
print(gpu_info)

上記コマンドで割り当てられているGPUの種類が確認できます。

def set_seed(seed=46):
    os.environ['TF_DETERMINISTIC_OPS'] = '1'
    tf.random.set_seed(seed)

学習の再現性担保のため乱数シードの設定はマストです。
いちいち環境変数とTensorFlowのシード設定を書くのが面倒なので関数化しています。

その他、自分の設定は以下です。
スクリーンショット 2021-09-30 15.54.21(2).png

Jupyter Labをメインで使ってたので、予測をTabキーを押して表示するのに慣れているので「コード入力時の候補を自動的に表示する」はオフにしています。

まとめ

上記設定というか、やり方でかなり快適に学習を行えるようになりました。これで月額1000円ほどはもはや無料では(?)

Colab Proから抜け出せそうにないですね。Pro+にアップグレードも検討中です。

Colabユーザーの参考になれば幸いです。

5
8
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
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?