上一期所刊登的《從CLIP應用領會隱空間的魅力》一文裡,就是一個典型的範例:從Github網頁下載OpenAI公司的CLIP原始程式碼(Source code),然後搭配自己收集的小資料來訓練一個給超市商家使用的小模型(圖-1)。
圖-1、Github上的免費CLIP源碼
那麼,這大模型與小模型,兩者的程式碼之間,有何不同呢? 這可能會出乎您的預料,其核心模型的程式碼,大多是一致的、相容的。常常僅是大模型的參數量很大,而小模型參數量較少而已。
於是就能免費拿來大模型的開放原始程式碼,把其參數量調小,搭配企業自有IP的資料(訓練資料量較少),在較省算力的電腦上即可把程式碼跑起來,訓練出企業自有IP的中小模型了。免費程式碼既省成本、可靠、省算力、又自有IP,可謂取之不盡、用之不竭的資源,豈不美哉!
例如,在上一期的文章裡,就以商店櫃檯的產品推薦應用為例演示了:拿CLIP的原始程式碼,搭配商家自有產品圖像(Image)和圖像敘述文句(Text),來訓練出企業自用的CLIP小模型。
然而,上一期文章裡,並沒有詳細說明其訓練的流程。於是,本文就拿另一個範例來演示,並且說明其開發流程。由於本文的主題是程式碼,如果您有些Python程式碼的基礎知識,就會更容易理解。
以<訓練Diffusion寫書法>為例
筆者之前的文章《細觀Diffusion隱空間裡UNet的訓練流程》裡,曾經介紹過Diffusion架構,及其訓練方法。在AIGC潮流中,SD(Stable Diffusion)產品的推出是AIGC圖像生成發展歷程中的一個里程碑,提供了高性能模型,能快速生成創意十足的圖像。
於是,本範例就拿Diffusion來學習,及創作書法字體,也就是俗稱的:寫書法。雖然Diffusion也能學習依循標準筆順,來逐筆寫出字形。為了從簡單範例出發,本文先讓Diffusion來學習生成整個字形,而不是逐一生成各筆劃。
在SD裡,UNet模型扮演關鍵性角色。在SD的隱空間裡,它使用了一個UNet模型,並搭配一個時間調度(Scheduling)器,來擔任圖像生成的核心任務。而擴散(Diffusion)一詞則描述了SD隱空間裡進行的圖像生成情形,整個過程都是在隱空間裡逐步推進(Step by step)的,現在就依循開發流程來逐步說明之。
Step-1:從Github網頁下載Diffusers源碼
首先訪問這個Huggingface網頁(圖-2):
只需不到短短一分鐘...
輸入您的信箱與ID註冊即可享有一切福利!
會員福利
免費電子報
會員搶先看
主題訂閱
好文收藏