GPUサーバからリモートでjupyter操作してtorchも触れるようにする
前回の記事に続いて、Tellusで申請したGPUサーバーの環境にjupyterを入れて遠隔で操作できるようにし、かつpytorchも無事に使える状態にします。環境のセットアップの際にごちゃごちゃしてしまったので、もしかしたら手順が間違っている可能性がありますが、一番つまづいた根本的な原因は分かっているので、そこさえ気をつければ環境構築は可能だと思います。
前回の記事はこちらです。
そして、再喝ですが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と呼ばれるものがあるので、それを開いてみてください。
一行目が/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環境を使えるセットアップを説明しました。