Git LLMs pull, LLMs merge, LLMs push.
В последнее время хайпу взял Mixtral с его реализацией MoE подхода (писал про него туть). Но увеличение capacity модели и улучшение ее свойств можно достичь не только засчëт экспертов. Новое веяние это merging моделей.
В чем состоит идея git merge'а моделек?
Во-первых, это не ансамблинг моделей, те мы не используем процедур голосования, стэкинга, boosting или bagging.
Во-вторых мы НЕ склеиваем их по принципу схожему с MoE.
Слияние происходит на уровне слоев, таким образом, чтобы учесть соноправленность весов в слоях (коленниарность), а также знаковую совместимость значений активаций. При этом можно подобно методу "лотерейного билета" убирать слабо совместимые слои или слои, которые не являются значимыми. Также, есть подходы демасштабирования и масштабирования моделей. К примеру, мы имели 7b и 9b и можем расширить итоговое значение размера после слияния, как в пользу последней, так и первой или вообще получить еще большую мега модель аля Голиаф 120b. Самое интересное, что какие-то методы позволяют только парно склеить модели, а какие-то больше двух одновременно. Подробнее о методах слияния можно почитать по ссылке на hf в начале.
Почему это работает и даже удается достичь прогресса в метриках? Ответ лежит в той же плоскости методов оптимизации 0го порядка, а также ema, swa подходов улучшения обучения. Мы используем "субоптимальные" (как мы считаем) веса моделей кандидатов для слияния, далее выбираем наиболее подходящие слои и механики для этого. Следовательно мы умно "суммируем" такие веса, влияя на итоговое пространство таким образом, что веса двигаются ближе к оптимальному набору. В этом и состоит суть подходов ema/swa и метода треугольников/медиан и пр. в оптимизации. А тк. мы склеиваем слои и их веса , которые соноправлены, то мы не ломаем модель, смыслы в ее весах заложенные и тп.
Для собственных экспериментов можно использовать mergekit и colab. Так что мерджим!
В последнее время хайпу взял Mixtral с его реализацией MoE подхода (писал про него туть). Но увеличение capacity модели и улучшение ее свойств можно достичь не только засчëт экспертов. Новое веяние это merging моделей.
В чем состоит идея git merge'а моделек?
Во-первых, это не ансамблинг моделей, те мы не используем процедур голосования, стэкинга, boosting или bagging.
Во-вторых мы НЕ склеиваем их по принципу схожему с MoE.
Слияние происходит на уровне слоев, таким образом, чтобы учесть соноправленность весов в слоях (коленниарность), а также знаковую совместимость значений активаций. При этом можно подобно методу "лотерейного билета" убирать слабо совместимые слои или слои, которые не являются значимыми. Также, есть подходы демасштабирования и масштабирования моделей. К примеру, мы имели 7b и 9b и можем расширить итоговое значение размера после слияния, как в пользу последней, так и первой или вообще получить еще большую мега модель аля Голиаф 120b. Самое интересное, что какие-то методы позволяют только парно склеить модели, а какие-то больше двух одновременно. Подробнее о методах слияния можно почитать по ссылке на hf в начале.
Почему это работает и даже удается достичь прогресса в метриках? Ответ лежит в той же плоскости методов оптимизации 0го порядка, а также ema, swa подходов улучшения обучения. Мы используем "субоптимальные" (как мы считаем) веса моделей кандидатов для слияния, далее выбираем наиболее подходящие слои и механики для этого. Следовательно мы умно "суммируем" такие веса, влияя на итоговое пространство таким образом, что веса двигаются ближе к оптимальному набору. В этом и состоит суть подходов ema/swa и метода треугольников/медиан и пр. в оптимизации. А тк. мы склеиваем слои и их веса , которые соноправлены, то мы не ломаем модель, смыслы в ее весах заложенные и тп.
Для собственных экспериментов можно использовать mergekit и colab. Так что мерджим!