NovelAI 原版网页UI+后端部署教程
sanae10-11更新:显存占用问题可以通过指定fp16计算解决,16G显存就足够运行完整模型,77prompt长度限制通过增加-e CLIP_CONTEXTS=3解决,docker得启动指令已经更新。
10-11更新 @LyanOrz 提供的colab白嫖跑官方前后端
https://colab.research.google.com/drive/1_Ma71L6uGbtt6UQyA3FjqW2lcZ5Bjck-
一些碎碎念
其实我感觉自己用的话部署整套UI+后端挺麻烦的,毕竟前端只是帮你发了个请求,后端也只是把请求改了个样子发给实际处理的api,直接部署api调用api结果是一样的,还方便白嫖。
可以参考 @LyanOrz 大佬提供的用colab白嫖部署的方法,直接嫖一个后端出来,显卡都省了岂不美哉.jpg
https://colab.research.google.com/drive/1X-62QjZJpZ5Ewo3w6xr9D23Tu90udvQI
或者使用stable-diffusion webui替换模型的webui,也是白嫖colab
https://colab.research.google.com/drive/1zuK0u8UW8IKMEvVNz7lU34Qph_gS14XD
还没写完文章就有的更新:
已经有大佬把官方前端后端单独提出来了,没必要折腾下面那么多完整的部署,直接下载运行就好了,默认使用的是4G大的模型,理论上替换成7G那个模型就是跟官方一样的效果。
magnet:?xt=urn:btih:4a4b483d4a5840b6e1fee6b0ca1582c979434e4d&dn=naifu&tr=udp%3a%2f%2ftracker.opentrackr.org%3a1337%2fannounce
其他的吐槽
原版这全套莫名其妙的极其能吃显存,吃完还不释放(见文末尾),如果有大佬优化一下最好了。
又更新:
看起来全尺寸的7G模型就是特别能吃显存,建议显存低于24G的就不要尝试使用官方版本前后端了,铁定爆(
目前来看如果准备使用官方前后端还想玩img2img的话。。。可能需要32G+的显存,建议购买V100S或者A6000或者A100(跑
1.准备
还是需要准备一台拥有大显存的Linux系统的GPU服务器,由于webui需要同时跑一个tag predict,所以建议显存大于12G(不过12G基本上就是下限,可能没事就炸一下显存),建议至少拥有24G以上)
初始的配置参考上一篇https://telegra.ph/NovelAI%E5%8E%9F%E7%89%88%E9%83%A8%E7%BD%B2%E6%95%99%E7%A8%8B-10-07
一直完成到第⑨步,之后的步骤先不做。
2.创建一个docker bridge
docker network create --subnet=10.240.0.0/16 nainetwork
3.下载tag predict所需文件
4.将上一步的压缩包解压到上一篇教程中的novelai文件夹中。
5.修改docker中的models.py文件让他从本地加载tag predict依赖文件
执行
cd ~
mkdir docker
cd docker
下载models.py
然后将models.py下载并存放到新建的docker文件夹内
执行
echo -e "FROM novelai:latest\nCOPY models.py /usr/src/app/hydra_node" > Dockerfile
检查一下文件夹内容
无误的话执行
docker build . -t novelai:latest
6.启动tag predict docker
注意:他可能需要从被墙的huggingface下载东西,建议机器科学上网
docker run --gpus all --network "nainetwork" --name "tag-predict" --restart=always -d -p 127.0.0.1:7000:7000 -v 第一个教程中那个novelai文件夹的位置:/root -e DTYPE="float32" -e AMP="1" -e MODEL="embedder" -e DEV="True" -e MODEL_PATH="/root/stableckpt/animefull-latest" -e MODULE_PATH="/root/stableckpt/modules" -e TRANSFORMERS_CACHE="/root/transformer_cache" -e SENTRY_URL="" -e ENABLE_EMA="1" -e VAE_PATH="/root/stableckpt/animevae.pt" -e BASEDFORMER="1" -e PENULTIMATE="1" -e TOKEN=114514qwqqwq novelai:latest gunicorn main:app --workers 1 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:7000
7.查看tag predict docker状态
8.测试tag predict是否工作
curl 'http://127.0.0.1:7000/predict-tags' -H 'Authorization: Bearer 114514qwqqwq' -H 'Content-Type: application/json' --data-raw '{"prompt":"kochiya"}'
如果以上步骤一切正常的话,就可以开始部署web的后端了
9.运行pgsql
下载pgsql数据库文件
解压pgsql数据库文件
tar -zxvf pgsqldata.tar.gz
拉取pgsql docker
docker pull postgres
运行pgsql
docker run -d --network "nainetwork" --name "pgsql" -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=development -v 解压出的pgsqldata文件夹位置:/var/lib/postgresql/data postgres
10.运行web后端
下载并导入web后端docker
导入docker
docker load -i novelai-backend.tar
运行docker
docker run -d --log-opt max-size=10m --log-opt max-file=3 --network "nainetwork" --restart=always -p 3000:3000 -e LISTEN_ADDRESS=0.0.0.0 -e VOICE_TOKEN=114514qwqqwq -e NODE_ENV=development -e DB_HOST=pgsql -e DB_PORT=5432 -e DB_USER=postgres -e DB_PASSWORD=development -e DB_NAME=novelai -e RECAPTCHA_SECRET_KEY=disabled -e HYDRA_DUMMY=true -e AI_KEY= -e JWT_SIGN_SECRET=b95bac5a-9c43-4cdf-8c65-fc1bcc557e41 -e PADDLE_VENDOR_ID=1234 -e PADDLE_VENDOR_TOKEN= -e MAILGUN_DOMAIN=1234 -e MAILGUN_KEY=1234 -e REGISTRATION_DISABLED= -e ADMIN_PASSWORD=1234 novelai-backend:latest
检查web后端log
11.运行模型
如果准备同时加载两个模型的话对显存要求比较高,量力而行。
加载curated模型
docker run --gpus all -d --restart=always --network "nainetwork" --name "nai-sfw" -v 解压的NovelAI文件夹位置:/root -e DTYPE="float16" -e CLIP_CONTEXTS=3 -e AMP="1" -e MODEL="stable-diffusion" -e DEV="True" -e MODEL_PATH="/root/stableckpt/animesfw-latest" -e MODULE_PATH="/root/stableckpt/modules" -e TRANSFORMERS_CACHE="/root/transformer_cache" -e SENTRY_URL="" -e ENABLE_EMA="1" -e VAE_PATH="/root/stableckpt/animevae.pt" -e BASEDFORMER="1" -e PENULTIMATE="1" -e TOKEN=114514qwqqwq novelai:latest gunicorn main:app --workers 1 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:80
加载full模型
docker run --gpus all -d --restart=always --network "nainetwork" --name "nai-full" -v 解压的NovelAI文件夹位置:/root -e DTYPE="float16" -e CLIP_CONTEXTS=3 -e AMP="1" -e MODEL="stable-diffusion" -e DEV="True" -e MODEL_PATH="/root/stableckpt/animefull-latest" -e MODULE_PATH="/root/stableckpt/modules" -e TRANSFORMERS_CACHE="/root/transformer_cache" -e SENTRY_URL="" -e ENABLE_EMA="1" -e VAE_PATH="/root/stableckpt/animevae.pt" -e BASEDFORMER="1" -e PENULTIMATE="1" -e TOKEN=114514qwqqwq novelai:latest gunicorn main:app --workers 1 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:80
12. 部署前端
拉取nginx docker
docker pull nginx
下载前端文件
解压文件
unzip nginx.zip
启动nginx
docker run -d --network "nainetwork" -v 解压出来的nginx目录位置/conf.d:/etc/nginx/conf.d -v 解压出来的nginx目录位置/build:/etc/nginx/build -p 80:80 nginx:latest
12.修改hosts
将本地hosts中添加一条
你后端部署在的机器的ip novelai.baidu.com
13.访问web
现在尝试访问一下http://novelai.baidu.com
使用账号test@nya.la 密码Aa123123123 登录即可
只有Image Generation下面的功能是可以使用的。
一些其他信息
跑生成时的显存占用
已知问题:
生成一个图片之后这破程序不回收显存,生成下一张就会
然后docker就会自动崩溃重启。