【技术教程】教你如何在云服务器中部署 AI 绘画【需要Linux基础】
郑重警告:不要把部署在云的AI绘画分享给别人,自己用就好,否则你可能会涉黄
前置技能
- 会使用 ssh 远程连接服务器
- 知道 Linux 的基础命令
- 知道怎么把文件扔进服务器
- 会用 JupyterLab
部署教程
选择云服务提供商
这里我用 https://www.autodl.com/ 作为例子,你们可以用自己喜欢的提供商。注意要点:
- 得选带 GPU 的
- 可以方便的使用 ssh 进行连接
- 能直接用 jupyter 操作
- 尽量可以长时间保存数据,不要像 Google Colab 断开连接直接清光数据,那你辛辛苦苦出的图就木的了。当然 Colab 好处是环境高度统一,拿到脚本直接跑绝对不会出错。
- 网络连接比较顺畅的。因为 webui 显示图片用的 png ,太卡图出的慢,而且网络状况的异常会让界面出现一些bug,得刷新解决
- 如果你选择国内的云服务器,那么得想办法解决 github pip 的连接问题,选国外的就没这个烦恼。
租用机器
这里各家的操作不一样,如果是 autodl, 推荐选北京区,卡最多,支持网盘,方便你保存数据。同时推荐 RTX 3080,性价比最高。
初始镜像这里我选择 Miniconda -> conda3 -> python 3.8 -> 11.3。一无所有开局,方便后期加点
关于 AutoDL 的网盘
把东西上传到网盘后,在 /root/autodl-nas/ 可以直接访问。这里推荐把 model.ckpt 先上传好,注意不同区域的网盘不互通。
拉取 stable-diffusion-webui
下载我分享的百度网盘里面的东西,里面有个叫做 install-stable-diffusion-webui.ipynb 的脚本,把他下载下来。
点击快捷工具里面的 JupyterLab
把脚本扔进去,直接拖动文件进去就行了
然后双击打开,直接从上到下运行里面的每一句代码即可
注意如果你是别的云服务器,可能需要适当修改一下。
此时出现画面下方的字样代表成功运行了。
不过我们并不能直接访问 http://127.0.0.1:7860 因为他不是运行在我们的电脑里面。
当我们使用 ssh 连接到服务器时,带上参数 -L 7860:127.0.0.1:7860 ,即可把服务器的 7860 端口映射到本地 的7860端口。就像这样:
ssh -p 12345 root@region-41.autodl.com -L 7860:127.0.0.1:7860
连接上之后,在自己浏览器上访问 http://127.0.0.1:7860 即可。
顺便推荐一个 ssh 客户端软件:https://electerm.github.io/electerm/
编译 xformers
启动时添加参数 –xformers 能大幅增加推理速度,但是目前这个版本,在Ubuntu上正常安装的 xformers 插件运行时会报错,实测自己从源码编译可以解决这个问题,不要做好准备,编译时间可能长达一个小时
在我分享的网盘里面有个文件,compile-xformers.ipynb,同样是拖进 jupyterLab 然后执行,接下来就是漫长的等待。。。
不要以为你的机器卡死了,在 ssh 上运行 htop,会发现他真的很努力的在跑:
等到命令执行完毕,再去启动 webui,加上 –xformers 参数:
注意!如果你之前安装过 xformers ,请务必先使用 pip uninstall xformers -y 把原来的包删除,再进行编译。如果你已经编译完了,才发现这个问题,那么卸载旧的包后,就要到 xformers 目录下执行 pip install –verbose –no-deps -e . 来安装新的 xformers
RTX 3080 ,加上 xformers 后,4 张 640×960 35 steps 的图只需要 30s,这速度杠杠滴
如何把图片批量下载下来
很简单,使用 unzip 或者 tar 把 outputs 文件夹打包,然后直接从 jupyter 网页右键文件,点击 Download 即可,我也写了脚本,也在分享的网盘里面,文件名 pack-images.ipynb。
执行后会在 stable-diffusion-webui 目录下生成一个 outputs-xxx-xx-xx.zip 。随后可以执行后面的两行命令删除所有生成的图片。