Llama.cpp b10327 ได้แก้ไขบั๊กสำคัญเกี่ยวกับการทำ CUDA quantization ซึ่งช่วยให้การทำ inference บน GPU ท้องถิ่นด้วยการ์ด NVIDIA มีความเสถียรมากขึ้น และช่วยรีดประสิทธิภาพความเร็วจากฮาร์ดแวร์เดิมออกมาได้มากขึ้น การแก้ไขนี้มีความสำคัญอย่างยิ่งสำหรับใครก็ตามที่รันโมเดลสไตล์ LLaMA บน GPU ระดับผู้บริโภค (consumer-grade) ซึ่งปัญหาเครื่องค้าง (crashes) และความแม่นยำที่ลดลงเล็กน้อยเคยเป็นปัญหาที่น่าปวดหัวมาโดยตลอด
บั๊กที่เป็นอุปสรรคต่อการทำ local inference
Llama.cpp คือเอนจินโอเพนซอร์สยอดนิยมสำหรับการรันโมเดลภาษาขนาดใหญ่ (LLM) บน CPU และ GPU โดยไม่ต้องพึ่งพาบริการคลาวด์ จุดเด่นที่สุดของมันคือความสามารถในการรันโมเดลแบบ quantised ซึ่งเป็นการเก็บค่าน้ำหนัก (weights) ในรูปแบบบิตต่ำ (low-bit formats) บน GPU ที่มีขนาดไม่ใหญ่มากนัก การปล่อยเวอร์ชัน b10327 นี้ได้แก้ไขการคำนวณจำนวน thread และ block ที่ใช้ในการเรียกใช้งาน quantised kernels บนแพลตฟอร์ม CUDA ของ NVIDIA
การคำนวณแบบเดิมอาจทำให้การจัดสรรงาน (work-items) ไม่สอดคล้องกัน ซึ่งนำไปสู่ปัญหาในทางปฏิบัติสองประการ:
- การจัดการหน่วยความจำผิดพลาด (Memory mishandling) – บางครั้ง kernels เข้าถึงหน่วยความจำนอกขอบเขต buffer ที่จัดสรรไว้ ทำให้เกิดอาการเครื่องค้างหรือข้อมูลเสียหายโดยไม่แจ้งเตือน (silent corruption)
- ความไม่แม่นยำทางคณิตศาสตร์ (Math inaccuracy) – การคำนวณแบบ floating-point ทำงานได้ไม่เต็มประสิทธิภาพ ส่งผลให้คุณภาพของข้อความที่สร้างขึ้นลดลง
ทั้งสองปัญหานี้จะปรากฏขึ้นเฉพาะภายใต้ข้อจำกัดด้านหน่วยความจำที่เข้มงวดของการทำ quantised inference เท่านั้น ทำให้ยากต่อการจำลองปัญหา (reproduce) เมื่อรันบนโมเดลขนาดใหญ่ที่มีความแม่นยำเต็มรูปแบบ (full-precision)
ทำไมการแก้ไขนี้จึงเป็นชัยชนะสำหรับ On-device AI
นักพัฒนาและผู้ที่ชื่นชอบเทคโนโลยีพึ่งพาการทำ local inference เพื่อรักษาความเป็นส่วนตัวของข้อมูล หลีกเลี่ยงความหน่วง (latency) จากการเรียกใช้คลาวด์ และลดต้นทุนการดำเนินงาน บั๊กดังกล่าวหมายความว่าแม้โมเดลจะสามารถบรรจุลงในหน่วยความจำ GPU ได้ แต่ก็ยังอาจเกิดความล้มเหลวได้อย่างไม่คาดคิด ด้วยพารามิเตอร์การเรียกใช้งาน (launch parameters) ที่ได้รับการแก้ไขแล้ว ฮาร์ดแวร์เดิมจะสามารถมอบสิ่งต่อไปนี้ได้:
- การทำงานที่น่าเชื่อถือมากขึ้น – เกิดอาการ out-of-memory น้อยลง และการประมวลผลแบบ batch ราบรื่นยิ่งขึ้น
- ความเร็วที่เพิ่มขึ้น – การอัปเดตนี้ช่วยเพิ่มทั้งความน่าเชื่อถือและ throughput
สำหรับ GPU ระดับผู้บริโภค ความแตกต่างนี้อาจเป็นเส้นแบ่งระหว่างแชทบอทที่โต้ตอบได้จริง กับเดโมที่ทำงานไม่เสถียร
สรุปอัปเดตด้าน GPU AI ในภาพรวม
แม้ว่าแพตช์ของ Llama.cpp จะเป็นข่าวหลัก แต่ก็มีการปล่อยอัปเดตอื่นๆ อีกจำนวนหนึ่งที่ช่วยขับเคลื่อนระบบนิเวศ AI ท้องถิ่นให้ก้าวหน้าไปอีกขั้น:
- NVIDIA NeMo Speech 3.0 เปิดตัวชุดเครื่องมือใหม่สำหรับการจดจำเสียงอัตโนมัติ (automatic speech recognition), การแปลงข้อความเป็นเสียง (text-to-speech) และโมเดลภาษาขนาดใหญ่สำหรับเสียง (speech-large language models) โครงสร้างใหม่นี้ช่วยให้การสร้างผู้ช่วยเสียงเฉพาะทางทำได้ง่ายและรวดเร็วยิ่งขึ้น
- AMD ROCm เพิ่มการรองรับ SVDQuant ผ่านไลบรารี Quark ช่วยให้โมเดล diffusion เช่น Stable Diffusion สามารถรันได้โดยใช้หน่วยความจำน้อยลงบน GPU ของ AMD นอกจากนี้ยังมีโมดูล VSA (Video Sparse Attention) ที่ช่วยให้การสร้างวิดีโอเร็วขึ้นโดยการลดการคำนวณทางคณิตศาสตร์ที่จำเป็นในขั้นตอน diffusion
- Linux kernel 7.3 จะนำระบบย่อย TTM (Translation Table Maps) ที่มีประสิทธิภาพสูงขึ้นมาใช้สำหรับหน่วยความจำกราฟิก การเปลี่ยนแปลงนี้มีเป้าหมายเพื่อปรับปรุงการเรียกคืนหน่วยความจำ (memory reclamation) สำหรับเวิร์กโหลดที่เน้นการคำนวณหนักๆ ซึ่งอาจส่งผลดีทางอ้อมต่อการทำ AI inference บนเครื่องที่ใช้ระบบปฏิบัติการ Linux
ใครได้ประโยชน์ และใครที่ควรระมัดระวัง
นักพัฒนาอิสระ, สตาร์ทอัพขนาดเล็ก และทีมที่ให้ความสำคัญกับความเป็นส่วนตัวซึ่งได้ลงทุนในฮาร์ดแวร์ NVIDIA ระดับผู้บริโภคไปแล้ว จะได้รับประโยชน์ในทันที กระบวนการทำงาน (pipelines) ของพวกเขาจะมีความแน่นอนมากขึ้น และประสิทธิภาพที่เพิ่มขึ้นจะช่วยลดอุปสรรคในการทดลองใช้โมเดลแบบ quantised ที่มีขนาดใหญ่ขึ้น
สำหรับองค์กรที่รัน inference บนคลาวด์อยู่แล้ว อาจมองว่าการแก้ไขนี้เป็นจุดยืนยันสำหรับกลยุทธ์แบบไฮบริด (hybrid strategies) นั่นคือการรันส่วนหน้า (front-ends) ที่ต้องการความหน่วงต่ำไว้ในเครื่องท้องถิ่น ในขณะที่ส่งงานแบบ batch หนักๆ ไปประมวลผลบนคลาวด์ อย่างไรก็ตาม การแก้ไขนี้ไม่ได้ลบข้อจำกัดที่ลึกกว่าของ On-device AI เช่น เพดานของ VRAM หรือช่องว่างด้านคุณภาพระหว่างโมเดลแบบ quantised และโมเดลแบบ full-precision
สิ่งที่ต้องจับตามองต่อไป
- การเพิ่มประสิทธิภาพของ Llama.cpp ในอนาคต – แพตช์ที่จะตามมาจะปรับปรุงเรื่อง kernel fusion และเพิ่มการรองรับสถาปัตยกรรม NVIDIA รุ่นใหม่ๆ
- มาตรฐานการทำ quantization ข้ามผู้ผลิต – เมื่อ ROCm ของ AMD รองรับ SVDQuant ชุมชนอาจรวมตัวกันไปสู่รูปแบบบิตต่ำที่เป็นมาตรฐานเดียวกัน ซึ่งจะช่วยให้การย้ายโมเดล (model portability) ทำได้ง่ายขึ้น
- การรวมส่วนประกอบของ NeMo Speech เข้ากับ runtime บนอุปกรณ์ อาจนำความสามารถด้านเสียงมาสู่ stack การทำ local inference ชุดเดียวกับที่ปัจจุบันรันโมเดลข้อความได้อย่างน่าเชื่อถือมากขึ้น
แพตช์ b10327 พิสูจน์ให้เห็นว่าการแก้ไขเพียงบรรทัดเดียวในส่วนของ launch geometry สามารถส่งผลกระทบอย่างมหาศาลต่อความสามารถในการใช้งาน AI ท้องถิ่น หากคุณยังคงประสบปัญหาเครื่องค้างบน GPU ระดับผู้บริโภค ให้รีบอัปเดต llama.cpp ตอนนี้ เพื่อประสบการณ์การทำ inference ที่เสถียรและรวดเร็วยิ่งขึ้น
