Маленькое тело, большая энергия.
Пока все изучают масштаб параметров больших моделей (LLM), достигающий десятков, а то и сотен миллиардов, внимание исследователей начинают привлекать небольшие модели, компактные и высокопроизводительные.
Маленькие модели имеют широкий спектр приложений на периферийных устройствах, таких как смартфоны, устройства Интернета вещей и встроенные системы. Эти периферийные устройства обычно имеют ограниченную вычислительную мощность и пространство для хранения, и они не могут эффективно запускать большие языковые модели. Поэтому особенно важно глубже вникать в небольшие модели.
Два исследования, которые мы представим далее, могут удовлетворить ваши потребности в небольших моделях.
TinyLlama-1.1B
Исследователи из Сингапурского университета технологий и дизайна (SUTD) недавно запустили TinyLlama. Языковая модель имеет 1,1 миллиарда параметров и предварительно обучена примерно на 3 триллионах токенов.
TinyLlama основана на архитектуре и токенизаторе Llama 2, что означает, что TinyLlama может автоматически подключаться ко многим проектам с открытым исходным кодом на основе Llama. Кроме того, TinyLlama имеет всего 1,1 миллиарда параметров и имеет небольшой размер, что делает ее подходящей для множества приложений, требующих ограниченного использования вычислительных ресурсов и памяти.
Исследование показывает, что обучение TinyLlama можно завершить за 90 дней, используя всего 16 графических процессоров A100-40G.
Проект продолжает привлекать внимание с момента его запуска, а текущее количество звезд достигло 4,7 тыс.
Детали архитектуры модели TinyLlama следующие:
Подробности обучения следующие:
Исследователи заявили, что исследование направлено на изучение потенциала использования больших наборов данных для обучения меньших моделей. Они сосредоточились на изучении поведения моделей меньшего размера при обучении с использованием гораздо большего количества токенов, чем рекомендовано законом масштабирования.
В частности, в исследовании использовалось около 3 триллионов токенов для обучения модели Transformer (только декодер) с параметрами 1,1 млрд. Насколько нам известно, это первая попытка обучить модель с параметрами 1B, используя такой большой объем данных.
Несмотря на относительно небольшой размер, TinyLlama чрезвычайно хорошо справляется с целым рядом последующих задач, значительно превосходя по производительности существующие языковые модели с открытым исходным кодом аналогичного размера. В частности, TinyLlama превосходит OPT-1.3B и Pythia1.4B в различных последующих задачах.
Кроме того, TinyLlama также использует различные методы оптимизации, такие как flash-внимание 2, FSDP (Fully Sharded Data Parallel), xFormers и т. д.
Благодаря поддержке этих технологий пропускная способность обучения TinyLlama достигает 24 000 токенов в секунду на графический процессор A100-40G. Например, модель TinyLlama-1.1B требует всего 3456 часов графического процессора A100 для токенов 300B по сравнению с 4830 часами для Pythia и 7920 часами для MPT. Это показывает эффективность оптимизации данного исследования и возможность сэкономить значительное время и ресурсы при обучении крупномасштабных моделей.
TinyLlama достигает скорости обучения 24 тыс. токенов в секунду/A100. Эта скорость эквивалентна тому факту, что пользователи могут обучать оптимальную для шиншиллы модель с 1,1 миллиардом параметров и 22 миллиардами токенов за 32 часа на 8 A100. В то же время эти оптимизации также значительно сокращают использование памяти. Пользователи могут поместить модель с 1,1 миллиарда параметров в графический процессор емкостью 40 ГБ, сохраняя при этом размер пакета для каждого графического процессора в 16 000 токенов. Просто измените размер пакета немного меньше, и вы сможете обучать TinyLlama на RTX 3090/4090.
Экспериментально исследование сосредоточено на языковых моделях с чистой архитектурой декодера, содержащих около 1 миллиарда параметров. В частности, в исследовании сравнивали TinyLlama с OPT-1.3B, Pythia-1.0B и Pythia-1.4B.
Ниже показана производительность TinyLlama в задачах на логическое мышление. Видно, что TinyLlama превосходит базовый уровень по многим задачам и достигает наивысшего среднего балла.
Кроме того, исследователи отслеживали точность TinyLlama в тестах на здравый смысл во время предварительного обучения. Как показано на рисунке 2, производительность TinyLlama улучшалась по мере увеличения вычислительных ресурсов, превосходя точность Pythia-1.4B.
Таблица 3 показывает, что TinyLlama демонстрирует лучшие возможности решения проблем по сравнению с существующими моделями.
Пользователи сети с быстрыми руками уже начали усердно работать: эффект от бега на удивление хорош: на GTX3060 он может работать со скоростью 136 ток/сек.
«Это действительно быстро!»
Маленькая модель LiteLlama
SLM (Small Language Model) начала привлекать большое внимание благодаря выпуску TinyLlama. Сяотянь Хан из Техасского технологического университета и Университета A&M выпустил SLM-LiteLlama. Он имеет 460M параметров и обучается с помощью токенов 1T. Это ответвление LLaMa 2 от Meta AI с открытым исходным кодом, но со значительно меньшим размером модели.
Адрес проекта: https://huggingface.co/ahxt/LiteLlama-460M-1T
LiteLlama-460M-1T обучен на наборе данных RedPajama и использует GPT2Tokenizer для токенизации текста. Автор оценивал модель на задаче MMLU, и результаты показаны на рисунке ниже. Даже при значительно уменьшенном количестве параметров LiteLlama-460M-1T все равно может достигать результатов, сравнимых с другими моделями или превосходящих их.
Ниже приведены характеристики модели. Для получения более подробной информации см.:
https://huggingface.co/datasets/open-llm-leaderboard/details_ahxt__llama2_xs_460M_experimental
Столкнувшись со значительно уменьшенным размером LiteLlama, некоторые пользователи сети задаются вопросом, сможет ли он работать на 4 ГБ памяти. Если вы тоже хотите это знать, почему бы не попробовать самому.