lab/技術情報

PyCharm?でRemote Debug

コーディング環境はWindows,GPUサーバはUbuntu,という人向けにRemote Debugを実行する手順をまとめる. 多分OSX=>Ubuntu, Ubuntu=>Ubuntuでも通用すると思うので参考に.

目次

考え方

  • 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でステップ実行できるのでデバッグがさくさく進むはずである.

必要なもの

linux

windows

  • pycharm
    • jet brains製のPython IDE.remote debugを実行するにはprofessional以上のライセンスが必要です.学生さんならば,卒業までの期限付きのAcademicライセンスでProfessionalライセンスを使用することが可能です.
    • windowsにインストールしておきます.2018/4/15現在の最新バージョンは「2018.1」

手順

linux

  • 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

  • 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]

その他

  • 2018.5.9 プロジェクトのルートフォルダが\\192.168.1.1\test\folderのようなネットワークパスの場合,ソースコードを開いて別ウィンドウを表示し,再びソースコードに戻ると勝手に閉じられてしまうという不具合.

log

  • mona create 2018.4.15

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-07-01 (日) 10:54:04 (2118d)