Google Colaboratoryを便利に使うためのTIPSまとめ

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'

 これ以降はcpmvコマンドで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の公開ファイルを直接ダウンロードする方法 #Python - 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を使います。

 ImageIPImageという名前でインポートしているのは、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というライブラリを使うと、簡単に日本語が使えるようになります。

 具体的には、以下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という以下のノートブックに例が載っていますので、ここからコピペすれば使えます。

Google Colab

 Jupyter Notebookの場合は、ipywidgetsを使えば同様のことができるそうです。

ipywidgetsとBokeh使ってインタラクティブな可視化をする #Python - Qiita

 以下ツイートで教えていただきました。

Google ColabでPCカメラを使う

 なんとPCカメラが使えてしまいます。メニューからスニペットをコピペするだけです。詳しい手順は以下記事参照下さい。

google ColaboratoryでPCのカメラを使う #colaboratory - Qiita

 さらに、工夫するとリアルタイムに画像処理までできてしまいます。詳しくは以下記事参照ください。

Colab上でwebカメラをリアルタイムに処理 #colaboratory - Qiita

Google Colab上のファイルを編集

 左のファイラーから、ファイルを選択してダブルクリックしたら簡易編集ができました。便利ですね。

 その他の方法は、以下の記事が参考になります。いざというときのためにsedコマンドは使えるようになっておくと便利ですね。

Colaboratoryで簡単にファイル編集をする方法2つ #Python - 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

シークレット機能

「環境変数」「ファイルパス」「APIキー」といった漏れてはいけない情報を安全に保持できる機能です。詳細は以下記事参照ください。

Google Colab のシークレット機能の使い方|npaka

まとめ

 「Google Colab」のよく使う便利なTIPSをまとめました。最初にも紹介しましたが、本記事で紹介するコマンドをまとめたGoogle Colabのノートブックを作成しています。ご自由に活用下さい。

 また、Google Colabの便利なノートブックを集めたGitHubリポジトリも公開していますので、こちらもGoogle Colabに慣れてきたら是非活用ください。

書籍の宣伝

 AIの初心者向け本「からあげ先生のとにかく楽しいAI自作教室」を執筆しました。Google Colabを使って、実際に動かしながらAIを学べる本になっています。

 文系でAI素人の私の妻も、実践できて理解を深められるような、初学者向けの内容になっています。以下に紹介記事を書いていますので、興味ある方は是非ごらんください。

参考リンク

【秒速で無料GPUを使う】TensorFow(Keras)/PyTorch/Chainer環境構築 on Colaboratory #DeepLearning - Qiita

【秒速で無料GPUを使う】深層学習実践Tips on Colaboratory #DeepLearning - Qiita

pip install して import するだけで matplotlib を日本語表示対応させる #Python - Qiita

Google Colabから簡単にGoogle Driveへ書き込む方法 | Shikoan's ML Blog

Colaboratoryを使った作品制作TIPSを紹介する|FTD

関連記事

変更履歴

  • 2023/11/06 シークレット機能に関して追記
  • 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の使い方に関して追記