JetBot Docker
Swapは必須
Dockerベースになると、JetPackの起動時点でのSwapの設定が必須になります。Swapを設定しないと、学習時の処理がうまく動かなくなります。
Swapの設定
Swapを作成します。
sudo systemctl disable nvzramconfig
sudo fallocate -l 6G /mnt/6GB.swap
sudo mkswap /mnt/6GB.swap
sudo swapon /mnt/6GB.swap
fstabにswapを反映します。
sudo vi /etc/fstab
/etc/fstab
を修正します。
# /etc/fstab: static file system information.
#
# These are the filesystems that are always mounted on boot, you can
# override any of these by copying the appropriate line from this file into
# /etc/fstab and tweaking it as you see fit. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/root / ext4 defaults 0 1
/mnt/6GB.swap swap swap defaults 0 0
JetBot Dockerの設定
Jetbotのrepoをgit cloneします。
git clone https://github.com/NVIDIA-AI-IOT/jetbot/
Dockerの設定
パワーモードと他のパラメーターの初期化をおこないます。
cd jetbot
./scripts/configure_jetson.sh
JetBot Dockerに関連する環境変数の設定をおこないます。
cd docker
configure.sh
を修正します。
vi configure.sh
JetPack 4.5.1向けのJetbotイメージが存在しないために(issues:406)、configure.sh
を下記のように修正します。
if [[ $L4T_VERSION = "32.4.3" ]]
then
JETBOT_BASE_IMAGE=nvcr.io/nvidia/l4t-pytorch:r32.4.3-pth1.6-py3
elif [[ "$L4T_VERSION" == "32.4.4" ]]
then
JETBOT_BASE_IMAGE=nvcr.io/nvidia/l4t-pytorch:r32.4.4-pth1.6-py3
elif [[ "$L4T_VERSION" == "32.5.1" ]]
then
export L4T_VERSION="32.5.0"
JETBOT_BASE_IMAGE=nvcr.io/nvidia/l4t-pytorch:r32.5.0-pth1.6-py3
else
echo "JETBOT_BASE_IMAGE not found for ${L4T_VERSION}. Please manually set the JETBOT_BASE_IMAGE environment variable. (ie: export JETBOT_BASE_IMAGE=...)"
fi
configure.sh
実行して、確認します。
source configure.sh
コンテナでCUDA関連のコンポーネントを使用するために必要となるデフォルトのdockerランタイムを設定します。
./set_nvidia_runtime.sh
Jupuyterコンテナのメモリの上限設定をおこないます。
export JETBOT_JUPYTER_MEMORY=500m
export JETBOT_JUPYTER_MEMORY_SWAP=3G
Dockerのインストールと起動
Dockerイメージをインストールして起動します。
sudo systemctl enable docker
./enable.sh $HOME
ネットワーク状況次第では、30分〜1時間程度、時間がかかります。