- Trên iPhone 16 Pro Max, khi chạy MLX LLM thì xuất ra giá trị số sai, trong khi cùng đoạn mã đó hoạt động bình thường trên iPhone 15 Pro và MacBook Pro
- Giá trị tensor lệch hơn một chữ số, và hiện tượng kết quả bị méo vẫn xuất hiện dù đầu vào giống hệt nhau
- Nguyên nhân của vấn đề được cho là lỗi phần cứng trong Neural Engine hoặc ngăn xếp tính toán ML dựa trên Metal
- Tính năng Apple Intelligence cũng cho thấy sự bất ổn tương tự, như lỗi tải xuống thất bại, làm dấy lên khả năng có liên quan
- Tác giả nhấn mạnh qua trường hợp này rằng khi debug cũng cần tính đến cả vấn đề phần cứng vật lý
Phát hiện lỗi khi chạy MLX LLM
- Trên iPhone 16 Pro Max, khi chạy LLM dựa trên MLX thì tạo ra đầu ra vô nghĩa (gibberish)
- Cùng đoạn mã đó hoạt động bình thường trên iPhone 15 Pro và MacBook Pro
- Mức sử dụng CPU tăng vọt lên 100%, token “stop” không được tạo ra nên trạng thái xuất vô hạn tiếp diễn
- Dù dùng cùng một mô hình và prompt, giá trị đầu ra của tensor lại tăng bất thường
- Trên iPhone 15 Pro:
[53.875, 62.5625, -187.75, ...]
- Trên iPhone 16 Pro Max:
[191.5, 23.625, 173.75, ..., 1298, -147.25, -162.5]
- Giá trị đầu vào giống hệt nhau, nhưng ở bước tính toán trung gian các con số bị méo mạnh một cách đột ngột
Vấn đề với tính năng Apple Intelligence
- Tác giả đã cố triển khai tính năng phân loại chi tiêu bằng API Apple Intelligence, nhưng phần hỗ trợ mô hình không tải xuống được
- Dù thay đổi cài đặt nhiều lần, tính năng vẫn không được kích hoạt
- Trên diễn đàn cộng đồng Apple cũng có nhiều người dùng báo cáo gặp đúng vấn đề này (12 trang thảo luận)
- Vì vậy tác giả từ bỏ việc tiếp cận qua Apple Intelligence và chuyển sang hướng dùng MLX
Quá trình debug và lần theo nguyên nhân
- Tác giả đặt breakpoint vào phần triển khai mô hình Gemma của MLX để theo dõi giá trị tensor ở từng lớp
- Giá trị đầu vào giống nhau trên hai thiết bị, nhưng trên iPhone 16 Pro Max thì từ giai đoạn trung gian trở đi các con số bắt đầu tăng bất thường
- Trên Mac cũng xác nhận kết quả bình thường giống với iPhone 15 Pro
- Qua đó, tác giả tin chắc rằng đây là vấn đề phần cứng chứ không phải mã nguồn hay mô hình
Khả năng lỗi phần cứng
- Có khả năng lỗi tính toán xảy ra trên Neural Engine của chip A18 trên iPhone 16 Pro Max hoặc trên đường dẫn tính toán ML dựa trên Metal
- MLX biên dịch các phép toán tensor thông qua Metal, nên lỗi trong ngăn xếp này có thể dẫn đến kết quả bị méo
- Cũng có nhắc đến khả năng vấn đề này có cùng nguyên nhân với lỗi Apple Intelligence, nhưng chưa có bằng chứng rõ ràng
Kết luận và bài học
- Chiếc iPhone 16 Pro Max gặp sự cố được xác nhận là một thiết bị bị lỗi phần cứng
- Sau đó đổi sang iPhone 17 Pro Max thì mọi chức năng đều hoạt động bình thường
- Tác giả nhấn mạnh từ trải nghiệm này rằng khi debug cần tính đến không chỉ phần mềm mà cả vấn đề phần cứng vật lý
- Ba bài học rút ra:
- Lỗi khi chạy LLM không phải lúc nào cũng là vấn đề của mã
- Tầm quan trọng của việc thử nghiệm đối chiếu trong cùng môi trường
- Ngay cả phần cứng đắt tiền cũng không nhất thiết bảo đảm độ chính xác của tính toán ML
1 bình luận
Ý kiến Hacker News
Nó cũng buồn cười chẳng khác gì hỏi “mặt trăng cộng mặt trời là gì?”
Nhưng hiện tượng lần này lại là chuyện khác. API tính toán số học của Apple đang cho ra kết quả không nhất quán trên một số thiết bị. Đây là vấn đề Apple cần chú ý
Vì ghép mặt trời(日) và mặt trăng(月) lại thành 明 (liên kết wiki)
Cũng có thể trả lời kiểu “trăng tròn”, nhưng có lẽ không có một đáp án xác định tuyệt đối nào
Tất nhiên phải sao lưu trước, và nếu được thì nên dùng gói iCloud+. Với kiểu lỗi này thì đó là cách xử lý đơn giản nhất
Tức là chiếc iPhone 16 Pro Max đó có vẻ đã bị lỗi phần cứng
Ví dụ như cũng đã được nhắc đến trong tài liệu của Intel
Dù vậy, việc LLM hoàn toàn không hoạt động trên iPhone 16 vẫn khá đáng ngạc nhiên. Bình thường LLM khá chịu đựng tốt với lượng tử hóa (quantization)
Ban đầu tôi cũng định bỏ qua vấn đề này vì lý do đó,
nhưng thật lạ là trên mọi thiết bị Apple khác đều cho cùng một kết quả, còn chính LLM của Apple lại chỉ thất bại trên thiết bị này
Điều này có vẻ không phải là vấn đề nền tảng mà là một lỗi hỏng ngoài dự kiến. Apple không nên xuất xưởng thiết bị trong tình trạng như vậy
Hiện giờ khi cần làm toán trên điện thoại, tôi dùng trình giả lập HP Prime
Một máy tính khác tôi cũng hay dùng là free42 hoặc plus42 (liên kết)
Còn với công cụ CAS thì MathStudio là tốt nhất (mathstud.io)
Nó chạy được cả trong trình duyệt, nhưng cũng có app di động. Cảm giác như một Wolfram Alpha tự host
Nó vẫn trực quan và nhanh
Tôi đã đặt để có thể mở ngay bằng nút ở Control Center
Điều làm tôi khó chịu là dù màn hình lớn thế này mà vẫn không thể cuộn xem lại lịch sử phép tính trước đó
Tôi không muốn tiếp tục nhìn giao diện như bản sao của máy tính 4 chức năng từ thập niên 1990 nữa
MLX cũng có thể chạy trên CPU, Apple GPU(Metal), và NVIDIA GPU(CUDA) (liên kết)
Tôi đã thử đổi đủ kiểu thiết lập, nhưng gợi ý văn bản vẫn ngẫu nhiên bị đứng hoặc hoạt động sai
Hoặc biết đâu đó là kiểu tối ưu hóa để ép người dùng chuyển sang nhập bằng giọng nói
Dù sao thì cũng may là ít nhất nó không trả lời là “7”
Nếu thử kiểm tra một vài app trên App Store thì có lẽ đã cho ra kết quả thú vị