源代码
https://github.com/cumulo-autumn/StreamDiffusion
基础原理
首先Stream Batch,是将原来顺序的去噪步骤改为批量化处理。允许在一个批处理中,每幅图像处于去噪流程的不同阶段。
如此一来,可以大大减少UNet推理次数,显著提高吞吐量。
此外,原先的CFG算法中,需要额外大量计算负样本,导致计算效率低下。
RCFG方法则构建一个“虚拟残差噪声”,这样就只需要一次或者零次负样本计算,减少了计算负样本的开销。
相比之前的CFG方法加速了2倍。
而输入/输出队列主要是利用队列存储缓冲输入和输出,将图像数据预处理等操作与UNet主体网络分隔开,实现管道各个处理环节的并行化,防止处理速度不匹配的情况发生。
随机相似性过滤器,可以基于图像相似性跳过一些UNet处理,减少不必要的计算量,降低功耗:
预计算则是提前缓存一些静态量,如提示嵌入、噪声样本等,减少每次生成的重复计算。
最后,使用TensorRT、Tiny AutoEncoder等加速模块,对模型进行优化,进一步提升推理速度。
体验
安装其步骤依次执行
打开小猫咪,注意运行这个模型需要外网
git clone https://github.com/cumulo-autumn/StreamDiffusion.git
下面选择合适的分支1或分支2执行:
分支1:这里我之前安装过anaconda,所以直接用base默认环境就好了,否则用分支2
activate base
分支2:注意python版本必须大于等于3.10,否则安装StreamDiffusion会失败
如果想要新建一个环境,执行下面的语句,会出现venv环境
conda create -n streamdiffusion python=3.10
conda activate streamdiffusion
一定要进入venv环境,也就是执行上面的语句,再安装cuda
pip3 install torch==2.1.0 torchvision==0.16.0 xformers --index-url https://download.pytorch.org/whl/cu121
#for Stable Version
pip install streamdiffusion[tensorrt]
python -m streamdiffusion.tools.install-tensorrt
pip install --force-reinstall pywin32
最后运行程序