NovelAI 原版网页UI+后端部署教程

NovelAI 原版网页UI+后端部署教程

sanae

10-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所需文件

https://sanae1-my.sharepoint.cn/:u:/g/personal/kaze_sanae1_partner_onmschina_cn/Eap1cSwv3ChIrBhQ5w7FouEB7tVdXn4J6ice8Ed9MXv1tg?e=eiM7IG


4.将上一步的压缩包解压到上一篇教程中的novelai文件夹中。
5.修改docker中的models.py文件让他从本地加载tag predict依赖文件

执行

cd ~

mkdir docker

cd docker


下载models.py

https://sanae1-my.sharepoint.cn/:u:/g/personal/kaze_sanae1_partner_onmschina_cn/EXN0x-q5Ga9Dqr7C2KBkqX8BaNOW4bnPfom50_dP5KOjZA?e=yZHXfy

然后将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数据库文件

https://sanae1-my.sharepoint.cn/:u:/g/personal/kaze_sanae1_partner_onmschina_cn/EVKF2JPWuVhBghJ4r5ARn1kBCmPSJzNtZcPPdKWQ0JReSQ?e=z7B0Dm

解压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

https://sanae1-my.sharepoint.cn/:u:/g/personal/kaze_sanae1_partner_onmschina_cn/EdYp8BMRsS5FmP1XctA-ufgBT-fnKRbL-wfsq7Egbsr-GQ?e=zVXhpT

导入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

下载前端文件

https://sanae1-my.sharepoint.cn/:u:/g/personal/kaze_sanae1_partner_onmschina_cn/EQNlupHiXzBBtX7YmIpbNykBJu6u7Y2FXVRqt_Dx5cMoKA?e=JVI49e

解压文件

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就会自动崩溃重启。


Report Page