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 ที่เสถียรและรวดเร็วยิ่งขึ้น