Low-Rank Adaptation (LoRA) (TH)

From Systems analysis Wiki
Jump to navigation Jump to search

Low-Rank Adaptation (LoRA) — คือวิธีการ fine-tuning แบบประหยัดพารามิเตอร์ (PEFT) ที่ช่วยให้สามารถปรับโมเดลภาษาขนาดใหญ่ (LLM) ให้เข้ากับงานใหม่ได้โดยใช้ทรัพยากรการคำนวณน้อยที่สุด เทคโนโลยีนี้ถูกนำเสนอครั้งแรกในผลงานของ เอ็ดเวิร์ด หู (Edward Hu) และเพื่อนร่วมงานในปี 2021[1]

การ fine-tuning แบบเต็มรูปแบบ (full fine-tuning) ของโมเดลขนาดใหญ่ เช่น LLaMA หรือ GPT ต้องใช้ทรัพยากรมหาศาล ทำให้นักวิจัยและนักพัฒนาส่วนใหญ่ไม่สามารถเข้าถึงได้ LoRA แก้ปัญหานี้โดยอนุญาตให้ทำการ fine-tuning เฉพาะพารามิเตอร์เพียงส่วนน้อยของโมเดล ในขณะที่ยังคงคุณภาพและประสิทธิภาพสูงที่เทียบได้กับการ fine-tuning แบบเต็มรูปแบบ[2]

หลักการทำงาน

แนวคิดหลักของ LoRA คือการไม่แก้ไขน้ำหนักดั้งเดิมของโมเดลที่ผ่านการ pre-training มาแล้ว แต่เพิ่มเมทริกซ์ "ปรับแก้" ขนาดเล็กเข้าไปแทน แทนที่จะฝึกเมทริกซ์น้ำหนักขนาดใหญ่ `W` โดยตรง LoRA แทนการเปลี่ยนแปลงของมันเป็นผลคูณของเมทริกซ์ขนาดเล็กสองอันที่มี rank ต่ำ

ในเชิงรูปนัย หากเมทริกซ์น้ำหนักดั้งเดิมของเลเยอร์ `W_0` มีขนาด `d × k` การอัปเดตจะถูกแทนด้วย `ΔW = BA` โดยที่ `B` คือเมทริกซ์ขนาด `d × r` และ `A` คือเมทริกซ์ขนาด `r × k` ค่า rank `r` เป็น hyperparameter และมีขนาดเล็กกว่ามาก (`r << d, k`) ในระหว่างการ fine-tuning น้ำหนักดั้งเดิม `W_0` จะถูกแช่แข็ง และจะฝึกเฉพาะเมทริกซ์ `A` และ `B` เท่านั้น เมทริกซ์น้ำหนักสุดท้ายคำนวณได้เป็น `W = W_0 + BA`

วิธีนี้ช่วยลดจำนวนพารามิเตอร์ที่ต้องฝึกลงได้หลายพันเท่า ตัวอย่างเช่น ในการ fine-tuning GPT-3 (175 พันล้านพารามิเตอร์) LoRA ลดจำนวนพารามิเตอร์ที่ต้องฝึกลง 10,000 เท่า และลดความต้องการหน่วยความจำ GPU ลง 3 เท่า[1]

ข้อดีหลัก

  • ประหยัดทรัพยากร: จำนวนพารามิเตอร์ที่ต้องฝึกลดลงอย่างมาก (ถึง 90% หรือมากกว่า) ซึ่งช่วยลดการใช้หน่วยความจำวิดีโอ (VRAM) และเร่งกระบวนการฝึกได้อย่างมีนัยสำคัญ
  • ไม่มีความล่าช้าเพิ่มเติมในขณะ inference: หลังจากการฝึก เมทริกซ์ `B` และ `A` สามารถ "รวม" เข้ากับเมทริกซ์หลัก `W_0` ได้โดยคำนวณ `W = W_0 + BA` ดังนั้นในระหว่างการใช้งานโมเดลจะไม่มีการคำนวณหรือความล่าช้าเพิ่มเติม[1]
  • ความเป็นโมดูลและการสลับงานอย่างรวดเร็ว: adapter ของ LoRA ที่ผ่านการฝึกแล้วเป็นไฟล์ขนาดเล็ก (ไม่กี่เมกะไบต์) ซึ่งช่วยให้สามารถจัดเก็บ adapter หลายสิบตัวสำหรับงานต่างๆ ได้อย่างง่ายดาย และสลับระหว่างกันได้อย่างรวดเร็วโดยไม่ต้องเปลี่ยนโมเดลหลัก[3]

ข้อจำกัดและการดัดแปลง

แม้ว่า LoRA จะมีประสิทธิภาพสูง แต่ลักษณะ low-rank ของมันอาจเป็นข้อจำกัดสำหรับงานที่ต้องการจดจำข้อมูลใหม่จำนวนมาก เพื่อแก้ปัญหานี้และปัญหาอื่นๆ จึงมีการเสนอการดัดแปลงต่างๆ ขึ้นมา

QLoRA

QLoRA (Quantized Low-Rank Adaptation) — คือการดัดแปลงที่ได้รับความนิยมมากที่สุดอย่างหนึ่ง ซึ่งถูกเสนอในปี 2023 โดยรวม LoRA เข้ากับการ quantization แบบ 4-bit ของโมเดลพื้นฐาน[4] วิธีนี้ช่วยลดความต้องการหน่วยความจำลงได้อีก ทำให้สามารถ fine-tuning โมเดลที่มีหลายหมื่นล้านพารามิเตอร์ (เช่น โมเดลขนาด 65B) บน GPU สำหรับผู้บริโภคทั่วไปได้ โมเดล Guanaco ซึ่งสร้างขึ้นบนพื้นฐานของ QLoRA แสดงผลลัพธ์ที่เทียบเคียงได้กับ ChatGPT

การดัดแปลงอื่นๆ

  • MoRA (High-Rank Updating): ถูกเสนอสำหรับงานที่ LoRA แสดงประสิทธิภาพไม่เพียงพอเนื่องจากข้อจำกัดของ rank MoRA ใช้วิธีการที่ช่วยให้อัปเดตน้ำหนักด้วย rank สูงได้ในขณะที่ยังคงความประหยัดพารามิเตอร์[5]

การนำไปใช้งาน

เทคโนโลยี LoRA ได้รับการยอมรับอย่างแพร่หลายเนื่องจากประสิทธิภาพและความง่ายในการผนวกรวม บทบาทสำคัญในการทำให้เป็นที่นิยมคือไลบรารี PEFT (Parameter-Efficient Fine-Tuning) จากบริษัท Hugging Face โดย PEFT มอบอินเทอร์เฟซแบบเดียวสำหรับการนำ LoRA และวิธีการ PEFT อื่นๆ ไปใช้กับโมเดลในระบบนิเวศ Transformers[6]

LoRA ถูกใช้งานอย่างแข็งขันสำหรับ:

  • การปรับ chatbot และระบบโต้ตอบ (เช่น การ fine-tuning LLaMA, Mistral)
  • การสร้างโมเดลสำหรับการจำแนกประเภทและการสร้างข้อความในสาขาเฉพาะทาง
  • การปรับโมเดลให้เข้ากับสไตล์หรือรูปแบบข้อมูลเฉพาะเจาะจง

ลิงก์

  • เอกสารอย่างเป็นทางการของไลบรารี PEFT จาก Hugging Face

บรรณานุกรม

  • Hu, E.J. et al. (2021). LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685.
  • Dettmers, T. et al. (2023). QLoRA: Efficient Finetuning of Quantized LLMs. arXiv:2305.14314.
  • Zhang, Q. et al. (2023). AdaLoRA: Adaptive Budget Allocation for Parameter-Efficient Fine-Tuning. arXiv:2303.10512.
  • Chen, Y. et al. (2023). LongLoRA: Efficient Fine-Tuning of Long-Context Large Language Models. arXiv:2309.12307.
  • Mao, K. et al. (2024). A Survey on LoRA of Large Language Models. arXiv:2407.11046.
  • Jiang, T. et al. (2024). MoRA: High-Rank Updating for Parameter-Efficient Fine-Tuning. arXiv:2405.12130.
  • Liu, Z. et al. (2024). ALoRA: Allocating Low-Rank Adaptation for Fine-Tuning Large Language Models. arXiv:2403.16187.
  • Liu, J. et al. (2025). RoRA: Efficient Fine-Tuning of LLM with Reliability Optimization for Rank Adaptation. arXiv:2501.04315.
  • Albert, P. et al. (2025). RandLoRA: Full-Rank Parameter-Efficient Fine-Tuning of Large Models. arXiv:2502.00987.
  • Tastan, N. et al. (2025). LoFT: Low-Rank Adaptation That Behaves Like Full Fine-Tuning. arXiv:2505.21289.

หมายเหตุ

  1. 1.0 1.1 1.2 Hu, E.J., et al. «LoRA: Low-Rank Adaptation of Large Language Models». arXiv:2106.09685. [1]
  2. Mao, K., et al. «A Survey on LoRA of Large Language Models». arXiv:2407.11046. [2]
  3. Noble, Joshua. «What is LoRA (Low-Rank Adaption)?». IBM Technology. [3]
  4. Dettmers, T., et al. «QLoRA: Efficient Finetuning of Quantized LLMs». arXiv:2305.14314. [4]
  5. Jiang, Z., et al. «MoRA: High-Rank Updating for Parameter-Efficient Fine-Tuning». arXiv:2405.12130. [5]
  6. «LoRA (Low-Rank Adaptation)». Hugging Face LLM Course. [6]