Doctor AI

Dr. Savath Saypadith

240 ບົດຄວາມ

LoRA: Low-Rank Adaptation ສຳລັບການ Fine-Tune ໂມເດວພາສາຂະໜາດໃຫຍ່ແບບປະຢັດ

ໂພສເມື່ອ # Large Language Models # Fine-Tuning # AI Optimization # Deep Learning

LoRA: Low-Rank Adaptation ສຳລັບການ Fine-Tune ໂມເດວພາສາຂະໜາດໃຫຍ່ແບບປະຢັດ

ໃນຍຸກທີ່ Large Language Models (LLMs) ກາຍເປັນເຕັກໂນໂລຊີຫົວໃຈຫຼັກຂອງເຕັກໂນໂລຊີ AI, ການນຳເອົາໂມເດວໃຫຍ່ໆເຊັ່ນ LLaMA-3 ຫຼື Mistral ມາສອນໃຫ້ເຂົ້າໃຈບໍລິບົດຂອງປະເທດລາວ — ຕົວຢ່າງ: ການສ້າງແຊັດບອດຕອບຄຳຖາມລູກຄ້າສະເພາະທາງສຳລັບທະນາຄານໃນນະຄອນຫຼວງວຽງຈັນ ຫຼື ການພັດທະນາໂມເດວພາສາລາວ (Lao NLP) — ແມ່ນມີສິ່ງທ້າທາຍອັນຍິ່ງໃຫຍ່ຄື: “ຕົ້ນທຶນການຄິດໄລ່ (Compute Cost)“.

ການເຮັດ Full Parameter Fine-Tuning ໂມເດວຂະໜາດ 7 ຕື້ພາຣາມິເຕີ ອາດຈະຕ້ອງໃຊ້ GPU ລະດັບ Data Center ເຊັ່ນ Nvidia A100 ຫຼາຍໜ່ວຍພ້ອມກັນ. ແຕ່ວ່າ, ສຳລັບນັກພັດທະນາ ຫຼື ທີມວິໄຈຢູ່ມະຫາວິທະຍາໄລແຫ່ງຊາດ (ມຊ) ທີ່ມີພຽງ GPU ສຳລັບຜູ້ບໍລິໂພກທົ່ວໄປ (ເຊັ່ນ RTX 3090 ຫຼື 4090) ໜ່ວຍດຽວເດ? ຄຳຕອບຂອງບັນຫານີ້ຄືການນຳໃຊ້ LoRA (Low-Rank Adaptation).

LoRA ແມ່ນຫຍັງ? ແລະ ຄະນິດສາດເບື້ອງຫຼັງ

LoRA ຖືກສະເໜີໂດຍທີມວິໄຈຈາກ Microsoft ໃນປີ 2021. ແນວຄິດຫຼັກແມ່ນອີງໃສ່ສົມມຸດຕິຖານ “Low Intrinsic Dimension” ເຊິ່ງເຊື່ອວ່າ: ເຖິງແມ່ນໂມເດວ AI ຈະມີພາຣາມິເຕີຫຼາຍຕື້ຕົວ, ແຕ່ເມື່ອເຮົາເອົາມັນມາຮຽນຮູ້ວຽກໃໝ່ແບບສະເພາະເຈາະຈົງ (ເຊັ່ນ: ການແປພາສາລາວ-ອັງກິດ), ການປັບປ່ຽນນ້ຳໜັກພາຍໃນເຄືອຂ່າຍ ຕ້ອງການພື້ນທີ່ຍ່ອຍ (Subspace) ທີ່ນ້ອຍຫຼາຍເທົ່ານັ້ນ ກໍສາມາດບັນລຸປະສິດທິຜົນໄດ້ແລ້ວ.

ສົມຜົນການແຍກມາຕຣິກ (Matrix Decomposition)

ໃຫ້ W0Rd×kW_0 \in \mathbb{R}^{d \times k} ເປັນ Pre-trained Weights ຂອງໂມເດວ (ເຊິ່ງໃນ LoRA, ນ້ຳໜັກສ່ວນນີ້ຈະຖືກ Freeze ໄວ້ ຄືບໍ່ມີການອັບເດດ Gradient ໃດໆ).

ໃນການອັບເດດນ້ຳໜັກປົກກະຕິ, ເຮົາຕ້ອງຊອກຫາຄ່າການປ່ຽນແປງ ΔW\Delta W ທີ່ມີຂະໜາດ d×kd \times k ເທົ່າເດີມ. ແຕ່ LoRA ຈະໃຊ້ການຄູນກັນຂອງສອງມາຕຣິກນ້ອຍໆ ຄື AA ແລະ BB ຂຶ້ນມາແທນ:

ΔW=BA\Delta W = B \cdot A

ໂດຍທີ່:

ສະນັ້ນ, Forward Pass ຂອງ Linear Layer ຈະປ່ຽນເປັນ: h=W0x+ΔWx=W0x+BAxh = W_0 x + \Delta W x = W_0 x + B A x

ການຄູນດ້ວຍຄ່າ α\alpha (Alpha Scaling)

ໃນການນຳໃຊ້ຈິງ, ຜົນລັບການອັບເດດມາຕຣິກຈະຖືກຄູນດ້ວຍສຳປະສິດ αr\frac{\alpha}{r} ເຊິ່ງ α\alpha ເປັນຄ່າຄົງທີ່:

ΔW=αr(BA)\Delta W = \frac{\alpha}{r} (B A)

ການເຮັດແບບນີ້ຊ່ວຍຮັກສາສະຖຽນລະພາບຂອງ Gradient ຖ້າເຮົາປ່ຽນແປງຄ່າ rr. ຖ້າເຮົາຕັ້ງຄ່າ α=2r\alpha = 2r, ລະດັບການແຜ່ກະຈາຍຂອງການອັບເດດຈະຄົງທີ່ ເຮັດໃຫ້ເຮົາບໍ່ຈຳເປັນຕ້ອງຈູນ (Tuning) Learning Rate ໃໝ່ທຸກຄັ້ງທີ່ປ່ຽນ Rank.

ປະຕິບັດການຈິງ: ການຂຽນໂຄ້ດ Fine-Tune ດ້ວຍ LoRA

ມາເບິ່ງວິທີການຂຽນໂຄ້ດດ້ວຍ PyTorch ເພື່ອ Fine-tune ໂມເດວ LLaMA ເພື່ອສ້າງເປັນ AI ຊ່ວຍສະຫຼຸບເອກະສານກົດໝາຍແຮງງານລາວ. ເຮົາຈະໃຊ້ Library peft ຈາກ Hugging Face.

import torch
from transformers import AutoModelForCausalLM
from peft import LoraConfig, get_peft_model

# 1. ໂຫຼດໂມເດວພາສາ (ຕົວຢ່າງ: LLaMA-3 8B)
model_name = "meta-llama/Meta-Llama-3-8B"
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.bfloat16, # ໃຊ້ bfloat16 ເພື່ອປ້ອງກັນການລົ້ນເຫລືອຂອງ VRAM
    device_map="auto"
)

# 2. ກຳນົດຄ່າ LoRA Config
lora_config = LoraConfig(
    r=16,               # Rank: ຂະໜາດຂອງມາຕຣິກຍ່ອຍທີ່ເຮົາຈະເທຣນ (ອາດຈະເລີ່ມທີ່ 16 ສຳລັບພາສາລາວ)
    lora_alpha=32,      # ຕົວຄູນ (Scaling factor)
    target_modules=["q_proj", "v_proj", "o_proj", "down_proj"], # ແຊກ LoRA ເຂົ້າໄປໃນ Attention & MLP layers
    lora_dropout=0.05,  # Dropout ເພື່ອປ້ອງກັນ Overfitting
    bias="none",
    task_type="CAUSAL_LM"
)

# 3. ຫຸ້ມໂມເດວດ້ວຍ LoRA (Wrap model)
peft_model = get_peft_model(model, lora_config)

# 4. ກວດສອບເບິ່ງຈຳນວນພາຣາມິເຕີທີ່ຈະຕ້ອງໄດ້ຝຶກຈິງ
peft_model.print_trainable_parameters()

ເມື່ອ Run ໂຄ້ດນີ້, Output ອາດຈະອອກມາປະມານ: trainable params: 13,631,488 || all params: 8,044,228,608 || trainable%: 0.1694%

ເຊິ່ງໝາຍຄວາມວ່າທ່ານຕ້ອງຝຶກປັບແຕ່ງ Parameters ພຽງແຕ່ 0.16% ຂອງໂມເດວທັງໝົດເທົ່ານັ້ນ!

ການປະຍຸກໃຊ້ໃນໜ້າວຽກຕົວຈິງໃນລາວ ແລະ ການປັບແຕ່ງຂັ້ນສູງ

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

ສະຫຼຸບ ເຕັກນິກ LoRA ໄດ້ເຂົ້າມາປ່ຽນແປງວົງການ AI ຢ່າງສິ້ນເຊີງ, ໂດຍສະເພາະຢ່າງຍິ່ງສຳລັບປະເທດທີ່ກຳລັງພັດທະນາ ຫຼື ອົງກອນທີ່ມີງົບປະມານຈຳກັດ. ສຳລັບນັກພັດທະນາຊາວລາວ, ມັນປົດລັອກຂໍ້ຈຳກັດດ້ານ Hardware ເຮັດໃຫ້ເຮົາສາມາດນຳເອົາໂມເດວລະດັບໂລກ ມາປັບແຕ່ງໃຫ້ເຂົ້າກັບພາສາລາວ, ວັດທະນະທຳລາວ ແລະ ຕອບໂຈດທຸລະກິດຈິງພາຍໃນປະເທດໄດ້ ໂດຍບໍ່ຈຳເປັນຕ້ອງມີ Data Center ຂະໜາດໃຫຍ່. ການເຂົ້າໃຈຫຼັກການທາງຄະນິດສາດ ແລະ ການໃຊ້ງານ LoRA ຄືກຸນແຈສຳຄັນທີ່ຈະຊ່ວຍໃຫ້ທ່ານສາມາດສ້າງ Custom LLM ທີ່ແຂງແກ່ນ ແລະ ປະຢັດຕົ້ນທຶນໄດ້ຢ່າງແທ້ຈິງ.