Google Colaboratoryをもっと便利に使いたい
ブラウザさえあれば、環境構築不要・無料でPythonの開発が可能なWebサービス「Google Colaboratory(以下Google Colab)」。Windows PC等で手元に適切なPython環境が無い場合や、手元の環境を崩したくないとき、GPUを活用したいときなど幅広く活用しています(詳細は以下記事参照下さい)。
そんな中、よく使うコマンドやTIPS、使いたいときに探すのに時間がかかるのが多いため、一度まとめてみることにしました。
以下に本記事で紹介するコマンドをまとめたGoogle Colabのノートブックのリンクを貼っておくので、こちらも好きにコピーして使用してもらってOKです。
Google Colab Tips集
スペック確認
OS確認
!cat /etc/issue
容量確認
!cat /etc/issue
メモリ確認
!free -h
メモリは以下でも確認できます。
from psutil import virtual_memory ram_gb = virtual_memory().total / 1e9 print('Your runtime has {:.1f} gigabytes of available RAM\n'.format(ram_gb))
ハードウェアの情報確認
!apt install -y -qq lshw !lshw
CPUのスペック確認
!cat /proc/cpuinfo
Google Colabの起動してからの時間確認
!cat /proc/uptime | awk '{print $1 /60 /60 /24 "days (" $1 "sec)"}'
Googleの時間制約に関しては、定期的に変わるのでGoogleの公式情報を参照ください。
GPU関係の情報確認方法
ここの項目は、ランタイム -> ランタイムのタイプを変更 -> ハードウェアアクセラレーションをGPUに設定して確認します。
GPUの型式やスペックを確認する方法は以下です。いくつかあるので必要に応じて使い分けてください(一度一通り実行してみると良いでしょう)。
!cat /proc/driver/nvidia/gpus/0000:00:04.0/information
!nvidia-smi
from tensorflow.python.client import device_lib device_lib.list_local_devices()
GPUのメモリ使用量を確認する方法は以下です。
!pip install -qq GPUtil
import GPUtil
GPUtil.showUtilization()
GPUメモリを開放する場合は以下実行しましょう。
import gc
gc.collect()
マジックコマンド
最初に!や%をつけることで、Google Colab上でLinuxのコマンドが使用可能になります。
ディレクトリ作成
!mkdir test
ファイル確認
!ls
ディレクトリ移動(cdは!でなく%をつける必要があります、理由は省略)
%cd test
ファイルの作成
!echo 'test' > test.txt
ヘルプの表示(後ろに?でもOKです)。
?print
ライブラリのインストール
Pythonのライブラリはpipコマンドでインストールできます。その際、以下のようにライブラリの最後に==バージョン番号
をつけると特定のバージョンがインストールできます。特にAI系のライブラリはバージョン依存が激しいので、固定しておくことで多少保守性が高まります。
!pip install matplotlib==3.7.1
TensorFlowに関しては、%tensorflow_version x.x
といったマジックコマンドでバージョン切り替えができたのですが、現状はサポートされていません。
Pythonのバージョン確認
以下コマンドでPythonのバージョンが確認できます。
import platform print("python " + platform.python_version())
インストールされている全てのライブラリとバージョンを確認するコマンドは以下です。
!pip freeze
pip freeze
を使って、特定のライブラリのバージョンを確認する方法は以下です。
!pip freeze | grep -i 'numpy\|scikit-learn\|matplotlib\|seaborn\|pandas'
pkg_resouces
を使ってバージョンを確認する方法は以下です。
import pkg_resources pkglist = ['numpy', 'scikit-learn', 'matplotlib', 'seaborn', 'pandas'] for dist in pkg_resources.working_set: if dist.project_name in pkglist: print(dist.project_name, dist.version)
データのアップロード・ダウンロード
以下コマンドでGoogle Colab上にデータをアップロードします。
from google.colab import files uploaded = files.upload()
以下コマンドでGoogle Colab上のデータのダウンロード します(以下は、test.txt というファイルをダウンロードする例です)。
from google.colab import files files.download('test.txt')
ただし、これらのコマンドは大きい容量のファイル(数十MB程度)でも、失敗してしまうことがあります。そのようなときは、次に述べるGoogle Driveとの連携を使用するのが良いです。
Google Driveとの連携
以下コマンドでGoogle Driveと連携できます。
from google.colab import drive drive.mount('/content/drive')
上記コマンドを実行するとダイアログが出てくるので「Google ドライブに接続」をクリックしましょう。するとGoogleアカウントを選択する画面が出てくるので、使用したいアカウントを選択します。続いて、Google ColabにGoogle Driveのアクセスの許可を与えて良いかの確認画面が出てくるので「許可」をクリックします。
この後は/content/drive
というディレクトリのMyDrive
ディレクトリ以下に自分のGoogle Driveのファイルがマウントされます。
正しく連携できていれば、Google Colab上で以下コマンドを実行すると、Google DriveのMy Driveのデータが表示されます。
!ls '/content/drive/MyDrive'
これ以降はcp
やmv
コマンドでGoogle ColabとGoogle Drive上のデータを好きにやりとりできます。例えば、Google Colab上のtest.txt
というファイルをGoogle Drive上に移動したいときは、以下のようなコマンドを実行することで実現できます。
!mv test.txt '/content/drive/MyDrive'
ファイルのパスを取得したい場合は、左のファイルメニューでファイルを右クリックしてパスを取得すればOKです。
その他、Google Drive上の公開ファイルをGoogle Colabにダウンロードする場合は、以下記事が参考になります。
Google ColabでGoogle driveの公開ファイルを直接ダウンロードする方法 - Qiita
画像表示
Google Colab上で画像を表示する方法です。事前準備として、テスト用の画像をtest.jpg
としてダウンロードしておきます。
!wget -O test.jpg https://raw.githubusercontent.com/wiki/karaage0703/python-image-processing/0007.jpg
画像表示する方法に関しては、以下の2通りをそれぞれ説明します。
- IPython.displayを使用する方法
- Matplotlibを使用する方法
IPython.displayを使用する方法
IPython.displayを使って画像を表示する方法は以下です。
from IPython.display import Image as IPImage from IPython.display import display_jpeg display_jpeg(IPImage('test.jpg'))
PNGを表示したい場合はdisplay_jpeg
の代わりにdisplay_png
を使います。
Image
をIPImage
という名前でインポートしているのは、PillowのImageライブラリと名前が衝突してしまうのを防ぐためのテクニックです。Pillowを使用しない場合は不要です。
Matplotlibを使用する方法
Matplotlibを使う方法は以下です。
from PIL import Image from matplotlib.pyplot import imshow img = Image.open("test.jpg") imshow(img)
枠線が邪魔な場合と、サイズを変えたい場合は以下のようにします。
from matplotlib import pyplot as plt fig = plt.figure(figsize=(10,10)) plt.imshow(img) plt.axis('off') plt.show()
matplotlibの日本語化
matplotlibの日本語化は結構めんどうだったりするのですが。japanize-matplotlibというライブラリを使うと、簡単に日本語が使えるようになります。
Google Colaboratoryでもできた!matplotlib日本語化結構めんどくさいからこれ良いね https://t.co/zXialnPnZY pic.twitter.com/wlb7eReNmP
— からあげ (@karaage0703) 2018年10月11日
具体的には、以下pipコマンドでインストールするだけです。
!pip install japanize-matplotlib
これで、以下コマンドにより日本語の入ったグラフを描くことができます。
import matplotlib.pyplot as plt import japanize_matplotlib plt.plot([1, 2, 3, 4]) plt.xlabel('簡単なグラフ') plt.show()
GitHub上のJupyter NotebookファイルをGoogle Colaboratory上で実行
GitHub上にアップされたJupyter NotebookファイルをGoogle Colab上で実行することができます。
具体的には、Google Colab起動直後の画面で「GITHUB」のタブを選択します。
対象のGitHub上にアップされたJupyter Notebookのアドレスを入力します。
今回は以下アドレスとしました。https://colab.research.google.com/github/moizumi99/raw_process/blob/master/part1_ISP_Basic_Process.ipynb
以下のように「Google Colab」上で実行することが可能です。
GitHubにGoogle Colabノートブックを保存
「ファイル -> GitHubにノートを保存」で、自分のGitHubの公開リポジトリにノートブックを保存することができます。また、Google ColabへのリンクをGitHubのノートブック上に追加することもできます。
Google Colabのノートブックのバックアップや、ノートブックに対して、他の人からPull Requestを受け付けたいときに便利です。GitHubのファイルを更新したいときは、同じ操作(ノートを保存)を繰り返せばOKです。
以下のサイトで、スクリーンショット付きで詳しく説明されています。
google colaboratoryからgithubに保存 - 八谷大岳の覚え書きブログ
プルダウンメニュー等のUIを使う方法
以下の図のようなやつです。
Formsという以下のノートブックに例が載っていますので、ここからコピペすれば使えます。
Jupyter Notebookの場合は、ipywidgetsを使えば同様のことができるそうです。
ipywidgetsとBokeh使ってインタラクティブな可視化をする - Qiita
以下ツイートで教えていただきました。
google colaboratoryでプルダウンメニューとかのUIを出すやり方、よくわかっていなかったけど、Formと呼ばれるサンプルがあるのか。
— nb.o (@Nextremer_nb_o) August 28, 2019
なるほど。https://t.co/FhtUgHVslu
Google ColabでPCカメラを使う
なんとPCカメラが使えてしまいます。メニューからスニペットをコピペするだけです。詳しい手順は以下記事参照下さい。
google ColaboratoryでPCのカメラを使う - Qiita
さらに、工夫するとリアルタイムに画像処理までできてしまいます。詳しくは以下記事参照ください。
Colab上でwebカメラをリアルタイムに処理 - Qiita
Google Colab上のファイルを編集
左のファイラーから、ファイルを選択してダブルクリックしたら簡易編集ができました。便利ですね。
その他の方法は、以下の記事が参考になります。いざというときのためにsed
コマンドは使えるようになっておくと便利ですね。
Colaboratoryで簡単にファイル編集をする方法2つ - Qiita
分析コンペ(Kaggle)とColabの連携
以下記事が参考になります。
Google ColabとVS Codeとの連携
以下スライドが参考になります。
GoogleColabとVSCodeを用いた分析環境運用Tips - Speaker Deck
Google Colabでのデバッグ方法
以下スライドページとColabノートブックへが参考になります。ノートブックを実行すると、デバッグの流れがつかめると思います。
JupyterNotebookでのdebug入門(サンプルは説明欄にあります) - Speaker Deck
JupyterNotebookでのdebug入門(Google Colab Notebook)
まとめてコメントアウト・まとめてインデント
複数行選択してCtrl + /
(Macだと'Command + /')でまとめてコメントアウト。Shift + TAB
でまとめてインデント操作できます。地味に便利です。
デフォルトのインデント幅(スペース)の変更
設定で変えられます。Google Colabのデフォルトは2ですが、Pythonの規約(PEP)だと4なので、4に変えるのも良いかもしれません。
ディープラーニング系のコードなどは、コードのみやすさからインデント幅を2にする慣例があります。
pipでインストールするときのログ削減
pipのインストールログが邪魔な場合は、以下のようにオプションとして-qq
を加えるとログが静かになります。
!pip install -qq <package name>
Google Colab Pro
何度か使うと「GPUを使いすぎだよ」と言われて、Colab Proに案内されるかもしれません。案内されるがままにColab Proへ課金すると優先的にGPUを割り当ててもらえます。
GPUのスペックなどは、以下のNotebookで確認できます。
まとめ
「Google Colab」のよく使う便利なTIPSをまとめました。最初にも紹介しましたが、本記事で紹介するコマンドをまとめたGoogle Colabのノートブックを作成しています。ご自由に活用下さい。
また、Google Colabの便利なノートブックを集めたGitHubリポジトリも公開していますので、こちらもGoogle Colabに慣れてきたら是非活用ください。
書籍の宣伝
AIの初心者向け本「からあげ先生のとにかく楽しいAI自作教室」を執筆しました。Google Colabを使って、実際に動かしながらAIを学べる本になっています。
文系でAI素人の私の妻も、実践できて理解を深められるような、初学者向けの内容になっています。以下に紹介記事を書いていますので、興味ある方は是非ごらんください。
参考リンク
【秒速で無料GPUを使う】TensorFow(Keras)/PyTorch/Chainer環境構築 on Colaboratory - Qiita
【秒速で無料GPUを使う】深層学習実践Tips on Colaboratory - Qiita
pip install して import するだけで matplotlib を日本語表示対応させる - Qiita
Google Colabから簡単にGoogle Driveへ書き込む方法 | Shikoan's ML Blog
Colaboratoryを使った作品制作TIPSを紹介する|FTD
関連記事
変更履歴
- 2023/08/25 ページ追記、微修正
- 2023/08/14 pipの-qqオプションに関して追記
- 2022/08/16 Google ColabのTensorFlow 1.x系サポート終了に関して追記
- 2022/01/20 まとめてコメントアウト・まとめてインデント
- 2022/01/03 GPUの確認に関して追記
- 2021/11/09 ?でヘルプ表示を追記
- 2021/08/18 TIPSへのリンク追記
- 2021/03/04 Kaggleとの連携に関して追記
- 2020/12/20 書籍に関して追記
- 2020/12/03 ファイル編集に関して追記
- 2020/06/22 バージョン確認に関して追記
- 2020/05/26 画像表示に関して文章修正
- 2020/05/08 Google Colab上でのPCカメラの使用に関して追記
- 2020/03/11 Google Driveとの連携に関して補足
- 2020/03/06 GitHubへのノートブックの保存に関して追記
- 2019/09/27 Google Driveとの連携に関して追記
- 2019/08/29 UIの使い方に関して追記