LLM ถูกมองว่าเป็นเทคโนโลยีที่สำคัญสำหรับการพัฒนาผลิตภัณฑ์และบริการที่เป็นนวัตกรรม บริษัทชั้นนำกำลังทำการลงทุนที่สำคัญในพวกเขาเพื่อใช้ประโยชน์จากเทคโนโลยีใหม่นี้ในผลิตภัณฑ์/บริการของตน และมอบมูลค่าที่ดีขึ้นให้กับผู้ใช้ของพวกเขา อย่างไรก็ตาม มีปัญหาใหญ่ในการฝึกอบรมและให้บริการโมเดลภาษาขนาดใหญ่เหล่านี้ มีค่าใช้จ่ายสูง ตามบทความบางบทความ [1] [2] ค่าใช้จ่ายในการฝึกอบรมโมเดลขนาดใหญ่เหล่านี้อาจมีตั้งแต่หลายล้านถึงพันล้านดอลลาร์ แพงใช่มั้ยล่ะ!

แต่ทำไมไม่ใช้รุ่นที่มีอยู่แล้วล่ะ? ท้ายที่สุดแล้ว พวกเขาได้รับการฝึกอบรมเกี่ยวกับโทเค็นนับล้านล้าน ซึ่งควรจะครอบคลุมกรณีการใช้งานทั้งหมดใช่ไหม ไม่เชิง. สำหรับงานเฉพาะกลุ่ม เราอาจจำเป็นต้องปรับแต่งโมเดลเหล่านี้บนชุดข้อมูลเฉพาะ การปรับแต่งโมเดลอย่างละเอียดสำหรับงานเฉพาะกลุ่มมีความคล้ายคลึงกับความแตกต่างระหว่างการขับรถบนถนนปกติกับการขับรถบนสนามแข่ง เหมือนกับว่าคุณเป็นคนขับที่มีประสบการณ์และรู้วิธีนำทางไปตามถนนในเมืองและทางหลวงอย่างง่ายดาย อย่างไรก็ตาม เมื่อต้องขับขี่บนสนามแข่งระดับมืออาชีพ ไดนามิกจะเปลี่ยนไป คุณจะต้องได้รับการฝึกอบรมเพิ่มเติม เทคนิคเฉพาะ และความรู้เกี่ยวกับเค้าโครงและเงื่อนไขของสนามแข่งเพื่อเพิ่มประสิทธิภาพการทำงานและแข่งขันกับนักแข่งที่มีทักษะ ซ้อมสักสองสามรอบคุณก็พร้อมแล้ว!

เนื่องจากมีพารามิเตอร์จำนวนมาก จึงอาจเป็นไปไม่ได้ที่จะฝึกพารามิเตอร์ทั้งหมดบนชุดข้อมูลที่กำหนดเองอีกครั้ง ไม่เพียงเท่านั้น ลองจินตนาการถึงองค์กรที่ต้องการใช้ LLM ในด้านกฎหมายและวิชาทางการแพทย์ หากต้องการมีความเชี่ยวชาญเต็มรูปแบบ เราอาจต้องการฝึกอบรมโมเดลสองแบบที่แตกต่างกัน แบบหนึ่งมีการปรับแต่งข้อมูลทางกฎหมายอย่างครบถ้วน และอีกแบบหนึ่งเกี่ยวกับข้อมูลทางการแพทย์ ตอนนี้เรามีโมเดลสองแบบให้เลือกใช้ หากเราจะขยายกรณีการใช้งาน เราก็มีโมเดล n รุ่นที่จะให้บริการ การแสดงพารามิเตอร์นับล้านหรือพันล้านรายการนั้นไม่ถูก

มีความพยายามเพื่อปรับปรุงประสิทธิภาพของการฝึกอบรมและการให้บริการ LLM มีการวิจัยบางอย่างในการลดต้นทุนโดยยังคงรักษาความถูกต้องแม่นยำ วิธีหนึ่งคือการเพิ่มเลเยอร์เพิ่มเติมให้กับโมเดลและฝึกเฉพาะเลเยอร์เหล่านี้ วิธีนี้ช่วยให้สามารถเก็บโมเดลที่ฝึกไว้ล่วงหน้าไว้ในหน่วยความจำได้ และมีเพียงเลเยอร์เพิ่มเติมสำหรับแต่ละงานเท่านั้นที่ต้องเก็บไว้ในหน่วยความจำ ซึ่งจะช่วยเพิ่มประสิทธิภาพการดำเนินงานในการให้บริการโมเดลเหล่านี้ได้อย่างมาก น่าเสียดายที่เทคนิคเหล่านี้มักส่งผลให้เกิดการแลกเปลี่ยนระหว่างประสิทธิภาพและคุณภาพของแบบจำลอง

มีอีกเทคนิคหนึ่งที่มีจุดมุ่งหมายเพื่อแก้ไขปัญหานี้ การปรับตัวอันดับต่ำ (LoRA) เผยแพร่โดย Microsoft โดยเสนอให้หยุดน้ำหนักโมเดลที่ได้รับการฝึกอบรมล่วงหน้า และฉีดเมทริกซ์การแบ่งแยกอันดับที่สามารถฝึกได้ลงในแต่ละชั้นของสถาปัตยกรรมหม้อแปลงไฟฟ้า ซึ่งจะช่วยลดจำนวนพารามิเตอร์ที่สามารถฝึกได้สำหรับงานดาวน์สตรีมลงอย่างมาก 'อันดับของเมทริกซ์' หมายถึงอะไร?

คำจำกัดความ: อันดับของเมทริกซ์หมายถึงจำนวนแถวหรือคอลัมน์ที่เป็นอิสระเชิงเส้นในเมทริกซ์

Or

นอกจากนี้ยังสามารถกำหนดเป็นลำดับของผู้เยาว์ที่ไม่เป็นศูนย์ที่มีลำดับสูงสุดได้

ขณะที่อ่านบทความนี้ ฉันได้อ่านบทความ "นี้" เพื่อทบทวนความจำว่าเราจะคำนวณอันดับของเมทริกซ์ได้อย่างไร ฉันขอแนะนำให้คุณอ่านเกี่ยวกับ SVD และเทคนิคการสลายตัวที่คล้ายกัน

บทความนี้กล่าวถึงแนวคิดที่กำหนดโดย "Aghajanyan et al"

มันระบุ

โมเดลภาษาที่ได้รับการฝึกล่วงหน้ามี "มิติที่แท้จริง" ต่ำและยังสามารถเรียนรู้ได้อย่างมีประสิทธิภาพแม้จะมีการสุ่มฉายไปยังพื้นที่ย่อยที่เล็กกว่า

สิ่งนี้เราหมายถึงอะไร? หมายความว่าหากมีปัจจัย 4 ประการที่ขึ้นอยู่กับการแก้ปัญหา ก็จะมีปัจจัย 2 ประการที่มีส่วนสำคัญต่อการแก้ปัญหา คำอธิบายง่ายๆ ที่สร้างโดย LLM มีดังนี้

สมมติว่าเรามีฟังก์ชันวัตถุประสงค์สำหรับกระบวนการผลิตที่มีจุดมุ่งหมายเพื่อลดต้นทุนการผลิต วัตถุประสงค์อาจเป็นการค้นหาค่าที่เหมาะสมที่สุดสำหรับพารามิเตอร์ต่างๆ เช่น ปริมาณการผลิต ชั่วโมงแรงงาน และการใช้วัตถุดิบ เพื่อลดต้นทุนโดยรวม

ตอนนี้ มิติที่แท้จริงของฟังก์ชันวัตถุประสงค์นี้แสดงถึงจำนวนพารามิเตอร์ขั้นต่ำที่จำเป็นเพื่อให้ได้โซลูชันที่น่าพอใจหรือต้นทุนต่ำ ในกรณีนี้ สมมติว่าหลังจากวิเคราะห์ปัญหาแล้ว พบว่าปริมาณการผลิตและชั่วโมงแรงงานเป็นปัจจัยหลักที่ทำให้เกิดต้นทุน

การใช้สิ่งนี้กับโครงข่ายประสาทเทียม เมื่อเราปรับแต่งโมเดลอย่างละเอียด เราจะอัปเดตเมทริกซ์ทั้งหมด (ในกรณีของเลเยอร์หนาแน่น) ในระหว่างการดำเนินการส่งต่อ ต้นทุนการประมวลผลขึ้นอยู่กับขนาดของเมทริกซ์โดยตรง LoRa แนะนำให้จำกัดการอัปเดตเมทริกซ์นี้ด้วยเมทริกซ์การแบ่งแยกอันดับต่ำ

LoRa ควรใช้เมทริกซ์น้ำหนักแบบใด บทความนี้มุ่งเน้นไปที่การใช้ LoRa กับน้ำหนักความสนใจเท่านั้น ที่นี่เรายังมีเมทริกซ์แบบสอบถาม คีย์ ค่า และเอาต์พุต

มาดูตัวเลขบางส่วนจากการทดลองกัน ผู้เขียนตั้งงบประมาณก่อน และเสนองบประมาณในการแก้ไขพารามิเตอร์ประมาณ 18M (สำหรับ GPT-3 175B) สำหรับการปรับเมทริกซ์เดี่ยว งบประมาณอนุญาตให้มีอันดับ 8 ในขณะที่เมทริกซ์ 2 ตัว จะให้อันดับ 4 และอันดับ 2 สำหรับเมทริกซ์ทั้งสี่ นี่คือผลลัพธ์ที่เหมือนกัน:

แต่จะเปรียบเทียบกับเทคนิคอื่น ๆ ได้อย่างไร?

ผู้เขียนแนะนำให้ปรับแต่ง rตามชุดข้อมูลที่แตกต่างกันเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด

หากเราพิจารณา GPT-3 175B 18M ควรมีขนาดไม่เกิน 35Mb (FP16) ในทางปฏิบัติ หากเราใช้ LoRa สำหรับงาน 100 งาน ก็จะต้องมี 350GB (ฐาน) + 35MB * 100 µm 354GB อย่างไรก็ตาม FT ปกติจะต้องมี 100 * 350GB µs 35TB (ซึ่งใหญ่มาก)

โปรดแจ้งให้เราทราบหากคุณใช้เทคนิคนี้และเปรียบเทียบกับการปรับแต่งแบบละเอียดตามปกติในกรณีการใช้งานจริง!

ฉันต้องบอกว่าบทความนี้ช่วยเปลี่ยนหน้าฉันได้จริงๆ และฉันหวังว่าคุณจะพบว่าบทความของฉันน่าตื่นเต้นเหมือนกัน ฉันอยากได้ยินความคิดเห็นของคุณเกี่ยวกับเรื่องนี้ หรือหากมีประเด็นอื่นๆ ที่น่าสนใจจากรายงานที่ดึงดูดความสนใจของคุณ โปรดแบ่งปันกับฉันได้เลย มาดำดิ่งสู่การสนทนานี้กันเถอะ!

ลิงก์: กระดาษ, Git