1
0

More than 1 year has passed since last update.

Colabでの綺麗な実験

Last updated at Posted at 2022-08-14

0. はじめに

  • この記事は,google colaboratoryを使用して実験をする際の効率を上げることを目的とした記事です.
  • 結論としては,%run main.py,subprocess.make()をうまく使用してコードの綺麗さ,実験の効率をあげることを提案します.

1. なぜGoogleColaboratoryを使うの?

  • Googleのアカウントを持つ誰もが,GoogleColaboratoryを使うことで,GPUを使えるため,行列計算が早く行えます(無償の場合,時間制約あり).
  • また,GoogleColabotatoryで実行することで,計算結果をその場で確認することができます.

2. Colabの利点と欠点

  • 利点
    • 結果が見やすい.
    • 可視化をしやすい.(可視化によるデータの確認等)
  • 欠点
    • セルごとに実行するため,ただ単にGPUを回すことが目的である場合はエンターボタンを押すのがうんざりする.
    • コードが見づらい.
    • 外部ライブラリを使用する際に高頻度で! pip install sth -qqqをする必要がある.
    • 制限のあるGPUの時間を気にしながら実行しなければならない.

3. 提案

  • 提案
    • %run main.py args,subprocess.make()を駆使してセルを綺麗にする.
  • 提案理由
    • 利点
      • %run main.py という短いコードで命令を実行することができ,かつ,編集するファイルはmain.pyとそれが使用するmoduleのみとなり,ノートブックではなく,Pythonファイルのみを編集して開発することができます.
      • subprocess.make() を駆使することで,linuxのpkillというコマンドを実行できるため,自動でセッションを切ることができるため,GPUの実行時間を軽減できる点.
    • 不便な点
      • 可視化や新しい情報の発見をするためのものではないため注意が必要な点.

4. サンプルプログラム

今回はtorch.tensorの値をprintするだけの関数を,moduleとpythonファイルを用いてサンプルを用意しました.

概要としては

  • %run で pyファイルを実行
    • これをすることで,cellを綺麗に保てます.
  • subprocess で pip install, pkill をする
    • subprocessをすることで,!による実行を回避できます.
    • これのおかげで,.pyファイルで実行できる処理が増え,pkillによりprocessを強制的に終了できるため,GPUを無駄に使うことを回避できます.

実際のnotebook上でのコードは以下のようになります(githubのリンク):

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

### *** ###
# 通常(2022/08/14時点)では
# 1.12.1+cu113がデフォルトでinstallされているが, 
# 次の指定で 1.0.0をimportできる.
from subprocess import run
run("pip install torch==1.0.0",shell=True)
import torch
print("torch.__version__: ",torch.__version__)
### *** ### 

%run /content/drive/MyDrive/Qiita_env_01/main.py 20220814
Mounted at /content/drive
torch.__version__:  1.0.0
torch.__version__ in qiita.func.func:  1.0.0
Printed Number Is 20220814 😄

5. 現状私が理解していないこと

5.1. no-good.py(githubのリンク),

  • pip installの内容を pythonファイルに含めてrunをしてしまうと,正しく実行することができませんでした.
    • おそらく非同期処理の処理が実行されてしまったかと推測されていますが,改善する方法が現状追えてはいません.
  • このことから,.pyファイル内でpip installは難しいのではないかと考えています.
from google.colab import drive
drive.mount('/content/drive')

%run /content/drive/MyDrive/Qiita_env_01/main.py 20220814
Mounted at /content/drive
torch.__version__ in qiita.func.func:  1.12.1+cu113
Printed Number Is 20220814 😄

6. 最後に

この記事に立ち寄ってくださり,ありがとうございました.
なにかご指摘やご質問あれば,遠慮なくお尋ねください.

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0