- 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]
- 입력값은 동일했으나 중간 연산 단계에서 수치가 급격히 왜곡됨
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 연산 정확성을 보장하지 않을 수 있음