Dictionary · กลไกโมเดล · 47 / 291

LoRA

LoRA คือเทคนิค fine-tuning ที่ฝึกเฉพาะเมทริกซ์เล็กๆ ที่แทรกเข้าไปในโมเดล แทนการปรับพารามิเตอร์ทั้งหมด ทำให้ประหยัด GPU และพื้นที่เก็บข้อมูลมาก

LoRA ย่อมาจาก Low-Rank Adaptation เป็นวิธี fine-tuning ที่ไม่ต้องปรับพารามิเตอร์ทั้งหมดของโมเดลเหมือนวิธีดั้งเดิม แต่จะแช่แข็ง (freeze) ค่าน้ำหนักเดิมของโมเดลไว้ทั้งก้อน แล้วเพิ่มเมทริกซ์ขนาดเล็กจำนวนหนึ่งเข้าไปในแต่ละชั้นของสถาปัตยกรรม transformer จากนั้นฝึกเฉพาะเมทริกซ์เล็กๆ พวกนั้นเท่านั้น ผลลัพธ์คือโมเดลที่ปรับให้เข้ากับงานเฉพาะทางได้ โดยไม่ต้องแตะ parameters เดิมของโมเดลเลยสักตัว

LoRA มาจากเปเปอร์ชื่อ "LoRA: Low-Rank Adaptation of Large Language Models" ของทีมวิจัยจาก Microsoft (Edward J. Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang และ Weizhu Chen) เผยแพร่ครั้งแรกบน arXiv เมื่อวันที่ 17 มิถุนายน 2021 แล้วนำเสนอในงานประชุม ICLR 2022 เปเปอร์ทดสอบกับโมเดลหลายขนาดตั้งแต่ RoBERTa, DeBERTa, GPT-2 ไปจนถึง GPT-3 175B พารามิเตอร์ และรายงานว่าเมื่อเทียบกับการ fine-tune แบบเต็มของ GPT-3 175B ด้วย Adam optimizer LoRA ลดจำนวนพารามิเตอร์ที่ต้องฝึกลงได้ถึง 10,000 เท่า และลดความต้องการหน่วยความจำ GPU ลง 3 เท่า โดยยังให้คุณภาพผลลัพธ์เทียบเท่าหรือดีกว่าการ fine-tune แบบเต็มในหลายกรณี และไม่เพิ่ม latency ตอน inference เหมือนวิธี adapter แบบเก่า เมื่อรวมเมทริกซ์ที่ฝึกเสร็จแล้วกลับเข้าไปในน้ำหนักเดิมของโมเดล (merge) ทีมงานปล่อยโค้ดต้นฉบับไว้ที่ GitHub ของ Microsoft ภายใต้ license MIT พร้อมตัวอย่าง checkpoint ที่เล็กลงมาก เช่น checkpoint ของ GPT-2 Medium ที่ fine-tune ด้วย LoRA มีขนาดเพียงราว 1.5 MB เทียบกับ checkpoint ของ GPT-2 Medium เต็มโมเดลที่มีขนาดราว 1.5 GB

ทุกวันนี้ LoRA กลายเป็นวิธี fine-tuning ที่เครื่องมือสายนี้รองรับกันเป็นมาตรฐาน repo ต้นฉบับของ Microsoft เองระบุว่า LoRA ถูกรองรับในไลบรารี PEFT ของ Hugging Face แล้ว ซึ่งช่วยให้ทีมองค์กรเอาโมเดล open-weights อย่าง llama มาปรับกับข้อมูลของตัวเองได้โดยไม่ต้องมีเซิร์ฟเวอร์ GPU ขนาดใหญ่เท่าการ fine-tune ทั้งโมเดล เพราะไฟล์ที่ได้จากการฝึกคือ adapter ขนาดเล็ก ไม่ใช่สำเนาโมเดลทั้งก้อน ทำให้เก็บ adapter หลายตัวสำหรับหลายงานไว้บนโมเดล base เดียวกันได้ เอกสารของ PEFT ระบุว่าถ้าตอนใช้งานจริงยังโหลด adapter แยกจากโมเดล base อาจเจอ latency เพิ่ม จึงมีฟังก์ชัน merge_and_unload() ไว้รวม adapter เข้ากับโมเดล base เพื่อตัดปัญหานี้ ข้อควรระวังคือ LoRA ยังต้องใช้ GPU และความรู้ด้านการฝึกโมเดลอยู่ดี เพียงแต่ใช้ทรัพยากรน้อยกว่าการ fine-tune แบบเต็มมาก และผลลัพธ์ขึ้นอยู่กับค่า rank ที่เลือกและตำแหน่งชั้นที่เลือกแทรกเมทริกซ์เข้าไป งานวิจัยปี 2024 ชื่อ LoRA Learns Less and Forgets Less พบว่าในงานสายโค้ดและคณิตศาสตร์ LoRA ที่ใช้ rank ต่ำแบบที่นิยมกัน (เช่น 16 หรือ 64) ยังเรียนรู้ได้สู้การ fine-tune แบบเต็มไม่ได้ ต้องดัน rank ขึ้นไประดับ 256 จึงจะใกล้เคียง แลกกับข้อดีคือ LoRA ลืมความสามารถเดิมของโมเดลน้อยกว่า

ตัวอย่างจากบทสนทนาจริง

ฝ่าย IT: "เราอยากเอาแชทบอทไปตอบคำถามลูกค้าด้วยข้อมูลบริษัทเราเอง ต้องซื้อ GPU เพิ่มไหม" วิศวกร AI: "ถ้า fine-tune เต็มรูปแบบต้องใช้ GPU เยอะมากจริง แต่ถ้าใช้ LoRA เราฝึกแค่เมทริกซ์เล็กๆ ที่แทรกเข้าไปในโมเดล ใช้การ์ดจอที่มีอยู่ในองค์กรก็พอไหว แล้วไฟล์ adapter ที่ได้ก็เล็กกว่าโมเดลเต็มมาก ตั้งแต่ระดับไม่กี่ MB ไปจนถึงหลักร้อย MB ขึ้นกับขนาดโมเดลและค่า rank ที่ตั้ง" ฝ่าย IT: "แล้วถ้าเราอยากมี adapter แยกสำหรับแผนกขายกับแผนกบัญชี ต้องมีโมเดลสองชุดไหม" วิศวกร AI: "ไม่ต้อง ใช้โมเดล base เดียวกัน แล้วสลับ adapter LoRA ตามแผนกได้เลย"

ระวังสับสนกับ

  • fine-tuning : fine-tuning เป็นคำกว้างๆ หมายถึงการปรับโมเดลให้เข้ากับงานเฉพาะ ส่วน LoRA คือหนึ่งในวิธี fine-tuning ที่ประหยัดทรัพยากร ไม่ใช่คำเดียวกัน
  • quantization : quantization คือการลดความละเอียดของตัวเลขในโมเดลเพื่อให้ไฟล์เล็กลงและรันเร็วขึ้น ส่วน LoRA คือการเพิ่มเมทริกซ์เล็กๆ เพื่อฝึกโมเดลใหม่ สองวิธีนี้ใช้ร่วมกันได้ เรียกว่า QLoRA คือการโหลดโมเดล base แบบ quantize 4-bit แล้วฝึก adapter LoRA ทับลงไป
  • open-weights : open-weights หมายถึงโมเดลที่เปิดให้ดาวน์โหลดค่าน้ำหนักมาใช้เอง ส่วน LoRA คือวิธีปรับแต่งโมเดล ไม่จำเป็นต้องเป็นโมเดล open-weights เท่านั้นถึงจะใช้ LoRA ได้

ดูคำนี้ใน Knowledge Atlas →

■ ไม่อยากพลาดของใหม่

อ่านจบแล้วอยากตามเรื่อง AI แบบนี้ต่อทุกวัน เรามีสรุปข่าวภาษาไทยส่งทาง LINE ทุกเช้า กดเพิ่มเพื่อนไว้ได้เลย ไม่มีค่าใช้จ่าย

เพิ่มเพื่อนใน LINE →
QR เพิ่มเพื่อน LINE ของ TRAINIAC AIคอมพิวเตอร์สแกนด้วยมือถือได้เลย

KV cacheModel