LoginSignup
0
2

More than 5 years have passed since last update.

google cloudの機械学習用gpuインスタンスでjupyterlab_vim拡張機能を使えるようにするまで

Last updated at Posted at 2018-12-31

来年から仕事で関わる2つのプロジェクトがそれぞれ

  • pytorchを使う
  • jupyterlabを使う

ことがわかって、google cloudでjupyterlab+vim環境を構築してみたらいろいろ詰まった。そのメモ(2018年12月)。

やっておきたいこと

  1. google cloudのユーザ登録
  2. gpuインスタンスを使用可能な状態にする
  3. プロジェクト作成
  4. gcloud SDKをインストールして認証する

初回登録時は30000円分無料枠がもらえる

google cloudでgpuインスタンスを立ち上げる

やり方はこちらの記述通り、慣れるとGUIじゃなくてCUIでやりたくなるが、掲載のコマンドそのままだとCPUとメモリーがデフォルト値で結構貧弱なので、CPU数とメモリーを指定するには下記のように書く。

#!/bin/sh
export IMAGE_FAMILY="pytorch-latest-cu92"
export ZONE="asia-east1-a"
export INSTANCE_NAME="pytorch"
export CLOUDSDK_CORE_PROJECT='xenon-chain-217906'

gcloud compute instances create $INSTANCE_NAME \
  --zone=$ZONE \
  --image-family=$IMAGE_FAMILY \
  --image-project=deeplearning-platform-release \
  --maintenance-policy=TERMINATE \
  --custom-cpu=4 \
  --custom-memory=15 \
  --accelerator="type=nvidia-tesla-k80,count=1" \
  --metadata="install-nvidia-driver=True"

CLOUDSDK_CORE_PROJECTはプロジェクトIDを入れる。これ実行するとしばらくしてインスタンスが作られる。

ログインしてjupyterlabを使う

pytorch用のマシンイメージはデフォルトで立ち上がるときにjupyterlabが起動するが、このままだと外からアクセスするのが面倒なので、ポートフォワードを使うと気軽にローカルからpytorchインスタンスのjupyterlabにアクセスできる。

#!/bin/sh
export IMAGE_FAMILY="pytorch-latest-cu92"
export ZONE="asia-east1-a"
export INSTANCE_NAME="pytorch"
export CLOUDSDK_CORE_PROJECT='xenon-chain-217906'

gcloud compute ssh "pytorch" -- -L 8887:localhost:8080

最後の行はsshLオプションを使って、リモート(google cloud)側の8080ポートをローカル側の8887にバインドしているので、これでブラウザからlocalhost:8887にアクセスするとjupyterlabが立ち上がるはず。

jupyterlab_vim

jupyterlabそのままでも結構使いやすそうだが、試行錯誤が多い機械学習案件なのでやっぱり編集ツールを整備しておきたい。jupyterlab(version:0.35.4)のSettingsをクリックするとText Editor Key Map項目にvimの選択肢を見つけ、「設定無しで使えるか、さすがlabだ」と喜んで選択するものの変化なし。やっぱ拡張機能をインストールしないと使えない。ターミナルで

jupyter-labextension list

とjupyterlabの拡張機能の状況を確認できる。何もインストールされていなかった。こちらを参考に

jupyter labextension install jupyterlab_vim

でインストールするが、権限の問題でエラーになる。どうやらただsshでログインするとインスタンス側で勝手にローカルユーザと同じ名前のユーザが作成されてそちらでログインするようです。/homeディレクトリ下にjupyterのフォルダがあったので、ログインコマンドを次のように変更して

gcloud compute ssh jupyter@pytorch -- -L 8887:localhost:8080

jupyterユーザでログインし直せば権限の問題は解決。が、今度はnodejsがインストールされていないとエラーになる。

nodejsのインストール

nodejsなんぞ、sudo apt install nodejsでイケるっしょ、と思いきや、それだとインストールされるのはバージョン4.x.x、それだと低すぎるとjupyterlabに怒られる(jupyterlab殿は6以上でないと承知しないのだ)。sudo apt updateしてからでもだめ。うぬ。。。

cat /etc/os-release

で調べてみるとLinuxが

PRETTY_NAME="Debian GNU/Linux 9 (stretch)"

になっているらしい、このディストリビューションは確か必要最小限のものしか入っていないらしい。。。うぬぬ。。。こちらを参考に

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -

でやっとnodejsをインストールでけた。

あれからjupyter_vimを無事インストールし、jupyterlabの画面からSettings->Advaced Settings Editor->Extension Managerで拡張機能を有効にして、そしてようやく僕の快適jupyterlab_vimライフが始まるのだった。

おまけ

  • google cloudのお代は使ったリソースの時間分だけ課金されるので、〇〇gpu1個1時間xxx円、CPU1個1時間xx円、メモリー1ギガ1時間x円、という具合になっているので、使わないときはインスタンスを止めて置いたほうが幸せになれる。K80を1個、cpuを4個、メモリーを16ギガで使って1時間合計100円弱だった。
  • gcloud compute instances stop pytorchとかgcloud compute instances start pytorchとかでインスタンスを起動・停止できるので、これで次からはほしいときにgpuインスタンスを簡単に召喚できる。
  • Debian Stretch君はデフォルトの状態でllエイリアスがない、.bashrcに該当設定がコメントアウトされているので、そこを外してsource ~/.bashrcllが使えるようになる

残留課題、インスタンス切り忘れ問題があるので、毎日定時にインスタンスを落とすスクリプトを仕組みたい(ごおごるふぁんくしょんかな)。

0
2
0

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
0
2