Jetson Nano 2GBで Stable Diffusion ~技術スタック編~


Jetson

Jetson Nano 2GBで Stable Diffusion ~技術スタック編~

はじめに

最初にお伝えしますが、この記事は技術スタックについて書いており、Stable Diffusion を実行できる環境は構築できていません。
この記事ではStable Diffusion を使用する上での問題点。改善点を書いています。


前提

前提としてこの記事でのセットアップを前提としています。特にJetpack4.6.1を使用していることに注意してください。


方針

Jetson Nano 2GB での環境構築は基本的にはdockerを使用します。
動かすモデルは以下のモデルです。
https://huggingface.co/andite/pastel-mix

このモデルを動かすには次のライブラリが必要です。

  • transformers
  • diffusers

お互いに対応するバージョンをインストールする必要があります。今回はバージョンを固定します。

  • transformers=0.12.0
  • diffusers=4.19.2

問題点

以下に具体的な例を示していますが、実際にStable DiffusionをDockerJupyterLabで使用してみてわかったことですが、使用できるDockerが見つからない!


失敗例1

Dockerのイメージは以下のものを使用しました。
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-ml

このイメージはここに書かれている通り、以下のライブラリが初めからインストールされています。

  • TensorFlow 1.15.5
  • PyTorch v1.10.0
  • torchvision v0.11.0
  • torchaudio v0.10.0
  • onnx 1.11.0
  • CuPy 9.2.0
  • numpy 1.19.5
  • numba 0.53.1
  • OpenCV 4.5.0 (with CUDA)
  • pandas 1.1.5
  • scipy 1.5.4
  • scikit-learn 0.24.2
  • JupyterLab 2.2.9

JupyterLabがインストールされているためWebで実行できることがわかります。
しかし、このバージョンではtransformers=0.12.0diffusers=4.19.2がインストールできるPythonのバージョンではないため実行することはできませんでした。


失敗例2

Dockerのイメージは以下のものを使用しました。
https://catalog.ngc.nvidia.com/orgs/nvidia/resources/merlin_pytorch

今回はtransformers=0.12.0diffusers=4.19.2をインストールできました。しかし、実行してみるとCUDA実行することができませんでした。
Dockerイメージの説明ページをみるとJetpackに関する記載や環境変数に関する情報がありませんでした。
おそらくdockerのイメージがJetpack4.6.1に対応していないためであると思われます。


今後の方針

今回でStable DiffusionをJetson Nano 2GBで実行するために必要なことが明確になりました。

  • transformers=0.12.0diffusers=4.19.2がインストールできるPythonのバージョン
  • CUDAが実行できるようなDockerの設計(環境変数、NVIDIA Driverなど)

自分にはDockerの知識が欠けているのでDockerをマスターすれば以上のことが解決しそうです。