천 달러짜리 아이폰이 계산을 못한다
(journal.rafaelcosta.me)- iPhone 16 Pro Max에서 MLX LLM 실행 시 잘못된 수치 출력이 발생하며, 같은 코드가 iPhone 15 Pro와 MacBook Pro에서는 정상 작동함
- 텐서 값이 한 자릿수 이상 차이를 보이며, 동일 입력에도 결과가 왜곡되는 현상 확인
- 문제 원인은 Neural Engine 또는 Metal 기반 ML 연산 스택의 하드웨어 결함으로 추정됨
- Apple Intelligence 기능도 다운로드 실패 등 유사한 불안정성을 보여, 관련성 가능성 제기
- 개발자는 이 사례를 통해 디버깅 시 물리적 하드웨어 문제도 고려해야 함을 강조
MLX LLM 실행 오류 발견
- iPhone 16 Pro Max에서 MLX 기반 LLM 실행 시 무의미한 출력(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] - 입력값은 동일했으나 중간 연산 단계에서 수치가 급격히 왜곡됨
- iPhone 15 Pro에서는
Apple Intelligence 기능 문제
- Apple Intelligence API를 이용해 지출 분류 기능을 구현하려 했으나, 모델 지원이 다운로드되지 않음
- 설정을 여러 번 변경해도 기능이 활성화되지 않음
- Apple 커뮤니티 포럼에서도 동일 문제를 겪는 사용자 다수(12페이지 분량) 가 보고됨
- 이로 인해 Apple Intelligence 접근을 포기하고 MLX 기반 접근으로 전환
디버깅 과정과 원인 추적
- MLX의 Gemma 모델 구현부에 브레이크포인트를 설정해 각 레이어의 텐서 값을 추적
- 입력값은 두 기기에서 동일했으나, iPhone 16 Pro Max에서는 중간 단계부터 수치가 비정상적으로 커짐
- Mac에서도 iPhone 15 Pro와 동일한 정상 결과 확인
- 이를 통해 코드나 모델이 아닌 하드웨어 문제임을 확신
하드웨어 결함 가능성
- iPhone 16 Pro Max의 A18 칩 Neural Engine 또는 Metal 기반 ML 연산 경로에서 계산 오류 발생 가능성
- MLX는 Metal을 통해 텐서 연산을 컴파일하므로, 해당 스택의 결함이 결과 왜곡을 초래할 수 있음
- Apple Intelligence 문제와 동일 원인일 가능성도 언급되나, 명확한 증거는 없음
결론 및 교훈
- 문제의 iPhone 16 Pro Max는 하드웨어 결함이 있는 개체로 확인
- 이후 iPhone 17 Pro Max로 교체 후 모든 기능이 정상 작동
- 개발자는 이 경험을 통해 디버깅 시 소프트웨어뿐 아니라 물리적 하드웨어 문제도 고려해야 함을 강조
- 세 가지 교훈:
- LLM 실행 오류가 항상 코드 문제는 아님
- 동일 환경 비교 테스트의 중요성
- 고가의 하드웨어라도 ML 연산 정확성을 보장하지 않을 수 있음
Hacker News 의견들
- 방법론은 그렇다 치더라도, LLM으로 덧셈을 시키는 건 별로 좋은 생각이 아님
“달 더하기 해는 뭐지?” 같은 질문만큼 웃긴 일임
하지만 이번 현상 자체는 다름. Apple의 수치 연산 API가 일부 기기에서 불일치한 결과를 내고 있음. 이건 Apple이 주목해야 할 문제임- 완전 딴소리지만, 내 머릿속에서는 바로 “밝음”이 떠올랐음.
해(日)와 달(月)을 합치면 明이 되니까 (위키 링크)
“보름달” 같은 답도 가능하겠지만, 명확한 결정적 답은 없을 듯함 - “달 더하기 해?” 그건 당연히 일식(eclipse) 임
- 완전 딴소리지만, 내 머릿속에서는 바로 “밝음”이 떠올랐음.
- 다른 iPhone 16 Pro Max에서도 테스트해봤으면 좋았을 것 같음. 그 기기만의 문제인지 확인할 수 있었을 텐데 아쉬움
- 맞음. 보통 Apple Support가 권하는 대로라면 OS를 초기화 후 재설치했어야 함
백업은 당연히 하고, 가능하면 iCloud+ 플랜으로 진행하는 게 좋음. 이런 문제엔 그게 가장 간단한 해결책임 - 페이지 하단의 최신 업데이트에 따르면, iPhone 17 Pro Max에서는 모든 게 정상 작동했다고 함
즉, 그 iPhone 16 Pro Max는 하드웨어 결함이 있었던 것으로 보임
- 맞음. 보통 Apple Support가 권하는 대로라면 OS를 초기화 후 재설치했어야 함
-
저수준 수치 연산 최적화는 종종 재현이 어려움
예를 들어 Intel의 문서에서도 언급된 바 있음
그래도 iPhone 16에서 LLM이 전혀 작동하지 않는 건 놀라움. LLM은 보통 양자화(quantization) 에 꽤 관대한 편이니까- “부동소수점 누적은 교환법칙이 성립하지 않는다”는 건 기본 상식임
처음엔 그 이유로 이 문제를 무시하려 했지만,
다른 모든 Apple 기기에서는 동일한 결과가 나왔고, Apple의 자체 LLM이 이 기기에서만 실패했다는 점이 이상했음
이건 근본적인 문제라기보다 예상치 못한 실패로 보임. Apple이 이런 상태의 기기를 출하한 건 좋지 않음
- “부동소수점 누적은 교환법칙이 성립하지 않는다”는 건 기본 상식임
- 솔직히 이 글을 클릭했을 때, 옛날 그래프 계산기가 스마트폰보다 낫다는 얘기일 줄 알았음
지금 내 폰에서 수학할 때는 HP Prime 에뮬레이터를 씀- 나는 PCalc를 좋아함. Mac Classic 시절부터 모든 Apple 플랫폼에서 돌아감 (링크)
또 다른 즐겨 쓰는 계산기는 free42나 plus42 (링크)
CAS 도구로는 MathStudio가 최고임 (mathstud.io)
브라우저에서도 실행되지만 모바일 앱도 있음. 자체 호스팅 Wolfram Alpha 같은 느낌임 - 개인적으로는 iHP48을 씀. 대학 시절 쓰던 HP 48GX에 metakernal을 설치한 버전임
여전히 직관적이고 빠름 - iPhone의 기본 계산기 앱을 지우고, NumWorks로 바꿀 수 있다는 걸 알고 기뻤음
Control Center 버튼으로 바로 실행되게 해둠
불만은, 화면이 이렇게 큰데도 이전 계산 기록을 스크롤해서 볼 수 없다는 점임
1990년대 4기능 계산기 복제판 같은 UI는 이제 그만 보고 싶음 - Android에서는 TI 83+ 에뮬레이터를 씀. 실제 계산기를 못 들고 다닐 때 유용함
- 진지한 계산이 필요할 땐 결국 TI-84 실물 계산기를 꺼냄. 손에 익은 감각이 있어서임
- 나는 PCalc를 좋아함. Mac Classic 시절부터 모든 Apple 플랫폼에서 돌아감 (링크)
- 글은 흥미로웠지만, 마지막 부분의 “MLX가 Neural Engine을 사용한다”는 논리는 맞지 않음
MLX는 CPU, Apple GPU(Metal), NVIDIA GPU(CUDA)에서도 실행 가능함 (링크) - 버그를 재현할 수 있는 코드를 올리면 Apple뿐 아니라 다른 사람들에게도 도움이 될 것 같음
- 그래서 내 iPhone의 예측 텍스트가 엉망인 건가 싶음
- 나만 그런 게 아니었음. 최근 6개월 정도 타이핑이 정말 끔찍했음
설정을 온갖 조합으로 바꿔봤지만, 예측 텍스트가 무작위로 멈추거나 오작동함 - 너무 심해서 이제는 일부러 그런 건가 싶을 정도임
아니면 음성 입력 전환을 유도하려는 최적화일지도 모름
- 나만 그런 게 아니었음. 최근 6개월 정도 타이핑이 정말 끔찍했음
- 좋은 글이었음. 다만 수학 연산 결과가 실제로 잘못된 것인지를 확실히 보여주는 최소한의 테스트 케이스가 있었으면 함
- “2+2가 뭐지?”라고 물었더니 iPhone이 “Applied.....*_dAK[...]” 같은 이상한 답을 내놨음
그래도 최소한 “7”이라고 하진 않았으니 다행임- 아마 Trurl과 Klapaucius가 Q&A를 담당한 게 아닐까 싶음
- Neural Engine을 사용하는 다른 앱들도 비슷한 이상 현상을 보였을 가능성이 있음
App Store의 몇몇 앱을 테스트해봤다면 흥미로운 결과가 나왔을 것 같음