scpコマンドでポート指定をしたファイル転送

scpは通常

$ scp -r 転送するファイル 転送先

(転送するファイル、転送先はローカルパス、あるいはユーザー@ホスト:リモートパス)

 

ポートを指定する場合は

$ scp -P ポート番号 -r 転送するファイル 転送先

 

 

dockerコンテナを別のマシンに移動するには

dockerコンテナを別のマシンに移動したいときに行うことを記述する。

私はこちらのサイトを参考にした。

https://uxmilk.jp/55512

 

流れは以下の通りだ。(赤文字は人によって異なる)

①dockerコンテナからdocker imageを作成する

$ docker commit my_docker_container my_docker_image

 

②docker imageをtarファイルとして保存する

$ docker save my_docker_image > my_docker_image.tar

 

③tarファイルを別のマシンに転送する

scp my_docker_image.tar machine2@xxx.xxx..xxx.xxx:/home/username/dir1

この作業には時間がかかる場合があるのでバックグラウンドでやることも可能。

以下のページでscpをバックグラウンドで実行する方法を載せている。

バックグラウンドでscpの処理を行う - jskangarooのブログ

 

④別のマシンでtarファイルからdocker imageをロードする

$ docker load < my_docker_image.tar

 

⑤ロードしたdocker imageからコンテナを作成する

$ docker run --gpus all --name my_docker_container --mount type=bind,source=/home/username/dir1,target=/mnt -it my_docker_image /bin/bash

(,後にスペースがない事に注意)

docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].エラーの対処法

dockerコンテナを作成しようとした際、以下のようなエラーが出た。

docker: Error response from daemon: could not select device driver "" with capabilities: gpu.

ERRO[0000] error waiting for container: context canceled 

 

これは「NVIDIAドライバーがDockerを認識できていないか、nvidia container tools をインストールしたけどDockerのデーモンを再起動していない場合に起きる」と以下のサイトに書いてあった。

https://cocoinit23.com/docker-gpu-error-response-from-daemon-linux-runtime-spec-devices-could-not-select-device-driver-with-capabilities-gpu/

 

ただし、自分の解決方法はこのサイトとは異なった。

自分はnvidia公式サイトのSetting up NVIDIA Container Toolkitを参照した。

 

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker

 

$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

 

$ curl -s -L https://nvidia.github.io/nvidia-container-runtime/experimental/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list

 

$ sudo apt-get update

 

$ sudo apt-get install -y nvidia-docker2

 

$ sudo systemctl restart docker

 

$ sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi

 

$ nvidia-smiの出力があれば、上手くいっている。

 

 

 

 

 

CUDA環境が壊れたため入れ直した際の手順(Ubuntu 20.04)

PCをシャットダウンし、つけ直すと、CUDAの環境が壊れてしまった。

PCはUbuntu 20.04。

 

具体的には以下のような状況だった。

nvidia-smiのコマンドは正常に動く。

・nvcc -VはCommand 'nvcc' not foundになる。

・/usr/local/ ディレクトリを確認すると、あるはずのcudaディレクトリが無い。

 

補足をすると、

$ nvidia-sminvidiaドライバーの情報である。

このコマンドで表示されるCUDA Versionはドライバーが対応している最大のCUDA Versionである。

一方、$ nvcc -VはCUDA Tookkitのバージョン、つまりCUDAのバージョンが表示される。

 

よって、CUDAを入れ直す必要があった。

その際、以下のサイトを参考にした。

https://qiita.com/yukoba/items/c4a45435c6ee5d66706d

 

行ったこと:

sudo apt update

 

sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub

 

wget wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.2.89-1_amd64.deb

 

sudo dpkg -i cuda-repo-ubuntu1804_10.2.89-1_amd64.deb

 

sudo apt update

 

sudo apt install cuda cuda-drivers

 

sudo reboot

 

rm cuda-repo-ubuntu1804_10.2.89-1_amd64.deb

 

vim ~/.bashrc

ファイルの末尾に以下の2行を追加する

export PATH="/usr/local/cuda/bin:$PATH"

export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"

 

sudo reboot

 

 これでCUDAが入った。

参考したサイトにはその後もcuDNNのインストールの手順が載っているが、それは行わなかった。

 

これでpytorchなどが使えるようになった。

 

Ubuntuでファイル、ディスク、ディレクトリ(フォルダ)の容量を確認する

以下にファイル、ディスク、ディレクトリ(フォルダ)の容量を確認する方法を示す。

特定のファイルの容量確認
$ ls -l /path/to/directory

ディスクの容量確認
$ df -h

ディレクトリの容量確認
$ du -hs /path/to/directory

TabError: inconsistent use of tabs and spaces in indentationの解決法

pythonのコードをサイトからコピー&ペーストし、そのコードに行を追加した際、

TabError: inconsistent use of tabs and spaces in indentation

というエラーが出てしまった。

 

この対処法としてこのファイル内のタブを全てスペースに変換する、という方法が考えられる。

 

タブ→空白

vimでファイルを開き($vim file.py)、以下を打ち込む。

:set expandtab
:retab

 

終わったら

:wq

 

これで上のエラーは出なくなった。

ちなみに空白からタブは

:set noexpandtab
:retab!

らしい。

 

module 'cupy' has no attribute 'util' エラーの対処法

module 'cupy' has no attribute 'util'

というエラーはcupyのバージョンによって発生する。

例えばver. 9.0ではこのエラーが確認できた。

これはバージョンを下げることで解決できる。

 

pip install cupy==6.1.0

 

の様に古めのバージョンを指定するとよい。

6.1と7.0ではこのエラーが発生しないことを確認済み。