# apt-get update # apt-get upgrade -y # ls -l /etc/ssh
IP Address: 133.99.22.10 (学内 LAN or VPN からのみアクセス可能) OS: Windows 10 Pro CPU: Intel Core i7-6700HQ @ 2.60.GHz Memory: 16GB GPU: NVIDIA GeForce 980M (8GB) cuda: 11.2.2 cuDNN: 8.1.1 docker用の受信ポート開放: TCP:7070-7075, TCP:8080-8085
IP Address: 133.99.22.13 (学内 LAN or VPN からのみアクセス可能) OS: Windows 11 Home CPU: Core i7-11800H @ 2.30GHz Memory: 32GB GPU: NVIDIA GeForce RTX 3070 Laptop GPU (8GB) cuda: 11.2.2 cuDNN: 8.1.1 docker用の受信ポート開放: TCP:7070-7075, TCP:8080-8085
$ docker run --name コンテナ名 --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 --gpus all \ -p ポート1:22 -p ポート2:8888 \ -v /home/docker/コンテナ名:/root/doc -it nvcr.io/nvidia/tensorflow:21.08-tf2-py3
割当 | コンテナ名 | ポート1 (22へ転送) | ポート2 (8888へ転送) |
---|---|---|---|
nitta | 4semi0 | 7070 | 8080 |
g19905 | 4semi1 | 7071 | 8081 |
g19911 | 4semi2 | 7072 | 8082 |
g19928 | 4semi3 | 7073 | 8083 |
g19937 | 4semi4 | 7074 | 8084 |
g19938 | 4semi5 | 7075 | 8085 |
[注意] 各コンテナ中では /root/doc/ の下のファイルだけが永続的に残るので注意してください。それ以外のファイルは、コンテナを消去したときにはすべて無くなります。変なタイミングで Docker ホストが再起動したりしてコンテナが壊れたときは、コンテナを消去して作り直す可能性があります。
# apt-get update # apt-get upgrade -y # apt-get install -y openssh-server # echo 'root:パスワード' | chpasswd # sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/" /etc/ssh/sshd_config # service ssh start
各Docker コンテナにアクセスするためのパスワードは、授業時に伝えます。
[PCのcygwin or Mac の場合] $ ssh root@133.99.22.13 -p 707x ← xは0-5の数字 [例] $ ssh root@133.99.22.13 -p 7070
$ apt-get update $ apt-get upgrade -y
[注意] conda コマンドを root 権限で動作させると Warning が表示されるので、Anaconda は使用しないことにします。こういう場合は venv を使う方がよいようです。
# cd # apt update # python3 -m venv ./doc/venv/imgentf2 エラーが起きるので、指示にしたがって venv をインストールする。 # apt install python3.8-venv
# python3 -m venv ./doc/venv/imgentf2
# source ./doc/venv/imgentf2/bin/activate (imgentf2) # ← 新しい仮想環境でシェルが動いているので、"pip install パッケージ名" でインストールしていきます。
たとえば Hands on Image Generation with TensorFlow 2 のgithub に置かれている https://github.com/PacktPublishing/Hands-On-Image-Generation-with-TensorFlow-2.0/blob/master/README.md では、venv を使ってpython仮想環境 imgentf2 を作成していますが、requirements.txt というファイルから一気にパッケージを バージョン指定してインストールしています。 今回は、GPUが動作するTensorFlowのバージョンに変更してインストールしてみます。
[注意] cuda 11.2 & cuDNN 8.1 に対応していないバージョンの TensorFlow では GPU を利用できません。対応している TensorFlow は こちら にあるように2.5.0, 2.6.0, 2.7.0, 2.8.0, 2.9.0, 2.10.0 (Oct/09/2022 時点)なので、それらを使うように設定してください。
# source ./doc/venv/imgentf2/bin/activate (imgentf2) # pip3 install --upgrade pip (imgentf2) # pip3 install -r req.txt ← TensorFlow のバージョンを変更したもの。相当時間(30分?)がかかる。 (imgentf2) # python -m ipykernel install --user --name=imgentf2(imgentf2) # jupyter nbextension enable --py widgetsnbextension← これはエラーになる。
req.txt |
|
[手元のPC上の cygwin または Mac の「ターミナル」上で] 手元のパソコンからコンテナにファイル(例 src.zip)をコピーするには $ scp -P 707x src.zip root@133.99.22.13:doc コンテナから手元のパソコンにファイル(例 doc/src.zip)をコピーするには $ scp -P 707x root@133.99.22.13:doc/src.zip .
(imgentf2) # jupyter notebook
[jupyter notebook のCell内での記述] ← imgentf2 環境でインストールしておいたほうが面倒がないが # "import cv2" causes "libGL.so.1: cannot open Error" ! apt-get update ! apt-get upgrade -y ! apt-get install -y libgl1-mesa-dev
[例] "Kernel" → "Change kernel" → imgentf2
[Jupyter Notebookで使われている python のパスを調べる方法] import sys sys.executable'/usr/bin/python'
標準のpythonの場合 | 仮想環境のpythonの場合 |
---|
[2022/10/11 注記] なぜか「新たに作成した venv 仮想環境で、matploglib パッケージをインストールしても、import できないというエラーがでる」ようになった。昨日までは動いていたはずなのだが。パッケージ配布サイトの問題か?しばらく様子を見ることにする。 ← 「ipynb が標準のpython環境で実行されていた」のが原因であった。
Windows を Docker Host にした場合、リモートで作業を行うには3通りの方法が考えられる。
Windows マシンのIP address に直接 ssh でアクセスできる。 「コマンド・プロンプト」上で docker コマンドが使えるように設定されていれば、 リモートアクセスした cygwin からもdocker コマンドが使える。
WSL2 上の Ubuntu は、Docker ネットワークの仮想的な IPアドレスを持っているので、 Docker Host の Windows でポートフォワーディングを行う必要がある。 転送先 IP アドレスは毎回変わるので、設定が面倒。 ネットワーク上に多くの説明があるが...
Windows Pro 限定で、Windows Homeでは不可。
Windows が reboot すると、docker 上のコンテナが停止する。手動での起動方法は以下の通り。
$ docker start コンテナ名 [例] $ docker start 4semi0
コンテナが一旦停止 (stop) して再スタートすると、sshサーバは起動されない。手動での起動方法は以下の通り。
$ docker exec -it コンテナ名 service ssh start [例] $ docker exec -it 4semi0 service ssh start