zshを使用時にbyobuのウィンドウ名が現在のパスになってしまう
ウィンドウ名がリネーム出来ない
下の写真では、keras-deeplab-v3-plus
にいると、ウィンドウの名前もそれと同じになってしまい、F8でリネームしようとしても直すことが出来ない。
解決策
~/.zshrc
にて以下の部分のコメントアウトをはずし、有効にする。
# Uncomment the following line to disable auto-setting terminal title. DISABLE_AUTO_TITLE="true"
再読込して修正完了。
$ source ~/.zshrc
参考
【エラー】tensorflow.python.framework.errors_impl.InternalError: Failed to create session.
エラー発生
$ python test.py Using TensorFlow backend. 2018-08-27 12:36:30.830945: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA 2018-08-27 12:36:30.929279: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:897] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero 2018-08-27 12:36:30.929734: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1405] Found device 0 with properties: name: Tesla K80 major: 3 minor: 7 memoryClockRate(GHz): 0.8235 pciBusID: 0000:00:1e.0 totalMemory: 11.17GiB freeMemory: 11.10GiB 2018-08-27 12:36:30.929767: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1484] Adding visible gpu devices: 0 2018-08-27 12:36:30.930228: E tensorflow/core/common_runtime/direct_session.cc:158] Internal: cudaGetDevice() failed. Status: CUDA driver version is insufficient for CUDA runtime version Traceback (most recent call last): File "create_mask.py", line 24, in <module> model_dlv3 = model.Deeplabv3() : : : tensorflow.python.framework.errors_impl.InternalError: Failed to create session.
解決方法(今回はこれでは治らない)
調べてみると2つの解決方法がある。が、なおらない…。
その1
以下をプログラムに埋め込む。
import os os.environ["CUDA_VISIBLE_DEVICES"] = "1"
その2
実行時に以下のようにする。
$ CUDA_VISIBLE_DEVICES=1 python **.py
原因
どうやらtensorflowとCUDAのバージョンによって起こるエラーのよう。
$ pip list Package Version ------------------- --------- : tensorflow 1.10.0 : $ nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2017 NVIDIA Corporation Built on Fri_Sep__1_21:08:03_CDT_2017 Cuda compilation tools, release 9.0, V9.0.176
tensorflowは1.10.0、CUDAは9.0であることが確認出来た。
解決方法
今回はCUDAをバージョンアップすることでこの問題を解決する。
CUDA 9.2をインストール
公式サイトからダウンロードリンクを取得しあとは、その下にかかれているとおりに実行していく。
$ wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.2.148-1_amd64.deb $ sudo dpkg -i cuda-repo-ubuntu1604_9.2.148-1_amd64.deb $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub $ sudo apt-get update $ sudo apt-get install cuda
パスを設定
$ echo -e "\n# CUDA and cuDNN paths" >> ~/.bashrc $ echo 'export PATH=/usr/local/cuda-9.2/bin:${PATH}' >> ~/.bashrc $ echo 'export LD_LIBRARY_PATH=/usr/local/cuda-9.2/lib64:${LD_LIBRARY_PATH}' >> ~/.bashrc $ source ~/.bashrc
参考
JupyterNotebookを動かしているサーバが日本語化されていなくてフォルダをクリック出来ない時の対処法
フォルダがクリック出来ない
scpで送ってもらったフォルダが、日本語名だったためか、JupyterNotebook上でクリックが出来なくて開けないという問題が発生した。 ファイルの最終更新日も書かれていない。
lsすると「?」で表される。
$ ls -al drwxrwxr-x 2 ubuntu ubuntu 4096 Aug 26 18:19 ?????????_?????????(R0_L0)
解決策
フォルダ内のものをcpでとってきて、一時的に別のフォルダに入れておく。
$ mkdir tmp $ cp *(R0_L0)/*.MOV tmp zsh: no matches found: *(R0_L0)/*.MOV $ cp *_L0\)/*.MOV tmp
JupyterNotebookで実行しているPythonプログラムにGPUが割り当てられない
GPUが割り当てられない問題
ipythonだったら
os.environ["CUDA_VISIBLE_DEVICES"]="0"
と書いておけば割り当てることが出来たのに…。
実際は以下のように割り当てられていない。
$ nvidia-smi Sun Aug 26 18:20:39 2018 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 384.111 Driver Version: 384.111 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla K80 On | 00000000:00:1E.0 Off | 0 | | N/A 28C P8 31W / 149W | 0MiB / 11439MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
解決策
マウントした先でプログラムを実行していてもう一度色々インストールしなくちゃいけないの忘れてただけでした。
$ conda install tensorflow-gpu
wgetでCannot write to 'filename' (Success). → mountしたらlost+found
Dropboxからファイルをダウンロード
dl=0
ではなくdl=1
にするとwgetで持ってこれるという知見を得た。
$ wget "https://www.dropbox.com/sh/hogehoge/fugafuga?dl=1" -O pose.zip : : HTTP request sent, awaiting response... 200 OK Length: unspecified [application/zip] Saving to: 'video.zip' video.zip [ <=> ] 1.54G 16.9MB/s in 97s Cannot write to 'video.zip' (Success).
…書き込めない? 試しにunzipしてみる。
$ unzip video.zip Archive: video.zip End-of-central-directory signature not found. Either this file is not a zipfile, or it constitutes one disk of a multi-part archive. In the latter case the central directory and zipfile comment will be found on the last disk(s) of this archive. unzip: cannot find zipfile directory in one of pose.zip or video.zip.zip, and cannot find video.zip.ZIP, period.
出来ない。
原因と解決方法
どうやら容量がいっぱいで途中でDL出来なくなってるっぽい。 最近仮想HDDもらったからマウントしよ(もらった時にするの忘れてた)。
mountする
$ sudo mount /mnt /home/ubuntu/Code/ $ ls /home/ubuntu/Code/ lost+found
マウントの仕方間違えた。 取り敢えずアンマウントしてマウント先にmvする
$ sudo umount /home/ubuntu/Code/ $ sudo mv /home/ubuntu/Code/keras-deeplab-v3-plus /mnt $ ls /mnt keras-deeplab-v3-plus lost+found
ほい。
lost+foundとは
破損したファイルの一部が入ります。
ファイルチェックを行いファイルシステムに不整合があると、修復が行われます。
その際破損したファイルがあれば、可能な限りファイルを救出し、 lost+foundフォルダーに入れます。
このフォルダーを直接いじることはありませんが、
破損したファイルを調べるためにフォルダー内にアクセスすることがあります。
このフォルダーは、ルートユーザーのみアクセス可能です。
引用:Ubuntu 12.04 フォルダー構造 その5 - /lost+found、/media、/mnt、/opt ー kledgeb
参考
エラーの原因は容量いっぱいだからだよーって書いてる
mountの基礎
ファイル復元について
lost+foundについて
scpコマンドでサーバのファイルをコピーする
scpの使い方
scp [オプション]転送元パス 転送先パス
尚、[転送元パス]と[転送先パス]は、ログイン名@ホスト名
ってな感じで。
$ scp -rP 9999 /home/keras-deeplab-v3-plus username@12.34.56.789:/home/keras-deeplab-v3-plus
コマンド | 内容 |
---|---|
r | 再帰的にコピー |
P | ポートを指定 |
q | データの転送状況を非表示 |
C | データの圧縮 |
ディレクトリを指定して大量のファイルをコピーする場合は、q
オプションを指定した方が良かった…。
ログがずっと出力されていて速度に結構影響ある気がする。
あと、約2万枚の画像をコピーしたからC
オプションでデータの圧縮をして転送したほうが良かったと後悔。
今後GPUを使っていく上で色々とお世話になりそうなコマンド。
グローバルIPやポート番号の確認方法は以下記事を参考。 saneeeatsu.hatenablog.com
参考
sshfsで「read: Connection reset by peer」
sshfsコマンドでマウント
【エラー】read: Connection reset by peer
# username確認 $ whoami # IPアドレス確認 $ ip route get 8.8.8.8 | awk '{print $NF; exit}'
sshfsでマウントしようとする。
$ sshfs <username>@<IP address>:/home/ubuntu/Code/keras-deeplab-v3-plus /host/keras-deeplab-v3-plus read: Connection reset by peer
エラー発生。
原因をさぐる
IPアドレスの確認
そもそも、今回はデフォルトのポートを使用していないので、-p
で指定する必要があった。
そして、まずそもそもこのIPアドレス合ってるのか???
IPアドレスの確認方法は下に方に書いた。
$ ssh <username>@<IP address> -p 10022
全然返ってこないし合ってないっぽい。
どうやら上で確認したIPアドレスはローカルのもの。
ここではグローバルIPを使う必要があるっぽい。
グローバルIPの確認方法は下の方に書いた。
$ ssh <username>@<Global IP address> -p 10022 Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.15.0-24-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 146 packages can be updated. 0 updates are security updates. New release '18.04.1 LTS' available. Run 'do-release-upgrade' to upgrade to it. *** System restart required *** Last login: Thu Aug 23 16:42:40 2018 from 180.42.119.139
来た!
【エラー】Transport endpoint is not connected
他のサイトではsshを指定していないけど、-oオプションで秘密鍵を指定する必要がある。
$ sshfs <username>@<Global IP address>:/host/handpose-datagenerator /home/ubuntu/Code/handpose-datagenerator -o IdentityFile=/home/ubuntu/.ssh/id_rsa -p 10022 fuse: bad mount point `/home/ubuntu/Code/handpose-datagenerator': Transport endpoint is not connected
またエラー\(^o^)/
【解決】一度アンマウントする
どうやらさっきマウントしたさいにファイルは入っていないけど、「/home/ubuntu/Code/handpose-datagenerator」にマウントしたことになっているっぽいので、
一度下記コマンドでアンマウントを行う。
$ fusermount -uz handpose-datagenerator
もう一度sshfsを行い無事マウント完了!
Global IPアドレス、ポートの確認方法
ついでにGlobal IPアドレスの確認方法とかもメモっておく。
Global IP
$ curl ifconfig.io 123.123.123.123
sshfsのときはIPを「hogehoge.jp」的な感じで指定したけど、curlコマンドで出てきたIPと紐付いているのか確認する。
$ traceroute google.com traceroute to hogehoge.jp (123.123.123.123), 64 hops max, 52 byte packets : :
一致してることが確認出来た。
ポート番号
Netstatで調べることが出来る。
Timer列で自分のローカルIPで(確認方法はip route get 8.8.8.8 | awk '{print $NF; exit}'
)、尚且「keepalive」のとこを見てみると
ローカルIPの横にIPアドレスの「10022」があることがわかる。
$ netstat -ano Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State Timer : : tcp 0 0 192.168.10.190:10022 18.222.249.67:59212 ESTABLISHED keepalive (5545.94/0/0) tcp 0 0 127.0.0.1:36072 127.0.0.1:58327 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:58386 127.0.0.1:37723 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:53061 127.0.0.1:60166 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:52537 127.0.0.1:34392 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:41441 127.0.0.1:37988 ESTABLISHED off (0.00/0/0) tcp 0 0 192.168.10.190:59698 104.244.42.2:443 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:33733 127.0.0.1:59838 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:48892 127.0.0.1:37987 ESTABLISHED off (0.00/0/0) tcp 0 0 192.168.10.190:10022 192.168.10.100:49975 ESTABLISHED keepalive (1706.49/0/0) tcp 0 0 127.0.0.1:50056 127.0.0.1:57345 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:37946 127.0.0.1:57753 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:47838 127.0.0.1:54867 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:43009 127.0.0.1:51510 ESTABLISHED off (0.00/0/0) tcp 0 0 192.168.10.190:43524 199.59.148.138:443 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:58327 127.0.0.1:36072 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:55399 127.0.0.1:38644 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:36856 127.0.0.1:54609 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:51455 127.0.0.1:56636 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:47953 127.0.0.1:57976 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:47167 127.0.0.1:32966 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:33922 127.0.0.1:60727 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:54364 127.0.0.1:47697 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:51109 127.0.0.1:41766 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:44250 127.0.0.1:37723 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:49218 127.0.0.1:36829 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:56636 127.0.0.1:51455 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:39713 127.0.0.1:58926 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:53319 127.0.0.1:53940 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:48417 127.0.0.1:51016 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:33895 127.0.0.1:49986 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:32854 127.0.0.1:43655 ESTABLISHED off (0.00/0/0) tcp 0 0 192.168.10.190:49144 195.149.177.1:5938 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:40178 127.0.0.1:58801 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:51109 127.0.0.1:41760 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:37348 127.0.0.1:59235 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:40286 127.0.0.1:46323 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:58507 127.0.0.1:40436 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:32942 127.0.0.1:40959 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:58507 127.0.0.1:53724 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:54502 127.0.0.1:43649 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:43987 127.0.0.1:34058 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:37723 127.0.0.1:44250 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:57753 127.0.0.1:37940 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:60727 127.0.0.1:33922 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:57753 127.0.0.1:37946 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:51455 127.0.0.1:56632 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:58801 127.0.0.1:57006 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:59235 127.0.0.1:37348 ESTABLISHED off (0.00/0/0) tcp 0 0 192.168.10.190:34994 104.244.42.66:443 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:34058 127.0.0.1:43987 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:60539 127.0.0.1:42398 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:40959 127.0.0.1:32942 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:59834 127.0.0.1:33733 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:40436 127.0.0.1:58507 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:41766 127.0.0.1:51109 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:60166 127.0.0.1:53061 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:60727 127.0.0.1:34074 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:51016 127.0.0.1:48417 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:49986 127.0.0.1:33895 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:43655 127.0.0.1:32854 ESTABLISHED off (0.00/0/0) tcp 0 0 192.168.10.190:10022 192.168.10.20:36986 ESTABLISHED keepalive (2726.86/0/0) tcp 0 0 127.0.0.1:34392 127.0.0.1:52537 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:57976 127.0.0.1:47953 ESTABLISHED off (0.00/0/0) tcp 0 0 127.0.0.1:54609 127.0.0.1:36856 ESTABLISHED off (0.00/0/0) tcp 0 0 192.168.10.190:50708 104.244.42.130:443 ESTABLISHED off (0.00/0/0) tcp6 0 0 :::10022 :::* LISTEN off (0.00/0/0) : :
.ssh/configを用いる
下のサイトのようにconfigで管理する方法も。 qiita.com