Исследователи научили LLM динамически пропускать и повторять слои для ускорения и точности
Исследователи опубликовали на arXiv препринт, в котором демонстрируют, что большие языковые модели (LLM) могут выполнять не все свои слои для каждого входного запроса. Оказалось, что предобученные слои можно пропускать или зацикливать, собирая из них индивидуальную программу для каждого примера. Такой подход назвали Program-of-Layers (PoLar).
Авторы работы проанализировали поведение моделей и обнаружили, что для большинства запросов достаточно значительно меньшего числа слоёв, чтобы получить такой же или даже лучший результат. Более того, если исходная модель ошибается, альтернативные программы с меньшим количеством слоёв часто исправляют эту ошибку. Это говорит о том, что в модели существует множество скрытых путей решения, а не только стандартный прямой проход.
Для практической реализации PoLar предложен лёгкий прогнозирующий модуль, который обучается генерировать программу выполнения: решать, какие слои пропустить, а какие повторить для каждого конкретного входа. Модуль не требует дополнительного обучения всех слоёв модели — они остаются замороженными.
Эксперименты на бенчмарках математического мышления показали, что PoLar стабильно улучшает точность по сравнению со стандартным выводом и другими методами динамической глубины. При этом часто выполняется меньше слоёв, что сокращает время вычислений. Выигрыш сохраняется и при тестировании на данных, отличных от обучающих.
Полученные результаты подчёркивают, что фиксированная глубина выполнения захватывает лишь малую часть скрытых рассуждательных способностей LLM. PoLar позволяет более гибко использовать уже обученные веса, повышая эффективность без дополнительных затрат на обучение.


