В постоянно меняющейся области машинного обучения модели большого языка (LLM) изменили правила игры, революционизировав обработку естественного языка. Многие сложные модели обладают удивительной способностью генерировать человекоподобный текст, что делает их подходящими для широкого круга как повседневных, так и специализированных задач.

Однако, как следует из названия, эти модели большие. Все модели, которые рассматривались до дебюта LLM, не могут сравниться с этими огромными моделями из-за того, что эти гиганты обычно имеют миллиарды обучаемых параметров. С отличными моделями связаны большие вычислительные требования; обучение этих LLM требует значительных вычислительных ресурсов и финансовых вложений. «Существенный» было бы преуменьшением, когда речь идет о некоторых моделях, таких как GPT-4 OpenAI, что делает его непомерно дорогим для большинства людей и организаций. Подобно обучению, точная настройка этих моделей традиционным способом потребует огромных вычислительных мощностей. Обратите внимание, что я добавил фразу «традиционным способом»; это будет объяснено позже.

Если вы, как и я, не имеете доступа к дорогостоящим вычислениям или не имеете денег, чтобы купить их у облачного провайдера, тонкая настройка LLM может оказаться непростой задачей. Даже некоторые организации, у которых есть доступ к приличным графическим процессорам, могут столкнуться с трудностями при обработке такого большого количества данных, когда LLM дорабатывается. Так как же мы можем совершить такой подвиг; простые смертные?

С ростом популярности больших языковых моделей на основе трансформеров проводилось все больше и больше исследований, чтобы найти способы эффективно «формировать» предварительно обученные огромные LLM для выполнения некоторых конкретных задач. Предварительно обученный LLM — это модель, обученная с использованием огромного набора данных общего назначения. Эти модели можно дополнительно настроить с помощью пользовательского набора данных, чтобы сделать его более подходящим для использования в конкретных задачах. Более эффективные процессы тонкой настройки означают, что эти модели могут быть настроены без больших затрат.

PEFT (параметроэффективная тонкая настройка) — это набор подходов, предназначенных для снижения стоимости тонкой настройки, хранения и развертывания больших моделей. Эта статья Hugging Face о PEFT описывает это следующим образом:

«Подход PEFT точно настраивает только небольшое количество (дополнительных) параметров модели, при этом замораживая большинство параметров предварительно обученных LLM, что значительно снижает затраты на вычисления и хранение. Это также устраняет проблемы катастрофического забывания, поведения, наблюдаемого во время полной тонкой настройки LLM. Подходы PEFT также показали себя лучше, чем точная настройка в режимах с низким объемом данных, и лучше обобщают сценарии вне домена. Его можно применять к различным модальностям, например, к классификации изображений и будке сновидений со стабильной диффузией».

Компания Hugging Face запустила одноименный пакет Python, который, согласно документации, реализует несколько методов PEFT:

  1. ЛоРА
  2. Настройка префикса
  3. P-тюнинг
  4. Оперативная настройка
  5. АдаЛоРА

LoRA (адаптация низкого ранга) — это метод, предложенный для адаптации больших предварительно обученных языковых моделей к конкретным задачам или областям. Он включает в себя замораживание весов предварительно обученной модели и добавление обучаемых матриц ранговой декомпозиции к каждому уровню архитектуры Transformer, что значительно сокращает количество обучаемых параметров для последующих задач. Этот подход позволяет эффективно адаптировать языковые модели с меньшим количеством обучаемых параметров и меньшими требованиями к памяти графического процессора. Дополнительную информацию о LoRA можно найти в документе, в котором представлен метод, доступ к которому можно получить здесь. Кроме того, я нашел это видео, в котором простыми словами объясняется статья, которая мне показалась очень полезной. LoRA использовался в моих поисках тонкой настройки LLM с использованием бесплатных ресурсов.

Muwa — это доработанная модель LoRA, основанная на модели Facebook OPT 1.3b. Muwa была настроена с использованием databricks-dolly-15k, который представляет собой набор данных о выполнении инструкций, относящихся к нескольким категориям, таким как мозговой штурм, классификация, закрытый контроль качества, генерация, извлечение информации, открытый контроль качества и обобщение. Особенность Muwa в том, что для тонкой настройки модели использовались только бесплатные ресурсы, для тонкой настройки модели не использовались платные графические процессоры. Muwa была настроена только с использованием бесплатного уровня Google Colab.

Эта работа в значительной степени вдохновлена ​​моделью Eluwa Юдханджая и др.. Большая часть кода тонкой настройки модели и бенчмаркинга взята из их репозитория, и мне пришлось внести некоторые коррективы в код и изменить некоторые параметры, чтобы убедиться, что процесс тонкой настройки можно выполнить на доступных мне бесплатных ресурсах. в то время.

Обучение

Эта модель была настроена для двух эпох с использованием вышеупомянутого набора данных Databricks Dolly 15K. Эта модель и ее базовая модель (OPT 1.3b) могут быть загружены в 8-битном формате. Блокнот, который использовался для обучения этой модели, можно найти в репозитории GitHub, включая мои заметки по каждому блоку кода.

Модель обучалась только с использованием графического процессора T4, предоставленного Google Colab. Чтобы уместить в нее всю модель и набор данных, в наборе данных было введено ограничение в 1024 токена на запрос. Это было сделано потому, что при значении по умолчанию оперативной памяти графического процессора было недостаточно для точной настройки модели.

При ограничении входных токенов обучение модели занимало ~12 ГБ ОЗУ графического процессора.

Оценка

Muwa был протестирован и оценен с использованием наборов данных SQuAD mini, wikitext и piqa. И Muwa, и его базовая модель OPT 1.3b оценивались отдельно с использованием всех упомянутых наборов данных, и результаты можно найти в репозитории GitHub.

Почему «Мува»?

Как упоминалось выше, Мува был сильно вдохновлен моделью Eluwa, разработанной Yudhanjaya et al. «Элува» на сингальском означает «коза». Продолжая тенденцию называть LLM в честь парнокопытных, эта модель получила название «Мува».

Олени не такие устрашающие, как козы или даже ламы и альпаки, но они все равно представляют собой впечатляющий вид. Они грациозны, проворны и известны своими рогами, которые они сбрасывают и отрастают каждый год. В некоторых культурах олени считаются символом мягкости и доброты.

Вот оно. Это краткое изложение моего опыта использования бесплатных ресурсов для точной настройки больших языковых моделей, чтобы подготовить их к выполнению определенного набора задач. Подробнее о модели можно узнать в репозиториях GitHub и Hugging Face. Они содержат документацию, относящуюся к модели, и некоторые примеры для выполнения вывода с использованием модели и т. д.

Если вы дойдете до этого места в этой статье, я очень хотел бы попросить вас оставить отзыв о моей работе, представленной здесь. Моей конечной целью в этом проекте было проверить, можно ли точно настроить LLM, используя только бесплатные ресурсы, доступные любому, у кого есть подключение к Интернету. Несмотря на то, что OPT 1.3b является небольшой моделью по сравнению с гигантскими моделями, такими как GPT-4, я считаю это победой, потому что, поскольку меньшие модели можно вмешиваться с использованием бесплатных ресурсов, то же самое должно быть возможно и с более крупными моделями, если вы потратите некоторое количество ресурсов. деньги на вычислительные ресурсы.