Google Colab でモデルを学習する際のメモ
最近、Google Colabでちょっと重いモデルの学習を行った。
その際に、気になった点がいくつかあったのでメモ。
Colabではモデルの学習時間の比較を行っていけないと思った2つの理由。
(対処法がわかる方は教えていただけると嬉しいです)
90分問題
問題
Colabの有名な特徴の1つ目である、90分問題です。
実行中のノートブックに90分間アクセスしないと、セッションが切れてしまいます。
だからといって、いちいち手動でアクセスするのはめんどくさいですね。。。
対処法
こちらの方のコードを参考にしました。
60分に1回、コピペしたURLに飛んでくれるので、途中でセッションが切れることはありません。
ただし、パソコンの電源はきるわけにはいかないのが悲しいですね。
12時間問題
問題
Colabの有名な特徴の2つ目である、12時間問題です。
90分問題を対処しても、最大12時間でプログラムの実行は止まります。
ここに以下のように書いてありました。
ノートブックは、最大存続期間が最長 12 時間の仮想マシンに接続することで実行されます。
これは僕の実体験ですが、12時間も動いたことがないです。
もしかしたら僕のミスなのかもしれませんが、最短3時間弱で実行が終わっていました。
ちょっと大変なモデルを学習させているときは、最大でも7時間弱しか連続で計算できませんでした。
なので、正直僕は12時間という制限を疑っています。
(単に僕が使いすぎで、制限がきついのか、GPUだからか、わかんないな)
あと、12時間問題で実行が終わったあとは、数時間の使用制限があります(GPUだけかも)
あれ、急にプログラムの実行が終わるってことは学習していたモデルも全部パーになっちゃう?!?!
対処法
ちょこちょこモデルを保存しましょう。
なんと!ColabからGoogle Driveにアクセスできます。
そこで、1エポックごと等のタイミングでモデルを自分のGoogle Driveに保存することをオススメします。
続きから学習を行うときは、保存したモデルをロードすれば解決します。
GPU2つまで問題
そこまで知られていない問題だと思います。
これは、いくつかのモデルを動かしたい人だけが困っちゃう問題なのですが、
GPUを使って3つのノートブックを実行しようとすると、3つ目が実行されません。
使いすぎって怒られちゃいます。
対策はないです。(たぶん)
Proに課金したらいけるんかな。
2つまでで我慢しましょう。
GPUの種類問題
問題
Colabで使用できるGPUは4種類あります。
と、上のサイトにも書いてあります。
しかし、これらを選択する権利はユーザには与えられません。
対処法
僕らユーザができるのは、「!nvidia-smi -L」とうって、GPUを確認することのみです。
学習時間を測りたいなどの人はこのコマンドでGPUを確認することをオススメします。
しかし、Colabでモデルごとの学習時間を比較することはオススメできません。
GPUを統一したとしても、です。
理由は次の章です。
メモリの量問題
この問題はあまり見たことがなく、
正直、メモリが問題なのかどうかはわかってないのですが、、、
先日、Colabでいくつかのモデルを学習させていたのですが、
同じモデルを続きから学習させているのに、明らかに学習速度が初回に比べて遅い(または速い)
といった現象がわりと起こりました。(もちろんGPUは同じ)
具体的に1エポックごとの時間を比較してみると、1.5~2倍遅い(または速い)。
原因は正直不明なのですが、
また、追加のメモリを備えた仮想マシンが必要になりそうだということが Colab で検出されると、自動的にメモリの割り当てられる場合があります。
とある(原文そのまま)ので、おそらくメモリが割り当てられたときが速く、そうでないときが遅いのかなと思います。
最後に
なんかColabをディスったみたいな記事になりましたが、大好きですColab!
無料でこんなにGPUを使えるのはありがたすぎる!!
GPUがのったパソコンを買おうかと考えた時がありましたが、Colab Proに課金した方が確実にコスパ良さそうな気がしますね!
見てくれてありがとうね!