多模態(tài)預(yù)訓(xùn)練模型在 OPPO 端云場(chǎng)景的落地實(shí)踐
一、端側(cè)圖文檢索技術(shù)研究
1. 解決了什么問(wèn)題?
首先來(lái)介紹圖文檢索技術(shù)。以前在手機(jī)端相冊(cè)搜索照片,都是基于標(biāo)簽來(lái)搜索。從 CLIP 模型出現(xiàn)后開(kāi)始做自然語(yǔ)言搜索。目前正在解決端側(cè)性能、搜索效果、安全等問(wèn)題。技術(shù)難度并不大,重點(diǎn)在于提高搜索速度。并且要保持與云側(cè)模型相同的精度,供斷網(wǎng)時(shí)使用。
2. 算法優(yōu)化
算法優(yōu)化集中在壓縮算法。用 CLIP 模型做圖文匹配,算法簡(jiǎn)單,訓(xùn)練支持大規(guī)模并行,但對(duì)細(xì)粒度理解有問(wèn)題。采用 ALBEF 單流場(chǎng)景,最后需要把圖片和 Query 做融合計(jì)算,在端側(cè)無(wú)法落地。由于 CLIP 模型的模態(tài)信息保留最后的輸出層,端側(cè)可以做單雙流融合,把兩個(gè)模型的能力蒸餾到小模型上面。因?yàn)閳D像和文本的模態(tài)在ALBEF 中間已經(jīng)融合,所以設(shè)計(jì) Projector 再分離出來(lái),經(jīng)過(guò)組合得到單雙流的細(xì)粒度特征和全局特征的融合,獲得輸出,最后蒸餾出 Student。蒸餾的過(guò)程采用 contrastive loss 算法。整體算法的目的是為了得到端側(cè)的 CLIP 架構(gòu)小模型,實(shí)現(xiàn)離線編碼和在線搜索。
由于圖片數(shù)量有限,沒(méi)有采用像 IVF-PQ 向量引擎。實(shí)際在 10 萬(wàn)級(jí)圖片壓測(cè)下,直接做向量乘法也足夠,fp16 最終速度都很快,因此最終采用了簡(jiǎn)單架構(gòu)。
3. 學(xué)術(shù)集效果
從上圖數(shù)據(jù)中可以看出,單純CLIP 或者 ALBEF 效果、不如融合之后效果好。由于沒(méi)有增加推理成本,最終落地效果與云上 V100 GPU 速度相當(dāng),搜索時(shí)間為 14 毫秒。image 編碼時(shí)間也很短,基本達(dá)到了云端先進(jìn) GPU 的能力。
4. 真實(shí)場(chǎng)景效果
上圖中展示了真實(shí)場(chǎng)景中構(gòu)建相冊(cè)、照片的效果。最終優(yōu)化為全域優(yōu)化。
5. 細(xì)粒度優(yōu)化
CLIP 算法優(yōu)化是以海量數(shù)據(jù)訓(xùn)練。想做到更細(xì)致的優(yōu)化,由于本身沒(méi)有識(shí)別屬性能力,對(duì)圖片款式、顏色狀態(tài)、細(xì)膩度屬性識(shí)別比較差,對(duì)文生圖影響很大。我們針對(duì)業(yè)務(wù)場(chǎng)景改進(jìn)了方法,在 Query 里面做細(xì)粒度屬性詞替換。這種替換方法,無(wú)論用人工方式還是文本模型找屬性詞都可使用。最終把比較細(xì)的負(fù)樣本構(gòu)造出來(lái),做負(fù)樣本的采樣訓(xùn)練,強(qiáng)制讓模型判斷出哪些是錯(cuò)誤屬性,搜索時(shí)就能排除錯(cuò)誤。這是實(shí)踐中非常行之有效的方法。注意一定要加上 LWF(Learning Without Forgetting)抗遺忘的方法,以保留之前的數(shù)據(jù)和訓(xùn)練,才能保持通用能力不下降。這個(gè)方法對(duì)已有模型優(yōu)化非常有效。
二、文圖生成&理解態(tài)模型的應(yīng)用優(yōu)化
文圖生成&理解態(tài)模型的優(yōu)化主要是對(duì)生成進(jìn)行優(yōu)化。而理解是在圖片生成后加上文本生成,做出圖文并茂的效果。
1. 中文文生圖大模型繼續(xù)預(yù)訓(xùn)練
鑒于業(yè)界沒(méi)有特別好的開(kāi)源中文大模型,很多人直接用英文模型加上翻譯來(lái)做。這樣會(huì)帶來(lái)很多問(wèn)題,例如繼續(xù)訓(xùn)練怎么做。從頭訓(xùn)練做自己的大模型,畢竟不一定都有資源;如果質(zhì)量不好,調(diào)整也很費(fèi)時(shí)間。我們的方案是用開(kāi)源的英文優(yōu)質(zhì)模型做繼續(xù)預(yù)訓(xùn)練,并涉及如何對(duì)齊中文語(yǔ)言文化。
另外一個(gè)難題是生成圖像質(zhì)量的細(xì)節(jié)提升。上圖中展示了我們的解決方案,經(jīng)過(guò)實(shí)驗(yàn),如果有很好的英文模型適配中文,不需改動(dòng)所有的模塊,包括 unet、text encoder,只要加一個(gè) adapter,通過(guò)訓(xùn)練 adapter 就能實(shí)現(xiàn)多語(yǔ)言輸入,并得到同樣質(zhì)量的輸出。最初是通過(guò)做 text encoder 再對(duì)齊,但 text encoder 對(duì)齊非常復(fù)雜。實(shí)踐中把后面的Unet 加上去蒸餾,就會(huì)很容易對(duì)齊。Adapter 只需做簡(jiǎn)單的mapping,最后發(fā)現(xiàn)前面的特征空間沒(méi)有對(duì)齊、也不需要對(duì)齊。只需在 Unet 空間做出正確的生成。
在有了一個(gè)中文的模型后,后面需要進(jìn)行中文語(yǔ)言文化的繼續(xù)訓(xùn)練。我們也嘗試了一些方案,其中包括微調(diào)的方案。業(yè)界常用 LoRA 做垂域優(yōu)化,LoRA 最大的問(wèn)題是遺忘性。上圖右下側(cè)展示的是 2023 年的一篇 NIPS 文章,采用的方法很簡(jiǎn)單,LoRA 在原參數(shù)上乘 R 正交矩陣,目的是希望訓(xùn)練參數(shù)不去動(dòng)幅度,只動(dòng)角度。很早有實(shí)驗(yàn)證明,把特征相位抽出來(lái),就能完全呈現(xiàn)圖像,幅度 W 沒(méi)有太多作用。所以在生成時(shí)考慮調(diào)整參數(shù)旋轉(zhuǎn)角度,以適應(yīng)新的數(shù)據(jù)。這在實(shí)踐中證實(shí)是一種非常好用的方法,只要加少量以前的數(shù)據(jù),去做抗遺忘的 replay,就能很好地實(shí)現(xiàn)數(shù)據(jù)遷移,保持語(yǔ)言模型的通用能力,并持續(xù)增加新場(chǎng)景的能力。我們還會(huì)用這個(gè)方法持續(xù)做各種各樣新效果對(duì)齊,并且訓(xùn)練速度非???。
上圖右側(cè)表中可以看到,2,000 萬(wàn) Sample 就達(dá)到了收斂效果。如果資源不多,用單臺(tái)機(jī)器兩天內(nèi)可完成訓(xùn)練,硬件資源消耗也少。原模型缺乏中文能力,不理解中文詩(shī)句和場(chǎng)景,而我們用非常少量的數(shù)據(jù)就讓其適應(yīng)了模型,并且沒(méi)有出現(xiàn)通用質(zhì)量下降。
Adapter 適用于任何開(kāi)源場(chǎng)景的社區(qū)的模型,將其接到后面相同架構(gòu)的無(wú)論是XL 模型還是 SD 模型都可以適用。在每一個(gè)場(chǎng)景中,無(wú)論 Finetune 模型還是 LoRA,unet模型的參數(shù)都可能發(fā)生變化,把中間的 adapter 加過(guò)去,就可適應(yīng)做出各種中文的效果。其他方法包括 Controlnet、最新的加速方法、小模型、inpainting 都可以用。
我們用非常低的成本實(shí)現(xiàn)了場(chǎng)景的中文遷移,尤其語(yǔ)境上的繼續(xù)預(yù)訓(xùn)練能力得到了提升。如果缺乏資源訓(xùn)練理想的基礎(chǔ)模型,推薦這種方案。
2. 通用優(yōu)化應(yīng)用
要提升基礎(chǔ)能力做通用模型,再逐漸優(yōu)化后續(xù)能力,是個(gè)漫長(zhǎng)的迭代過(guò)程。我們?cè)诖汗?jié)檔上線了 AI 壁紙專(zhuān)欄,說(shuō)明 AIGC 的落地沒(méi)有太多質(zhì)量上的障礙,用戶(hù)可以接受,但需要謹(jǐn)慎考慮安全和版權(quán)問(wèn)題。
另一個(gè)典型案例是鎖屏場(chǎng)景。手機(jī)圖文是手機(jī)廠商的主要流量,可以用 AI 生成圖文對(duì),并插入廣告等內(nèi)容。圖中是 2023 年上半年 Top 排行圖文組內(nèi)容,質(zhì)量非常好。文本用多模態(tài)大語(yǔ)言模型,用 LLAVA 進(jìn)行微調(diào),其中大語(yǔ)言模型來(lái)自其他團(tuán)隊(duì),基于微調(diào) Projector 和大語(yǔ)言模型,實(shí)現(xiàn)有詩(shī)意的文字生成。
以上是實(shí)現(xiàn) AIGC 在 ToC 端落地的場(chǎng)景。
上圖中的場(chǎng)景是圖文生成相關(guān)的一個(gè)暢想,即針對(duì)用戶(hù)照片進(jìn)行配套生成。例如在用戶(hù)旅游時(shí)上傳照片,幫助用戶(hù)寫(xiě)一篇完整游記,發(fā)布小紅書(shū)、知乎。更具優(yōu)勢(shì)的是生成文章插圖,用戶(hù)自由選擇,或選擇其他圖片。如果覺(jué)得自己拍的照片不好,可以用生成模型生成圖片。這是完整的 Pipeline 鏈路,可以用自己的照片、網(wǎng)上搜索的圖片、生成的圖片,模型解決文章的結(jié)構(gòu)和插圖位置的問(wèn)題。下一步是考慮整個(gè)文章和圖片的內(nèi)容匹配度以及文章圖片本身的質(zhì)量問(wèn)題。
3. 垂域優(yōu)化-人像垂域
垂域優(yōu)化的典型場(chǎng)景是手機(jī)廠商瀏覽器中的廣告場(chǎng)景。小型 ToB 的廠商投廣告,特別重視人像垂域中幾個(gè)生成的問(wèn)題:
(1)人臉和人手的崩潰問(wèn)題。大部分開(kāi)源模型都比較差。
(2)太過(guò)精致、質(zhì)感太好的問(wèn)題。尤其是社交工具的用戶(hù),覺(jué)得不真實(shí);真實(shí)的資源都是普通人,這種反向需求就需要考慮如何去做垂域的優(yōu)化。
(3)細(xì)粒度屬性和文字不匹配的問(wèn)題。
用 CLIP 做主觀意愿落地的 Fusion 都有這種問(wèn)題,對(duì)語(yǔ)言理解力不夠,特別是美容、整容廣告都非??粗剡@種問(wèn)題,例如做大眼睛美女卻生成了小眼睛。需要做文本描述和生成實(shí)體的對(duì)齊。這個(gè)問(wèn)題從數(shù)據(jù)角度上可以解決。針對(duì)實(shí)際業(yè)務(wù)場(chǎng)景,構(gòu)建了豐富的數(shù)萬(wàn)張美容、整容關(guān)注的人臉屬性數(shù)據(jù)集,進(jìn)行數(shù)據(jù)收集和非常精確的標(biāo)簽打標(biāo)。數(shù)萬(wàn)張圖片對(duì)于模型微調(diào)來(lái)說(shuō)已經(jīng)非常多了。通常用幾十張對(duì)微調(diào)就會(huì)具有非常好的效果。因此構(gòu)造細(xì)粒度數(shù)據(jù),人工逐個(gè)打上標(biāo)簽,人臉或者人像的標(biāo)簽區(qū)就會(huì)非常細(xì)致、豐富。
(4)優(yōu)化位置的問(wèn)題。
上圖中的總結(jié)表來(lái)自于 Github,非常詳細(xì)地描述了 LoRA 微調(diào)某層對(duì)人像五官產(chǎn)生的最大影響;包括了對(duì)人體的上半身、下半身、背景需要微調(diào) unet 具體層。2 代表變化很大,1 代表稍微小一點(diǎn),其他位置幾乎無(wú)變化。想調(diào)整什么地方,對(duì)照表去調(diào)相應(yīng)層參數(shù)就會(huì)非常有效。比如:豐唇廣告,之前生成薄唇效果,現(xiàn)在改為厚唇,找到效果好的微調(diào)位置,調(diào)整數(shù)據(jù)就能得到滿意效果。
以上兩圖中展示了更多其他的例子。比如:鼻子類(lèi),控制同一個(gè)人、同種鼻子效果;紋眉可以實(shí)現(xiàn)粗眉細(xì)眉。這套 Pipeline 出來(lái)之后,可以做任何五官,總體感受是一條比較有效的 Pipeline。注意:并非每個(gè)微調(diào)都會(huì)有好效果,某些太細(xì)微的特征需要用其它算法調(diào)整和解決。
通過(guò)以上實(shí)踐,我們總結(jié)出了一些經(jīng)驗(yàn):
- 微調(diào)時(shí),需要大量數(shù)據(jù)提升模型對(duì)新概念的泛化能力,數(shù)據(jù)質(zhì)量不一定高。比如:人像,需要較多的人像數(shù)據(jù),用于認(rèn)識(shí)和識(shí)別、尤其是亞洲人。
- 需要稍高質(zhì)量的數(shù)據(jù)精調(diào),特別是在第一個(gè)模型之后,需要幾十張高質(zhì)量的精調(diào)數(shù)據(jù),可以把效果做出來(lái)。
典型案例還有人像修復(fù) Pipeline。比如:古風(fēng)游戲或者是古風(fēng)小說(shuō),需要做古風(fēng)場(chǎng)景生成。模型肯定沒(méi)見(jiàn)過(guò),可以先塞一些劇照,后面再用 80 張圖片做古風(fēng)的生成。直接生成圖片交由用戶(hù)去挑選。
最終生成效果非常好,適用于各種中文的語(yǔ)境場(chǎng)景,比如小說(shuō)廣告。當(dāng)然,生成圖片里面的人臉、人手問(wèn)題仍未解決,對(duì)基礎(chǔ)模型的要求會(huì)更高,微調(diào)無(wú)法解決這個(gè)問(wèn)題。
上圖是一個(gè)廣告營(yíng)銷(xiāo)工具,主要面向小型 ToB 用戶(hù)。首先確定行業(yè)和風(fēng)格,寫(xiě)實(shí)、動(dòng)漫、或者古風(fēng)。在完成生成后,加上自己的產(chǎn)品或者小說(shuō)、APP 等去投放。這套 Pipeline 工具業(yè)務(wù)定位就是人像垂域。
4. 文字渲染
壁紙生成主要是做高質(zhì)量高分辨率場(chǎng)景。例如:年初有做新春快樂(lè)、兔年大吉壁紙的需求。大家都知道,文生圖對(duì)圖中文本的渲染生成有很大問(wèn)題。隨著對(duì)算法的深入了解、實(shí)踐和越來(lái)越多的文章可借鑒,算法也逐漸精細(xì)。當(dāng)時(shí)只考慮輸入 prompt,然后輸出圖片的場(chǎng)景,由業(yè)務(wù)人員去挑選調(diào)用。
文字渲染從算法角度,是構(gòu)造文本和圖像對(duì)應(yīng)的數(shù)據(jù)。把圖像中的文本摳出來(lái),然后對(duì)應(yīng)位置,描述里面也要包含文本。這種需求做了長(zhǎng)數(shù)據(jù)處理,沒(méi)有過(guò)多考慮質(zhì)量和長(zhǎng)度問(wèn)題??梢圆捎冒偃f(wàn)級(jí)數(shù)據(jù)量,收集也比較快。這種條件生成的算法框架就是提取需要關(guān)注的信息,把信息當(dāng)作條件,注入到后面 Unet 或者輸出層、Text encoder,中間的細(xì)節(jié)做一些調(diào)整。最終目的是強(qiáng)化整個(gè)需要生成的細(xì)節(jié)內(nèi)容對(duì)最后Unet 的影響。推理的時(shí)候也是一樣的用法,把文字當(dāng)作特征直接輸入,不僅僅是 prompt,而是要把 prompt 里面的引號(hào)中文字內(nèi)容取出來(lái),做字體都可以用,這個(gè)Font 最終自己會(huì)泛化出來(lái)。
上圖是文字?jǐn)?shù)據(jù)集的效果。加了上述算法后,能力得到了大幅提升。
上圖是一些反應(yīng)主觀效果的例子。壁紙應(yīng)用相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,業(yè)界、學(xué)術(shù)界后續(xù)做了很多精細(xì)工作,除了能生成這種 PS 的文字,也能生成真實(shí)場(chǎng)景下雕刻版文字或長(zhǎng)文字、書(shū)籍,甚至編輯自己指定字體。
5. 個(gè)性化生成
后續(xù)又?jǐn)U展到主體個(gè)性化生成,應(yīng)用更加廣泛,如:DreamBooth、Textual Inversion。大家都希望輸入圖片,并在各種各樣場(chǎng)景中做生成,也是典型的廣告場(chǎng)景需求。比如:之前的廣告都是文生圖;現(xiàn)在的廣告可以根據(jù)用戶(hù)的產(chǎn)品,幫助其生成各種場(chǎng)景下的廣告再去做投放。這種需求也是前面工作的延續(xù)。為什么之前沒(méi)有用DreamBooth,是因?yàn)?DreamBooth 要做 test-time 微調(diào),每張圖片要微調(diào)較長(zhǎng)時(shí)間,算力消耗也很大。理想情況是上傳產(chǎn)品后,幾秒鐘之內(nèi)就給出結(jié)果。當(dāng)時(shí)考慮采用開(kāi)放域、無(wú)需微調(diào)的生成方法、實(shí)現(xiàn)各種各樣的功能。
跟前面的工作一樣,都是先做數(shù)據(jù)。數(shù)據(jù)集與文本不同,要做細(xì)粒度分割。分割完之后在每個(gè)實(shí)體得到實(shí)體信息。這在早期不容易實(shí)現(xiàn),直到 SAM 出來(lái)后對(duì)方法做了推動(dòng),SAM 可以做自動(dòng)化的分割,分割完之后再用 Grounding DINO 方式做開(kāi)放域的識(shí)別,就能實(shí)現(xiàn)非常詳細(xì)的細(xì)粒度分割,包含圖片的 tag 標(biāo)簽和整體 Caption 的數(shù)據(jù)集。這個(gè)數(shù)據(jù)集構(gòu)造的數(shù)據(jù)量比 SAM 還要大很多,達(dá)到 7,600 萬(wàn)個(gè)。用這批數(shù)據(jù)做預(yù)訓(xùn)練,得到了 test-time free 的主體個(gè)性化的生成模型。
模型架構(gòu)跟前面一樣,是一脈相承的想法,差別是特征提取自圖片中物體的特征,再把物體特征送到 Unet 里面當(dāng)作 Condition。也可以在 Text 里進(jìn)行操作,比如提取特征、特征力度、送到 Unet 的位置。
最終做到了和 DreamBooth 微調(diào)方法差不多的效果。其中保真最重要,商品要真實(shí)。會(huì)犧牲部分可編輯性,不能像 DreamBooth 那樣生成非常豐富的背景,這是后面需要改進(jìn)的算法問(wèn)題。
舉例:投放的廣告是一個(gè)包,可以設(shè)置各種用戶(hù)想要的背景。但可編輯性沒(méi)那么強(qiáng),不能做到像貓狗一樣的姿態(tài)變化,這是現(xiàn)存的問(wèn)題。但已滿足當(dāng)前場(chǎng)景的需求。
多個(gè)實(shí)體同樣可以做生成。
人像也可以做,但問(wèn)題是對(duì)于正面照無(wú)法生成側(cè)面照,因?yàn)閱螐垐D片的泛化能力僅限于此。這些方向發(fā)展非常迅速。最近的文章在保真性和可編輯性上都做得比較好。我們會(huì)及時(shí)跟蹤算法、方案并更新產(chǎn)品。
上圖中產(chǎn)品做了比較完整的廣告營(yíng)銷(xiāo)方案。有些商品需要做概念圖,就直接用文生圖生成;有些已有商品可以直接用產(chǎn)品圖。個(gè)性化生成會(huì)根據(jù)商品生成比較適合推廣的廣告圖,然后在上面加文案,或者文案自己加。這種 Pipeline 從設(shè)計(jì)到營(yíng)銷(xiāo),中間沒(méi)有商品生產(chǎn)這一環(huán)節(jié)。用戶(hù)可以不做生產(chǎn),直接用 Pipeline 先把廣告打出去,然后再去生產(chǎn)實(shí)際商品。
上圖是一些提包的實(shí)際案例,用戶(hù)用一個(gè)商品,生成各種背景,然后再加上文案。
這種都是用英文模型輸入,然后生成背景,但有些錯(cuò)誤,用戶(hù)可以自己選擇圖片。
最終形態(tài)如瀏覽器中的廣告,對(duì)質(zhì)量要求不是很高。主要關(guān)注實(shí)效性、用戶(hù)能立刻看到效果圖,所以貼的字都比較粗糙。圖片生成是主要業(yè)務(wù)需求。
三、文圖生成模型的端側(cè)輕量化
手機(jī)廠商在云側(cè)圖片生成的應(yīng)用不多,需要做更精細(xì)化的結(jié)果,讓用戶(hù)得到更多的價(jià)值,比如減少用戶(hù)的工作量,這種情況多為小型 ToB 用戶(hù)。前面內(nèi)容落地都在云上,成本會(huì)很高,所以端側(cè)廠商的優(yōu)勢(shì)就是把所有算法都搬到手機(jī)上,用芯片去計(jì)算實(shí)現(xiàn)無(wú)任何成本、無(wú)隱私的問(wèn)題,愿意怎么用就怎么用。后續(xù)工作重點(diǎn)在文生圖模型端側(cè)輕量化,接下來(lái)的介紹將更多涉及技術(shù)細(xì)節(jié)和工程方面,不涉及落地場(chǎng)景問(wèn)題。
1. 技術(shù)路線-模型結(jié)構(gòu)優(yōu)化
通過(guò)我們的實(shí)踐,從 Difusion 端側(cè)優(yōu)化分成三個(gè)方向:
模型的壓縮。一般大模型都會(huì)壓縮模型,Unet 也不例外,因?yàn)?Stable Diffusion 最主要還是 Unet 壓縮。對(duì) Unet 的每層進(jìn)行分析,尋找效果影響最小、整個(gè)時(shí)效和內(nèi)存要求最高的層,剔除這些層,再去繼續(xù)訓(xùn)練,得到 Tradeoff 模型。我們的 Tradeoff 小模型,比原版 SD 參數(shù)量少大概 1/3。在這個(gè)模型的基礎(chǔ)上,再按上述方法訓(xùn)練一輪,用蒸餾方法做中文小模型,得到內(nèi)存可控的端側(cè)模型。這是常規(guī)的模型壓縮方法。
Stable Diffusion 對(duì)采樣要求比較高,采樣是主要的時(shí)間消耗。蒸餾主要用 SDXL 效果比較好、相對(duì)比較小的 SD_base 模型。用它自己的 text encoder 或者 VAE decoder 做前處理和后處理。重點(diǎn)是 Unet 的循環(huán)蒸餾該怎么做,其算法會(huì)更深一些,也是學(xué)術(shù)界研究比較深入的一個(gè)方向。
2. 技術(shù)路線-采樣加速
SD 做迭代采樣時(shí)間會(huì)成倍增長(zhǎng)。最開(kāi)始的云側(cè)模型用了 25 步 DPM-Solver,這個(gè)時(shí)間成本比較高。遵循圖中提到的做法,把 Diffusion 步數(shù)逐漸縮減,四步縮減兩步,兩步縮減一步,蒸餾兩步的輸出效果、做到一步實(shí)現(xiàn)。這是 Progressive distillation 方法。
另一個(gè)方法是 Classifier-free guidance distillation。在 Stable Diffusion 里面增加泛化性、多樣性和質(zhì)量評(píng)估,都用 W 參數(shù)控制深層的多樣性和效果的平衡參數(shù)。在 inference 時(shí)需要做兩步才能合成最后一步,所以實(shí)際步數(shù)都會(huì)乘以 2。但是下面這篇文章把 CFG 蒸餾和原始蒸餾合成了一步,使用 CFG 蒸餾一步來(lái)做,節(jié)約了一半時(shí)間。
最后的蒸餾流程用以前訓(xùn)練好的 SD 小模型,先做 Progressive distillation 的蒸餾,再做 CFG 模型蒸餾,然后把這兩塊合在一起。逐漸迭代,從最開(kāi)始用 32 步,然后迭代到 16 步、8 步,最后做到 4 步。重點(diǎn)是訓(xùn)練蒸餾數(shù)據(jù),做出高質(zhì)量數(shù)據(jù),保證蒸餾質(zhì)量沒(méi)有損失。
3. 技術(shù)路線-效果對(duì)比
表中展示了最終實(shí)現(xiàn)的效果。從起初的 10 秒以上,到現(xiàn)在的 2.5 秒,相比之前有了大幅度提升。目前已進(jìn)入端側(cè) Diffusion model 落地的時(shí)代。前不久,高通和聯(lián)發(fā)科都發(fā)布了廣告,能夠把 Stable Diffusion 做到 1 秒以?xún)?nèi),其中包括在算子優(yōu)化上非常多的工作。我們和他們緊密合作,在沒(méi)有做任何算子上的優(yōu)化情況下,上述純算法優(yōu)化版本我們做到了 2.5 秒。下一步會(huì)做算子加算法的綜合優(yōu)化。最終的目標(biāo)是達(dá)到用戶(hù)無(wú)感知的生成,并保證效果。
上圖已經(jīng)實(shí)現(xiàn)相同效果。上面是 SD 原版模型,在 DPM solver 25 步的結(jié)果,云上可以采用這種采樣方法。端側(cè)可以做到 4 步,然后做 W8 的量化。這個(gè)小模型是用更強(qiáng)的大模型蒸餾出來(lái)的,所以在指標(biāo)上比 SD 更好。實(shí)現(xiàn)在端側(cè)做到用戶(hù)基本無(wú)感生成,把 SD 能力完全繼承的效果。預(yù)計(jì)明年手機(jī)廠商會(huì)考慮把整個(gè)生成的模型搬到端側(cè),直接在手機(jī)上即可生成。
以上就是關(guān)于端側(cè)落地技術(shù)優(yōu)化場(chǎng)景的分享。后續(xù)問(wèn)題是對(duì)于集模型,在端側(cè)除生成速度還要考慮內(nèi)存問(wèn)題。無(wú)論個(gè)性化生成、還是 LoRA 微調(diào),都只能在這個(gè)集模型上加小模塊。把這些模塊堆疊起來(lái),如何使用、調(diào)度還需要制定策略和編寫(xiě)算法。真正實(shí)現(xiàn)全端側(cè)、生成 AIGC 的 Pipeline 工具還需要一段時(shí)間。