หัวเว่ยเปิดตัว SINQ: วิธีควอนไทซ์แบบโอเพนซอร์สเพื่อเพิ่มประสิทธิภาพ LLM

ใช้เวลาอ่าน 9 นาที
หัวเว่ยเปิดตัว SINQ: วิธีควอนไทซ์แบบโอเพนซอร์สเพื่อเพิ่มประสิทธิภาพ LLM

เหตุใด SINQ จึงสำคัญต่อการใช้งาน LLM ในชีวิตประจำวัน

โมเดลภาษาขนาดใหญ่ต้องใช้หน่วยความจำมาก นี่เป็นเหตุผลหนึ่งที่การรันโมเดลขั้นสูงมักต้องใช้ GPU สำหรับดาต้าเซ็นเตอร์ระดับพรีเมียมและโหนดคลาวด์ราคาแพง ห้องปฏิบัติการระบบประมวลผลของหัวเว่ยในซูริกเปิดตัว SINQ ซึ่งเป็นวิธีควอนไทซ์แบบใหม่ที่มุ่งเปลี่ยนสมการนี้ แนวทางดังกล่าวเรียกว่า Sinkhorn Normalized Quantization มุ่งลดการใช้หน่วยความจำโดยแทบไม่ลดคุณภาพผลลัพธ์ และเผยแพร่เป็นโอเพนซอร์สภายใต้สัญญาอนุญาต Apache 2.0 ทีมผู้พัฒนาระบุว่า SINQ ทำงานได้รวดเร็ว ไม่ต้องปรับเทียบ และผสานเข้ากับเวิร์กโฟลว์ของโมเดลที่มีอยู่ได้ง่าย

สารบัญ
  1. เหตุใด SINQ จึงสำคัญต่อการใช้งาน LLM ในชีวิตประจำวัน
  2. SINQ แตกต่างจากวิธีควอนไทซ์ก่อนหน้าอย่างไร
  3. การประหยัดหน่วยความจำ ความเร็ว และคุณภาพในการทดสอบ
  4. ผลต่อฮาร์ดแวร์และต้นทุนคลาวด์
  5. สิ่งที่นักพัฒนาใช้งานได้ในวันนี้
  6. อธิบายจุดเด่นทางเทคนิค
  7. การปรับสเกลสองแกน
  8. การทำ normalization แบบ Sinkhorn Knopp
  9. การออกแบบที่ไม่ต้อง calibration
  10. ข้อจำกัดและสิ่งที่ควรคำนึงในทางปฏิบัติ
  11. เหตุใดจึงสำคัญต่อวงการโดยรวม
  12. ประเด็นสำคัญ

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

จากการทดสอบโมเดลและสถาปัตยกรรมต่าง ๆ ผู้เขียนรายงานว่า SINQ ลดการใช้หน่วยความจำได้ราว 60 ถึง 70 เปอร์เซ็นต์ การลดลงในระดับนี้ทำให้โมเดลจำนวนมากสามารถทำงานบน GPU สำหรับผู้ใช้ทั่วไปเพียงตัวเดียวได้ เช่น Nvidia GeForce RTX 4090 ที่มีหน่วยความจำ 24 GB แทนที่จะต้องใช้ GPU ระดับองค์กรอย่าง A100 หรือ H100 สำหรับงานบนคลาวด์ อินสแตนซ์ราคาถูกลงสามารถรองรับงานอนุมานที่ทำงานต่อเนื่องเป็นเวลานาน ซึ่งอาจช่วยประหยัดค่าใช้จ่ายได้หลายพันดอลลาร์ในระยะยาว ส่วนห้องปฏิบัติการ สตาร์ทอัพ และผู้สนใจที่ใช้งานในเครื่องเอง ก็สามารถเข้าถึงการรันโมเดลที่มีความสามารถบนเวิร์กสเตชันได้ง่ายขึ้น

โฆษณา

SINQ แตกต่างจากวิธีควอนไทซ์ก่อนหน้าอย่างไร

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

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

ประการที่สอง SINQ ใช้กระบวนการที่ได้แรงบันดาลใจจากการทำ normalization แบบ Sinkhorn Knopp อัลกอริทึมนี้สลับทำ normalization อย่างง่ายเพื่อปรับสมดุลสถิติของแถวและคอลัมน์ ใน SINQ วิธีนี้ปรับค่าเบี่ยงเบนมาตรฐานของแถวและคอลัมน์ให้ไม่มีส่วนใดของเมทริกซ์น้ำหนักมีอิทธิพลเหนือส่วนอื่น ขั้นตอนปรับสมดุลนี้ช่วยให้น้ำหนักตอบสนองต่อการควอนไทซ์ได้ดีขึ้น และลดข้อผิดพลาดโดยรวม โดยไม่ต้องใช้ข้อมูล calibration ที่มีต้นทุนสูงในแต่ละเลเยอร์

โฆษณา

การประหยัดหน่วยความจำ ความเร็ว และคุณภาพในการทดสอบ

ผู้เขียนรายงานว่า SINQ ช่วยประหยัดหน่วยความจำได้อย่างสม่ำเสมอราว 60 ถึง 70 เปอร์เซ็นต์เมื่อเทียบกับน้ำหนักแบบความละเอียดเต็ม พร้อมรักษาความแม่นยำให้ใกล้เคียงกับโมเดลต้นฉบับในสถาปัตยกรรมหลากหลายรูปแบบ ในทางปฏิบัติ โมเดลที่เคยต้องใช้หน่วยความจำมากกว่า 60 GB อาจลดลงเหลือราว 20 GB บน GPU สำหรับผู้ใช้ทั่วไป การเปลี่ยนแปลงนี้อาจเป็นตัวตัดสินว่าโมเดลจะทำงานในหน่วยความจำได้หรือไม่ หรือต้องย้ายไปใช้ RAM ของเครื่องซึ่งทำงานช้ากว่า

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

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

โฆษณา

ผลต่อฮาร์ดแวร์และต้นทุนคลาวด์

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

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

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

โฆษณา

สิ่งที่นักพัฒนาใช้งานได้ในวันนี้

SINQ เผยแพร่เป็นโอเพนซอร์สภายใต้สัญญาอนุญาต Apache 2.0 โดยมีโค้ดสำหรับนำไปใช้งาน คำแนะนำในการควอนไทซ์โมเดลจากฮับยอดนิยม และเครื่องมือสำหรับบันทึกและโหลดน้ำหนักที่ผ่านการควอนไทซ์กลับมาใช้ แพ็กเกจนี้มีจุดเชื่อมสำหรับประเมินผล เพื่อให้ทีมวัดค่า perplexity และ flip rate ก่อนนำไปใช้งานจริง และยังเปิดให้ปรับพารามิเตอร์เพื่อรองรับฮาร์ดแวร์และเป้าหมายด้านความแม่นยำที่แตกต่างกัน

ผู้เขียนระบุว่ามีแผนเผยแพร่โมเดลที่ควอนไทซ์ไว้ล่วงหน้า และมุ่งผสานการทำงานเข้ากับระบบนิเวศ Hugging Face Transformers ซึ่งจะช่วยให้นำไปใช้ได้ง่ายขึ้น โดยนักพัฒนาสามารถโหลดจุดตรวจสอบโมเดลที่ผ่านการควอนไทซ์ด้วย API ที่คุ้นเคย ทีมที่ดูแลระบบอนุมานเองสามารถเริ่มจากการควอนไทซ์น้ำหนัก แล้วเชื่อมผลลัพธ์เข้ากับเคอร์เนลที่รองรับรูปแบบจัดเก็บแบบ 4 บิตหรือ 3 บิตบนรันไทม์ที่เลือกใช้

อธิบายจุดเด่นทางเทคนิค

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

การปรับสเกลสองแกน

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

การทำ normalization แบบ Sinkhorn Knopp

Sinkhorn Knopp เป็นกระบวนการทำซ้ำแบบคลาสสิกที่สลับใช้ normalization อย่างง่ายเพื่อให้ได้สภาวะสมดุล ใน SINQ เป้าหมายไม่ใช่การสร้างเมทริกซ์แบบ doubly stochastic แต่เป็นการปรับสมดุลค่าเบี่ยงเบนมาตรฐานของแถวและคอลัมน์ อัลกอริทึมจะปรับสเกลแถวและคอลัมน์ซ้ำ ๆ เพื่อให้ค่าเบี่ยงเบนมาตรฐานสอดคล้องกับค่าเป้าหมาย เมื่อเมทริกซ์สมดุลในลักษณะนี้แล้ว การควอนไทซ์จะทำงานกับการกระจายตัวของน้ำหนักที่มีค่าสุดขั้วน้อยลง จึงลดข้อผิดพลาดจากการปัดเศษ กระบวนการนี้รวดเร็ว มีค่าใช้จ่ายเพิ่มเติมเพียงเล็กน้อยเมื่อเทียบกับการทำ calibration หลายรอบที่ใช้เวลานาน และไม่ต้องอาศัยชุดข้อมูล calibration

การออกแบบที่ไม่ต้อง calibration

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

ข้อจำกัดและสิ่งที่ควรคำนึงในทางปฏิบัติ

ประโยชน์ส่วนใหญ่ที่รายงานมาจากการควอนไทซ์เฉพาะน้ำหนัก ค่าแอกทิเวชันและแคช key-value ยังคงใช้หน่วยความจำระหว่างการสร้างข้อความ โดยเฉพาะเมื่อพรอมป์ต์และผลลัพธ์ยาว รันไทม์บางตัวรองรับการควอนไทซ์ค่าแอกทิเวชันและการบีบอัดแคช KV แต่ขั้นตอนเหล่านี้ก็มีข้อแลกเปลี่ยนของตัวเอง ทีมควรวัดการใช้หน่วยความจำและเวลาแฝงตั้งแต่ต้นจนจบ ไม่ใช่ดูแค่ขนาดโมเดลบนดิสก์

การรองรับของรันไทม์ก็สำคัญ หากต้องการเห็นความเร็วเพิ่มขึ้นขณะอนุมาน เคอร์เนลต้องอ่านน้ำหนักแบบแพ็ก 4 บิตหรือ 3 บิตได้อย่างมีประสิทธิภาพ เอนจินยอดนิยมอย่าง llama.cpp, TensorRT LLM, vLLM และอื่น ๆ พัฒนาอย่างรวดเร็ว แต่ชุดการทำงานที่ผสมผสานระดับความละเอียด เคอร์เนล attention และสถาปัตยกรรม GPU แต่ละแบบยังมีความพร้อมไม่เท่ากัน ก่อนนำบริการไปใช้งานจริง ควรทดสอบปริมาณงาน เวลาแฝง และเสถียรภาพด้วยการตั้งค่าจริงทั้งหมด รวมถึงขนาดแบตช์และความยาวบริบท

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

เหตุใดจึงสำคัญต่อวงการโดยรวม

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

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

ประเด็นสำคัญ

  • SINQ ของหัวเว่ยเป็นวิธีควอนไทซ์น้ำหนัก LLM แบบโอเพนซอร์ส เผยแพร่ภายใต้สัญญาอนุญาต Apache 2.0
  • SINQ รายงานว่าลดการใช้หน่วยความจำได้ 60 ถึง 70 เปอร์เซ็นต์ พร้อมรักษาคุณภาพได้ดีที่ 4 บิต และในบางกรณีที่ 3 บิต
  • วิธีนี้ไม่ต้อง calibration และมุ่งให้ผสานเข้ากับเวิร์กโฟลว์ที่มีอยู่ได้ง่าย
  • SINQ ใช้การปรับสเกลสองแกนและการทำ normalization ในลักษณะ Sinkhorn Knopp เพื่อปรับสมดุลเมทริกซ์น้ำหนัก
  • ผลการทดสอบรายงานว่าควอนไทซ์ได้เร็วกว่า HQQ ราว 2 เท่า และเร็วกว่า AWQ มากกว่า 30 เท่า
  • ตัวชี้วัดคุณภาพดีขึ้นเมื่อเทียบกับวิธีพื้นฐานที่ไม่ต้อง calibration โดยมีค่า perplexity และ flip rate ต่ำลง
  • โมเดลที่เคยต้องใช้หน่วยความจำมากกว่า 60 GB สามารถทำงานได้ที่ราว 20 GB ช่วยให้ใช้งานบน GPU เดียวกับฮาร์ดแวร์สำหรับผู้ใช้ทั่วไป เช่น RTX 4090 ได้
  • การอัปเดตที่วางแผนไว้รวมถึงการผสานเข้ากับ Hugging Face Transformers และการเผยแพร่โมเดลที่ควอนไทซ์ไว้ล่วงหน้า
แชร์บทความนี้

เรื่องที่คุณอาจชอบ