- บน iPhone 16 Pro Max เกิด การแสดงค่าตัวเลขผิดพลาดเมื่อรัน MLX LLM โดยโค้ดเดียวกันทำงานได้ปกติบน iPhone 15 Pro และ MacBook Pro
- ค่าของเทนเซอร์แตกต่างกันมากกว่าหนึ่งหลัก และพบว่าผลลัพธ์บิดเบือนได้แม้ใช้อินพุตเดียวกัน
- คาดว่าสาเหตุของปัญหามาจาก ข้อบกพร่องของฮาร์ดแวร์ใน Neural Engine หรือสแตกการคำนวณ ML ที่อิง Metal
- ฟีเจอร์ Apple Intelligence ก็แสดง ความไม่เสถียรคล้ายกัน เช่น ดาวน์โหลดไม่สำเร็จ ทำให้มีการตั้งข้อสังเกตว่าอาจเกี่ยวข้องกัน
- นักพัฒนาเน้นย้ำผ่านกรณีนี้ว่า ระหว่างการดีบักควรคำนึงถึงปัญหาฮาร์ดแวร์จริงด้วย
พบข้อผิดพลาดระหว่างรัน MLX LLM
- บน iPhone 16 Pro Max เมื่อรัน LLM ที่ใช้ MLX จะสร้าง เอาต์พุตไร้ความหมาย (gibberish)
- โค้ดเดียวกันทำงานได้ปกติบน iPhone 15 Pro และ MacBook Pro
- การใช้งาน CPU พุ่งขึ้นไปถึง 100% และไม่มีการสร้างโทเค็น “stop” ทำให้ค้างอยู่ในสถานะพิมพ์ผลลัพธ์ต่อเนื่องไม่สิ้นสุด
- แม้จะใช้โมเดลและพรอมป์ต์เดียวกัน แต่ ค่าผลลัพธ์ของเทนเซอร์กลับสูงผิดปกติ
- บน iPhone 15 Pro เป็น
[53.875, 62.5625, -187.75, ...]
- บน iPhone 16 Pro Max เป็น
[191.5, 23.625, 173.75, ..., 1298, -147.25, -162.5]
- อินพุตเหมือนกัน แต่ค่าตัวเลขเริ่มบิดเบือนอย่างรุนแรงในขั้นตอนการคำนวณระหว่างทาง
ปัญหาของฟีเจอร์ Apple Intelligence
- พยายามใช้ Apple Intelligence API เพื่อทำ ฟีเจอร์จัดหมวดหมู่ค่าใช้จ่าย แต่ไม่สามารถดาวน์โหลดส่วนรองรับของโมเดลได้
- แม้จะเปลี่ยนการตั้งค่าหลายครั้ง ก็ยังไม่สามารถเปิดใช้งานฟีเจอร์ได้
- ใน Apple Community Forum ก็มี ผู้ใช้จำนวนมากที่รายงานว่าเจอปัญหาเดียวกัน (ยาวถึง 12 หน้า)
- ด้วยเหตุนี้จึงเลิกใช้ Apple Intelligence และเปลี่ยนไปใช้แนวทางที่อิง MLX แทน
กระบวนการดีบักและการไล่หาสาเหตุ
- ตั้ง เบรกพอยต์ในส่วน implementation ของโมเดล Gemma ของ MLX เพื่อติดตามค่าเทนเซอร์ของแต่ละเลเยอร์
- ค่าอินพุตเหมือนกันทั้งสองอุปกรณ์ แต่บน iPhone 16 Pro Max ค่าตัวเลขเริ่มสูงผิดปกติตั้งแต่ขั้นตอนกลาง
- บน Mac ก็ยืนยันได้ผลลัพธ์ปกติเหมือนกับ iPhone 15 Pro
- จากจุดนี้จึงมั่นใจได้ว่าเป็น ปัญหาฮาร์ดแวร์ ไม่ใช่โค้ดหรือโมเดล
ความเป็นไปได้ของข้อบกพร่องด้านฮาร์ดแวร์
- มีความเป็นไปได้ว่าเกิดข้อผิดพลาดในการคำนวณที่ Neural Engine ของชิป A18 หรือ เส้นทางการคำนวณ ML ที่อิง Metal ของ iPhone 16 Pro Max
- MLX คอมไพล์การคำนวณเทนเซอร์ผ่าน Metal ดังนั้นหากสแตกนี้มีข้อบกพร่อง ก็อาจทำให้ผลลัพธ์บิดเบือนได้
- มีการกล่าวถึงด้วยว่าอาจเป็นสาเหตุเดียวกับปัญหา Apple Intelligence แต่ยังไม่มีหลักฐานชัดเจน
บทสรุปและบทเรียน
- ยืนยันแล้วว่า iPhone 16 Pro Max เครื่องที่มีปัญหาเป็น เครื่องที่มีข้อบกพร่องด้านฮาร์ดแวร์
- หลังจากเปลี่ยนเป็น iPhone 17 Pro Max แล้ว ทุกฟีเจอร์กลับมาทำงานได้ปกติ
- นักพัฒนาเน้นย้ำจากประสบการณ์นี้ว่า ระหว่างการดีบักไม่ควรมองแค่ซอฟต์แวร์ แต่ต้องคำนึงถึงปัญหาฮาร์ดแวร์จริงด้วย
- บทเรียน 3 ข้อ:
- ข้อผิดพลาดในการรัน LLM ไม่ได้แปลว่าเป็นปัญหาของโค้ดเสมอไป
- ความสำคัญของการทดสอบเปรียบเทียบในสภาพแวดล้อมเดียวกัน
- ต่อให้เป็นฮาร์ดแวร์ราคาแพง ก็อาจ ไม่ได้รับประกันความแม่นยำของการคำนวณ ML
1 ความคิดเห็น
ความเห็นจาก Hacker News
มันก็ตลกพอ ๆ กับการถามว่า “พระจันทร์บวกพระอาทิตย์ได้อะไร?”
แต่ปรากฏการณ์ครั้งนี้เป็นอีกเรื่องหนึ่ง เพราะ API การคำนวณเชิงตัวเลข ของ Apple ให้ผลลัพธ์ไม่ตรงกันบนอุปกรณ์บางเครื่อง นี่เป็นปัญหาที่ Apple ควรใส่ใจ
เพราะเอาพระอาทิตย์(日) กับพระจันทร์(月) มารวมกันจะได้ 明 (ลิงก์วิกิ)
คำตอบอย่าง “พระจันทร์เต็มดวง” ก็อาจเป็นไปได้เหมือนกัน แต่คงไม่มีคำตอบที่ชัดเจนตายตัว
แน่นอนว่าต้องสำรองข้อมูลก่อน และถ้าเป็นไปได้ก็ควรทำผ่านแพ็กเกจ iCloud+ นั่นเป็นวิธีแก้ที่ง่ายที่สุดสำหรับปัญหาแบบนี้
หมายความว่า iPhone 16 Pro Max เครื่องนั้นน่าจะมี ความบกพร่องด้านฮาร์ดแวร์
ตัวอย่างเช่นมีการพูดถึงเรื่องนี้ในเอกสารของ Intel
ถึงอย่างนั้นก็ยังน่าแปลกที่ LLM บน iPhone 16 ถึงกับใช้งานไม่ได้เลย เพราะปกติ LLM มัก ทนต่อการ quantization ได้พอสมควร
ตอนแรกฉันก็เกือบจะมองข้ามปัญหานี้ด้วยเหตุผลนั้น
แต่ความแปลกคืออุปกรณ์ Apple อื่น ๆ ทั้งหมดให้ผลลัพธ์เดียวกัน และมีเพียง LLM ของ Apple บนเครื่องนี้เท่านั้นที่ล้มเหลว
นี่ดูไม่ใช่ปัญหาเชิงพื้นฐาน แต่เป็น ความล้มเหลวที่ไม่คาดคิด มากกว่า Apple ไม่ควรปล่อยเครื่องที่อยู่ในสภาพแบบนี้ออกมา
ตอนนี้เวลาทำคณิตบนมือถือ ฉันใช้ HP Prime emulator
เครื่องคิดเลขอีกตัวที่ฉันชอบคือ free42 กับ plus42 (ลิงก์)
สำหรับเครื่องมือ CAS นั้น MathStudio ดีที่สุด (mathstud.io)
มันรันในเบราว์เซอร์ได้ และก็มีแอปมือถือด้วย ให้ความรู้สึกเหมือน Wolfram Alpha แบบโฮสต์เอง
มันยังคง ใช้งานง่ายและเร็ว
ฉันตั้งให้เปิดได้ทันทีจากปุ่มใน Control Center
แต่ที่ไม่ชอบคือ ถึงหน้าจอจะใหญ่ขนาดนี้ก็ยัง เลื่อนดูประวัติการคำนวณก่อนหน้าไม่ได้
ฉันไม่อยากเห็น UI ที่เหมือนเครื่องคิดเลข 4 ฟังก์ชันจากยุค 1990 อีกแล้ว
MLX รันได้บน CPU, Apple GPU(Metal) และ NVIDIA GPU(CUDA) ด้วย (ลิงก์)
ฉันลองเปลี่ยนการตั้งค่ามาทุกแบบแล้ว แต่ระบบคาดเดาคำก็ยัง หยุดทำงานหรือทำงานผิดปกติแบบสุ่ม
หรืออาจเป็น การปรับแต่งเพื่อชักจูงให้คนหันไปใช้การป้อนด้วยเสียง
อย่างน้อยก็ดีที่มันไม่ได้ตอบว่า “7”
ถ้าได้ลองทดสอบแอปบางตัวใน App Store ด้วย ก็น่าจะได้ผลที่น่าสนใจ