LoRA 是什麼?為何在 Stable Diffusion 社群討論中常常出現?Prompt 有時看到很奇怪的文字是什麼?本文一次解答上述問題,並用白話文簡介 LoRA 原理,讓大家在操作時更有感覺!

LoRA 是什麼?

最詳細的 Stable diffusion WebUI 操作教學 – txt2img | Part 1 中提到,所有算圖的第一步是選擇模型(model,或者說 checkpoint)。

雖然每個 checkpoint 都是 Stable Diffusion model,但因為透過不同圖片訓練,神經元權重不同,因此有各自的風格(簡單想像,大家都是人類,但因為學習、經驗等不同,因此大家都能展現出獨特的自己)。

此時會發現幾個問題:

  • checkpoint 檔案非常大,動輒 2 ~ 7 GB 不等,若需要多種風格,將佔用大量硬碟空間
  • 每個 checkpoint 不能在算圖操作時 直接疊加 ,需先透過 Checkpoint Merger 作混合,產生出新的 checkpoint 才能使用
  • 若要 fine tune model 訓練新的風格,因模型過大,需大量硬體資源才能辦到

為了解決 fine-tuning large-language models 的問題, Microsoft researchers 提出 LoRA: Low-Rank Adaption of Large Language Models 方法。

簡單說明重點:

  • LoRA 透過 inject 的方式,在大型語言模型中,每個 transformer block 前插入一層 trainable layers (rank-decomposition matrices)
  • fine tune 訓練時,固定 model 所有神經元權重,只訓練 inject trainable layers 的權重,因此訓練參數量可以大幅下降
  • 權重參數下降代表檔案大小也變小,因此 LoRA 只有幾百 MB(通常是 151 MB)

若以上太學術看不懂沒關係,可以簡單把 LoRA 當成風格濾鏡來理解。在 Prompt 中加入 LoRA 引用,即能大幅改變算圖的結果,甚至也能同時套用多個 LoRA 來取得混合風格。使用上比單純更換 model 或作 checkpoint merge 更有彈性且多變。

延伸閱讀:Using LoRA for Efficient Stable Diffusion Fine-Tuning

去哪裡下載 LoRA?

如何在 M1 Macbook 上跑 Stable Diffusion? 文末有推薦各種風格的 LoRA,或者直接上 Civitai 下載網友分享的 LoRA,還能參考大家的 Prompt

LoRA 是什麼?如何使用?| Stable Diffusion

延伸閱讀:最詳細的 Stable diffusion WebUI 操作教學 – txt2img

如何安裝 LoRA 到 Stable Diffusion WebUI?

將下載好的 LoRA 檔案放入 stable-diffusion-webui/models/Lora 資料夾中即可。

LoRA 是什麼?如何使用?| Stable Diffusion

回到 WebUI,點一下 Refresh 就能看到新增的 LoRA

LoRA 是什麼?如何使用?| Stable Diffusion

延伸閱讀:如何在 M1 Macbook 上跑 Stable Diffusion?

如何使用 LoRA

點想要套用的 LoRA,WebUI 會自動把 LoRA 的名稱加入 Prompt 中。如果熟悉名稱也能直接鍵入節省時間。

LoRA 是什麼?如何使用?| Stable Diffusion

LoRA 名稱冒號旁邊的數字是權重,可以想像成套用的比例,數字越大效果越明顯,反之則越弱。

LoRA 是什麼?如何使用?| Stable Diffusion

套用 LoRA 的效果

以下我們就來看看都是使用基礎模型 ChilloutMix-ni 但套用不同 LoRA 算圖的結果

套用 Korean Doll Likeness

套用 Japanese Doll Likeness

套用 hanfu

套用 墨心 MoXin

同時套用兩個 LoRA

既然有特殊國籍的 LoRA (如 Korean Doll Likeness), 能夠混合兩種 LoRA 做出混血妹嗎?可以的!只需調整兩者的權重比例即可。

使用 Korean Doll Likeness + Russian Doll Likeness 作為範例,將比例配置做成對照圖如下:

能發現

  • 當 Korean Doll Likeness 比例相對上升時,五官會變得比較偏東方人,反之五官輪廓則變深
  • 除了相貌外,衣服、背景也會有所改變

因此可以得知,LoRA 因訓練圖片來源偏差性,同樣的 Prompt ,會算出截然不同的結果。

另外也觀察到,當兩個 LoRA 權重都是 0.7 時,畫質發生衰減,因此權重也不能無限往上拉。若要調混合比例,可以透過調整 LoRA 權重比例達成,不一定要把值拉到很大。

以上就是 LoRA 的基本介紹和使用範例,大家可以試試看!

延伸閱讀

如何用 Stable Diffusion 產生高解析度的圖?
最詳細的 Stable diffusion WebUI 操作教學 – txt2img
如何在 M1 Macbook 上跑 Stable Diffusion?
免費用 Google Colab 玩 Stable Diffusion WebUI
不用顯卡也能玩 Stable Diffusion WebUI – 使用 AWS 架設
如何安裝 CUDA、cuDNN 到 Ubuntu 20.04?

Written by J
雖然大學唸的是生物,但持著興趣與熱情自學,畢業後轉戰硬體工程師,與宅宅工程師們一起過著沒日沒夜的生活,做著台灣最薄的 intel 筆電,要與 macbook air 比拼。 離開後,憑著一股傻勁與朋友創業,再度轉戰軟體工程師,一手扛起前後端、雙平台 app 開發,過程中雖跌跌撞撞,卻也累計不少經驗。 可惜不是那 1% 的成功人士,於是加入其他成功人士的新創公司,專職開發後端。沒想到卻在採前人坑的過程中,拓寬了眼界,得到了深層的領悟。