どん底から這い上がるまでの記録

どん底から這い上がりたいけど這い上がれない人がいろいろ書くブログ(主にプログラミング)

Colaboratoryを使ってみる

この記事ではColaboratoryを導入してPyTorchを使えるまでをやります。

 

 

関連リンク

www.pytry3g.com

Colaboratory

Colaboratoryって何?

Googleが開発したGPUを無料で使える研究ツールです。

誰でも使えることができます。

最大12時間連続で使える。

90分間何もしないと接続が切れる。

主要なDeep Learningのライブラリは使える。(ex. tensorflow, chainer, keras)

環境はUbuntu

Google Driveを開いてJupyter Notebook上で作業する。

Colaboratoryの設定

Google Driveを開く。

f:id:pytry3g:20180319161954p:plain

左上の新規からその他を開くと、一番下にアプリを追加があるのでクリック。

するとこんな画面が出ます。

f:id:pytry3g:20180319162131p:plain

 

ここで検索のところにcolabと入力し検索するとColaboratoryが出てくるので接続をクリック。

f:id:pytry3g:20180319162407p:plain

これで自分のGoogle DriveにColaboratoryが追加されます。

 

Hello World

Colaboratoryを開く前に作業フォルダを作ります。フォルダの名前は何でもいいです。

自分はcolabとつけました。

f:id:pytry3g:20180319162755p:plain

フォルダを作ったら、Calaboratoryを開きます。

Colaboratoryを開くには、再び新規からその他を開きます。

すると、私の場合アプリを追加の一つ上にColaboratoryがありました。

Colaboratoryをクリックすると、notebookのページに遷移します。

f:id:pytry3g:20180319162957p:plain

ファイル名を変えて、試しにHelloWorldをやってみました。

セルの実行はセルの左端にある右向きの三角ボタンをおすか shift + Enterで実行できます。セルの削除はCtrl-Mの後にD。

 

GPUの設定

GPUを使うにはNotebook上のランタイム > ランタイムのタイプの変更で設定できる。

f:id:pytry3g:20180404063435j:plain

f:id:pytry3g:20180319164105p:plain

 

PyTorch

PyTorchは最初から入っていないようなので、自分で入れましょう。

セル上で!commandでコマンドを打つことができます。

例えば、lsなら!ls, catなら!cat みたいな感じです。

f:id:pytry3g:20180319164439p:plain

なので、PyTorchはpipを使えば入れることができます。

自分はちょっと古いですが、0.2を使っているので、

f:id:pytry3g:20180319164634p:plain

これで、PyTorchが入りました。

試しに使ってみます。

f:id:pytry3g:20180319164733p:plain

特にエラーも出ませんでした。

ついでに、GPUが使えることを確認しました。

データのアップロード

データを読み込む、自分で作成したデータを使いたい場合、必要なライブラリと認証を行う必要があるようです。

以下のコマンドをセルにコピペして実行します。

!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}

実行するとEnter verification code: と出てきます。

その上のリンクをクリックするとページが遷移し許可を求められるので許可します。

すると、verification codeが出るのでこれをコピーしてEnter verification code: のテキストボックスに貼り付けてEnterします。これを2、3回繰り返します。

次に、以下の2つのコマンドをセル上で実行します。

!mkdir -p drive
!google-drive-ocamlfuse drive

ここまでの作業でプログラムからデータを読み込めるようになります。

では、実際にやってみます。

自分のマシンからGoogle Driveの作業フォルダにcsvファイルをアップロードしました。

f:id:pytry3g:20180319172736p:plain

csvファイルを読み込んでみる。(※HelloWorld.ipynbで作業してます。)

f:id:pytry3g:20180319172905p:plain

無事にデータを読み込むことができました。

💀注意💀注意💀注意💀注意💀注意💀注意💀注意💀注意💀注意💀注意💀

pathの設定に注意してください。

💀注意💀注意💀注意💀注意💀注意💀注意💀注意💀注意💀注意💀注意💀

パスを設定するときは、drive/自分で名前をつけた作業フォルダ/ファイル名、になります。

私は作業フォルダをcolabとしたので drive/colab/ファイル名となっています。

(※作業フォルダはこの記事の最初のほうで作りました。)

エラーが出る場合

gpg: keybox '/tmp/tmpg_zmmb1n/pubring.gpg' created
gpg: /tmp/tmpg_zmmb1n/trustdb.gpg: trustdb created
gpg: key AD5F235DF639B041: public key "Launchpad PPA for Alessandro Strada" imported
gpg: Total number processed: 1
gpg:               imported: 1
Warning: apt-key output should not be parsed (stdout is not a terminal)
E: Unable to locate package google-drive-ocamlfuse

このようなエラーが出てしまう場合はこちらの記事を参考にしてください。

www.pytry3g.com

別の方法

ファイルのアップロードの別の方法も紹介します。

from google.colab import files

uploaded = files.upload()

for fn in uploaded.keys():
  print('User uploaded file "{name}" with length {length} bytes'.format(
      name=fn, length=len(uploaded[fn])))

上のコードをセル上で実行してください。実行するとセルの下にファイルの選択が表示されて、そこからファイルのアップロードができます。

f:id:pytry3g:20180404175245p:plain

なお、この方法でアップロードしたファイルを使うときはpathの設定が最初に紹介したやり方とは異なると思います。

最初のやり方と違ってファイルを読み込むには

pd.read_csv("livedoor_news.csv")

もちろん、自分で書いたプログラムもインポートできます。

重要

どうやらGoogle Colaboratoryを起動するたびに、始めから入っているライブラリ以外を使う場合、いちいちインストールする必要があるみたい。

つまり、PyTorchやほかのライブラリChainerとかMeCabを毎回インストールしなければならない。

 TensorflowやKerasはその必要がなく、始めから入っているのでインストールをする必要はない。

おわり

とりあえずColaboratoryの導入から設定までをやってみました。

まだ使い始めたばかりなのでわからないことが多々ありますが、少しずつ慣れていきたいと思います。

 

おまけ

qiita.com

 

www.pytry3g.com