#author("2018-04-15T14:49:59+09:00","","")
#author("2018-07-01T10:54:04+09:00","default:nmori1984","nmori1984")
[[lab/技術情報]]

*PyCharmでRemote Debug [#m90483b8]
コーディング環境はWindows,GPUサーバはUbuntu,という人向けにRemote Debugを実行する手順をまとめる.
多分OSX=>Ubuntu, Ubuntu=>Ubuntuでも通用すると思うので参考に.
*事前準備 [#s92181f2]
-pycharm
--jet brains製のPython IDE.remote debugを実行するにはprofessional以上のライセンスが必要です.学生さんならば,卒業までの期限付きのAcademicライセンスでProfessionalライセンスを使用することが可能です.
--windowsにインストールしておきます.2018/4/15現在の最新バージョンは「2018.1」
*目次 [#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


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS