10行代码,让colab给我画画
众所周知,colab 已经屏蔽了 stable diffusion,既有文本的粗暴过滤,也有运行时特征检测。就算没有限制,要跑通也不是很轻松的事,而且随时可能因为版本依赖问题歇菜。
这里演示一种简便的绕过方法——使用 docker。
直接上代码,其实都不到 10 行:
!wget -q -c https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -O /tmp/c !chmod a+x /tmp/c !pip install udocker !udocker --allow-root pull universonic/stable-dif${q}fusion-webui:latest !udocker --allow-root create --name=sdw universonic/stable-dif${q}fusion-webui:latest !udocker --allow-root setup --nvidia sdw
!udocker --allow-root run --entrypoint=sh sdw -c 'pip cache purge' !/tmp/c tunnel --url http://localhost:88 &\ udocker --allow-root run -p 88:7860 --entrypoint=sh sdw -c '~/stable-dif${q}fusion-webui/webui.sh -f'
代码解释:
- 首先下载 cloudflared 用于最后建立隧道,因为镜像默认
--share
启动会造成环境崩溃。 - 接着是 udocker 替代 docker。由于环境限制,docker 无法在 colab/kaggle 中启动。
q
没有赋值,所以${q}
会被系统忽略,这里是用来绕过关键字检测。webui.sh -f
是允许 root 身份启动。- 以上代码分为两个 cell。启动 webui 会 pip 安装许多模块,为了清理缓存,可以在完全启动后停止再重启第二个 cell(约省 2G 多)。
- 因为是在容器内运行,所以外部应该可以删掉很多东西,给模型腾空间,具体哪些可以删晚些时候再研究。
不推荐使用 kaggle 的理由:
- stable diffusion webui 不支持多显卡,用 kaggle 纯属浪费。
- kaggle 会封杀 NSFW 图片,可能会实时炸号。
- kaggle 磁盘上限是以写入量计算,不方便删除切换模型。
你好,我想问一下,该怎么样利用colab的下载速度来下载civitai的模型呢?
你可以使用插件 Stable-Diffusion-Webui-Civitai-Helper,不过它不支持多线程,速度挺随缘的。
我建议你找找看有没有单独的脚本,或者干脆转 ComfyUI,它的一些模型管理插件下载速度很不错。
您好,请问可以挂载文件夹么? 不然没法下载模型
可以像docker那样挂载文件夹,和docker语法差不多,详见udocker项目说明
也可以在容器内下载,或者用模型管理插件
老哥,你的方法有意思啊,但是我看不懂udocker的文件夹在哪啊,怎么把contolnet的模型移入?怎写指令安装?
实体目录在/root/.udocker/container下,或者也可以通过映射自定义目录实现。
另外,你还可以加上`-v /usr`,复用系统的环境,省点安装依赖的时间。