PEFT

PEFT

PEFT (Parameter-Efficient Fine-Tuning) ແມ່ນຊື່ເອີ້ນລວມຂອງວິທີການ fine-tuning ທີ່ປັບໂມເດນໃຫ້ເໝາະສົມກັບວຽກງານສະເພາະໂດຍໃຊ້ຊັບພະຍາກອນການຄຳນວນ ແລະ ຂໍ້ມູນໜ້ອຍລົງ ດ້ວຍການອັບເດດສະເພາະບາງສ່ວນຂອງ parameter ທັງໝົດໃນ large language model ເທົ່ານັ້ນ, ບໍ່ແມ່ນທຸກ parameter.

ການພະຍາຍາມຝຶກທຸກ parameter ຂອງ LLM ທີ່ມີຫຼາຍພັນລ້ານ parameter ໂດຍກົງນັ້ນ, ແມ່ນແຕ່ຈະໃຊ້ A100 ຈຳນວນ 8 ໃບກໍຍັງໃຊ້ເວລາຫຼາຍກວ່າເຄິ່ງວັນ. ໃນສະພາບແວດລ້ອມທີ່ມີງົບປະມານ ແລະ ຮາດແວຈຳກັດ, ສ່ວນຫຼາຍແລ້ວທາງເລືອກນີ້ຈະບໍ່ຖືກພິຈາລະນາຕັ້ງແຕ່ຕົ້ນ. PEFT ທຳລາຍກຳແພງນີ້ດ້ວຍວິທີການ "ແຊ່ແຂງສ່ວນໃຫຍ່ຂອງໂມເດລ ແລະ ຝຶກສະເພາະ parameter ຈຳນວນໜ້ອຍທີ່ເພີ່ມເຂົ້າໄປ".

ເມື່ອຈັດລຽງວິທີການທີ່ເປັນຕົວແທນ, ຈະໄດ້ດັ່ງນີ້:

  • LoRA (Low-Rank Adaptation) — ແຊກຄ່າຄວາມແຕກຕ່າງ low-rank ເຂົ້າໃນ weight matrix. parameter ທີ່ເພີ່ມເຂົ້າໄປມີປະມານ 0.1〜1% ຂອງໂມເດລທັງໝົດ. ເປັນວິທີທີ່ຖືກນຳໃຊ້ຫຼາຍທີ່ສຸດໃນຂະນະນີ້
  • QLoRA — ລວມ LoRA ກັບ 4bit quantization ເຂົ້າດ້ວຍກັນ, ບີບອັດ GPU memory ໃຫ້ຫຼຸດລົງຕໍ່າກວ່າເຄິ່ງໜຶ່ງ. ສາມາດຝຶກໂມເດລ 7B ໄດ້ແມ່ນແຕ່ດ້ວຍ consumer GPU
  • Prefix Tuning / Prompt Tuning — ວິທີການເພີ່ມ vector ທີ່ສາມາດຝຶກໄດ້ທາງດ້ານ input. ບໍ່ມີການດັດແກ້ໂມເດລຫຼັກແຕ່ຢ່າງໃດ
  • Adapter — ແຊກ bottleneck layer ລະຫວ່າງຊັ້ນ Transformer. ເຄີຍເປັນກະແສຫຼັກກ່ອນທີ່ LoRA ຈະປາກົດ, ແຕ່ປັດຈຸບັນຄວາມນິຍົມໄດ້ຫຼຸດລົງໄປໃນລະດັບໜຶ່ງ

ທີມງານຂອງຜູ້ຂຽນໄດ້ຝຶກ LLM ຂະໜາດ 7B parameter ດ້ວຍ LoRA ໂດຍໃຊ້ A100 ພຽງ 1 ໃບ ໃນເວລາປະມານ 3 ຊົ່ວໂມງ, ແລະ ສາມາດຍົກລະດັບຄວາມຖືກຕ້ອງສຳລັບ task ສະເພາະໄດ້ 15〜20% ເມື່ອທຽບກັບ base model. ຖ້າເປັນ full FT ສຳລັບ task ດຽວກັນ ຈະຕ້ອງໃຊ້ A100×8 ເປັນເວລາ 12 ຊົ່ວໂມງ, ດັ່ງນັ້ນຄວາມແຕກຕ່າງດ້ານຄ່າໃຊ້ຈ່າຍຈຶ່ງຊັດເຈນຫຼາຍ.

ໃນທາງກົງກັນຂ້າມ, ມັນກໍ່ບໍ່ໄດ້ເປັນທາງແກ້ທີ່ໃຊ້ໄດ້ທຸກກໍລະນີ. ການໃຫ້ໂມເດລໄດ້ຮັບຄວາມສາມາດທີ່ມັນບໍ່ມີຢູ່ເດີມ — ຕົວຢ່າງເຊັ່ນ ການສ້າງຂໍ້ຄວາມໃນພາສາທີ່ບໍ່ຮອງຮັບ — ດ້ວຍ PEFT ຢ່າງດຽວນັ້ນເປັນເລື່ອງຍາກ, ແລະ ໃນກໍລະນີດັ່ງກ່າວຈຳເປັນຕ້ອງລວມກັບ Continued Pre-training.

ມັກຈະຖືກຖາມວ່າ "ຄວນໃຊ້ PEFT ຫຼື RAG?", ແຕ່ໂດຍພື້ນຖານແລ້ວທັງສອງມີບົດບາດທີ່ແຕກຕ່າງກັນ. RAG ຮັບຜິດຊອບການອ້າງອີງຄວາມຮູ້ຈາກພາຍນອກ, ສ່ວນ PEFT ຮັບຜິດຊອບການປັບພຶດຕິກຳ ແລະ ຮູບແບບຂອງໂມເດລ. ຈຸດເລີ່ມຕົ້ນຂອງການໃຊ້ງານຕົວຈິງຄື: ຖ້າຕ້ອງການໃຫ້ອ້າງອີງຄວາມຮູ້ພາຍໃນອົງກອນຢ່າງຖືກຕ້ອງໃຫ້ໃຊ້ RAG, ຖ້າຕ້ອງການປັບໃຫ້ໂທນ ແລະ ຮູບແບບຄຳຕອບສອດຄ່ອງກັນໃຫ້ໃຊ້ PEFT. ກໍລະນີທີ່ລວມທັງສອງຢ່າງເຂົ້າດ້ວຍກັນກໍ່ບໍ່ແມ່ນເລື່ອງຜິດປົກກະຕິ.