Doctor AI

Dr. Savath Saypadith

240 ບົດຄວາມ

ການ Fine-Tune ໂມເດວ Gemma-4 ສຳລັບພາສາລາວ: ຄູ່ມືສຳລັບນັກພັດທະນາ

ໂພສເມື່ອ # LLM # Natural Language Processing # Machine Learning # Python

ການ Fine-Tune ໂມເດວ Gemma-4 ສຳລັບພາສາລາວ: ຄູ່ມືສຳລັບນັກພັດທະນາ

ໃນຍຸກທີ່ Large Language Models (LLMs) ກາຍເປັນຫົວໃຈສຳຄັນຂອງການພັດທະນາທາງດ້ານເຕັກໂນໂລຊີ, ໂມເດວແບບ Open-weights ເຊັ່ນ Gemma-4 ໄດ້ເປີດໂອກາດໃຫ້ນັກພັດທະນາສາມາດເຂົ້າເຖິງ AI ທີ່ມີປະສິດທິພາບບົນສະຖາປັດຕະຍະກຳທີ່ກ້າວໜ້າ. ແນວໃດກໍຕາມ, ເມື່ອນຳມາໃຊ້ກັບພາສາທີ່ມີຊັບພະຍາກອນຈຳກັດ (Low-resource language) ເຊັ່ນພາສາລາວ, ປະສິດທິພາບເບື້ອງຕົ້ນມັກຈະຍັງບໍ່ຕອບໂຈດ. ຖ້າທ່ານຕ້ອງການສ້າງ AI ເພື່ອຊ່ວຍຕອບຄຳຖາມລູກຄ້າໃຫ້ກັບທຸລະກິດ SME ທີ່ຂາຍກາເຟປາກຊ່ອງ ຫຼື ຕ້ອງການວິເຄາະຂໍ້ມູນລາຍງານສະພາບການຈະລາຈອນໃນນະຄອນຫຼວງວຽງຈັນ, ການຕັ້ງຄ່າໂມເດວເດີມໆອາດຈະບໍ່ພຽງພໍ.

ບົດຄວາມນີ້ຈະພາທ່ານລົງເລິກເຖິງວິທີການ Fine-Tune ໂມເດວ Gemma-4 ສຳລັບພາສາລາວໃນລະດັບ Advanced ໂດຍເນັ້ນໃສ່ເຕັກນິກການປັບແຕ່ງ Parameter-Efficient Fine-Tuning (PEFT) ຜ່ານສະຖາປັດຕະຍະກຳ QLoRA.

ຂໍ້ທ້າທາຍຂອງພາສາລາວໃນໂມເດວ LLM

ບັນຫາຫຼັກຂອງການປະມວນຜົນພາສາລາວ (Lao NLP) ໃນ LLMs ບໍ່ແມ່ນພຽງແຕ່ເລື່ອງຂອງຄຳສັບ, ແຕ່ແມ່ນ Tokenization. ພາສາລາວຂຽນຕິດຕໍ່ກັນໂດຍບໍ່ມີຍະຫວ່າງລະຫວ່າງຄຳ (No word boundaries). ເມື່ອໃຊ້ Tokenizer ມາດຕະຖານທີ່ຝຶກມາໃນພາສາອັງກິດ, ປະໂຫຍກເຊັ່ນ “ລົດຕິດໜັກແຖວໄຟແດງດົງໂດກ” ອາດຈະຖືກແຍກ Token ຜິດພາດຢ່າງໜັກໜ່ວງ ສົ່ງຜົນໃຫ້ການຄຳນວນ Attention weight ໃນ Transformer Layers ກະຈາຍຕົວຜິດຈຸດ ແລະ ເຮັດໃຫ້ Context vector ສູນເສຍຄວາມໝາຍ.

ການແກ້ບັນຫານີ້ໃນລະດັບໂຄງສ້າງຮຽກຮ້ອງໃຫ້ມີການອັບເດດ Vocabulary size ຂອງ Tokenizer ໃໝ່ ແລະ ທຳການ Fine-tune ດ້ວຍ Dataset ທີ່ເປັນພາສາລາວສະເພາະ.

ການກະກຽມວິເຄາະ Dataset (Instruction Tuning)

ກ່ອນຈະໄປຮອດຂັ້ນຕອນການຂຽນໂຄດ, ທ່ານຕ້ອງກະກຽມ Dataset ສຳລັບ Instruction Tuning ທີ່ມີຄຸນນະພາບສູງ. ຕົວຢ່າງຮູບແບບ JSONL:

{"instruction": "ຈົ່ງແນະນຳສະຖານທີ່ທ່ອງທ່ຽວໃນຊ່ວງບຸນທາດຫຼວງ ສຳລັບນັກທ່ອງທ່ຽວ.", "output": "ໃນຊ່ວງບຸນທາດຫຼວງ, ນັກທ່ອງທ່ຽວຄວນໄປຮ່ວມພິທີໃສ່ບາດຢູ່ເດີ່ນພະທາດຫຼວງໃນຕອນເຊົ້າ, ຫລັງຈາກນັ້ນສາມາດໄປຍ່າງເລາະຊື້ເຄື່ອງຂອງທ້ອງຖິ່ນ ແລະ ຊີມອາຫານລາວໃນງານວາງສະແດງສິນຄ້າອ້ອມຮອບພະທາດ..."}
{"instruction": "ສະຫຼຸບຂໍ້ມູນການປູກກາເຟຢູ່ປາກຊ່ອງ.", "output": "ເມືອງປາກຊ່ອງຕັ້ງຢູ່ພູພຽງບໍລະເວນ ມີສະພາບອາກາດເຢັນຕະຫຼອດປີ ແລະ ດິນພູໄຟທີ່ອຸດົມສົມບູນ, ເຮັດໃຫ້ມັນເປັນແຫຼ່ງປູກກາເຟອາຣາບິກ້າ (Arabica) ທີ່ດີທີ່ສຸດໃນລາວ..."}

ສະຖາປັດຕະຍະກຳ ແລະ ເຕັກນິກ QLoRA

Full Fine-tuning ສຳລັບໂມເດວຂະໜາດ 7B ຫຼື 9B ພາຣາມິເຕີ ຕ້ອງການ GPU VRAM ທີ່ສູງຫຼາຍ (ມັກຈະເກີນ 80GB ຕໍ່ 1 Node). ສຳລັບນັກພັດທະນາໃນລາວທີ່ອາດຈະເຂົ້າເຖິງຊັບພະຍາກອນ Hardware ຈຳກັດ, ພວກ ເຮົາຈະໃຊ້ເຕັກນິກ QLoRA (Quantized Low-Rank Adaptation).

QLoRA ຈະລົດການໃຊ້ໜ່ວຍຄວາມຈຳໂດຍການແປງ Base Model Weight ໃຫ້ເປັນ 4-bit NormalFloat (NF4) ແລະ ຈະອັບເດດສະເພາະ Adapter weights ທີ່ມີຂະໜາດນ້ອຍກວ່າ (Low-rank matrices A ແລະ B) ເຊິ່ງຈະຊ່ວຍໃຫ້ສາມາດ Fine-tune ໂມເດວລະດັບ 7B ຫາ 9B ໄດ້ເທິງ GPU ທີ່ມີ VRAM ພຽງ 24GB (ເຊັ່ນ RTX 3090/4090).

ຂັ້ນຕອນການຮຽນຮູ້ດ້ວຍ Python & PyTorch (Step-by-Step Code)

ໃນຂັ້ນຕອນນີ້ ພວກເຮົາຕ້ອງການ Library ຫຼັກໆຄື: transformers, peft, bitsandbytes, ແລະ trl.

1. ຕັ້ງຄ່າ Quantization ແລະ ໂຫຼດໂມເດວ

ກ່ອນອື່ນໝົດ, ເຮົາຕ້ອງໂຫຼດ Base Model (Gemma-4) ແລະ ຕັ້ງຄ່າການບີບອັດໃຫ້ເປັນຮູບແບບ 4-bit.

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig

model_id = "google/gemma-4-it"  # ໃຊ້ Instruction-tuned base ມາຕໍ່ຍອດ
# ຕັ້ງຄ່າ 4-bit NF4 Quantization (QLoRA)
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_use_double_quant=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16 # ໃຊ້ bfloat16 ເພື່ອປ້ອງກັນ gradient overflow
)

# ໂຫຼດ Tokenizer ແລະ ແກ້ໄຂ Padding token
tokenizer = AutoTokenizer.from_pretrained(model_id)
tokenizer.pad_token = tokenizer.eos_token

# ໂຫຼດໂມເດວພ້ອມຕັ້ງຄ່າອຸປະກອນ
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    quantization_config=bnb_config,
    device_map="auto"
)

2. ການຕັ້ງຄ່າ LoRA (Low-Rank Adaptation Configuration)

ພວກເຮົາຕ້ອງລະບຸ Target Modules ສໍາລັບການໃສ່ LoRA adapters. ສໍາລັບສະຖາປັດຕະຍະກຳຂອງ Gemma, ເຮົາຄວນ focus ໄປທີ່ Attention matrices ຕ່າງໆ:

from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training

# ກະກຽມໂມເດວເພື່ອການຝຶກສອນແບບ Quantized
model = prepare_model_for_kbit_training(model)

peft_config = LoraConfig(
    r=16, # Rank ຂອງ Matrix
    lora_alpha=32, # Scaling factor
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"],
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM"
)

# ເອົາ LoRA ໄປສວມເຂົ້າ Base Model
model = get_peft_model(model, peft_config)
model.print_trainable_parameters()

ໝາຍເຫດ: ຍິ່ງ Rank (r) ສູງ, ຄວາມສາມາດໃນການຮຽນຮູ້ຍິ່ງຫຼາຍ ແຕ່ກໍຈະກິນ VRAM ແລະ ເວລາ Train ເພີ່ມຂຶ້ນ.

3. ການດຳເນີນການ Fine-Tuning ດ້ວຍ SFTTrainer

ພວກເຮົາໃຊ້ SFTTrainer ຈາກຫໍສະໝຸດ TRL ເພື່ອຄວາມສະດວກໃນການ Train ແບບ Supervised Fine-Tuning.

from transformers import TrainingArguments
from trl import SFTTrainer
from datasets import load_dataset

# ໂຫຼດ Dataset ພາສາລາວຂອງທ່ານ (ສົມມຸດວ່າເປັນ HuggingFace format)
dataset = load_dataset("json", data_files="lao_instruction_dataset.jsonl", split="train")

training_args = TrainingArguments(
    output_dir="./gemma-4-lao-lora",
    per_device_train_batch_size=4,
    gradient_accumulation_steps=4, # Simulation ແບບ Batch ຂະໜາດໃຫຍ່
    learning_rate=2e-4,
    logging_steps=10,
    max_steps=500, # ປັບຕາມຄວາມເໝາະສົມຂອງຈຳນວນຂໍ້ມູນ
    optim="paged_adamw_8bit", # ໃຊ້ 8-bit optimizer ເພື່ອປະຢັດ Memory ຕື່ມອີກ
    bf16=True, # ຖ້າ GPU ຂອງທານຮອງຮັບ (Ampere architecture ຂຶ້ນໄປ)
)

trainer = SFTTrainer(
    model=model,
    train_dataset=dataset,
    peft_config=peft_config,
    max_seq_length=1024,
    tokenizer=tokenizer,
    args=training_args,
    dataset_text_field="text" # ຫຼື ຕ້ອງເຮັດ Formatting function ສະເພາະກ່ອນເຂົ້າ SFTTrainer
)

# ເລີ່ມຕົ້ນການຝຶກສອນ
trainer.train()

# ບັນທຶກ LoRA Weights ເມື່ອສຳເລັດ
trainer.model.save_pretrained("./gemma-4-lao-lora-final")
tokenizer.save_pretrained("./gemma-4-lao-lora-final")

ການປະເມີນຜົນ (Evaluation)

ຫຼັງຈາກການ Fine-tune, ທ່ານສາມາດທົດສອບໂມເດວໂດຍການລວມ (merge) LoRA weights ເຂົ້າກັບ Base model. ລອງຕັ້ງ Prompts ຖາມກ່ຽວກັບສະພາບທຸລະກິດໃນລາວ ຫຼື ໃຫ້ສະຫຼຸບຂໍ້ມູນລະດັບນ້ຳຂອງ, ທ່ານຈະເຫັນໄດ້ວ່າໂມເດວທີ່ຜ່ານການ Fine-tune ຈະສາມາດຈັດລຽງຄຳສັບພາສາລາວໄດ້ຖືກຕ້ອງຕາມໄວຍະກອນ, ມີຄວາມເຂົ້າໃຈບໍລິບົດທ້ອງຖິ່ນ (Local Context), ແລະ ບໍ່ມີອາການຂຽນຄຳສັບແບບຜິດໆຖືກໆ (Hallucination) ເໝືອນກັບຕອນທີ່ຍັງບໍ່ທັນປັບແຕ່ງ.

Key Takeaways (ສິ່ງສຳຄັນທີ່ຄວນຈື່)

ສະຫຼຸບ

ການນຳເອົາໂມເດວ Open-weights ລະດັບໂລກຢ່າງ Gemma-4 ມາຜັນຂະຫຍາຍ ແລະ Fine-Tune ສຳລັບພາສາລາວ ແມ່ນບາດກ້າວສຳຄັນໃນການສ້າງຄວາມສະເໝີພາບທາງດ້ານເຕັກໂນໂລຊີ AI. ບໍ່ວ່າຈະເປັນການນຳໃຊ້ເພື່ອພັດທະນາລະບົບການບໍລິການຂອງທຸລະກິດ SME ພາຍໃນປະເທດ, ການຊ່ວຍວິເຄາະຂໍ້ມູນຖະໜົນຫົນທາງ, ຫລື ແມ້ກະທັ່ງວຽກງານກະສິກຳຢູ່ທ້ອງຖິ່ນຕ່າງໆ, ການມີ AI ທີ່ “ເຂົ້າໃຈລາວແທ້ໆ” ຈະເປັນພື້ນຖານອັນຄໍ້າປະກັນໃຫ້ແກ່ນະວັດຕະກຳໃໝ່ໆໃນອະນາຄົດ. ນັກພັດທະນາທຸກຄົນມີບົດບາດສຳຄັນໃນການປ້ອນຂໍ້ມູນແລະປັບແຕ່ງສະຖາປັດຕະຍະກຳເຫຼົ່ານີ້ ເພື່ອໃຫ້ເທັກໂນໂລຍີຕອບໂຈດກັບສະພາບການຂອງສັງຄົມລາວຫຼາຍທີ່ສຸດ.