Adam-mini: облегченная версия оптимизатора Adam. |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2024-07-31 07:11 Основная идея Adam-mini заключается в том, что матрица Гессиана нейронных сетей, особенно трансформеров, имеет почти блочно-диагональную структуру. Такая структура подразумевает, что для оптимальной работы различных блоков может потребоваться разная скорость обучения. Adam-mini решает эту проблему, разбивая параметры модели на блоки по наименьшим плотным подблокам в матрице Гессиана. Каждому блоку присваивается одна скорость обучения. Скорость обучения для каждого блока в Adam-mini определяется путем усреднения значений вектора импульса второго порядка Adam (v) в пределах этого блока. Эта методика сокращает количество необходимых LR, что приводит к значительной экономии памяти. Например, на LLM Adam-mini может сократить до 90% LR, по сравнению с Adam, что в итоге экономит использования памяти на 45-50 %. Эффективность Adam-mini была проверена сравнением с показателями AdamW в различных сценариях: Pre-training: на Llama2-7B Adam-mini сокращает использование памяти на 48,04 %, сохраняя при этом сопоставимые с AdamW потери при проверке. SFТ и RLHF: превосходит AdamW в задачах на основе LoRA и RLHF, удерживая низкое значение perplexity. Non-LLM Tasks: в задачах, не связанных с LLM - модели СV, ResNet, диффузионные модели, GCN и GAT демонстрирует сравнимую или лучшую производительность, чем AdamW, при этом используя меньше памяти. Пропускная способность: при предварительном обучении Llama2-7B на 2?A800-80GB Adam-mini показывает производительность на 49,6 % выше, чем AdamW, экономя при этом 33,1 % времени. Текущая реализация Adam-mini поддерживает популярные фреймворки: DDP distributed framework; FSDP distributed framework; DeepSpeed; Hugginface Trainer; Torchtitan. В репозитории проекта представлены примеры кода для SFT и RLHF претрейна LLM: GPT2 (125M-1.5B), NanoGPT codebase на фреймворке DDP https://github.com/zyushun/Adam-mini?tab=readme-ov-file#example-1-gpt2-pre-training Llama3-8B, Torchtitan code base на фреймворке FSDP https://github.com/zyushun/Adam-mini?tab=readme-ov-file#example-2-llama3-8b-pre-training SFT и RLHF Llama2-7B, ReMax codebase на фреймворке DeepSpeed https://github.com/zyushun/Adam-mini?tab=readme-ov-file#example-2-llama2-7b-supervised-fine-tuning-and-rlhf Локальный запуск : # # import from source git clone https://github.com/zyushun/Adam-mini cd Adam-mini pip install -e . # Then use Adam-mini optimizer as follows from adam_mini import Adam_mini optimizer = Adam_mini( named_parameters = model.named_parameters(), lr = lr, betas = (beta1,beta2), eps = eps, weight_decay = weight_decay, model_sharding = True, dim = model_config.dim, n_heads = model_config.n_heads, n_kv_heads = model_config.n_kv_heads, ) # all the hyperparameters, including learning rate (lr), weight_decay, beta1, beta2, eps, its recommend using the same values as for AdamW Arxiv https://github.com/zyushun/Adam-mini?tab=readme-ov-file#example-2-llama2-7b-supervised-fine-tuning-and-rlhf Github [ Stars: 226 | Issues: 8 | Forks: 9] https://github.com/zyushun/Adam-mini?tab=readme-ov-file#example-2-llama2-7b-supervised-fine-tuning-and-rlhf Источник: github.com Комментарии: |
|