見出し画像

サーバー上で学習させる時のメモいくつか

ssh接続が切れた後もdocker内で学習させる方法
1. サーバーに入る
2. screenコマンドで新規仮想セッションを立ち上げる
3. 新規セッション内でdockerコンテナに入り、モデルを学習させる
4. Ctrl + aを打って、その後dを打つとデタッチ(元のセッションに戻る)
5. screen -rでアタッチ(仮想セッション状況を確認出来る)

1.
(ローカル$) ssh ~
2.
(サーバー$) screen
<Enterでscreenについての説明が閉じる>
3.
(サーバー$) docker-compose run ~
(docker#) python train.py
4.
(docker#) ::学習中::
<Ctrl+a, dでデタッチ>
(サーバー$)
5.
(サーバー$) screen -r
(docker#) ::学習中::

pytorchで(じゃなくてもいいか)tensorboardを使う方法
(これは理解が甘い)
1. サーバーに入る + (-L 6006:localhost:6006)
2. dockerコンテナに入る + (-p 6006:6006) + <イメージ名>
(3. pip install tensorboardでtensorboardを使えるようにする)
4. tensorboard --logdir <tensorboardのパス名> --host 0.0.0.0
5. コンソール画面上に表示されたアドレスをブラウザに貼る

1.
(ローカル$) ssh ~ -L 6006:localhost:6006
2.
(サーバー$) docker-compose run --rm -p 6006:6006 <イメージ名>
(3.)
(docker#) pip install tensorboard
4.
(docker#) tensorboard --logdir <path> --host 0.0.0.0

サーバー上のdockerコンテナ内でjupyter notebookを使う方法
(表現はかなり怪しい)
サーバーとdockerを繋げながらdockerコンテナに入る
→ dockerコンテナ内でjupyter notebookを起動
→ ローカルとサーバーを繋げることで、ローカルをdockerを繋げる
が基本的なイメージ
<起動のさせ方>
1. サーバー上からdockerコンテナに入る + (-p 8888:8888) + <イメージ名>
※ -pの後の数字はそれぞれ、<host>:<container>のポート名を表していて、使われていなければ何の数字でもいい
2. jupyter notebook --ip 0.0.0.0 --allow-rootでdockerコンテナ内でjupyter notebookを起動
※ ここでトークンがコンソール画面に表示されるが、これは一旦放置
3. ローカルから ssh -fNL 8888:localhost:8888 ~でサーバーに接続
※ <ローカルのポート>:localhost:<host>で指定してあげてる
4. ウェブブラウザに直接localhost:8888を打つと、トークンを入れる欄が出てくるので、2.で表示されたトークン部分をコピーして貼り付ける
<終了のさせ方>
5.  ps aux | grep sshでつながってるポートを把握
6. kill {ID名}で終了させる

1.
(ローカル$) ssh ~
(サーバー$) docker-compose run -p 8888:8888 <イメージ名>
2.
(docker#) jupyter notebook --ip 0.0.0.0 --allow-root
3.
<ターミナルで別タブを開く>
(ローカル$) ssh -fNL 8888:localhost:8888 ~
4.
<ブラウザに直接localhost:8888を入れる>
<トークンを求められるので、2.で表示された(token=)以下をコピペ>
5.
(ローカル$) ps aux | grep ssh
6.
(ローカル$) kill ****(ID名)

この記事が気に入ったらサポートをしてみませんか?