|

拿大模型程式碼來訓練自用小模型:以AI寫(畫)書法為例

   
作者:高煥堂

上一期所刊登的《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註冊即可享有一切福利!

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

高煥堂

Author: 高煥堂

擁有40多年軟硬體整合設計經驗,專精Android終端平台、AI、Docker容器、VR、AI(人工智慧)、IC軟硬整合技術與大數據應用。 近5年來,從事於AI普及化教育工作,目前擔任銘傳大學AI課程、長庚智慧醫療研究所AI課程授課老師。也擔任永春國小、東園國小、立志中學、君毅中學、永春高中等學校的AI師資培育工作。

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *