MiniCPM: Unveiling the Potential of End-side Large Language Models
Новая моделька от китайских исследователей. Описание даже не в виде статьи, но просто хорошо оформленной Notion-странички. Авторы утверждают, что 2B версия (можно взять тут) работает на уровне LLAMA2-13B.
Причина, по которой я пишу этот пост, в том, как и за счёт чего произошло «улучшение» (в кавычках потому, что можно долго спекулировать, правда это или нет, может, есть какой-то лик в данных, не знаю). Исследователи думали над подбором оптимального batch size (сколько токенов за раз модель видит при обучении) и learning rate (LR, размер шага обновления на каждой тренировочной итерации). Подбор оптимальных параметров — топик довольно старый в мире Deep Learning. Давайте сфокусируемся на последнем.
Очень важно подбирать правильный LR. Если будет очень маленьким, то ваша модель будет учиться крайне медленно, и, вероятно, недообучится. А если будет большой — то модель будет колбасить из стороны в сторону, и она не сможет сойтись в локальный минимум во время обучения. Вот картинка, которой часто иллюстрируют описанное.
Для решения проблемы были придуманы LR Schedulers — программы, которые задают «расписание» LR по ходу обучения. Для обучения LLM обычно используют Cosine: сначала идёт этап разогрева, когда случайно иницилизированные веса немного меняются, чтобы выдавать предсказания лучше случайных. Затем LR достигает своего пика и мееееедленно (~99% времени) снижается до ~10% от максимума. Где-то в серединке LR ещё достаточно большой, чтобы быстро учить модель, а в конце уже совсем маленький, там идёт финальная полировка.
Но давайте представим реальный мир. Обычно модель не замирает после предобучения. В идеале хотелось бы продолжать её дотренировывать (как в целом, так и под конкретные задачи). Если мы продолжим использовать LR в ~10% от пикового, то обучение снова будет медленным. Если мы резко поднимем LR, то loss-функция сильно вырастет на некоторое время, в течение которого модель находится в непригодном для использования состоянии (её «выбили» из оптимального состояния).
Поэтому авторы предлагают WSD LR Scheduler:
1) Warmup такой же, как у Cosine
2) Stable — это период с высоким LR. Длится ~90% времени. Отличие в том, что мы не уменьшаем темп обучения постепенно, LR зафиксирован.
3) Decay, ~10% от тренировки — дообучение с резким (но постепенным) снижением LR, когда модель сходится к локальному минимуму.
Новая моделька от китайских исследователей. Описание даже не в виде статьи, но просто хорошо оформленной Notion-странички. Авторы утверждают, что 2B версия (можно взять тут) работает на уровне LLAMA2-13B.
Причина, по которой я пишу этот пост, в том, как и за счёт чего произошло «улучшение» (в кавычках потому, что можно долго спекулировать, правда это или нет, может, есть какой-то лик в данных, не знаю). Исследователи думали над подбором оптимального batch size (сколько токенов за раз модель видит при обучении) и learning rate (LR, размер шага обновления на каждой тренировочной итерации). Подбор оптимальных параметров — топик довольно старый в мире Deep Learning. Давайте сфокусируемся на последнем.
Очень важно подбирать правильный LR. Если будет очень маленьким, то ваша модель будет учиться крайне медленно, и, вероятно, недообучится. А если будет большой — то модель будет колбасить из стороны в сторону, и она не сможет сойтись в локальный минимум во время обучения. Вот картинка, которой часто иллюстрируют описанное.
Для решения проблемы были придуманы LR Schedulers — программы, которые задают «расписание» LR по ходу обучения. Для обучения LLM обычно используют Cosine: сначала идёт этап разогрева, когда случайно иницилизированные веса немного меняются, чтобы выдавать предсказания лучше случайных. Затем LR достигает своего пика и мееееедленно (~99% времени) снижается до ~10% от максимума. Где-то в серединке LR ещё достаточно большой, чтобы быстро учить модель, а в конце уже совсем маленький, там идёт финальная полировка.
Но давайте представим реальный мир. Обычно модель не замирает после предобучения. В идеале хотелось бы продолжать её дотренировывать (как в целом, так и под конкретные задачи). Если мы продолжим использовать LR в ~10% от пикового, то обучение снова будет медленным. Если мы резко поднимем LR, то loss-функция сильно вырастет на некоторое время, в течение которого модель находится в непригодном для использования состоянии (её «выбили» из оптимального состояния).
Поэтому авторы предлагают WSD LR Scheduler:
1) Warmup такой же, как у Cosine
2) Stable — это период с высоким LR. Длится ~90% времени. Отличие в том, что мы не уменьшаем темп обучения постепенно, LR зафиксирован.
3) Decay, ~10% от тренировки — дообучение с резким (но постепенным) снижением LR, когда модель сходится к локальному минимуму.
Источник: Сиолошная
2024-02-06 12:10:34