1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NVIDIA JetsonAdvent Calendar 2024

Day 5

Pytorch上の実装をJetsonに移植するのはわりと簡単

Last updated at Posted at 2024-11-25

ここ半年ほど、Pytorchで実装されているアルゴリズムをJetson上で動作確認した。
比較的簡単だったので、手順を示す。

準備

  1. 動作させるアルゴリズムの実装を見つける。
  2. 機械学習のフレームワークの種類を確認する。
  3. 以下は、pytorchだったとして。
  4. JetsonのLTのバージョンに即したpytorch のDockerImageを明確にする。
  5. 既存のDockerfileをまずは、雛形として用意する。
  6. docker build 用、docker run 用のシェルスクリプトを用意する。

FROM nvcr.io/nvidia/l4t-pytorch:r35.2.1-pth2.0-py3

これは、Pytorchの動作する環境をNVIDIAがl4t(Linux_for_Tegra), つまりjetson用に用意したDockerImageを使います。(docker build 時にダウンロードされる。)

RUN apt-get update
RUN apt install sudo
RUN apt install -y git-lfs
# only for development
RUN apt update && apt install -y eog nano
RUN apt install -y meshlab

RUN で始まる行は、Docker build の際に実行されるコマンドです。
Docker環境内でnanoエディタや、画像ファイルのビューワーeogを使いたいので入れています。

本題です。
移植元でaptでインストールしているライブラリ・コマンドがあれば、以下のようにDockerfileに書き加えます。

RUN apt install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
RUN apt install -y libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
RUN apt install -y libv4l-dev v4l-utils qv4l2
RUN apt install -y curl
RUN apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

Pythonのライブラリをpipで入れる必要があれば入れます。

RUN python3 -m pip install パッケージ名

RUN python3 -m pip install -r requirements.txt

あるいは、元のリポジトリにpyproject.toml があれば

RUN cd ${そのディレクトリ} && python3 -m pip install .

を実行します。
例 以下のようにシエルスクリプトを用意します。

docker_build.sh
#/bin/bash
docker build -t depth-anything-zed:100 .
docker_run.sh
#!/bin/bash
xhost +
export GIT_ROOT=$(cd $(dirname $0)/.. ; pwd)
docker run -it --rm --net=host --runtime nvidia -e DISPLAY=$DISPLAY \
	-v ${GIT_ROOT}/depth-anything-zed/weights:/root/depth-anything-zed/weights \
	-v ${GIT_ROOT}/depth-anything-zed/data:/root/depth-anything-zed/data \
	-v ${GIT_ROOT}/depth-anything-zed/test:/root/depth-anything-zed/test \
	--device /dev/bus/usb \
	--device /dev/video0:/dev/video0:mwr \
	-v /tmp/.X11-unix/:/tmp/.X11-unix depth-anything-zed:100

以下のように実行します。

sh docker_build.sh 
sh docker_run.sh

として、docker環境を立ち上げることができました。

ここまでの手順をふむと,
CUDAデバイスのあるUbuntuPCでの動作例をJetsonで動作させるのは比較的簡単です。
UbuntuPCでのDockerfileが移植元で公開されている場合には、FROM行で指定するDockerImageをNVIDIAのL4T(もしくはjetpack)の指定のあるDockerImageに置き換えればいいだけですから。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?