1.Google Colabのパワーユーザー向けのヒントまとめ
・Colabを使うと機械学習の学習者や実践者がハイエンドなGPUにもアクセス可能になる
・メモ用Colab、実行時間測定、一部実行、クラス定義確認、Flask連携、TensorFlow切り替え
・shell起動、リソース状態確認、conda環境のセットアップ、プロ版との比較、など
2.Google Colabを更に使いこなすための20のヒント
以下、amitness.comより「Google Colab Tips for Power Users」の意訳です。元記事の投稿は2020年6月26日、Amit Chaudharyさんによる投稿です。
一昨日から続いたGoogle Colabを使いこなすヒント集の3連投ですが、これら3記事を応用すれば完全無料で世界水準な機械学習/人工知能の開発環境を整える事が出来ると思います。
パワーユーザをイメージしたアイキャッチ画像のクレジットはPhoto by Damir Spanic on Unsplash
Colabは、Googleが提供する最高の製品の1つです。 これにより、ハイエンドなGPUを購入する事ができなかった私のような学習者や実践者がGPUに自由にアクセスできるようになりました。
インターフェースは非常に使いやすいですが、colabにはあまり知られていない、文書化されていない機能がたくさんあります。本投稿では、基本的な使用法と公式講演を聴講した際に発見した機能を共有します。
1.メモ用 notebook
colabで一時的に何かを試す機会は多いのですが、その結果「untitled.ipynb」という名前のnotebookが複数作成されてフォルダが散らかってしまうのはよくある事です。
これを解決するには、以下のURLをブックマークしてください。特殊なメモ用 notebook(scratch notebook)を開く事が出来、そのnotebookに加えた変更は貴方のアカウント内に保存されません。
https://colab.research.google.com/notebooks/empty.ipynb
2.セルの実行時間の測定
コードの開始時間と終了時間を手動で計測して、かかった時間を調べる事はかなり一般的に行われます。
Colabには、これを行うための組み込み機能が用意されています。 セルが実行された後、セル実行アイコンにカーソルを合わせると、実行時間の見積もりが表示されます。
3.セルの一部を実行
セルを選択して[ランタイム]> [選択の実行]ボタンを押すか、キーボードショートカットのCtrl + Shift + Enterを使用して、セルの一部のみを実行する事ができます。
4.Jupyter Notebookキーボードショートカットの実行
貴方がJupyter Notebookのキーボードショートカットに精通していても、それらはColabのキーボードショートカットと異なるので機能しません。しかし、私はそれらを楽に脳内変換するやり方を見付けました。
Jupyterで使用していたキーボードショートカットの前にCtrl + Mを追加するだけです。この経験則は、一般的な使い方であれば大半が機能します。
操作 | Jupyter Notebook | Google Colab |
上にセルを追加 | A | Ctrl + M + A |
下にセルを追加 | B | Ctrl + M + B |
キーボードショートカットを表示 | H | Ctrl + M + H |
セルをコードモードに変換 | Y | Ctrl + M + Y |
セルをマークダウンモードに変換 | M | Ctrl + M + M |
kernelに割り込み | II | Ctrl + M + I |
セルの削除l | DD | Ctrl + M + D |
チェックポイント | Ctrl + S | Ctrl + M + S |
以下は、ショートカットが完全に変更されているか、同じままである、このルールのいくつかの注目すべき例外です。
操作 | Jupyter Notebook | Google Colab |
ランタイムのリスタート | 0 | Ctrl + M + . |
セルの実行 | Ctrl + Enter | Ctrl + Enter |
セルを実行し新規セルを下に追加 | Alt + Enter | Alt + Enter |
セルを実行し下のセルに移動 | Shift + Enter | Shift + Enter |
現在の行にコメントを追加 | Ctrl + / | Ctrl + / |
5.クラス定義を確認
様々なIDEと同様に、Ctrlキーを押しながらクラス名をクリックすると、クラス定義に移動できます。例えば、以下では、Ctrlキーを押しながらDenseクラス名をクリックして、KerasのDenseレイヤーのクラス定義を表示しています。
6.GitHubからノートブックを開く
Google Colabチームは、GitHubでノートブックを直接colabで開くための公式のChromeの拡張機能「Open in Colab」を提供しています。chrome ウェブストアからインストールできます。
インストール後、Chromeの右上に出現するcolabアイコンをクリックして、直接開く事が出来ます。
または、URLの
github.com
の部分を
colab.research.google.com/github
に置き換えて、GitHubノートブックを手動で開くこともできます。
https://github.com/fastai/course-v3/blob/master/nbs/dl1/00_notebook_tutorial.ipynb
を
https://colab.research.google.com/github/fastai/course-v3/blob/master/nbs/dl1/00_notebook_tutorial.ipynb
に置き換えます。
更に簡単な方法は、github.comをgithubtocolab.comに置き換えることです。 colab notebookにリダイレクトされます。
https://github.com/fastai/course-v3/blob/master/nbs/dl1/00_notebook_tutorial.ipynb
を
https://githubtocolab.com/fastai/course-v3/blob/master/nbs/dl1/00_notebook_tutorial.ipynb
7.ColabからFlaskアプリを実行
flask-ngrokと呼ばれるライブラリを使用すると、colabで実行されているFlaskWebアプリをデモ用プロトタイプとして簡単に公開できます。
まず、flaskとflask-ngrokをインストールする必要があります。
!pip install flask-ngrok flask==0.12.2
次に、flaskアプリオブジェクトをrun_with_ngrok関数に渡すだけで、サーバーの起動時にngrokのエンドポイントが公開されます。
from flask import Flask from flask_ngrok import run_with_ngrok app = Flask(__name__) run_with_ngrok(app) @app.route('/') def hello(): return 'Hello World!' if __name__ == '__main__': app.run()
Colabのパッケージ作成者の公式サンプル「flask-ngrok-example.ipynb」でこれを試すことができます。
8.Tensorflowバージョンを切り替える
このマジックフラグを使用して、Tensorflow1とTensorflow2を簡単に切り替えることができます。
Tensorflow 1.15.2に切り替えるには、次のコマンドを使用します。
%tensorflow_version 1.x
Tensorflow 2.2に切り替えるには、次のコマンドを実行します。
%tensorflow_version 2.x
切り替えを有効にするにはランタイムを再起動する必要があります。
パフォーマンス上の理由から、Colabではpipからインストールするのではなく、プリインストールされているTensorflowを使用することをお勧めします。
9.Tensorboardの統合
Colabは、Notebookから直接Tensorboardを使用するための魔法のコマンドも提供します。–logdirフラグを使用してlogsディレクトリの場所を設定する必要があります。
公式notebookから使い方を学ぶことができます。
%load_ext tensorboard %tensorboard --logdir log
10.Colab pro版とfree版の正確なリソース制限比較
Colabの無料バージョンとプロバージョンの違いは以下の仕様となっています。
より優れたランタイム、GPU、メモリが必要な場合は、貴方の使用方法に基づいて、月額$10でプロバージョンに切り替えることができます。(訳注:2020年9月現在、プロ版はアメリカのみで提供)
2021年2月追記)インターネット上で検索すると日本からもColab proが使えたと書いている人もいるのですが、少なくとも私は申し込みしようとするとエラーになり使えていません。また、直近えではFree版でもTesla P100が割り当てられる事があり、Free版も継続的に環境はアップデートされているようです。
2021年4月追記)Colab Proが日本から利用可能になりました。
Version | GPU | GPU Ram | RAM | Storage | CPU Cores | Idle Timeout | Maximum Runtime |
Free | Tesla K80 | 11.44GB | 13.7GB | 37GB | 2 | 90 min | 12 hrs |
Pro | Tesla P100 | 16GB | 27.4GB | 37GB | 4 | 90 min | 24 hrs |
次のコマンドを実行すると、割り当てられたGPUを表示できます。
!nvidia-smi
CPUの詳細については、このコマンドを実行できます。
!cat /proc/cpuinfo
同様に、以下を実行することでRAM容量を表示できます。
import psutil
ram_gb = psutil.virtual_memory().total / 1e9
print(ram_gb)
11.shellプロンプトの起動
Colabには組み込みのインタラクティブなターミナルはありません。
ただし、bashコマンドを使用して、シェルコマンドを対話的に実行する事ができます。以下のコマンドを実行するだけで、インタラクティブな入力ウインドウを得られます。
!bash
これで、指定の入力ボックスで任意のシェルコマンドを実行できます。
シェルを終了するには、入力ボックスに「exit」と入力するだけです。
12.現在のメモリとストレージの使用量を知る
Colabは、RAMとディスクの使用状況の指標を提供します。
画面上部のRAMとDiskの棒グラフにカーソルを合わせると、現在の使用量と総容量を示すポップアップが表示されます。
13.「Colabで開く」印を追加
次のマークダウンコードを使用して、README.mdまたはjupyter notebookに「Open in Colab」バッジを追加できます。
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/notebooks/basic_features_overview.ipynb)
マークダウンコードでは、SVG画像を読み込んでから、それをcolab notebookにリンクしています。
14.Pandas用の操作可能なテーブル
Colabは、Pandasのdataframe に操作可能な並べ替えおよびフィルタリング機能を追加するnotebook拡張機能を提供します。 これを使用するには、次のコードを実行します。
%load_ext google.colab.data_table
貴方は通常のPandas dataframeと、拡張機能を読み込んだ後、操作可能なdataframeを確認できます。
15.conda環境のセットアップ
minicondaをPython環境の管理ツールとして使用している場合は、notebookの上部でこのコマンドを実行することにより、colabでminicondaをセットアップできます。
# Download Miniconda installation script
!wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# Make it executable
!chmod +x Miniconda3-latest-Linux-x86_64.sh
# Start installation in silent mode
!bash ./Miniconda3-latest-Linux-x86_64.sh -b -f -p /usr/local
# Make conda packages available in current environment
import sys
sys.path.append('/usr/local/lib/python3.7/site-packages/')
セルが実行された後、通常どおりcondaを使用してパッケージをインストールできます。
!conda install -y flask
16.コマンドラインからColab Notebookを操作
colab-cliというライブラリを使用して、コマンドラインからcolab notebookを簡単に作成したり貴方のPCのnotebookと同期できます。
17.バックグラウンドでタスクを実行
通常のプログラムを実行する前に、Webサーバ、もしくは何らかのバックグラウンドタスクを開始する必要がある場合があります。
バックグラウンドタスクを実行するには、nohupコマンドに続けて通常のシェルコマンドを使用し、最後に&を追加するとバックグラウンドで実行されます。これにより、バックグラウンドタスクがnotebookをブロックする事がなくなり、実行後、notebookのセルを実行できるようになります。
!nohup bash ping.sh &
18.トレーニングの完了をデスクトップに通知
モデルのトレーニングなどの長いタスクを実行している場合は、完了後にデスクトップ通知を送信するようにColabを設定できます。
これを有効にするには、[ツール]->[設定]->[サイト]に移動し、[デスクトップ通知を表示する]チェックボックスをオンにします。
ブラウザ通知を有効にしても良いか確認を求めるポップアップが表示されます。
承認すれば、別のタブ、ウィンドウ、またはアプリケーションを使用している場合でも、colabはタスクの完了が通知されます。
19.javascriptを実行
以下のマジックコマンドを使用してjavascriptコードを実行できます。
%%javascript
20.Colab上でVSCodeを実行
別の記事「VSCode on Google Colab(訳注:「Google Colab上でVS Codeを動かしてブラウザでアクセス」として翻訳済み)」で説明した方法に従って、Colabで本格的なエディターであるVSCodeを使う事ができます。
3.Google Colabのパワーユーザー向けのヒント関連リンク
1)amitness.com
Google Colab Tips for Power Users
VSCode on Google Colab
2)colab.research.google.com
scratchpad
flask-ngrok-example.ipynb
tensorboard_in_notebooks.ipynb
3)chrome.google.com
Open in Colab
4)github.com
gstaff / flask-ngrok
Akshay090 / colab-cli