たけのこブログ

元々腹黒い人が、心を入れ替えて生真面目に発信する。

GPUサーバからリモートでjupyter操作してtorchも触れるようにする

前回の記事に続いて、Tellusで申請したGPUサーバーの環境にjupyterを入れて遠隔で操作できるようにし、かつpytorchも無事に使える状態にします。環境のセットアップの際にごちゃごちゃしてしまったので、もしかしたら手順が間違っている可能性がありますが、一番つまづいた根本的な原因は分かっているので、そこさえ気をつければ環境構築は可能だと思います。

前回の記事はこちらです。

yukr.hatenablog.com

そして、再喝ですがGPUのスペックは以下の通りです。

  • GPUカード:NVIDIA Tesla V100 for PCI-Express (32GB) ×4
  • CPU:Xeon E5-2623 v3 4Core×2 (8C/16T 3.0GHz Max3.5GHz)
  • メモリ:128GB
  • ディスク(RAID1):SSD 480GB 2台/1組
  • Ubuntu 18.04

Jupyter 環境の構築

まず、jupyterlab勢なので、このコマンドをします。

conda install -c conda-forge jupyterlab

Jupyterカーネルを切り替えるパッケージの設定

次に、Jupyterでカーネル(作成した仮想環境)を切り替えるためのパッケージをインストールします。

pip install environment_kernels

そして、以下のようにしてjupyterの設定ファイルを生成します。

jupyter notebook --generate-config

おそらく、前回の記事と同じ環境で設定をしているのであれば、/home/(ログインID)/.jupyter/jupyter_notebook_config.pyの方に設定ファイルができているはずなので、その中のファイルの中に以下の文を挿入します。

c.EnvironmentKernelSpecManager.conda_env_dirs = [ 'pytorchが入っている仮想環境へのファイルパス' ]

前回の記事と同じ手順を踏んで入れば、上記に入れるファイルパスは、

/home/(ログインID)/.conda/envs/(仮想環境名)/

で問題ないかと思います。

しかしながら、このままだとjupyterを起動しても(あとで繋げ方は載せてあります)、~/anaconda3/share/jupyter/kernelsに作った仮想環境のディレクトリがないので認識されません。なので、~/.conda/envsの中に入っているはずの作成した仮想環境を写す必要があります。なので、まずは~/anaconda3.share.jupyter/kernelsの下に仮想環境をコピーしてください。

そして、コピーが終わったら、次に~/anaconda3/share/jupyter/kernels/(作成した仮想環境名)の中にkernel.jsonと呼ばれるものがあるので、それを開いてみてください。

f:id:YuKR:20191213144142p:plain

一行目が/home/(ログインID)/anaconda3/bin/pythonとありますが、このままだとデフォルトのpythonが呼び出されてしまうため、jupyterを起動してimport torchとしてもモジュールを呼び出すことができません。なので、この行を以下のように変更すれば大丈夫です。ここが色々やっても動かなかった根本的な原因でした。ウェブにも探してもなくて、前に投稿したブログを元に思い出しました。

"/home/(ログインID)/.conda/envs/(仮想環境名)",

これでjupyterを起動しても、無事にtorchなどはインポートされると思います。

Jupyter の起動方法

次に、Jupyterの起動方法を説明します。まず、GPUサーバにログインしたあと、以下のコマンドを打ちます。

jupyter lab --no-browser --port=8080

そして、別のタブのターミナルを開いて、以下を打ちます

ssh -N -L 8080:localhost:8080 (ログインID)@(環境ホスト名)

パスワードを求められるので、Tellusを利用しているのであればマイページにあるトークン情報を入力して、そのあとブラウザでhttp://localhost:8080と検索すれば、jupyterに移動できます。最初はトークンを入力するように言われるので、GPUサーバでjupyterを起動した際に表示されたURLのtoken=から続く暗号のようなものをコピペして貼り付ければjupyterの環境をリモートで操作することができるようになります。

まとめ

今回は、TellusのGPUサーバからリモートでJupyter環境を使えるセットアップを説明しました。