请注意,本文所给出的代码现在已经无法正常使用
二话不说,先放代码(由Izumi Chino整合)(对,就是我)
#整合版NovelAI
!nvidia-smi
%cd /content/
!apt install -y -qq aria2
!aria2c --summary-interval=5 -x 3 --allow-overwrite=true -Z \
https://pub-2fdef7a2969f43289c42ac5ae3412fd4.r2.dev/naifu.tar \
https://pub-2fdef7a2969f43289c42ac5ae3412fd4.r2.dev/animefull-latest.tar
!echo "Decompressing..."
!tar xf naifu.tar && rm naifu.tar
!echo "Done."
%cd /content/naifu
!pip install virtualenv && bash ./setup.sh
!curl -Ls https://github.com/ekzhang/bore/releases/download/v0.4.0/bore-v0.4.0-x86_64-unknown-linux-musl.tar.gz | tar zx -C /usr/bin
!curl -Lo /usr/bin/cloudflared https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 && chmod +x /usr/bin/cloudflared
!/content/naifu/venv/bin/python -m pip install -qq pytorch_lightning==1.7.7
%cd /content/
!mkdir /content/naifu/models/animefull-latest
!tar xf animefull-latest.tar -C /content/naifu/models/animefull-latest && rm animefull-latest.tar
!sed -i 's/map_location="cpu"/map_location="cuda"/g' /content/naifu/hydra_node/models.py
%cd /content/naifu
%env DTYPE=float16
%env CLIP_CONTEXTS=3
%env AMP=1
%env MODEL=stable-diffusion
%env DEV=True
%env MODEL_PATH=models/animefull-latest
%env ENABLE_EMA=1
%env VAE_PATH=models/animevae.pt
%env PENULTIMATE=1
%env PYTHONDONTWRITEBYTECODE=1
%env SAVE_FILES=1
!./venv/bin/python -m uvicorn --host 0.0.0.0 --port=6969 main:app & bore local 6969 --to bore.pub & cloudflared tunnel --url localhost:6969
那么我们按照源代码一点一点分析。
一、获取Colab笔记本配置
这一段放在最前面,也是用于检查GPU状态的
!nvidia-smi
可以看出,这个代码是调用了nVidia的系统管理界面的代码,本人在Colab上运行结果如下:
Tue Jan 3 08:17:34 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.32.03 Driver Version: 460.32.03 CUDA Version: 11.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla T4 Off | 00000000:00:04.0 Off | 0 |
| N/A 50C P0 27W / 70W | 0MiB / 15109MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
由上面的输出可以看出,我们所得到的配置是Tesla T4这款GPU,也只有这一种GPU,驱动的版本是NVIDIA-SMI 460.32.03,所占用的GPU内存是0MiB,一共有15109MiB的显存。
二、下载 Novel AI API 后端、模型
这是部署很重要的一块内容
%cd /content/
!apt install -y -qq aria2
!aria2c --summary-interval=5 -x 3 --allow-overwrite=true -Z \
https://pub-2fdef7a2969f43289c42ac5ae3412fd4.r2.dev/naifu.tar \
https://pub-2fdef7a2969f43289c42ac5ae3412fd4.r2.dev/animefull-latest.tar
!echo "Decompressing..."
!tar xf naifu.tar && rm naifu.tar
!echo "Done."
代码首先切换工作目录到\content
然后运用apt install这个指令安装aria2多线程下载工具(其中的-y指令是默认填写y允许,不需要用户自动选择[y/N])
然后调用刚刚安装的aria2下载地址为https://pub-2fdef7a2969f43289c42ac5ae3412fd4.r2.dev/naifu.tar和https://pub-2fdef7a2969f43289c42ac5ae3412fd4.r2.dev/animefull-latest.tar的两个tar压缩文件(–summary-interval是设置下载间隔时间,–allow-overwrite=true选项是重新下载找不到的文件,但是我不知道为什么在Colab上部署还要这个选项)
其中上面的naifu.tar是NovelAI的核心文件,animefull-latest.tar是anime库文件
下载结束之后,系统会输出“Decompressing”表示正在解压,解压完之后会输出“Done”表示解压完毕。
三、安装依赖
相当于Runtime,必要的一块
%cd /content/naifu
!pip install virtualenv && bash ./setup.sh
!curl -Ls https://github.com/ekzhang/bore/releases/download/v0.4.0/bore-v0.4.0-x86_64-unknown-linux-musl.tar.gz | tar zx -C /usr/bin
!curl -Lo /usr/bin/cloudflared https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 && chmod +x /usr/bin/cloudflared
!/content/naifu/venv/bin/python -m pip install -qq pytorch_lightning==1.7.7
这里是下载依赖的模块,首先切换到刚刚解压完毕的naifu文件夹内,然后用pip install来安装virtualenv库随即用bash命令启动安装脚本setup.sh,然后用curl来下载bore-v0.4.0-x86_64-unknown-linux-musl.tar.gz并将其解压到/usr/bin文件夹内(说明了Colab其实是Linux系统,甚至可以在上面部署trojan,不是吗)
四、启动模型(以7GB的Animefull-latest库运行为例)
终于,我们的NovelAI马上就能启动了,这是最后一步——调用模型并启动NovelAI
%cd /content/
!mkdir /content/naifu/models/animefull-latest
!tar xf animefull-latest.tar -C /content/naifu/models/animefull-latest && rm animefull-latest.tar
!sed -i 's/map_location="cpu"/map_location="cuda"/g' /content/naifu/hydra_node/models.py
%cd /content/naifu
%env DTYPE=float16
%env CLIP_CONTEXTS=3
%env AMP=1
%env MODEL=stable-diffusion
%env DEV=True
%env MODEL_PATH=models/animefull-latest
%env ENABLE_EMA=1
%env VAE_PATH=models/animevae.pt
%env PENULTIMATE=1
%env PYTHONDONTWRITEBYTECODE=1
%env SAVE_FILES=1
!./venv/bin/python -m uvicorn --host 0.0.0.0 --port=6969 main:app & bore local 6969 --to bore.pub & cloudflared tunnel --url localhost:6969
回到原来的content文件夹内,然后创建一个新的文件夹,路径为/content/naifu/models/animefull-latest,然后解压我们下载过的模型,并且删除tar压缩文件
后面就不用多说了吧,配置一下NovelAI,然后运用trycloudflare分配一个临时地址,映射localhost:6969(即本地设置的NovelAI地址)
好了,分析就到此结束,我要去试试Colab能不能配置Trojan了
最后附上几张经过一番训练(调教)后画的图