Поначалу я решил, что мой iPhone просто практикует математический сюрреализм — «2+2 = Applied…*_dAK[…]» звучало почти как поэзия, если не считать того факта, что это были логи ML. Проект был прост: небольшое приложение для учёта расходов, классификация покупок локальной моделью (MiniMax/M2.1) и аккуратная интеграция с Apple Watch. Всё шло по плану, пока одна модель на одном телефоне не заявила о собственной креативности.

Apple Intelligence и решение через MLX должны были сократить работу до пары запросов. Но MiniMax на iPhone 16 Pro Max генерировал абсолютную бессмыслицу, тогда как на iPhone 15 Pro и MacBook Pro — те же модели и тот же код — выдавали внятные ответы. После бессонных ночей, обновлений iOS и злорадного обвинения в своей собственной профнепригодности, я пошёл вглубь: включил дебаг, поставил точки останова и начал печатать значения тензоров слоя за слоем.

Сравнение вывода: на рабочем устройстве значения были разумными (напр., 53.875, -187.75…), а на 16-ке — на порядки больше (191.5, 1298 и т.д.). То же входное представление, те же веса, но внутри вычисления идут совсем по другому сценарию. Проверка на Mac дала те же корректные числа, что и iPhone 15 — bingo. Вывод: проблема не в коде и не в модели, а в железе. Вероятно, участок стека Metal / Neural Engine A18 компилирует операции неправильно или сам сопроцессор даёт ошибочные результаты.

Урок оказался простым и горьким: в отладке всегда держать в уме физический уровень. Потратить три дня на поиски софта обидно, но опыт бесценен — и есть хорошая новость: на iPhone 17 Pro Max всё работает, значит это был локальный аппаратный дефект. Если столкнётесь с похожим — сравните на другом устройстве и не игнорируйте возможность «поломки железа». Ссылка на обсуждение похожих симптомов: https://discussions.apple.com/thread/255822364.