国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

煒哥的AI學(xué)習(xí)筆記——主流模型原理

2023-07-29 22:11 作者:宿愿賜  | 我要投稿

這次對(duì)目前主流的一些模型原理進(jìn)行介紹,也就是 C 站目前比較常見的這幾種模型。


image-20230702222058879

這個(gè)文章會(huì)更偏向于講述這些模型之間的區(qū)別,訓(xùn)練方式也會(huì)稍微帶一下,不過不會(huì)很具體。

前置知識(shí)

在閱讀這篇文章之間,需要先對(duì) Stable Diffusion 有一定的了解。建議不熟悉的人先去閱讀SD基礎(chǔ)原理: https://xuweinan.com/2023/06/18/煒哥的AI學(xué)習(xí)筆記——SD基礎(chǔ)原理/這一片文章。

我也先把這一個(gè)流程圖放在這里,方便后續(xù)對(duì)照著進(jìn)行理解。


image-20230702175342450

(實(shí)際結(jié)構(gòu)會(huì)復(fù)雜很多,這里使用相對(duì)易于理解的方式對(duì)流程進(jìn)行拆解)

如果是使用默認(rèn)的 SD 模型進(jìn)行圖片生成,就是上面這條路子。

簡(jiǎn)單的說一遍就是:通過 Text Encoder 把輸入的 Prompt 根據(jù)詞典解碼成文本向量,然后在 UNet 中作用文本向量,從隨機(jī)生成的噪點(diǎn)圖像中根據(jù)文本向量按照一定規(guī)則去除噪點(diǎn),迭代 N 次后就在潛在空間中生成了對(duì)應(yīng)的圖片,這時(shí)再通過 VAE 將圖片從潛在控件中還原成適合使用的圖片。

而不同模型對(duì)于這套流程的影響,會(huì)作用在不同的位置上。

三種主流模型

Checkpoint

首先是 Checkpoint,也就是俗稱的大模型。但是其實(shí)這個(gè)名稱并不準(zhǔn)確,因?yàn)?Checkpoint 并不是完全從零開始的大模型,從零開始的大模型需要非常多的數(shù)據(jù)量以及訓(xùn)練量,所以 Checkpoint 也是在現(xiàn)有的模型基礎(chǔ)上訓(xùn)練而來的,一般會(huì)選擇使用原始的 SD 官方模型,也有基于其他成熟模型二次訓(xùn)練的模型。

而 Checkpoint 這種模型,作用的主要是 Text Encoder 和 UNet 為主的噪點(diǎn)處理相關(guān)的模塊。

還是用一個(gè)具體的例子來說明,Checkpoint 目前的主要訓(xùn)練方式是使用 Dreambooth ,Stable Diffusion 有對(duì)應(yīng)的插件,或者也可以像我一樣使用 Kohya_ss 進(jìn)行訓(xùn)練。


image-20230702180242578

這里按照 Kohya 官方的教程,我訓(xùn)練一個(gè)青蛙的概念。



對(duì)于這種特殊的青蛙,我取名叫做 sls 。后面 空格+frog 是對(duì)類別的描述,一般是使用了正則化圖像訓(xùn)練的時(shí)候才會(huì)用到的,這里不展開了,關(guān)鍵還是 sls 這個(gè)特殊詞語。這個(gè)詞語不是現(xiàn)有的英語單詞,而是我造出來的一個(gè)詞語,我希望教給 AI 的是,現(xiàn)在訓(xùn)練集里的這種青蛙名字就叫做 sls,這樣在使用訓(xùn)練完成的模型后,我輸入 sls 就可以讓 AI 生成這樣的青蛙圖片了。

訓(xùn)練過程就不展開了。不過為了避免誤導(dǎo)我還是多說一句,這種方式只是 Checkpoint 的一種訓(xùn)練方法,Checkpoint 也是可以通過打標(biāo)然后使用標(biāo)簽進(jìn)行訓(xùn)練的(目前常用的 LoRA 訓(xùn)練方法就是這樣),具體可以看 Kohya 官方的教程。


image-20230702181136839

言歸正傳,其實(shí)抽象出來看事物,我希望 AI 學(xué)會(huì)畫訓(xùn)練集中的這種青蛙,而在訓(xùn)練過程中教給 AI 的就是兩件事,第一件事是 sls 這個(gè)“新詞語”,第二件事就是這種特殊青蛙的“概念”。而這兩件事對(duì)應(yīng)也就是 Text EncoderUNet,這也就是訓(xùn)練完成后的模型相比原模型不一樣的地方了。

Text Encoder 里面有一本“詞典”,這個(gè)“詞典”記錄了所有文本的向量信息。當(dāng)輸入 Prompt 后,Text Encoder 里面的字典會(huì)根據(jù)“詞典”編碼出對(duì)應(yīng)的文本向量,而向量又和圖像特征關(guān)聯(lián),最后輸出給 UNet。那么當(dāng)輸入一個(gè)新的詞語,比如 sls 時(shí),因?yàn)檫@個(gè)詞語在“詞典”里沒有,所以就會(huì)新增一套不同的文本向量。所以讓 AI 學(xué)習(xí)概念的時(shí)候,一般使用自己造的詞語來固化這個(gè)概念,如果是熟悉的詞語 Text Encoder 就會(huì)選擇使用其他的文本向量來理解這個(gè)詞語,就會(huì)污染到其他的文本向量。

這就是訓(xùn)練出來的 Checkpoint 模型的一部分,在原 Checkpoint “詞典”的基礎(chǔ)上增加了一些新“詞”。

UNet 部分。這個(gè)模型現(xiàn)在含有了 sls 的“意思”,也就是可以讓使用這個(gè)模型的 AI 知道 sls 是什么意思,那么接下來就是第二件事要教會(huì) AI 怎么去畫特殊青蛙。AI 畫圖的方式是使用 UNet 逐步迭代去噪點(diǎn),那么訓(xùn)練出來的模型就是在原模型的基礎(chǔ)上增加了對(duì)于特殊青蛙這一部分的學(xué)習(xí),讓 AI 知道用什么方式去噪點(diǎn)可以呈現(xiàn)出這種特殊青蛙的樣式。

如果用一種比較生動(dòng)的比喻來說的話,每個(gè)模型就是一個(gè)畫家,訓(xùn)練 Checkpoint 的過程就是把官方提供的“通用型”畫家,復(fù)制一份,然后教會(huì)他“什么是 sls 青蛙”,“怎么畫特殊青蛙”。

然后這么理解之后,其實(shí)也就很好理解 Checkpoint 的特點(diǎn)了。它是把官方“通用型”畫家復(fù)制了一份然后學(xué)習(xí)的,所以是比較純粹的(當(dāng)然更純粹的是從零開始訓(xùn)練模型不過基本上這就告別了家用電腦的可能),訓(xùn)練的效果會(huì)比較好。但是,因?yàn)槭菑?fù)制了整個(gè)畫家,所以模型的體積也會(huì)比較大,基本都是幾個(gè) G 起步,同時(shí)對(duì)于顯存\運(yùn)算能力的要求也比較高。

Textual Inversion

和 Checkpoint 不同,Textual Inversion(以下簡(jiǎn)稱 TI)只影響 Text Encoder 部分,更精確點(diǎn)說應(yīng)該是影響里面的那本“詞典”。它的思想是這樣的,就是:希望教給 AI 的概念可以用現(xiàn)成的詞語進(jìn)行描述。

還是以上圖的 sls 舉例,這個(gè) sls 青蛙,是不是可以用普通的 frog,還有 illustration ,還有 cartoon ,等等這些詞語的詞向量組合來描述呢?聽起來似乎有些不可思議,但是實(shí)際它的確成功了。當(dāng)然實(shí)際的訓(xùn)練過程比我提到的例子還會(huì)復(fù)雜數(shù)倍,或者說把它理解成一種對(duì)于“詞典”中內(nèi)容的重新排布會(huì)更加合適。


image-20230702212357508

模型的特點(diǎn)也是顯而易見的,首先它只是對(duì)于“詞典”進(jìn)行改動(dòng),所以文件非常非常小,基本上是以 KB 為單位的。不過使用的時(shí)候需要搭配 Checkpoint 進(jìn)行使用,可以理解成對(duì)于 Checkpoint 里的“詞典”部分進(jìn)行了加強(qiáng)。

然后它的效果,雖然我并不是很常使用這種模型,不過根據(jù)網(wǎng)絡(luò)上使用 TI 的作品來看,TI 更多是起到“改善”的作用,對(duì)于概念的學(xué)習(xí)效果比較有限。這應(yīng)該也很好理解,畢竟只是改動(dòng)了“詞典”,“畫家”的繪圖本領(lǐng)還沒有進(jìn)化。

LoRA

LoRA 應(yīng)該是最近最火的模型種類了。雖然說 Checkpoint 這種模型的訓(xùn)練方式相比從零開始訓(xùn)練,節(jié)約了很多的時(shí)間和算力,讓家用電腦也能參與到模型訓(xùn)練這件事情上來,但是訓(xùn)練大模型所需要的硬件要求還是很高。這個(gè)時(shí)候有人就在想,相比于完全復(fù)制一個(gè)現(xiàn)成模型進(jìn)行訓(xùn)練,是否可以單獨(dú)訓(xùn)練模型的一部分,然后將這部分和原模型進(jìn)行合并使用呢?似乎就可以進(jìn)一步降低模型訓(xùn)練所需要的資源了。

所以,Low-Rank Adaptation 技術(shù),也就是 LoRA 就出現(xiàn)了。我之前在 SuperMerger的用法: 這篇文章中講過,Checkpoint 中一共有 26 個(gè)分層,而需要 AI 學(xué)習(xí)的概念就在這 26 個(gè)分層中。但并不是所有的分層都和概念的學(xué)習(xí)緊密相關(guān),LoRA 就是在其中一些分層中再加入額外的一些東西,去調(diào)整其中的幾個(gè)層。


image-20230702220718123

下半張圖是正常的 Checkpoint 模型,一層一層傳遞信息,而上半張圖紅色部分則是 LoRA ,在原模型的一些層中插入了額外的層,去控制這些層所學(xué)到概念。在訓(xùn)練 LoRA 的時(shí)候就是訓(xùn)練這部分的內(nèi)容,間接的控制出圖的效果。

還是以”畫家“距離,Checkpoint 是完全復(fù)制的一個(gè)畫家,教他新的概念,LoRA 則是選擇在這個(gè)畫家的腦子里加入一些東西,就好像畫外音一樣,告訴畫家要怎么畫。

當(dāng)然對(duì)于 Text Encoder 的學(xué)習(xí)也是有的,不過和 Checkpoint 一樣,這里就不多講了。

總之,相比于完全使用 Checkpoint 進(jìn)行學(xué)習(xí),LoRA 需要學(xué)習(xí)的內(nèi)容更少,但是效果卻不比大模型差。而因?yàn)楹馁M(fèi)的資源相比 Checkpoint 大大減少了,所以也有更多的人參與進(jìn)來,C 站上也出現(xiàn)越來越多的優(yōu)質(zhì) LoRA 模型。

同樣的 LoRA 和 TI 一樣是在 Checkpoint 基礎(chǔ)上的訓(xùn)練,所以也需要搭配 Checkpoint 模型使用。

其他模型

HypernetWork

和 LoRA 一樣,也是在 Checkpoint 的不同層里動(dòng)手腳,不過稍微有些區(qū)別的是,HypernetWork 單獨(dú)分出了一個(gè)模塊用來做這個(gè)事,實(shí)際訓(xùn)練的過程中,是在訓(xùn)練這個(gè)外在模塊,然后這個(gè)模塊再生成一些額外層到 Checkpoint 的層里去。相對(duì)來說有一些多此一舉,所以目前在 LoRA 推出之后,很少有人再訓(xùn)練 HypernetWork 了。

LyCORIS

嚴(yán)格來說也是 LoRA 的一種,之前在 [Lock-block-weight](https://xuweinan.com/2023/06/13/煒哥的AI學(xué)習(xí)筆記——Lora-Block-Weight 插件學(xué)習(xí)/) 中應(yīng)該有提到過,相比于 LoRA 的17層結(jié)構(gòu),LyCORIS 有 26 層,也就是對(duì) Checkpoint 每一次都插入了額外的東西,可以算是 LoRA 的進(jìn)階版本。不過多層的話,后面調(diào)整起來也會(huì)復(fù)雜一些,對(duì)于精細(xì)度要求不那么高的 LoRA ,17 層已經(jīng)能滿足。

參考資料

潛空間_(機(jī)器學(xué)習(xí): https://zh.wikipedia.org/zh-cn/潛空間_(機(jī)器學(xué)習(xí))

https://www.zhihu.com/question/588685139

https://github.com/bmaltais/kohya_ss/blob/master/train_db_README.md

https://huggingface.co/blog/zh/lora

https://zhuanlan.zhihu.com/p/629635371

煒哥的AI學(xué)習(xí)筆記——主流模型原理的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
兴安县| 怀集县| 普洱| 巴林右旗| 东乡族自治县| 铜陵市| 临澧县| 和政县| 板桥市| 成安县| 长治市| 清水河县| 临洮县| 建平县| 新昌县| 闽清县| 榆树市| 抚顺县| 曲阳县| 贡山| 巴马| 新丰县| 广南县| 大悟县| 肥城市| 濉溪县| 通渭县| 林西县| 宕昌县| 苏尼特左旗| 开化县| 昌江| 永州市| 友谊县| 陇南市| 赤城县| 江安县| 寻乌县| 吉木乃县| 新宁县| 沙河市|