【Docker15】Jetson AGX XavierをDockerで環境構築する

さあ今回はJetsonで環境構築に苦しんでいる皆さんに救いの手を差し伸べるべく

JetsonをDockerで環境構築していきたいと思います!!

皆さんが苦しんでるとこ、分かりますよ

パンくん

・Cudaとtensorflowのバージョンが合わねええええ
・⬆︎そのせいで色んなライブラリ(Keras, numpy, etc)がうまく入らねええええ

・ついでにOpenCVも入らねえええええ
・とりあえず何もライブラリが入らねえええええ

・え。待って、Jetson買うたびにこの苦しさを味わうの?死にてええええええ

こんな感じですよね(笑) 僕はこれで一週間悩んだりしました。
『俺はこんなくだらないことを悩まないぜ』という方は、そっとこの投稿ページを閉じてください。
筆者と一緒で『こんなことで苦しみたくない。。』と思っている方にとっては
大きなヒントが得られるように書いていきたいと思いますので、一緒にやっていきましょう!
では、早速やっていこう!

dockerのインストール(Ubuntu用)

※ ” $ docker images ” でWARNINGが出る場合

WARNING: Error loading config file: /home/user/.docker/config.json: stat/home/user/.docker/config.json: permission denied

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json: dial unix /var/run/docker.sock: connect: permission denied

👇下記のコードを打ってみる(<username>:自分のユーザーネームを代入)

docker-composeのインストール(Ubuntu用)

👇docker-composeの最新のバージョンを確認(メモしてください)
https://github.com/docker/compose/releases


下記のコマンドの 1.29.2 の部分は先程確認したバージョンに書き換えてください

⚠上記のやり方でうまく行かない方はpipを使って入れます。下記を実行してください。

Nvidia NGCからDocker imageをPull🐳

NVIDIA NGC|CATALOGへ行き、自身の環境に合うパッケージを探してDocker Imageをpullしよう。

Nvidia NGC:Nvidiaが提供しているDocker imageのオープンソースソフトライブラリ

今回はJetpack4.4.1をインストールしたJetsonに、機械学習ライブラリであるtensorflowを実行できる環境を想定してチョイスしました。
この一通りのやり方を覚えてしまえば、Pytorchなどの別のオープンソースも豊富に提供されているので、簡単に環境構築することができます。

👇検索欄に”tensorflow“と入力し、”NVIDIA L4T TensorFlow “(L4T: Jetsonに対応)を選択


👇tensorflowは今回は2系を使いたいので、”r32.4.4-tf2.3-py3“をPull Tagでコピー

👇コマンドで実行し、Docker imageをpullします

✔️Dockerfileの作成

先ほどpullしてきたコンテナパッケージをベースにDockerfileを作成していきます🐳
追加でインストールしているライブラリはあくまで例になります、皆さん自分がやりたいことに合わせて必要なライブラリ、パッケージを入れて下さい。

実際にビルドしていきます。

✔️l4t Containerを起動

👇先程作成したDockerfileを起動

コマンドの意味

—privileged : コンテナ以外のホスト上のプロセスとほぼ同レベルでホストへのアクセスを許可するように、ホストへの全てのデバイスアクセスを可能にする
– —rm : コンテナを抜けたら削除する
– –gpus all : nvidiaのデフォルトコマンド(GPUを使うのに必要)
– –net : ネットワークに接続

-e : 環境変数を設定
–device : デバイスの接続
-v : ファイル、フォルダのマウント

※それ以外のコマンドに関しては本ブログのこちらを参照

カンの良い方は思いましたよね、docker起動させる度に”docker run ~~~~”っめんどくさくね?って….
そうですこんなこと起動する度にコマンド叩いてられませんよね。
そこで長ったらしいコマンドを打たなくても済むようにしたのがdocker-composeと言われているものです。(他にも沢山の恩恵があります)
下記のブログにはdokcer-composeの使い方、書き方をまとめましたので、確認してみてください👇

【Docker17】docker-composeの使い方をマスターしよう

【Docker24】DockerでDjangoを使ったWebアプリ開発環境を構築してみよう

いかがだったでしょうか?Docker使ったことないよ…て方には少し難しかったかもしれません。しかし、これからはDockerは必須のスキルになることは間違いありませ。(いちいち機械学習の動作環境を構築するのは効率悪いですからね)

これはAIエンジニアに限らずWeb系エンジニア、アプリ開発エンジニアなど、どの分野でも呼吸するように使われます。またほとんどの企業で採用されているので思い立ったが吉日、今すぐ勉強して身につけてしまいましょう!

『Docker勉強していこうかな』『使いこなせるようになりたい』と思っている人はこちらの記事も参考になると思うので、ぜひみてみてくださいね🙆‍♂️

今回はこの辺で、ばいばい👋