♾️

Google Colaboratory の使い始めに調べたこと。仮想マシン/制限/シェルコマンド/ディレクトリ/GitHubとの連携

2023/04/24に公開

Google Colaboratory とは

  • ブラウザ上で Python を記述、実行できる
  • GPU を利用できる
  • テキストを マークダウン で記述できる
  • コードや結果を簡単に共有できる
  • 制限はあるが 無料 で利用できる

仮想マシン

コードは 仮想マシン 上で実行される

  • なにかしら処理を行うと 仮想マシン の割り当てがされる
  • コードの処理は仮想マシン上で実行され、ファイルを生成すると仮想マシン内に生成される
  • 仮想マシン が解放されると生成されたファイルは失われるため、Google Drive をマウントし、そこでファイルを生成するなどで永続化する必要がある

GPU, TPU を利用する

[ランタイム] > [ランタイムのタイプを変更] をクリックし、[ハードウェア アクセラレータ] を GPU または TPU に設定する

GPUの選択

制限(無料で利用の場合)

ランタイムの切断(仮想マシンのリセット)

ランタイムの切断

  • 仮想マシンを起動して 12 時間 経過する
  • アイドル状態(操作をしない状態が一定時間)が続いた場合

上記条件でランタイムが切断(仮想マシンのリセット)が起こり、pip でセットアップしたものや生成したファイルなどは無くなる。
再接続 をするとすぐに利用できる。

公式: Colab ではノートブックはどのくらいの時間動作しますか?

GPUの使用の制限

GPUバックエンドに接続できません

GPUを使用してしばらく時間経過すると制限に達して GPU の利用ができなくなる。
ある程度時間が経過すると再び利用できるようになる。

メモリ・ディスクの制限

メモリ・ディスク

割り当てられた仮想マシンによって変動する

シェルコマンド

! をつけるとシェルコマンドの実行が可能

!pwd
/content

シェルコマンドの実行

ディレクトリ

カレントディレクトリ

/content が カレントディレクトリ になっている
📁 をクリックすると /content 以下が表示される

カレントディレクトリ

Google Drive のマウント

以下を実行すると '/content/drive' に Google Drive がマウントされる

from google.colab import drive
drive.mount('/content/drive')

GitHubとの連携

Google Colaboratory → GitHub リポジトリ

Google Colaboratory の ファイル(ipynb) を GitHub リポジトリ に保存することができる

  1. GitHub で リポジトリ を作成する

    Add a README file にチェックを入れて README.md を生成するようにしておく。 ブランチが作成されていないと保存ができない。

  2. Google Colaboratory での作業

    1. [ファイル] > [GitHub にコピーを保存] をクリック

      初回は GitHub への承認が必要になります。デフォルトでは パブリックリポジトリ のみの権限になるため、プライベートリポジトリへ保存する場合は追加の設定が必要になる。

    2. 設定を行い保存のする

      Colaboratory へのリンクを含める を有効にすると GitHub から Google Colaboratory を開くリンクが追加される。

プライベートリポジトリ へ保存できるようにする

  1. Google Colaboratory で ⚙ をクリックして、GitHub の設定で プライベートレポジトリと組織にアクセス を有効にする

  1. GitHub の承認

GitHub への プライベートリポジトリ の権限の承認を行う。

GitHub リポジトリ → Google Colaboratory

GitHub リポジトリ にある ipynb ファイルのコピーを Google Colaboratory で開くことができる

ダイアログから選択する

Google Colaboratory の [ファイル] > [ノートブックを開く] または http://colab.research.google.com/github にアクセスすると GitHub から開くダイアログが表示される

直接開く

https://colab.research.google.com/github/takeshitayy/google-colaboratory-test/blob/main/Untitled0.ipynb のような URL を開くと、コピーされた状態で開くことができる。

以下のようなバッジを設置して、クリックしてもらうことで簡単に共有することが可能になる。

Open In Colab

バッチのソースコードは以下

[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/takeshitayy/google-colaboratory-test/blob/main/Untitled0.ipynb)

リンクをクリックするとGoogle Colaboratory で開く。

仮想マシンのスペックの確認

OSの確認

!cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.5 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.5 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

CPUの確認

!cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 63
model name	: Intel(R) Xeon(R) CPU @ 2.30GHz
stepping	: 0
microcode	: 0xffffffff
cpu MHz		: 2299.998
cache size	: 46080 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat md_clear arch_capabilities
bugs		: cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs mmio_stale_data retbleed
bogomips	: 4599.99
clflush size	: 64
cache_alignment	: 64
address sizes	: 46 bits physical, 48 bits virtual
power management:

processor	: 1
vendor_id	: GenuineIntel
cpu family	: 6
model		: 63
model name	: Intel(R) Xeon(R) CPU @ 2.30GHz
stepping	: 0
microcode	: 0xffffffff
cpu MHz		: 2299.998
cache size	: 46080 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 1
apicid		: 1
initial apicid	: 1
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat md_clear arch_capabilities
bugs		: cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs mmio_stale_data retbleed
bogomips	: 4599.99
clflush size	: 64
cache_alignment	: 64
address sizes	: 46 bits physical, 48 bits virtual
power management:

GPUの確認

!nvidia-smi
Fri Apr 21 07:09:44 2023       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.85.12    Driver Version: 525.85.12    CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla T4            Off  | 00000000:00:04.0 Off |                    0 |
| N/A   46C    P8     9W /  70W |      0MiB / 15360MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

Discussion