コンテンツにスキップ

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時間程度、時間がかかります。