LoRA

LoRA

LoRA (Low-Rank Adaptation) คือวิธีการที่แทรกเมทริกซ์ผลต่างแบบ low-rank เข้าไปในเมทริกซ์น้ำหนักของโมเดลภาษาขนาดใหญ่ และทำการเรียนรู้เฉพาะส่วนผลต่างนั้น ซึ่งช่วยให้สามารถทำ fine-tuning ได้โดยเพิ่มพารามิเตอร์เพียงประมาณ 0.1–1% ของโมเดลทั้งหมด

LoRA มีโครงสร้างที่เพิ่มผลคูณของเมทริกซ์ rank ต่ำ A×B เข้าไปยังเมทริกซ์น้ำหนัก W ในแต่ละชั้นของ Transformer โดยที่น้ำหนักเดิม W จะถูกตรึงไว้ และเรียนรู้เฉพาะ A กับ B ที่เพิ่มเข้ามาเท่านั้น ทำให้จำนวน parameter ที่ต้องเรียนรู้อยู่ที่ประมาณ 0.1〜1% ของโมเดลทั้งหมด โดยทั่วไปจะกำหนดค่า rank r ไว้ที่ประมาณ 4〜64 ซึ่งยิ่ง r มีค่าน้อย จำนวน parameter ก็จะลดลง แต่จะเกิด trade-off กับความสามารถในการแสดงออก

ในด้านการนำไปใช้งาน ไลบรารี PEFT ของ Hugging Face และ Unsloth ได้รับความนิยมอย่างแพร่หลาย และสามารถผสานเข้ากับ pipeline การเรียนรู้ที่มีอยู่เดิมได้ด้วยการเพิ่มโค้ดเพียงไม่กี่บรรทัด LoRA adapter ที่ผ่านการเรียนรู้แล้วสามารถบันทึกเป็นไฟล์แยกต่างหากจากโมเดลหลัก (ขนาดประมาณหลักสิบ MB) และสามารถสลับ adapter ตามแต่ละ task ได้ ทำให้ใช้ base model เดียวกันสำหรับหลายวัตถุประสงค์ได้ หากมี GPU memory เพียงพอ ยังสามารถ merge adapter เข้ากับ base model เพื่อรักษาความเร็วในการ inference ได้อีกด้วย

ในสภาพแวดล้อมของผู้เขียน ค่า r=16 ให้ความสมดุลระหว่างความแม่นยำและประสิทธิภาพได้ดีสำหรับ task ส่วนใหญ่ จึงมักใช้เป็นค่าตั้งต้น

อย่างไรก็ตาม ความสามารถที่โมเดลไม่มีอยู่เดิม เช่น การเพิ่มภาษาที่ยังไม่รองรับ นั้นเป็นเรื่องยากที่จะได้มาด้วย LoRA เพียงอย่างเดียว ในกรณีดังกล่าวจำเป็นต้องใช้ร่วมกับ continual pre-training

คำศัพท์ที่เกี่ยวข้อง