zshを使用時にbyobuのウィンドウ名が現在のパスになってしまう

ウィンドウ名がリネーム出来ない

下の写真では、keras-deeplab-v3-plusにいると、ウィンドウの名前もそれと同じになってしまい、F8でリネームしようとしても直すことが出来ない。

f:id:saneeeatsu:20180828161840p:plain

解決策

~/.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をインストール

公式サイトからダウンロードリンクを取得しあとは、その下にかかれているとおりに実行していく。 f:id:saneeeatsu:20180827134530p:plain

$ 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上でクリックが出来なくて開けないという問題が発生した。 ファイルの最終更新日も書かれていない。 f:id:saneeeatsu:20180826200724p:plain

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

参考

ローカルIP確認

アンマウント

sshfsの使い方。-oオプションを用いた秘密鍵の指定方法。

Globel IP

ポート番号

SSHについてもっとよくわかる

複数公開鍵はauthorized_keysにまとめてパーミッションも変える!