重构了 webui 插件,主要是把相同的代码函数挪到一起;支持了 refiner,之前用 refiner 会报错,并且第二次推理 base 不会加速。
关于 refiner:
refiner 其实可以看做是一个 unet,在推理的某个时刻替换 base 模型的 unet,使图像更高清。使用 base + refiner 推理的过程可以(不严谨地)看作是两个模型,在 n 个 step 的前 m 个 step 用第一个模型推理,剩下的 step 用第二个模型推理。
之前使用 onediff 跑 base + refiner 会报错,即使能跑起来也没有加速作用,原因如下:
第一次推理正常,第二次推理时候报错 meta tensor 不能转化成 oneflow tensor。因为 webui 在加载 refiner 后,会把 base 销毁(也比较合理,因为之后的推理 base 模型不会再使用了),销毁的做法是 model.to(meta),所以在第二次推理时,拿到的 unet 是个 meta model,就报错了
重构了 webui 插件,主要是把相同的代码函数挪到一起;支持了 refiner,之前用 refiner 会报错,并且第二次推理 base 不会加速。
关于 refiner: refiner 其实可以看做是一个 unet,在推理的某个时刻替换 base 模型的 unet,使图像更高清。使用 base + refiner 推理的过程可以(不严谨地)看作是两个模型,在 n 个 step 的前 m 个 step 用第一个模型推理,剩下的 step 用第二个模型推理。
之前使用 onediff 跑 base + refiner 会报错,即使能跑起来也没有加速作用,原因如下:
unet是refiner -> oneflow 把 unet 替换成 graph -> webui 加载 base,再把 unet 替换成 base
这就导致用 base 推理时,base 是最后一步的 webui 加载进来的纯 torch model,没有加速效果 本 PR 解决了上面两个问题。注意: