先看一下部署后的界面和生成的图片。
在jetson orin nano super上部署stable diffusion比较简单,有现成的docker image和代码可用。
docker image拉取
使用的docker image是dustynv/stable-diffusion-webui,对于jetson orin nano super的jetpack6.2来说,使用r36.2.0版本就可以。
docker pull dustynv/stable-diffusion-webui:r36.2.0
拉取后,使用如下命令启动docker container
sudo docker run --runtime nvidia --gpus all --net host --ipc host -it --name sd -v /home:/home dustynv/stable-diffusion-webui:r36.2.0
启动stable diffusion webui
在这个docker image中,已经包含了stable diffusion webui的代码和tensorrt的extension。当前阶段我们默认只使用stable diffusion来部署,后续会对模型做tensorrt的加速。
cd /opt/stable-diffusion-webui && python3 launch.py \
--data=/data/models/stable-diffusion \
--enable-insecure-extension-access \
--xformers \
--listen \
--port=7860
这样就启动了stable diffusion webui。然后就可以使用文生图、图生图、controlnet等工具了。这样启动默认使用的是0.0.0.0地址,可以直接通过局域网内其他计算机访问jetson的ip和port来打开。
对于8G的jetson orin nano super设备来说,建议把gnome桌面程序kill掉,可以节省600M左右的显存。
- 禁用桌面图形用户界面
如果内存不足,您可能需要尝试禁用Ubuntu桌面图形用户界面(GUI)。这将释放窗口管理器和桌面所占用的额外内存(对于Unity/GNOME约为800MB,对于LXDE约为250MB)。
在我的机器上,图形用户界面占用了450M左右的memory。将它关掉还是能省很多的memory的。一般我都是不用图形化的时候就先关掉,用的时候再打开。
可以临时禁用桌面,在控制台中运行命令,然后在需要时重新启动桌面:
$ sudo init 3 # 停止桌面
# 使用Ctrl+Alt+F1、F2等组合键让用户重新登录到控制台
$ sudo init 5 # 重新启动桌面
如果希望在重启后该设置仍然生效,可以使用以下命令来更改启动行为:
$ sudo systemctl set-default multi-user.target # 启动时禁用桌面
$ sudo systemctl set-default graphical.target # 启动时启用桌面