- ชุดอัลกอริทึมการควอนไทซ์ที่แก้ปัญหา ภาระหน่วยความจำส่วนเกิน ของเวกเตอร์มิติสูงได้จากรากฐาน และสามารถนำไปใช้ได้ทั้งกับการบีบอัดคีย์-แวลูแคชของ LLM และการค้นหาเวกเตอร์
- โครงสร้างการบีบอัด 2 ขั้น โดยบีบอัดข้อมูลคุณภาพสูงด้วย PolarQuant ก่อน จากนั้นใช้อัลกอริทึม QJL กำจัดความคลาดเคลื่อนที่เหลืออยู่ด้วยเพียง 1 บิต
- สามารถ ควอนไทซ์คีย์-แวลูแคชลงถึง 3 บิต ได้โดยไม่ต้องเทรนหรือไฟน์จูน และไม่สูญเสียความแม่นยำของโมเดล พร้อมทำความเร็วได้สูงสุด 8 เท่าบน GPU H100
- ในงานค้นหาเวกเตอร์ก็ทำ อัตรา recall ที่ดีที่สุด ได้เช่นกัน โดยไม่ต้องใช้โค้ดบุ๊กขนาดใหญ่หรือจูนแยกตามดาต้าเซ็ต และเหนือกว่าวิธีล้ำสมัยเดิม
- เป็นผลงานเชิงอัลกอริทึมพื้นฐานที่มี ประสิทธิภาพซึ่งพิสูจน์ได้ และเข้าใกล้ขีดล่างทางทฤษฎี จึงถูกคาดหวังว่าจะมีบทบาทสำคัญต่อโมเดลอย่าง Gemini และโครงสร้างพื้นฐานการค้นหาเชิงความหมายขนาดใหญ่
พื้นหลังของเวกเตอร์และการควอนไทซ์
- เวกเตอร์ คือวิธีพื้นฐานที่โมเดล AI ใช้ในการทำความเข้าใจและประมวลผลข้อมูล โดยเวกเตอร์มิติสูงใช้แทนข้อมูลซับซ้อน เช่น ลักษณะของภาพ ความหมายของคำ และคุณสมบัติของดาต้าเซ็ต
- เวกเตอร์มิติสูงใช้หน่วยความจำมหาศาล ทำให้เกิดคอขวดใน คีย์-แวลูแคช (แผ่นอ้างอิงดิจิทัลความเร็วสูงที่เก็บข้อมูลที่ใช้บ่อยไว้ด้วยป้ายกำกับสั้น ๆ เพื่อให้ค้นคืนได้ทันที)
- การควอนไทซ์เวกเตอร์ เป็นเทคนิคบีบอัดข้อมูลแบบดั้งเดิมที่ลดขนาดของเวกเตอร์มิติสูง ช่วยเพิ่มความเร็วการค้นหาเวกเตอร์และบรรเทาคอขวดของคีย์-แวลูแคช
- การควอนไทซ์เวกเตอร์แบบดั้งเดิมมีภาระหน่วยความจำส่วนเกินในตัวเอง เพราะต้องคำนวณและเก็บ ค่าคงที่สำหรับการควอนไทซ์ ของข้อมูลแต่ละบล็อกเล็ก ๆ ด้วยความละเอียดเต็ม ทำให้มีต้นทุนเพิ่ม 1~2 บิตต่อหนึ่งตัวเลข และหักล้างประโยชน์ของการควอนไทซ์ไปบางส่วน
หลักการทำงานของ TurboQuant
- TurboQuant เป็นวิธีการบีบอัดที่ลดขนาดโมเดลได้มากโดย ไม่สูญเสียความแม่นยำ และรองรับทั้งการบีบอัดคีย์-แวลูแคชกับการค้นหาเวกเตอร์
- ประกอบด้วย 2 ขั้นตอนหลัก:
ขั้นที่ 1: การบีบอัดคุณภาพสูง (วิธี PolarQuant)
- ทำ การหมุนแบบสุ่ม กับเวกเตอร์ข้อมูลเพื่อทำให้โครงสร้างเรขาคณิตของข้อมูลเรียบง่ายขึ้น จากนั้นใช้ตัวควอนไทเซอร์คุณภาพสูงมาตรฐานกับแต่ละส่วนของเวกเตอร์แยกกัน
- ขั้นตอนนี้ใช้บิตส่วนใหญ่ในการจับแนวคิดหลักและความเข้มของเวกเตอร์ต้นฉบับ
ขั้นที่ 2: กำจัดความคลาดเคลื่อนที่ซ่อนอยู่
- นำ อัลกอริทึม QJL ไปใช้กับความผิดพลาดเล็กน้อยที่เหลือจากขั้นแรก โดยใช้พลังการบีบอัดส่วนที่เหลือเพียง 1 บิต
- QJL ทำหน้าที่เหมือนตัวตรวจสอบข้อผิดพลาดทางคณิตศาสตร์ ช่วยลบอคติและทำให้คำนวณคะแนน attention ได้แม่นยำยิ่งขึ้น
QJL: เทคนิค 1 บิตแบบไม่มีโอเวอร์เฮด
- ใช้ Johnson-Lindenstrauss transform เพื่อลดมิติของข้อมูลมิติสูง โดยยังคงรักษาระยะสำคัญและความสัมพันธ์ระหว่างจุดข้อมูลไว้
- ลดตัวเลขแต่ละตัวของเวกเตอร์ผลลัพธ์ให้เหลือเพียง บิตเครื่องหมาย (+1 หรือ -1) จึงไม่มีภาระหน่วยความจำส่วนเกิน
- เพื่อคงความแม่นยำไว้ จะใช้ตัวประมาณค่าแบบพิเศษที่สร้างสมดุลอย่างมีกลยุทธ์ระหว่างคิวรีความละเอียดสูงกับข้อมูลแบบง่ายความละเอียดต่ำ
- ทำให้โมเดลสามารถคำนวณ คะแนน attention ได้อย่างแม่นยำ เพื่อพิจารณาว่าส่วนใดของอินพุตสำคัญและส่วนใดมองข้ามได้
PolarQuant: "มุมมอง" ใหม่ของการบีบอัด
- เป็นแนวทางที่แก้ปัญหาภาระหน่วยความจำส่วนเกินด้วยวิธีที่แตกต่างออกไปโดยสิ้นเชิง
- แทนที่จะใช้พิกัดมาตรฐาน (X, Y, Z) ระบบจะเปลี่ยนเวกเตอร์เป็น พิกัดเชิงขั้ว — คล้ายกับการเปลี่ยนจาก “ไปทางตะวันออก 3 ช่วงตึก ทางเหนือ 4 ช่วงตึก” เป็น “ไป 5 ช่วงตึกในทิศ 37 องศา”
- ผลลัพธ์หลังการแปลงประกอบด้วยข้อมูล 2 อย่าง: รัศมี ที่บอกความเข้มของข้อมูลหลัก และ มุม ที่บอกทิศทางและความหมายของข้อมูล
- เนื่องจากรูปแบบของมุมเป็นที่ทราบอยู่แล้วและกระจุกตัวสูง จึงสามารถแมปข้อมูลลงบนกริด “วงกลม” แบบคงที่ที่รู้ขอบเขตอยู่แล้ว แทนกริด “สี่เหลี่ยม” ที่ขอบเปลี่ยนตลอดเวลา จึง ข้ามขั้นตอนการทำ normalization ของข้อมูลที่มีต้นทุนสูง ได้
- สำหรับเวกเตอร์มิติ d จะจัดกลุ่มพิกัดเป็นคู่แล้วแมปเข้าสู่ระบบพิกัดเชิงขั้ว จากนั้นรวบรวมรัศมีเป็นคู่และทำ การแปลงเชิงขั้วแบบเรียกซ้ำ ซ้ำไปเรื่อย ๆ จนสุดท้ายได้รัศมีหนึ่งค่าและชุดมุมเชิงอธิบาย
การทดลองและผลลัพธ์
ประสิทธิภาพบนเบนช์มาร์กบริบทยาว
- ประเมินด้วยโอเพนซอร์ส LLM (Gemma, Mistral) บน เบนช์มาร์กบริบทยาว มาตรฐาน เช่น LongBench, Needle In A Haystack, ZeroSCROLLS, RULER และ L-Eval
- TurboQuant ทำคะแนนดีที่สุดทั้งในด้าน dot product distortion และ recall พร้อมกับลดขนาดหน่วยความจำของคีย์-แวลูให้ต่ำที่สุดในเวลาเดียวกัน
- บนโมเดล Llama-3.1-8B-Instruct ยังให้ประสิทธิภาพที่แข็งแกร่งกว่าเบสไลน์ KIVI ในงานหลายประเภท เช่น ถาม-ตอบ สร้างโค้ด และสรุปความ
งาน Needle-in-Haystack
- ในการทดสอบค้นหาข้อมูลเฉพาะจากข้อความจำนวนมาก TurboQuant ให้ ผลลัพธ์ปลายน้ำสมบูรณ์แบบ ครอบคลุมทุกเบนช์มาร์ก
- ลดขนาดหน่วยความจำคีย์-แวลูได้ อย่างน้อยมากกว่า 6 เท่า
- PolarQuant ก็แทบไม่สูญเสียคุณภาพในงานนี้เช่นกัน
ประสิทธิภาพขณะรัน
- สามารถ ควอนไทซ์คีย์-แวลูแคชเป็น 3 บิต ได้โดยไม่ต้องเทรนหรือไฟน์จูน และไม่ต้องแลกด้วยความแม่นยำของโมเดล
- ทำงานได้เร็วกว่า LLM ต้นฉบับ โดยมีการติดตั้งใช้งานที่มีประสิทธิภาพสูงมาก และโอเวอร์เฮดขณะรันแทบไม่มีนัยสำคัญ
- TurboQuant แบบ 4 บิตให้ ประสิทธิภาพสูงสุด 8 เท่า ในการคำนวณ attention logits เมื่อเทียบกับคีย์แบบไม่ควอนไทซ์ 32 บิตบน GPU H100 วัดเทียบกับเบสไลน์ที่ปรับแต่งด้วย JAX
ประสิทธิภาพการค้นหาเวกเตอร์
- ประเมินเทียบกับวิธีล้ำสมัยอย่าง PQ และ RabbiQ ในงานค้นหาเวกเตอร์มิติสูง
- ใช้ตัวชี้วัด 1@k recall ซึ่งวัดว่าอัลกอริทึมสามารถจับผลลัพธ์ inner product ที่ดีที่สุดจริงได้บ่อยเพียงใดภายในกลุ่มประมาณค่า top-k
- เมื่อเทียบกับเบสไลน์ที่ใช้โค้ดบุ๊กขนาดใหญ่ซึ่งไม่มีประสิทธิภาพและต้องจูนแยกตามดาต้าเซ็ต TurboQuant ทำ อัตรา recall ที่เหนือกว่าอย่างสม่ำเสมอ
- บนดาต้าเซ็ต GloVe (d=200) ก็ทำอัตรา 1@k recall ที่ดีที่สุดเมื่อเทียบกับเบสไลน์การควอนไทซ์ล้ำสมัยหลายแบบ
- มอบ อัตราความเพี้ยนที่เกือบเหมาะที่สุด ในแบบ data-oblivious ทำให้คงความแม่นยำของโมเดลที่หนักกว่ามากได้ ด้วยประสิทธิภาพของระบบ 3 บิต
แนวโน้มในอนาคต
- TurboQuant, QJL และ PolarQuant ไม่ได้เป็นเพียงโซลูชันวิศวกรรมเชิงปฏิบัติ แต่ยังเป็นผลงานเชิงอัลกอริทึมพื้นฐานที่มี หลักฐานเชิงทฤษฎีที่แข็งแกร่ง รองรับ
- มีประสิทธิภาพที่พิสูจน์ได้ และทำงานเข้าใกล้ขีดล่างทางทฤษฎี จึง แข็งแกร่งและเชื่อถือได้ สำหรับระบบแกนหลักขนาดใหญ่
- นอกเหนือจากการแก้คอขวดของคีย์-แวลูแคชในโมเดลอย่าง Gemini แล้ว ผลของการควอนไทซ์เวกเตอร์ออนไลน์อย่างมีประสิทธิภาพยังขยายไปได้กว้างกว่านั้น
- เมื่อการค้นหาสมัยใหม่พัฒนาจากการยึดคีย์เวิร์ดเป็นศูนย์กลางไปสู่การ เข้าใจเจตนาและความหมาย การค้นหาเวกเตอร์เพื่อหาสิ่งที่ใกล้เคียงเชิงความหมายที่สุดจากฐานข้อมูลเวกเตอร์ระดับหลายพันล้านรายการจึงกลายเป็นสิ่งจำเป็น
- TurboQuant ช่วยให้สร้างและคิวรีดัชนีเวกเตอร์ขนาดใหญ่ได้ด้วยหน่วยความจำขั้นต่ำ เวลา preprocessing เกือบเป็นศูนย์ และความแม่นยำระดับล้ำสมัย ทำให้ การค้นหาเชิงความหมาย ในระดับ Google เร็วขึ้นและมีประสิทธิภาพมากขึ้น
4 ความคิดเห็น
"การหมุนคือพลังอันไร้ขีดจำกัด จงเชื่อในสิ่งนั้น"
ขอแสดงความเคารพครับ
ล็อกอินมาเพราะคอมเมนต์นี้เลย
ความคิดเห็นจาก Hacker News
งานวิจัยด้านการบีบอัด KV cache เป็นพัฒนาการที่น่าสนใจมาก
แต่ก็น่าเสียดายที่งานที่เกี่ยวข้องนี้ไม่ได้อ้างอิงกลไกทางคณิตศาสตร์หลักอย่างครบถ้วน
เทคนิคที่ใช้ การหมุนเชิงเรขาคณิต เพื่อจัดการกับเรขาคณิตมิติสูงแล้วจึงทำการควอนไทซ์แบบสุดขั้วนั้น ถูกเสนอครั้งแรกในงาน NeurIPS 2021 ของทีมเรา “DRIVE”
เราบรรลุการประมาณค่าเฉลี่ยแบบมีความแปรปรวนต่ำที่สุดผ่านแนวทางที่อิงการหมุนนี้และ กลไกชดเชยอคติ
ต่อมาเรายังได้นำเสนอเรื่องนี้ในสัมมนาที่ Google เชิญไปพูดด้วย และเมื่อพิจารณาความคล้ายคลึงเชิงทฤษฎีระหว่าง TurboQuant กับ PolarQuant ก็หวังว่าเวอร์ชันถัดไปจะมีการอ้างอิงงานก่อนหน้า
กล่าวคือเป็นการเก็บเมทริกซ์แนวทแยงและฐานใหม่ไว้เพื่อบีบอัดเพิ่มเติมใช่ไหม
อยากให้ช่วยอธิบายว่าการวิจัยครั้งนี้เกี่ยวข้องกับ MHLA อย่างไร
ไอเดียแบบนี้มักถูกค้นพบใหม่ทุก ๆ ไม่กี่ปี เช่นใน งานปี 2017 ก็มีแนวทางคล้ายกัน
แต่ก็เป็นไปได้ว่านักวิจัยอาจคิดไอเดียคล้ายกันขึ้นมาอย่างอิสระหลังจากงานเดินหน้าไปมากแล้ว
ไอเดียที่ดีมักเป็นสิ่งที่คนซึ่งเข้าใจปัญหาอย่างลึกซึ้งจะไปถึงได้เองตามธรรมชาติ
คำอธิบายที่ว่า “TurboQuant สุ่มหมุนข้อมูลเพื่อทำให้เรขาคณิตง่ายขึ้น” ฟังดูไม่เข้าใจ
ไม่มีอะไรรับประกันว่าการหมุนจะทำให้ได้รูปแบบที่ง่ายขึ้นเสมอไปไม่ใช่หรือ?
อีกทั้งส่วนที่ว่า “ลดข้อมูลมิติสูงด้วยการแปลง Johnson–Lindenstrauss แล้วแทนเวกเตอร์แต่ละตัวด้วยบิตสัญญาณ” ก็ยังฟังไม่ขึ้นว่า ค่าบูลีนเพียงค่าเดียวจะรักษาข้อมูลความสัมพันธ์ ได้อย่างไร
จะมี outlier activation เกิดขึ้นในบางมิติ และด้วยคุณลักษณะของ Adam optimizer ปรากฏการณ์นี้ยิ่งเด่นชัดขึ้น
งานที่เกี่ยวข้องที่น่าอ่านคือ SmoothQuant และ Privileged Basis
แบบนี้จะช่วยลดการเรียนรู้กฎที่ไม่จำเป็นและทำให้การ optimize เสถียรมากขึ้น
หรือก็คือป้องกันไม่ให้โมเดลเรียนรู้ กฎจุกจิก อย่างเช่น “ถ้าหลัก某ตำแหน่งของมิติหนึ่งเป็น 5 ก็แปลว่าแมว”
เมื่อคูณด้วยเมทริกซ์การหมุน ข้อมูลจะกระจายตัวสม่ำเสมอขึ้น ทำให้ควอนไทซ์ได้มีประสิทธิภาพ
หลังจากนั้นใช้ อัลกอริทึม Lloyd–Max เพื่อหาขอบเขตและค่ากู้คืนที่เหมาะที่สุด แล้วชดเชย bias ที่เหลืออยู่ด้วย 1 บิต
วิธีนี้ช่วยให้คงความแม่นยำสูงไว้ได้แม้ใช้บิตน้อย
ตัวอย่างเช่น ถ้าแปลงค่าทศนิยมแบบ floating point ไปเป็นอีกหน่วยหนึ่ง (เบล→เดซิเบล) ค่าต่าง ๆ อาจใกล้กันมากขึ้นและบีบอัดได้ง่ายขึ้น
กล่าวคือดึงข้อมูลที่กระจายห่างออกไปให้กลับมาใกล้ศูนย์กลางอีกครั้ง
และยังเข้ารหัสแต่ละมิติแยกกัน ดังนั้นไม่ได้ย่อทั้งเวกเตอร์ให้เหลือบูลีนตัวเดียว
บล็อกโพสต์นี้คุณภาพต่ำ
กราฟ ใส่แกนผิด และ ภาพเคลื่อนไหวอธิบาย ก็สื่อแนวคิด Polar Quantization ไม่ได้เลย
อีก กราฟหนึ่ง เริ่มแกนที่ 48 จนทำให้ความต่างจริงดูเกินจริง
โดยรวมแล้วทั้ง ความน่าเชื่อถือของภาพประกอบ และคุณภาพการสื่อสารค่อนข้างแย่
มีคนกำลังทำ implementation ลงใน llama.cpp แล้ว
ดู commit ที่เกี่ยวข้อง
โดยหวังว่าทฤษฎีบท Johnson–Lindenstrauss จะยังคงใช้ได้ และทำให้การควอนไทซ์แต่ละพิกัดแบบอิสระยังมีความสมเหตุสมผลในเชิงทฤษฎี
แม้จะไม่มีความรู้เชิงโดเมนมากนัก แต่โครงสร้างก็ดูชัดเจนดี
มีโอกาสสูงที่จะถูกรวมเข้า main branch ภายใน 4–6 สัปดาห์
มี แอนิเมชัน ที่อธิบาย TurboQuant แบบเข้าใจง่าย
นี่คือสรุปที่เรียบเรียงในระดับนักศึกษาปริญญาตรี
แก่นสำคัญคือการ ควอนไทซ์ KV cache โดยให้สูญเสียข้อมูลน้อยที่สุด
เวกเตอร์ส่วนใหญ่มักกระจุกตัวอยู่แถวเส้นศูนย์สูตรของทรงกลมมิติสูง ดังนั้นการหมุนเพื่อทำให้การกระจายสม่ำเสมอขึ้นจึงช่วยเพิ่ม การคงไว้ซึ่งเอนโทรปี
PolarQuant พยายามทำสิ่งนี้ผ่านการแปลงเป็นพิกัดเชิงขั้ว ส่วน TurboQuant ทำให้มันง่ายขึ้นและเพิ่ม การชดเชยอคติแบบ QJL
สุดท้ายแล้วจึงเหมือนเป็น PolarQuant + QJL + การแก้ไขเชิงปฏิบัติ จนได้การบีบอัดที่มีประสิทธิภาพสูง
แต่ตัวบล็อกโพสต์เองมีข้อผิดพลาดเยอะและชวนสับสน
และ codebook พิกัดไฮเปอร์โพลาร์ ของ PolarQuant ก็ยังคงหลงเหลืออยู่บางส่วนใน TurboQuant
บทความนี้อยู่ในระดับ แย่มากในการอธิบายองค์ประกอบ AI
แทบไม่มีบริบทเชิงเทคนิคเลย
พูดถึงทฤษฎีบท Johnson–Lindenstrauss แต่ไม่อธิบายให้เห็นความเชื่อมโยงอย่างเป็นรูปธรรม
เช่นอธิบาย “ไปทางตะวันออก 3 บล็อก เหนือ 4 บล็อก” ว่าเป็น “เดินไป 5 บล็อกที่มุม 37 องศา” ซึ่งให้ความรู้สึกเหมือน อุปมาระดับมัธยมต้น
มี implementation ของ PyTorch แบบอิสระออกมาแล้ว
turboquant-pytorch
แม้บล็อกจะเพิ่งเผยแพร่ไม่นานนี้ แต่ตัวเปเปอร์ถูก ส่งขึ้น arXiv มาตั้งแต่เกือบ 1 ปีก่อนแล้ว
เลยสงสัยว่ามันถูกนำไปใช้กับโมเดลอย่าง Gemini แล้วหรือยัง และถ้าใช่ก็น่าจะช่วยลดต้นทุน RAM ฝั่งผู้ใช้ทั่วไปได้ด้วย
น่าทึ่งที่งานวิจัยด้าน การบีบอัด ช่วงหลัง ๆ ถูกนำไปใช้จริงเร็วมาก
เหมือนกับในโลกฟอร์แมตรูปภาพที่ AVIF และ JPEG XL แตกแขนงมาจากงานวิจัยด้านตัวแปลงสัญญาณวิดีโอ เทคโนโลยีการควอนไทซ์สำหรับ AI ก็คงมีโอกาสสูงที่จะถูกนำไปใช้ใน สภาพแวดล้อมการอนุมานจริง ในไม่ช้า
แนวคิดบางอย่างอย่าง XYB color space ก็ยังมีส่วนร่วมกัน และคาดว่าในโลก LLM ก็น่าจะต้องมี วิศวกรรมเฉพาะทาง คล้าย ๆ กันเช่นกัน