本地部署NovelAI:生成小黑贞

自从部署了Novel AI之后,连steam里面的游戏都没打开过了,这才叫真正的3A大作啊。

说实话以前一直想爬danbooru的图(主要是为了拿到tag),但是由于各种事情最后还是咕咕咕了。pixiv上的我倒已经爬了1个多T的日榜原图了,要不下次就一步到位爬熊猫站吧(手动狗头)。

戳这里看本地部署教程,不重复造轮子了。这里只说说自己改动的一些地方,和踩过的坑:

  1. 自己的显卡(1080 Ti)只能带得动animefull-final-pruned,并且会用掉将近10G的显存。animefull-latest大概会占用14-16G,具体哪个数值忘了,反正3090轻松秒杀。
  2. 上面的部署教程提供的sentence-transformers_all-MiniLM-L6-v2里面的tokenizer.json是有问题的,自己去hugging face下一个替换掉就好了。
  3. Novel AI的前端API有2分钟的等待时间,超时就会中断请求。改static/_next/static/chunks/pages/_app-xxx.js这个文件,Ctrl+F查找替换,把12e4(120000毫秒,即2分钟)改成36e5(1小时)就行,改长一点也没关系。
  4. Novel AI和stable diffusion的webui对prompt处理的区别:
    1. Novel AI用{}强调关键字,一个大括号权重乘1.05;stable diffusion用()强调关键字,一个小括号权重乘1.1。施法还是要注意一下这点区别的。
    2. stable diffusion支持(word:weight)直接给word更改权重,比如(1girl:1.2),但Novel AI没见到有这功能。
      为了统一一下咒语的效果,这里魔改的地方如下:

      上面的部分是把()加入到强调字符里,并且把权重改为1.1。改动的地方见行号右边标蓝的部分(比如157、165-166、171-178行)。
      下面的则是支持(word:weight)语法的(其实{word:weight}也行):
    3. Novel AI默认开启了Add Quality Tags,会在prompt前面增加masterpiece, high quality这两个prompt,negative prompt在Undesired Content这里,用它内置的其实也差不多,咏唱别人的咒语的时候需要改成None,然后把咒语粘贴到下面的框框里。

安装也不算复杂,对我来说与其折腾venv还不如直接新建一个conda环境……

1
2
3
4
5
6
7
conda create -n novelai python=3.8
conda activate novelai
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
conda install dotmap fastapi omegaconf einops torchdiffeq jsonmerge -c conda-forge
conda install uvicorn transformers scikit-learn ftfy scikit-image
conda install faiss-cpu -c pytorch
pip install sentence_transformers pytorch_lightning

下面就从最基础的咏唱开始展示,话不多说。

混进了一只巴御前

别的不说,Novel AI这黑贞画的已经比我强了(怒摔数位板)。