#author("2018-05-09T13:04:42+09:00","","") [[lab/技術情報]] *PyCharmでRemote Debug [#m90483b8] コーディング環境はWindows,GPUサーバはUbuntu,という人向けにRemote Debugを実行する手順をまとめる. 多分OSX=>Ubuntu, Ubuntu=>Ubuntuでも通用すると思うので参考に. *目次 [#ab46aaee] #contents *考え方 [#o611edf9] -GPUサーバにて複数個のPython環境を保持したい.例えば,caffe, tensorflow-0.9, tensorflow-1.0, theanoを並行して環境保持したい場合がある.このとき,sudo pip install oooo xxxxとかやってしまうと,Pythonモジュールの衝突が起こるはずで,インストールできない.virtualenvを使って,環境ごとに異なるPythonモジュールをインストール可能とすることで,並行で環境保持できる. -どうしてもWindows上のIDEのGUIでデバッグしたい!というニーズは少なからずある. たとえば,CUIでは簡素なデバッグしかできない,LinuxのGPUサーバにXをいれたくない,GPUサーバは発熱騒音がひどいので執務室には置いときたくない,とか. -そこでWindows上のIDEでコードを書き,サーバ室に置いたLinuxに同期させて,Linuxでコードを実行する方式を採る.Windows上のIDEでステップ実行できるのでデバッグがさくさく進むはずである. *必要なもの [#s92181f2] **linux [#od279028] -ubuntu --ubuntuのバージョンは問わないと思われる...本稿では16.04LTSを使用. -virtualenv --https://qiita.com/caad1229/items/325ca5c8ad198b0ebce7 ここを参考にvirtualenvおよびvirtualenvwrapperを使用すると楽ちん. -ssh -samba **windows [#m5ede1ee] -pycharm --jet brains製のPython IDE.remote debugを実行するにはprofessional以上のライセンスが必要です.学生さんならば,卒業までの期限付きのAcademicライセンスでProfessionalライセンスを使用することが可能です. --windowsにインストールしておきます.2018/4/15現在の最新バージョンは「2018.1」 *手順 [#l8c651e4] **linux [#n471ac87] -sshサーバのインストール sudo apt-get install open-sshserver -virtualenv環境の作成.以下では,/home/testuser/.virtualenvs/testenvA/test.theanoB に作ったとする.当該環境でCUIでpythonプログラムが問題なく動作するものとする. -sambaを使ってvirtualenv環境をwindowsから見れるようにする. --設定ファイルの編集 sudo vim /etc/samba/smb.conf --末尾に次のような行を追加 [virtualenvs] path = /home/testuser/.virtualenvs writeable = true force create mode = 0666 force directory mode = 0777 guest ok = no guest only = no --sambaサービスを再起動 sudo service smbd restart **windows [#h8a1ee80] -linuxのsambaフォルダを開けることを確認 \\<IPアドレス>\virtualenvs\testenvA\test.theanoB -pycharmインストール&起動 -プロジェクト読み込み --[File]→[Open]でダイアログが開くので,プログラムを実行するルートフォルダをドラッグアンドドロップ. \\<IPアドレス>\virtualenvs\testenvA\test.theanoB -RemoteInterpreterの設定 --[File]→[Settings] --ダイアログ左のツリーにて,[Project: test.theanoB]→[Project Interpreter] --ダイアログ右ペインにて,[Project Interpreter]の右にある歯車のアイコン→Add ---ダイアログ左のペインにて,SSH Interpreter ---ダイアログ右ペインにて,[New server configuration]を選択. ---Host: <IPアドレス> ---username: <username> ---[next] ---password: ****** ---[next] ---Interpreter: /home/testuser/.virtualenvs/testenvA/bin/python ---[Finish] --Path Mappings: の右にある[...]をクリック ---ダイアログ右上の+ボタンをクリック ---[LocalPath]の列に \\<IPアドレス>\virtualenvs\testenvA\test.theanoB ---[RemotePath]の列に /home/testuser/.virtualenvs/testenvA/test.theanoB ---[ok] --ダイアログ左のツリーにて,[Build,Execution,Deployment]→[Console]→[Python Console] ---ここで実行時の引数やらを設定できるぽい.詳細不明. --[ok] -環境変数・起動引数 --[Run]->[EditConfiguration] ---環境変数は[Environment variables:]の箇所にて設定. (事例:2018/04/15) 4枚中2番目のGPUのみを使用し,virtualenv環境にローカルインストールしたcuda8を使って,theano==0.9.0で実装したpythonスクリプトを実行する + PYTHONUNBUFFERED 1 + CUDA_HOME /home/testuser/.virtualenvs/testenvA/test.theanoB/cuda8 + CUDA_PATH /home/testuser/.virtualenvs/testenvA/test.theanoB/cuda8 + LD_LIBRARY_PATH /home/testuser/.virtualenvs/testenvA/test.theanoB/cuda8/lib64 + PATH /home/testuser/.virtualenvs/testenvA/test.theanoB/cuda8/bin:$PATH + THEANO_FLAGS floatX=float32,device=gpu + CUDA_VISIBLE_DEVICES 2 ---起動引数は[Paarmeters:]の箇所にて設定 -実行 --左ペインのソースコード等のツリーで実行したいpythonファイルを右クリックして,コンテキストメニューにて[Run] *その他 [#p0807ac0] -2018.5.9 プロジェクトのルートフォルダが\\192.168.1.1\test\folderのようなネットワークパスの場合,ソースコードを開いて別ウィンドウを表示し,再びソースコードに戻ると勝手に閉じられてしまうという不具合. --\\192.168.1.1\testをネットワークドライブZとしてマウントして読み込むこと,ローカル/リモートのパスの変換マッピングもZドライブを使用すること,としたところ治った. --参考URL:https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000687410-Pycharm-awlays-closes-my-new-tab *log [#t3f45c97] -mona create 2018.4.15