🎥

Google Colab Pro+で実用的な機械学習使用法

2021/09/19に公開

pro+で個人が深層学習で動画を扱える時代になった。

Google Colab Pro+が登場しました。
無料版ではバックグラウンド処理が無く、最大12時間稼働させるためには定期的に監視するマクロを作らなきゃいけませんでしたが、なんとPro+では最大24時間でバックグラウンド処理が可能に!
月額5000円は電気代だけでも元が取れるくらい安いのに、高確率でV100が使えるんだからマジヤバイ。
遊ぶだけなら無料版で十分なんだけど、V100を24時間使えるならpix2pixの推論も画像だけでなくHD動画処理も実用に手が届く処理時間になった。未来スゲェや。

というわけで、GoogleColabの便利な運用方法を書いていきます。

Slackで処理完了通知(処理時間付き)

import time
import datetime
time_start = time.time()
#---------------------------------------------
##色々な重い処理##
#---------------------------------------------

#Colabの稼働時間
t = time.time() - time_start
ts = datetime.timedelta(seconds=round(t))

#Slackに完了通知
import requests, json
WEB_HOOK_URL = "用意したWEB_HOOK_URL"
requests.post(WEB_HOOK_URL, data = json.dumps({
    'text': u'実行完了:'+str(ts), 
    'username': u'ClabBOT',  
    'icon_emoji': u':smile_cat:',  
    'link_names': 1,  
}))

Colabを実行する際は毎回ブラウザから手動で実行させなければならないので、処理完了後すぐに再度稼働させたい時はSlack通知は必須。
あと24時間制限があるので、処理にかかった時間を通知に入れるのは後から見返すときに色々便利です。

GoogleDrive内のファイル移動で処理動画を自動選択

import os
import pathlib

fld = "/content/drive/MyDrive/input/" #@param{type:"string"}
PathFld = pathlib.Path(fld)
if PathFld:
  print("pathOK")
PathFldlist = list(PathFld.glob("**/*.mp4"))
print(PathFldlist)
input = PathFldlist[0]

file_extention = input.suffix
print(file_extention)

#処理開始元データを処理関数の定位置に配置とリネーム
!cp '{input}' '/content/input{file_extention}'

#-----------------------------------------------
##色々な重い処理##
#-----------------------------------------------

#処理終了後
output_path = "/content/drive/MyDrive/output/" #@param{type:"string"}
output_path = output_path + input.name
!cp /content/result/output.mp4 '{output_path}' #推論結果ファイル

!mv  '{input}'  /content/drive/MyDrive/finish  #処理終了元データ

動画の処理は重いのでHD動画のpix2pix推論は1つづつ実行するしかありません。
でも1つづつファイル指定するのは面倒ですよね。
そんなときはinputフォルダに動画を複数入れてファイルリストの先頭だけを処理。
処理が終了したら処理した元データを別フォルダに移しちゃいましょう。
そうすれば次回実行時はファイルリストが変化するので割と楽に運用ができます。

感想

グラボが高騰している中でこういうサービスがあるのは本当に助かります。
この値段でこのスペックを知ってしまうとグラボが買えなくなってしまうよ・・・。
Colabって多分赤字だろうけどサービス続いて欲しいなー。

Discussion