ภาษาอังกฤษ |中文
นี่คือการใช้งานสำหรับการปรับแต่งพารามิเตอร์แบบเต็มรูปแบบสำหรับแบบจำลองภาษาขนาดใหญ่ที่มีทรัพยากร จำกัด และ Adalomo: การเพิ่มประสิทธิภาพหน่วยความจำต่ำด้วยอัตราการเรียนรู้แบบปรับตัว
transformers
และ accelerate
lomo-optim
ได้รับการปล่อยตัวCoLLiE
Library ซึ่งสนับสนุนการฝึกอบรมร่วมกันของแบบจำลองภาษาขนาดใหญ่อย่างมีประสิทธิภาพ คุณสามารถติดตั้ง lomo-optim
จาก PYPI โดยใช้ PIP
pip install lomo-optim
จากนั้นนำเข้า Lomo
หรือ AdaLomo
from lomo_optim import Lomo
from lomo_optim import AdaLomo
การใช้ Lomo
และ AdaLomo
นั้นคล้ายคลึงกัน แต่ไม่เหมือนกับ Optimizers ของ Pytorch (ตัวอย่าง) เราขอแนะนำให้ใช้ AdaLomo
โดยไม่ต้อง gradnorm
เพื่อให้ได้ประสิทธิภาพที่ดีขึ้นและปริมาณงานที่สูงขึ้น
ในงานนี้เราเสนอเครื่องมือเพิ่มประสิทธิภาพใหม่ Lo W-memory o ptimization ( LOMO ) ซึ่งผสมผสานการคำนวณการไล่ระดับสีและการอัปเดตพารามิเตอร์ในขั้นตอนเดียวเพื่อลดการใช้หน่วยความจำ วิธีการของเราช่วยให้การปรับพารามิเตอร์แบบเต็มรูปแบบของรุ่น 7B บน RTX 3090 หรือรุ่น 65B บนเครื่องเดียวที่มี 8 × RTX 3090 แต่ละหน่วยมีหน่วยความจำ 24GB
การใช้งานของเราขึ้นอยู่กับฟังก์ชั่นการฉีดเบ็ดลงใน Pytorch Pass Pass ดังที่แสดงในรูปเราลงทะเบียนฟังก์ชั่นตะขอที่กำหนดเองสำหรับแต่ละพารามิเตอร์ เมื่อคำนวณการไล่ระดับสีของพารามิเตอร์ (ก่อนที่จะเขียนลงในแอตทริบิวต์. grad) ฟังก์ชันตะขอที่สอดคล้องกันจะถูกเรียกใช้ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชั่น Hook และ Pass หลังของกราฟ Autograd โปรดดูเอกสารของ Pytorch โดยสรุปในระหว่างการผ่านไปข้างหลังเราจะผ่านเทนเซอร์และ grad_fn ของมันเขียนการไล่ระดับสีลงในแอตทริบิวต์. grad แล้วส่งผ่านไปยังเทนเซอร์ถัดไป
ฟังก์ชั่นฮุกที่กำหนดเองของเราจะสแกนพารามิเตอร์ทั้งหมดอัปเดตพารามิเตอร์หากแอตทริบิวต์. GRAD ไม่ว่างเปล่าจากนั้นจะล้างและปลดปล่อยแอตทริบิวต์. grad เนื่องจากฟังก์ชั่น Hook สำหรับพารามิเตอร์ถูกเรียกก่อนที่จะตั้งค่าแอตทริบิวต์. GRAD แอตทริบิวต์. GRAD ของพารามิเตอร์สุดท้ายในกราฟ Autograd ยังไม่พร้อมเมื่อเรียกใช้ฟังก์ชันตะขอสุดท้าย ดังนั้นเราจึงทำการสแกนเพิ่มเติมเพื่ออัปเดตพารามิเตอร์สุดท้าย
รหัสสำหรับ Lomo อยู่ในโฟลเดอร์ Lomo
ในงานนี้เราตรวจสอบความแตกต่างระหว่างเทคนิคการเพิ่มประสิทธิภาพของ LOMO และ ADAM และแนะนำ Adalomo ซึ่งให้อัตราการเรียนรู้แบบปรับตัวสำหรับแต่ละพารามิเตอร์และใช้การปรับปรุงการปรับปรุงแบบจัดกลุ่มในขณะที่รักษาประสิทธิภาพของหน่วยความจำ Adalomo บรรลุผลลัพธ์ที่เทียบเท่ากับ ADAMW ทั้งในการปรับแต่งและการฝึกอบรมเพิ่มเติมล่วงหน้าด้วยรอยเท้าหน่วยความจำน้อยลง
รหัสสำหรับ Adalomo อยู่ในโฟลเดอร์ Adalomo
@article{lv2023full,
title={Full Parameter Fine-tuning for Large Language Models with Limited Resources},
author={Lv, Kai and Yang, Yuqing and Liu, Tengxiao and Gao, Qinghui and Guo, Qipeng and Qiu, Xipeng},
journal={arXiv preprint arXiv:2306.09782},
year={2023}
}
@article{lv2023adalomo,
title={AdaLomo: Low-memory Optimization with Adaptive Learning Rate},
author={Lv, Kai and Yan, Hang and Guo, Qipeng and Lv, Haijun and Qiu, Xipeng},
journal={arXiv preprint arXiv:2310.10195},
year={2023}
}