1. 背景
前回投稿した記事(【LAN内 or WANから】ssh接続したUbuntuマシンのDockerコンテナ内でJupyter Labを起動・カスタマイズ【深層学習用】)では,Anacondaをインストールするなどして,様々な環境を作りやすくしましたが,完成したDocker Imageのサイズは20GBとなり,コンテナを大量に作成すると,PCの容量を圧迫してしまうということや,最初のセットアップで大量のインストールをするため時間がかかってしまう,といったデメリットがありました.
それを解消すべく,Docker Imageのサイズが約4.4GBとなる軽量版の構築方法を試したので備忘録として記述します.
Anacondaにこだわらない方向けです.
前回の記事には記述していた「ssh接続の準備」などの部分や大まかな流れは特に変わらないので一部省略しています.
主に前回との変更点を記述しています.
2. 前提
PC環境
GPUマシンは前回の記事のものとは違うマシンを用いたためスペックが違います(下がっています).
- GPUマシン(サーバー側)
- Ubuntu 20.04 LTS
- Intel(R) Core(TM) i9-7900X CPU @ 3.30GHz
- GeForce GTX 1080 Ti
- メモリ64GB
- GPUドライバーインストール済み
- openssh-serverインストール済み
- Dockerインストール済み
- ローカルPC(クライアント側)
- MacBook Pro (13-inch, 2020, Thunderbolt 3ポートx 4)
- メモリ16GB
- macOS 12.2.1
- 2.3GHzクアッドコアIntel Core i7
3. コンテナの作成,カスタマイズ,保存
ここからはGPUマシン内のterminalで操作しています(ローカルPCからssh接続でterminalを操作してOKです).
やりたいこと
- Dockerの中に入れるもの
- cuda 10.1
- Python 3.8.10
- PyTorch 1.8.1
- Jupyter Lab
- +好きなライブラリなど
前回の記事と比較して,ライブラリのバージョンが古いなどの違いがありますが,セットアップしたGPUマシンのGPUが古かったため,対応しているGPUドライバーのバージョンなどの問題などから以上のバージョンでセットアップすることになりました.
手順
任意のバージョンのcudaを入れておいてください.
Dockerイメージをpull
docker pull ubuntu:20.04
新規コンテナ作成 & run
docker run -it --gpus all --name <コンテナ名> -v ~/Desktop/user1:/container/user1 ubuntu:20.04
コンテナに各種ライブラリをインストール
ここで,2つのcommandファイルを作成し,実行を行うことでまとめて必要なライブラリや好きなライブラリを追加インストールします.
apt update
apt -y upgrade
apt install -y python3-pip
pip install torch==1.8.1+cu101 torchvision==0.9.1+cu101 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
pip install jupyterlab
apt install curl
apt install vim
apt install wget
apt install ffmpeg
apt install imagemagick
apt install nodejs npm
npm install -g n
n stable
apt purge nodejs npm
exec $SHELL -l
source ~/.bashrc
pip install jupyterlab-language-pack-ja-JP
pip install lckr-jupyterlab-variableinspector
pip install jupyterlab_nvdashboard
pip install ipywidgets
pip install black
pip install yapf
pip install isort
pip install jupyterlab_code_formatter
pip install jupyterlab_tabnine
pip install jupyterlab-lsp
pip install 'python-lsp-server[all]'
pip install pprintpp
pip install jupyterlab-spreadsheet-editor
pip install ipympl
pip install opencv-python
この2つのファイルをローカルマシンで作っておき,sshfsなどを用いてGPUマシンのコンテナで同期しているディレクトリに入れてコンテナ内からアクセスできるようにしておきます.
インストール時は以下のコマンドで実行できます.
bash <commandファイル名.command>
Docker Imageの保存
全ての追加インストールが完了した後,コンテナから抜けます.
exit
現在のdockertestの環境を保存しておきます.
docker commit dockertest <新規Image名>
新規Image名
は好きに決めてOKです.
保存が完了したら,あとは前回の記事と同じようにコンテナの作成やJupyter Labの実行ができます.
4. まとめ
今回は前回の記事の改良版(軽量化版)なので,細かい点の説明は省いています.
もしもわからなかったら前回の記事を参考にしてみてください.
最後に
ミスなどありましたら,コメントでご指摘の程よろしくお願いします.
また,より便利な方法などございましたら是非教えて下さい.
ここまで読んでくださり,ありがとうございました.