✅Чем отличается использование памяти у оптимизаторов Adam и SGD
Adam потребляет больше памяти, чем стандартный SGD, потому что хранит дополнительные данные для адаптивного обновления параметров.
Adam хранит для каждого параметра две дополнительные переменные:
📍 m — экспоненциальное среднее градиентов (первая моментная оценка),
📍 v — экспоненциальное среднее квадратов градиентов (вторая моментная оценка).
То есть если у модели 10 млн параметров, Adam будет хранить ещё 20 млн значений (всего 30 млн), что заметно увеличивает потребление памяти.
SGD:
📍 В базовом виде — не хранит ничего, кроме самих параметров.
📍 С momentum — хранит один дополнительный буфер (скорость), то есть на одну переменную больше на каждый параметр.
На практике:
➡️ Если у вас ограничения по GPU-памяти, и модель или батчи не вмещаются, можно перейти с Adam на SGD, чтобы высвободить память.
➡️ Но стоит помнить, что Adam часто сходится быстрее и лучше работает с разреженными градиентами (например, при работе с текстами или рекомендациями).
Некоторые фреймворки (например, PyTorch) предоставляют памяти-эффективные версии Adam, но они могут требовать ручной настройки или иметь побочные эффекты.
Библиотека собеса по Data Science
Post #967
981
- ❤ 4
- 👍 2