wsl2のdockerのkaggle公式イメージ(gpuあり)のコンテナに建てたjupyter-labにプライベートネットワークの他のPCから繋ぐ
いろいろ試行錯誤あったので自分用メモ
後でもう少し詳しく書く(はず)
やったことは以下
- wsl2の有効化
詳しい説明がたくさんあるのでそちらを参照。
途中で山ほど見た。
後でリンク貼る。
- docker及びnvidia-dockerのインストール
dockerはともかくnvidia何とかあたりをどうやったのか自分でも覚えていない。
この辺のサイトを見てやったと思う。
初心者がDocker + Ubuntu20.04でKaggleのGPU環境構築した備忘録 - Qiita
待ってました CUDA on WSL 2 - Qiita
- kaggle環境のdockerfileを取得
buildにすごく時間かかる。
し、たまによくわからんエラーで止まる。
何度かコンテナやイメージを消してやり直したりしたらできてた。
kaggleの環境をdockerで再現 | VasteeLab
- コンテナを起動
(wsl2) docker run --runtime nvidia --rm -it -p 8080:8080 -v /home/hoge/kaggle-ws:/home/kaggle-ws --name kaggle-gpu kaggle/python-gpu-build /bin/bash
こんな感じのコマンドでやった。
runじゃなくてstart,attachで--rmなしとかのほうがいいんですかね。dockerワカラナイ。
でもどこかでインスタンスは毎度消したほうがいいとかって見た気がする。
一応オプションについてメモ
あっているかはわからん。
・ --runtime nvidia : ランタイムをnvidiaのやつ(要はGPU?)使いますよということ?
・ -it : なんかコマンドの入出力をコンテナとホストでつないでくれるやつ?
・ --rm : コンテナ終了時(exitしたとき?)にインスタンスを自動削除してくれる
・ -p 8080:8080 : ホストとコンテナのポートフォワード?してくれる。jupyter-labはデフォルトが8080って見たので8080にした。
・ -v /hoge:/hogehoge : ホストとコンテナのディレクトリを共有してくれる。左がホスト右がコンテナ。ほんとは--mountオプションでやったほうがいいとか見たがうまくいかなかった。
・ --name kaggle-gpu : コンテナの名前つけ
・ kaggle/python-gpu-build : 起動するイメージ名
・ /bin/bash : 起動後にbash使えるようにしてくれる?
Dockerコンテナ内でKaggle APIをつかう - Qiita
- kaggle.jsonを配置
~/.kaggleの下にkaggle.jsonを置く。
これでkaggle apiが使える。
GCPとkaggle公式イメージ(docker)でGPU環境の構築 - Qiita
- jupyter-labを起動
使ったdockerイメージだと"run_jupyter.sh"なるものが用意されているのでこれを実行。
このスクリプトの中のオプションも大事っぽいがちゃんと調べてないので追々。
コマンドプロンプトを管理者権限で実行して、↓のようなコマンドを実行。
netsh.exe interface portproxy add v4tov4 listenaddress=<ローカルマシンのipアドレス>listenport=8080 connectaddress=<wslのipアドレス> connectport=8080
WSL2で起動したサーバーに外部の端末からアクセスする – GUNMA GIS GEEK
他のPCからサーバ建てたPCに入れるように新しい受信規則を設定。
ネットワークはプライベートのみ。サーバPCのネットワークの変更も忘れずに。(ここで詰まった)
Windows10で特定のポートを開放する – Born Digital サポート
プライベート? パブリック? ネットワークの種類の違いと切り替え方 - いまさら聞けないWindows 10のTips - 窓の杜
- 今回結局やらなかったけどこういうのもやりたい
公式Dockerとvscodeを使ったKaggleの環境構築 - Qiita
個人的にはgoogle colabのランタイムもリモートPCにつなぎたい。
とりあえずこんなところでしょうか。
最初はデスクトップの環境を寝ながらノートPCで使いたいというだけだったのに、思った以上に大変なことになった。
勉強不足。