Hacker News Digest

23 октября 2025 г. в 17:06 • elanapearl.github.io • ⭐ 425 • 💬 78

OriginalHN

#pytorch#machine-learning#apple-mps#tensors#optimizers#adam-optimizer#apple-silicon#macos#mlx

A bug that taught me more about PyTorch than years of using it

Плато обучения в модели PyTorch оказалось не ошибкой гиперпараметров, а багом в бэкенде фреймворка. Автор провёл детективное расследование, которое научило его больше о PyTorch, чем годы использования. Проблема заключалась в ядре MPS для Apple Silicon, где операции addcmul_ и addcdiv_ при работе с ненепрерывными тензорами молча записывали результаты во временный буфер вместо самого тензора.

Из-за инициализации весов энкодера как транспонированных декодера они получали ненепрерывную память, которая наследовалась состояниями оптимизатора Adam. Это приводило к тому, что exp_avg_sq.addcmul_() не обновлялся, оставаясь нулевым, что полностью останавливало обновление параметров. Исправить проблему можно, сделав веса непрерывными при инициализации, обновив PyTorch до версии ≥2.4 или перейдя на macOS 15+.