ผมลองรัน LLM แบบ Local บน ASUS ROG Ally ของผม

ผมลองรันโมเดล AI แบบ Local บน ASUS ROG Ally ของผมมาสองสามสัปดาห์ ตอนแรกผมคิดว่ามันจะเป็นโปรเจกต์ที่สนุกดี แต่กลายเป็นว่ามันกลายเป็นบทเรียนเรื่องข้อจำกัดของฮาร์ดแวร์แทน

ผมไม่ได้ใช้มันเพื่อแทนที่ระบบ Cloud แต่ใช้เป็นเครื่องมือเฉพาะทางสำหรับงานเล็กๆ น้อยๆ และนี่คือสิ่งที่ผมได้เรียนรู้จากการรัน AI บนอุปกรณ์พกพา (handheld)

ข้อจำกัดด้านหน่วยความจำ

อุปกรณ์พกพาใช้สถาปัตยกรรม Unified Memory Architecture ซึ่งหมายความว่า CPU และ GPU จะใช้ RAM ร่วมกัน โดยปกติแล้ว GPU จะได้รับส่วนแบ่งหน่วยความจำเพียงเล็กน้อยเท่านั้น

หากโมเดลของคุณมีขนาดใหญ่เกินกว่าส่วนแบ่งนั้น ระบบจะหันไปใช้ CPU แทน ซึ่งทำให้การสร้างข้อความ (generation) ช้าลงอย่างน่าหงุดหงิด

วิธีแก้ไข:

  • เข้าไปที่ BIOS ของคุณ
  • เพิ่มค่า UMA frame buffer ด้วยตนเอง
  • ผมปรับเพิ่มไปถึง 4 GB ซึ่งการเปลี่ยนแปลงนี้ช่วยได้มากกว่าการปรับแต่งส่วนอื่นๆ ทั้งหมด

สิ่งที่ไม่ได้ผล

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

ผมยังลองใช้ disk swap เพื่อช่วยด้วย แต่ swap ไม่ได้ทำให้ทุกอย่างเร็วขึ้น แต่มันทำให้เครื่องใช้งานไม่ได้เลย หากโมเดลของคุณต้องพึ่งพา disk swap คุณจะเห็นข้อความออกมาเพียงคำเดียวในทุกๆ ไม่กี่วินาที

เหตุผลเดียวที่ควรเปิด swap ไว้ คือเพื่อป้องกันไม่ให้ระบบสั่งปิดโปรเซสของคุณเมื่อ RAM หมด

เคล็ดลับเพื่อให้รันได้อย่างราบรื่น

หากผลลัพธ์จาก AI ของคุณดูติดขัดหรือกระตุก ให้ตรวจสอบการตั้งค่า Linux kernel ของคุณ

  • ลดค่า vm.swappiness ลง
  • วิธีนี้จะช่วยหยุดไม่ให้ระบบย้ายหน่วยความจำไปยัง swap เร็วเกินไป
  • มันจะทำให้การสร้างข้อความดูต่อเนื่องแทนที่จะกระตุก

การเลือกโมเดลขึ้นอยู่กับลักษณะการใช้งาน

คนส่วนใหญ่มักมองหาโมเดลที่เร็วที่สุด แต่ผมเลือกโมเดลที่ช้ากว่าแต่แม่นยำกว่าแทน

  • หากคุณต้องการแชทแบบเรียลไทม์ คุณต้องการความเร็ว
  • หากคุณรัน agent ในเบื้องหลัง คุณต้องการคุณภาพ

ผมใช้การตั้งค่านี้สำหรับงานเบ