如何設計容器來實踐AI模型的PnP
1 前言
在本專欄的前面文章《從隱空間看AIGC 的未來發(fā)展》里,曾經提到了,今天全球AIGC 產業(yè)即將進入產業(yè)的革命性的轉折點,也逐漸浮現(xiàn)AI 模型容器( 集裝箱) 的身影。而AI 集裝箱將帶給碼頭( 隱空間) 一項美好的次序。一旦我們致力于制定AI 容器的規(guī)格,就會擁有主導未來AIGC 產業(yè)發(fā)展的話語權。
于是,在本篇文章里,將繼續(xù)以實例詳細說明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 的源代碼。
進入這網(wǎng)頁之后,就繼續(xù)瀏覽這些源代碼,就可以看到它定義了一個UNetModel 模型,這就是剛才所說的< 信紙> 模型。
再繼續(xù)瀏覽源代碼,也就可以看到它定義了一個LatentDiffusion模型,這就是剛才所說的< 信封> 模型。
從上述的信紙與信封的比喻,可以領會出來:無論信紙、信封或信箱,都是容器互相包容起來。例如,SD 的LatentDiffusion 包容了UNetModel 小模型, 而UNetModel 又包容了QKV 更小的模型,于是呈現(xiàn)出「序中有亂」的景象。也就是,容器( 如集裝箱) 的外表簡單有序,因而創(chuàng)造出井然有序。這即是通稱的:有機次序(Organic order)。
3 演練:動手設計容器
步驟1 設計小模型
首先撰寫一個能將灰階圖像彩繪( 渲染) 為彩色圖像的GAN( 生成對抗) 模型,如下代碼。
然后,收集數(shù)十張畢加索(Picasso) 的圖像來訓練它。
步驟2設計容器模型
訓練好了小模型,就可以繼續(xù)撰寫一個容器模型來包容它( 即剛才的GANModel 模型)。這個容器模型的代碼如下。
在這個范例里,這個容器模型包含了一個自己訓練的GANModel小模型。此外,還包含了一個由OpenCV所提供的FSRCNN 小模型。這FSRCNN 是OpenCV 提供的預訓練模型,其圖像放大的效果,比傳統(tǒng)做法好很多( 例如,沒有明顯的鋸齒狀邊緣)。
步驟3 運行容器模型
于是, 這個容器模型就可以將原始圖像( 如224×224 的JPG 圖像) 透過FSRCNN 來放大3 倍,然后交由GAN 模型來自動渲染出大張的圖像( 即672×672 JPG 圖像),如圖4 所示。
圖4 讓AI自由渲染Picasso的畫作
對于藝術文創(chuàng)者而言,AI 可以激發(fā)人們更多想象空間,例如上圖里的GAN 模型是學習Picasso 畫風,而自動渲染出來的。這個模型也可以輸入八大山人的畫作,然后AI 彩繪出Picasso 的色彩風格,成為中西合璧的創(chuàng)新作品。
4 美好效果:易于PnP
剛才所設計的容器模型可以確保內含個小模型( 如GAN、FSRCNN 模型) 的變動自由度,來實現(xiàn)這些小模型皆能容易PnP(Plug and Play),呈現(xiàn)出流暢新陳代的美好效果。因此創(chuàng)造了完美的有機次序(Organic Order)。例如,隨時能流暢的將上述的彩繪GAN 模型汰換掉,重新設計一個新的小模型--- 彩繪UNET模型,如圖5。
圖5 讓AI自由渲染八大山人的畫作
此時,只需要更改這FSRCNN 容器模型內部的代碼即可,并不會產生漣漪效應,因而降低了更換小模型的成本。
5 結語
本文展示了如何遷移第三方的預訓練模型,復用(Reuse) 他人的智慧來設計& 開發(fā)自己的容器(Container)模型。并且展示了一項美好商業(yè)效益:能復用于各種不同的需求情境,并獲得小模型PnP 的效果。
(本文來源于EEPW 2023年10月期)
評論