ML/AI開発環境:LXD/LXCにJupyterlabとpytorch導入
ようやく、開発用のアプリを入れる段階まで来ました!
今回は、流行りの機械学習、AI、DeepLearningなどをいじれるコンテナを作っていきます。
同様の環境を作っている人なら、今までの記事も参考になるかもしれません↓↓
今までの記事一覧:
「PCセットアップ:デュアルブート編」
「PCセットアップ:SSH編」
「lxd/lxc編」
「Macでx11接続」
「デュアルブートでのSSH接続」
「WindowsでX11接続」
今回のアプリインストールはこんな感じ
カオス駆動開発!
Ubuntu Upgrade
作成したてのLXCコンテナは最新ではないのでアップデートしておきます。
sudo apt update
sudo apt upgrade
Anacondaインストール
機械学習やAI系をやるならAnaconda環境にしておくと良いらしいので入れてみます。
(トレンドには乗らないとね)
web anaconda web
↑↑↑からダウンロードへのリンクを探してwgetでインストーラ取得
(入れてから思ったけど、minicodaの方が良いかも。。。)
wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh
bash Anaconda3-2019.10-Linux-x86_64.sh
source ~/.bashrc
conda update -n base -c defaults conda
conda create --name my_env python=3.7
conda activate my_env
conda info -e
このままの流れでPytorchインストール
web pytorch
↑↑ここでインストールコマンド確認
conda install pytorch torchvision cpuonly -c pytorch
まだ何も試してないので、使い方はまた今度。。。
このままの流れでJupyterLabインストール
conda install jupyterlab
起動
==2019/12/23夜中 update ===
コンテナ環境でjupyter labを起動するのでlocalhostだけじゃなくコンテナのIPでもアクセスできるように起動します。
nohup jupyter lab --ip=* --no-browser &
nohup.outにアクセス用のurlとtokenが記載されているのでメモしておきます。
http://コンテナ名:8888/?token=xxxxxxxxxxxxxxxxxxx
or http://127.0.0.1:8888/?token=xxxxxxxxxxxxxxxxxxx
sudo iptables -t nat -A PREROUTING -p tcp -d <ホストの外部IP> --dport 8888 -j DNAT --to-destination <コンテナのIP>:8888
Macに入れてあるChromeからホストのIP(192.168.0.22)経由でJupyter Labにアクセスしました。
やっぱり直接アクセスはX11 Forwardingに比べるとめっちゃ早いです!
ここから昼間に書いたちょっと古い内容(間違ってないけどややこしい)
jupyter lab &
....
....
http://localhost:8888/?token=xxxxxxxxxxxxxx
のですが、まだホスト側とコンテナ側がport:8888でつながってません。
lxc proxyで繋ぎます。 (ホスト側で設定)
sudo lxc config device add <コンテナ名> <proxy名 p8888とか> proxy listen=tcp:localhost:8888 connect=tcp:localhost:8888
firefox http://localhost:8888/?token=xxxxxxxxxxxxxx
lxc proxyを閉じるときは
sudo lxc config device show <コンテナ名>
sudo lxc config device rm <コンテナ名> <proxy名>
それにしても、外からX11でfirefox立ち上げるのは遅すぎて話にならないですね。。。
でもローカルのブラウザ使ってアクセスするには家のルータにもう一つポートを空けなければいけない。。。
セキュリティ詳しく無いので、webアクセスのためにセキュリティなしでポート空けるのはすごく怖い。。