如何设计容器来实践AI模型的PnP
1 前言
在本专栏的前面文章《从隐空间看AIGC 的未来发展》里,曾经提到了,今天全球AIGC 产业即将进入产业的革命性的转折点,也逐渐浮现AI 模型容器( 集装箱) 的身影。而AI 集装箱将带给码头( 隐空间) 一项美好的次序。一旦我们致力于制定AI 容器的规格,就会拥有主导未来AIGC 产业发展的话语权。
于是,在本篇文章里,将继续以实例详细说明AI容器的设计和实践技术。
2 以Stable Diffusion为例
首先观察SD (Stable Diffusion) 的基本架构,如图1。
图1 Stable Diffusion的基本架构
(https://zhuanlan.zhihu.com/p/621325215)
这图里的中间( 蓝色) 部分就是隐空间(Latent space) 所在,它内含一个UNet 模型,如图2。
图2 SD内含的UNet模型
(https://zhuanlan.zhihu.com/p/621325215)
于是,得到了详细的SD隐空间扩散(Diffusion) 架构图,如图3。
图3 SD隐空间扩散架构图
(https://ommer-lab.com/research/latent-diffusion-models/ )
这个隐空间里,最核心的是UNet 模型。它本身也是一个容器( 如同集装箱),内含有QKV 等小模型等。于是,就可以设计一个AI 模型容器来表示它,例如使用指令:
class UNetModel(nn.Module):
……………
……………
……………
这里的UNet 模型就如同< 信纸> 的角色。有了信纸之后,就可以来设计一项更大的< 信箱> 容器了,例如使用指令:
class LatentDiffusion(nn.Module):
……………
……………
于是,有了UNet 模型( 信纸),也有了Diffusion模型( 信封),也有了隐空间( 信箱)。如果拿物流货运来比喻,这里的UNet 模型就如同< 集装箱> 的角色,而Diffusion 模型就如同< 轮船> 的角色,而隐空间就如同< 码头> 的角色。接着,就来实际观摩一下SD 的源代码,从Github 上可以看到SD 的源代码。
进入这网页之后,就继续浏览这些源代码,就可以看到它定义了一个UNetModel 模型,这就是刚才所说的< 信纸> 模型。
再继续浏览源代码,也就可以看到它定义了一个LatentDiffusion模型,这就是刚才所说的< 信封> 模型。
从上述的信纸与信封的比喻,可以领会出来:无论信纸、信封或信箱,都是容器互相包容起来。例如,SD 的LatentDiffusion 包容了UNetModel 小模型, 而UNetModel 又包容了QKV 更小的模型,于是呈现出「序中有乱」的景象。也就是,容器( 如集装箱) 的外表简单有序,因而创造出井然有序。这即是通称的:有机次序(Organic order)。
3 演练:动手设计容器
步骤1 设计小模型
首先撰写一个能将灰阶图像彩绘( 渲染) 为彩色图像的GAN( 生成对抗) 模型,如下代码。
然后,收集数十张毕加索(Picasso) 的图像来训练它。
步骤2设计容器模型
训练好了小模型,就可以继续撰写一个容器模型来包容它( 即刚才的GANModel 模型)。这个容器模型的代码如下。
在这个范例里,这个容器模型包含了一个自己训练的GANModel小模型。此外,还包含了一个由OpenCV所提供的FSRCNN 小模型。这FSRCNN 是OpenCV 提供的预训练模型,其图像放大的效果,比传统做法好很多( 例如,没有明显的锯齿状边缘)。
步骤3 运行容器模型
于是, 这个容器模型就可以将原始图像( 如224×224 的JPG 图像) 透过FSRCNN 来放大3 倍,然后交由GAN 模型来自动渲染出大张的图像( 即672×672 JPG 图像),如图4 所示。
图4 让AI自由渲染Picasso的画作
对于艺术文创者而言,AI 可以激发人们更多想象空间,例如上图里的GAN 模型是学习Picasso 画风,而自动渲染出来的。这个模型也可以输入八大山人的画作,然后AI 彩绘出Picasso 的色彩风格,成为中西合璧的创新作品。
4 美好效果:易于PnP
刚才所设计的容器模型可以确保内含个小模型( 如GAN、FSRCNN 模型) 的变动自由度,来实现这些小模型皆能容易PnP(Plug and Play),呈现出流畅新陈代的美好效果。因此创造了完美的有机次序(Organic Order)。例如,随时能流畅的将上述的彩绘GAN 模型汰换掉,重新设计一个新的小模型--- 彩绘UNET模型,如图5。
图5 让AI自由渲染八大山人的画作
此时,只需要更改这FSRCNN 容器模型内部的代码即可,并不会产生涟漪效应,因而降低了更换小模型的成本。
5 结语
本文展示了如何迁移第三方的预训练模型,复用(Reuse) 他人的智慧来设计& 开发自己的容器(Container)模型。并且展示了一项美好商业效益:能复用于各种不同的需求情境,并获得小模型PnP 的效果。
(本文来源于EEPW 2023年10月期)
评论