Недавно мне пришло в голову, что я хочу обучить свою модель LLM в стиле instruct, например Llama-3.2-..B-Instruct или Mistral(/Mixtral). Однако я столкнулся с дилеммой выбора архитектуры. Какую архитектуру стоит выбрать: GPT-2, Llama, LLama-Vision, Mixtral или какую-то GPT-3-подобную с разреженным вниманием от Сбера? Я долго размышлял над этим вопросом, но так и не пришел к однозначному решению, так как у каждой из архитектур есть свои плюсы и минусы. Мои цели таковы: обучить модель с нуля до уровня, при котором она сможет давать понятные и связные ответы с определенной степенью смысла. В данный момент обучающие данные не полностью готовы, но я планирую собрать около 15-20 ГБ простого текста и 5-10 ГБ данных в формате вопрос-ответ. Объем потребляемой видеопамяти для меня не является критичным, поскольку я собираюсь ограничиться моделью в 8 миллиардов параметров и воспользуюсь арендованными видеокартами. Если возникнут сложности, я готов использовать DeepSpeed и разделить датасет на более мелкие куски размером по 50 МБ. Какую архитектуру вы посоветуете выбрать для этой задачи?
Выбор архитектуры для обучения языковой модели большого размера (LLM) зависит от множества факторов, включая цели, доступные ресурсы и особенности архитектур. Вот несколько рекомендаций, которые могут помочь вам в выборе: 1. **LLaMA**: Модель LLaMA, особенно в варианте "Instruct", может быть хорошим выбором, так как она была создана с учетом задач, связанных с вопросами и ответами, и предоставляет высокую производительность при относительно компактной архитектуре. Если ваш фокус — обучение модели для выполнения инструкций и понимания языка, эта модель может оказаться весьма эффективной. 2. **Mistral**: Mistral и его вариации (включая Mixtral) также представляют интерес. Они предлагают улучшенное поведение на заданиях и обычно могут хорошо справляться с требуемыми задачами. Если вы хотите экспериментировать с архитектурой, механизмы Mixtral (разреженное внимание) могут предоставить преимущества при обработке больших контекстов. 3. **GPT-2 и GPT-3**: Эти модельные архитектуры хорошо изучены и обладают обширным сообществом, что облегчает получение поддержки и ресурсов. Однако они могут быть менее оптимизированы для задач инструкции по сравнению с LLaMA или Mistral. 4. **Оцените доступность данных и качество**: Учитывая, что вы собираетесь использовать текстовые данные и данные в формате Вопрос-Ответ, обращайте внимание на качество этих данных. LLaMA и Mistral могут быть более эффективными при работе с более специализированными первичными данными, что может привести к лучшим результатам в вопросах и ответах. 5. **Инструменты для обучения**: Использование DeepSpeed для распределенного обучения может помочь вам работать с большими объемами данных и моделей. Убедитесь в наличии необходимых ресурсов и оптимизированной инфраструктуры. 6. **Опыт и поддержка сообщества**: Если вы только начинаете, рассмотрите модели, у которых есть активное сообщество и множество обучающих материалов, как, например, у LLaMA или GPT. Это может существенно упростить процесс. На основании перечисленного, **я бы рекомендовал начать с LLaMA или Mistral**, так как они более специализированы для задач инструкции и могут дать лучшие результаты для вашей задачи. GPT-2 и GPT-3 тоже являются хорошими вариантами, но возможны определенные пределы в их способности обрабатывать инструкции на более высоком уровне.
Трансформер, это де-факто стандарт
У тебя ошибка - 'обучить с нуля'.
1. llama3 обучалась на 15Тера-токенах, это примерно на три порядка больше чем в твоих гигабайтах, этого катастрофически мало, для того что бы что то внятное получилось.
2. Для обучения модели, по мощности сравнимой с gpt3.5 нужно 10^26 степени flops (очень приблизительная оценка, скорее всего занижена, так как все очень зависит от использованного оборудования), посчитайте необходимое количество GPU и энергии, для того что бы достичь этого
-------------
Что можно сделать и почему скорее всего это то же не получится и почему это тоже будет дорого - можно взять уже обученную (модели с пометкой completion а не instruction) модель и дообучить на своих данных. Если делать это в лоб то качество работы результата значительно упадет, если исходные данные будут хоть немного противоречить (не совпадать) с изначальной обучающей выборкой (есть алгоритмы анализа обучающей выборки на сравнение с исходной). Ни одна компания, создающая топовые модели не делится исходными данными (это похоже стало по цене сравнимо с затратами на вычисления), а те что делятся - очень слабые, хуже openai gpt3.5 это уже давно стало минимальным эталоном, все что хуже не будет адекватной instruction. Единственное, где finetuning еще как то можно использовать, - это доработка формата ответа (обучающую выборку собирают в купе с ответами самой модели или анализируя эти данные с ее помощью), а так же для фиксации направления использования (не instruction), например превратить модель в классификатор, ты ей текст, а она тебе ответ - типа сообщение содержит хейт, например буквой ответит).
После тюнинга модели на своих данных, ее нужно продолжить дообучать, с помощью RLHF, это когда куча не дешевых людей (потому как дешевых уже давно заменяют другой моделью, например openai) анализируют ответы и помечают где модель ответила правильно а где нет, еще лучше когда дают оценку, или выбирают лучший из нескольких.
Т.е. тебе нужна база вопросов, это еще одна обучающая выборка (специально подготовленная), скорее всего это еще одна причина, почему существуют сайты типа чат арены, где 'за бесплатно' у народа собирают огромную базу вопросов и их бенчмарков.
p.s. резюмирую, если у тебя в кармане нет порядка $10кк а скорее всего в десятки раз больше, то 'с нуля' обучать свою модель у тебя не получится.
В мире не так много компаний которые в принципе на это способны - в россии например сбербанк (гигачат) и яндекс (yandex gpt), последние этим занимаются давно (за долго до появления chatgpt) и единственная их проблема - не хватает денег, и возможно специалистов.