canonical_url: https://bebechien.github.io/cozy-corner-future/posts/turning-gemma-4-into-an-old-korean-translator/
cover_image: https://bebechien.github.io/cozy-corner-future/images/tuning-gemma-4-into-an-old-korean-translator.png
description: ''
published: true
tags:
古書有一種獨特的美。陳舊紙張的氣味、書頁的觸感,以及歷經世代仍得以留存的故事,都是現代書籍難以取代的魅力。但如果你曾經嘗試翻閱朝鮮王朝時期的古典韓文文學——例如小說 《洪吉童傳》(홍길동전)——你很快就會發現,時間也會在語言上留下自己的痕跡。
在沒有詞間空格的情況下,再加上像點母音 阿雷阿(ㆍ) 或柔音 Yeorin-hieut(ㆆ) 這類已過時的字母,閱讀起來與其說是在看小說,不如說是在解一道美麗而古老的謎題。即使是母語者,這之間的語言落差也非常巨大。
因此,我決定製作 這份教學,作為連結過去與現在的數位橋樑。使用 Gemma 4 E2B (IT),我想打造一個樸實的翻譯器,將古典韓文轉換成流暢的現代韓文。
為了讓流程保持可控,我在 Google Colab 上使用單張 NVIDIA T4 GPU(16GB)進行訓練。
首先,我們載入最喜歡的開源工具:Hugging Face 的 transformers、用於訓練流程的 trl,以及 peft,這樣就能使用 LoRA(低秩適應)在不需要龐大伺服器叢集的情況下微調模型。
資料方面,我使用了 《洪吉童傳》 的公版版本,搭配 직지프로 所提供的一份精美現代譯文(採用創用 CC 授權)。
為了讓 Gemma 更容易上手,我把資料整理成對話格式,並用清楚的 system 提示詞引導模型:
[
{"role": "system", "content": "Translate Classical Korean into Modern Korean."},
{"role": "user", "content": "됴션국셰둉ᄃᆡ왕즉위십오연의홍희문밧긔ᄒᆞᆫᄌᆡ상이잇스되"},
{"role": "assistant", "content": "조선국 세종대왕 즉위 십오년에 홍회문 밖에 한 재상이 있으되,"}
]
(翻譯註記:這句話是在介紹一位首相,他住在世宗大王在位第十五年時的弘化門外!)
在給 Gemma 任何特定訓練之前,我先做了一個簡單的基準測試。基礎模型雖然很聰明,但古文法屬於非常特定的領域。沒有微調時,Gemma 已經盡力了,但最後產生的是冗長、過度直譯的解釋:
(翻譯註記:這句其實是指——白氏聽後內心深受感動,說:「他沒有隱瞞自己的本性,真是個大丈夫!」並且再三安慰他。)
基礎模型顯然迷失在時間裡了,它需要一張地圖。
為了有效率地訓練模型,我採用了使用 LoRA 的參數高效率微調(PEFT)架構。
from peft import LoraConfig
peft_config = LoraConfig(
lora_alpha=16,
lora_dropout=0.05,
r=16,
bias="none",
target_modules="all-linear",
task_type="CAUSAL_LM",
)
祕密武器:collate_fn
當你要微調一個聊天模型,讓它像特定工具那樣運作時,你不希望它把精力浪費在重新改寫提示詞上。透過自訂資料整理器,我將 system 與 user 的輸入遮罩起來(把它們的標籤設為 -100),強迫 Gemma 的損失計算只專注於生成正確的現代韓文助理回應。
在把超參數設定為以 2e-5 的學習率,溫和地跑完 5 個 epoch 之後,我就按下了訓練。
經過一點耐心,讓訓練器施展魔法後,結果非常令人滿意。逐字相似度分數一路提升到亮眼的 79.93%!
看看它現在如何處理這段文字:
科技常常毫不留情地把我們推向未來,但我最喜歡的技術專案,卻是那些能讓我們更清楚回望過去的作品。只要花一點時間,像 Gemma 4 這樣的輕量模型也能透過微調,成為保存文化歷史的工具,讓古老智慧與經典故事,任何只要有筆電的人都能接觸到。
下次當你遇到一段看起來遙不可及的歷史時,請記得:一小份資料集和一場微調,或許就是把它帶到你眼前所需要的一切。
當你為自己的領域進行微調時,可以參考以下結構化工作流程:
👉 在 Gemma Cookbook 查看這份教學
👉 為儲存庫點星支持我們
原文出處:https://dev.to/googleai/turning-gemma-4-into-an-old-korean-translator-hop