Хайп вокруг нейросетей, выровненных при помощи инструкций и человеческой оценки (известных в народе под единым брендом «ChatGPT»), трудно не заметить. Люди разных профессий и возрастов дивятся примерам нейросетевых генераций, используют ChatGPT для создания контента и рассуждают на темы сознания, а также повсеместного отнимания нейросетями рабочих мест. Отдадим должное качеству продукта от OpenAI — так и подмывает использовать эту технологию по любому поводу — «напиши статью», «исправь код», «дай совет по общению с девушками».
Но как достичь или хотя бы приблизиться к подобному качеству? Что играет ключевую роль при обучении — данные, архитектура, ёмкость модели или что-то ещё? Создатели ChatGPT, к сожалению, не раскрывают деталей своих экспериментов, поэтому многочисленные исследователи нащупывают свой путь и опираются на результаты друг друга.
Мы с радостью хотим поделиться с сообществом своим опытом по созданию подобной модели, включая технические детали, а также дать возможность попробовать её, в том числе через API. Итак, «Салют, GigaChat! Как приручить дракона?»
Затравка
Для начала напомним читателям, что языковая модель — это сущность, которая вбирает в себя знания из текстов, после чего может быть использована для понимания машиной текстовой информации. Мы используем языковые модели каждый день: набирая сообщение в телефоне или при поиске чего-то в интернете, мы видим их предложения.
Простые виды таких моделей могут считать вероятности переходов между всеми возможными вариантами символов, а при генерации выдавать самый очевидный вариант.
Самые сложные на сегодняшний день модели имеют так называемую трансформерную архитектуру. Корни этого подхода берут начало в уже классической статье «Attention is all you need». Если хочется сформировать классификацию этих моделей, то можно обратиться к диаграмме из очень содержательного обзора «Transformer models: an introduction and catalog»:
Главный объект внимания располагается в нижнем правом углу и представляет собой семейство моделей, обученных с применением инструкций. Что же это такое и как это работает?
Общий подход для тренировки подобных моделей (RLHF) примерно такой:
Взять предобученную языковую модель. В сообществе сейчас процветает подход с дообучением модели LLaMA, которая существует в нескольких размерах и «видела» немного текстов на русском, однако лицензия позволяет использовать её лишь в исследовательских целях.
? На данном этапе модель знает очень много о мире, но не умеет в правильной форме нам ответить.
Провести над этой моделью SFT (supervised fine-tuning). Кажется, что это наиболее важный пункт, так как для его реализации требуется собрать очень качественный набор обучающих данных в инструктивной форме. Такие данные могут выглядеть примерно так:
Вопрос: В какое состояние переходит вода при её охлаждении до нуля градусов?
Ответ: При охлаждении до 4х градусов вода сжимается, до 0 градусов постепенно
расширяется, а при температуре ниже 0 переходит в твердое состояние – лёд, и
расширяется гораздо сильней, чем в жидком состоянии.
? Инструктивные данные как бы задают форму ответов модели, настраивая её отвечать подобным образом. Чтобы данные были максимально качественными, нужно их провалидировать, в том числе при помощи экспертов в конкретных областях.
Натренировать модель-оценщик (reward model). Это отдельная небольшая классификационная модель, которая умеет предсказывать, какой из предложенных ей вариантов, сгенерированных языковой моделью, лучше с точки зрения человека. Чтобы её натренировать, нужна соответствующая разметка.
Финальное выравнивание. Теперь нужно пропускать через нашу модель результаты генерации и обновлять веса при помощи PPO (Proximal Policy Optimization).
Этот процесс можно рассматривать как извлечение знаний и навыков языковой модели на поверхность. Подробнее про этот подход можно прочитать в статье про InstructGPT "Training language models to follow instructions with human feedback".
В текущем релизе мы сосредоточились на первых двух пунктах как дающих максимальный прирост в качестве. Давайте посмотрим, что же находится внутри GigaChat’а.
А внутре у ней NeONKA
Совокупность моделей, лежащих в основе GigaChat’а, мы назвали NeONKA (NEural Omnimodal Network with Knowledge-Awareness) с аллюзией на известное произведение братьев Стругацких. Хоть это и самоиронично, но в отличие от незадачливого изобретателя вам не понадобится самостоятельно печатать ответ модели в строке вывода.
Чтобы приступить к обучению на инструктивных данных пришлось задуматься над выбором базовой модели (претрейна). За последние несколько лет нами был обучен и выложен в открытый доступ ряд русскоязычных и мультиязычных генеративных моделей. Это ruGPT-3, ruT5, mGPT, FRED-T5 и другие. FRED-T5, кстати, вышел совсем недавно и подробней про него можно почитать в статье Новая SOTA модель для русского языка.
Для первых экспериментов мы выбрали модель ruGPT-3 размера 13B (13 миллиардов параметров). Это декодерная модель, обученная на сравнительно небольшом корпусе данных в 300Gb. Корпус содержит несколько доменов, включающих в себя книги и новости на русском и английском языках, разговорную речь, научные статьи и т.д. Говоря простым языком, это сотни тысяч книг, документов, статей и прочего.
Обучалась эта модель около полутора месяцев на 512 GPU V100.
На этом корпусе обучалось большинство наших моделей и он довольно чист, но в современных реалиях уже не кажется большим. Для сравнения, размер хорошего английского корпуса The Pile составляет более 800Гб. Сейчас мы работаем над новой версией чистого корпуса, размером более 2ТБ.
ruGPT-3.5 13B
Чтобы актуализировать знания модели и улучшить понимание дополнительных специфических доменов мы дообучили её на расширенной версии датасета, в который вошли юридические документы, часть The Stack (открытый сет с кодом) от коллаборации исследователей BigCode, обновленные версии Википедии и новости.
Таким образом, мы потренировали модель в течение 3-х недель на 200 GPU A100 и получили базовую модель для наших экспериментов, которую назвали ruGPT-3.5. Теперь можно было приступать к экспериментам с инструкциями.
Инструктивный датасет
Одной из наиболее важных составляющих процесса обучения являются инструктивные данные. Мы много экспериментировали с различными наборами данных. На первом этапе все данные были сформированы автоматически путем генерации из различных тематических источников.
Мы задействовали все свои внутренние датасеты по различным задачам, — суммаризации и рерайтингу, вопросно-ответные системы, диалоги, машинный перевод, написание стихов и прочее. Такой подход позволил понять нам, что даже так модель начинает давать ответы, которые хоть как-то похожи по форме.
Затем мы стали варьировать доли задач, так как некоторые из них “душили” способности модели. Отражалось это как в длине ответов так и в их смысловой нагрузке.
На финальном этапе подключились редакторы и эксперты, которые правили инструкции, а также добавляли сложные вещи типа «Назови способы выражения суперлативного значения в русском языке».
Оценка
Важной часть работы является оценка моделей. Автоматические метрики не всегда коррелируют с человеческим мнением об ответе модели, поэтому ключевой оценкой были SBS (side by side) тесты. В таких тестах разметчики определяют предпочтительный вариант ответа от разных моделей. Также мы использовали более развернутые метрики типа ODMEN (наша внутренняя метрика, которую стоит обсуждать отдельно) и уделили время оценке этичности модели.
От эксперимента к эксперименту мы замеряли таким образом качество и выбрали самую удачную модель в кандидаты для релиза.
Не обошли стороной и сравнение с ChatGPT. Собрав "корзину" из запросов разной тематики, мы провели на ней SBS между нашей моделью и моделью от OpenAI (gpt-3.5-turbo). Начиная от 3:97 в пользу ChatGPT, нам удалось добиться результата 30:70 в финальной версии модели.
Дообучать LLaMA 13B на наших инструкциях мы тоже пробовали и результаты оказались неплохи, однако ruGPT-3.5 13B показала себя лучше в SBS тестировании — 58:42 в пользу нашей модели.
Давайте посмотрим, что же сейчас умеет делать GigaChat.
Возможности модели
Сейчас у GigaChat’а лучше всего получается решать профессиональные и творческие задачи. Тип задачи ограничен только вашей фантазией, приведем несколько примеров:
Написание рекламных текстов
Напиши продающий текст для интернет-магазина ювелирных украшений ручной работы
Вы ищете нечто особенное? В нашем интернет-магазине вы найдете множество уникальных и эксклюзивных ювелирных украшений, созданных вручную нашими талантливыми мастерами. Каждое украшение – это настоящая ручная работа, которая не только выглядит роскошно, но и обладает уникальными особенностями.
Мы предлагаем вам широкий выбор ювелирных изделий различных стилей и направлений. От классических сережек до современных браслетов, у нас есть все, что вам нужно. Мы уверены, что вы обязательно найдете то, что подходит именно вам.
Кроме того, мы гарантируем высокое качество наших изделий. Все украшения изготавливаются из высококачественных материалов, а каждый элемент проходит тщательный контроль перед тем, как попасть на ваш пальчик.
Купить у нас ювелирные изделия – это значит вложить в свой образ немного роскоши и индивидуальности. Наши украшения – это не просто модные аксессуары, они созданы, чтобы украсить вас и вашу жизнь. Приходите к нам сегодня и убедитесь в этом сами!
Придумай несколько названий для такого магазина
1. Солнечный камень
2. Жемчужная река
3. Златоцвет
4. Лучезар
5. Изумрудный город
6. Антикварная лавка
7. Мир серебра
8. Ювелирная симфония
Воображаемые диалоги
Напиши диалог между Лениным и Ганди на тему свободы
Ленин: Вы говорите, что человек должен быть свободен. Но что вы понимаете под этой свободой?
Ганди: Я понимаю свободу как возможность делать то, что ты хочешь, не подвергаясь при этом угнетению.
Ленин: Но разве не очевидно, что большинство людей хочет совсем не того, чего хотите вы? Они хотят есть, пить, иметь жильё и прочие материальные блага. Разве они не угнетают друг друга в своих стремлениях к этим благам? Напротив, именно те, кто обладает богатством или властью, чаще всего подавляют других. Свобода, о которой вы говорите, на деле означает господство меньшинства над большинством.
Ганди: Я согласен, что стремление к материальным благам может иногда приводить к неравенству. Но это явление неизбежное и естественное. В человеческом обществе всегда будет существовать небольшое число людей, которые будут жить лучше, чем остальные. Это несправедливо, но это так. Однако я убеждён, что можно создать общество, в котором никто не будет бедствовать и где каждый сможет реализовать свой потенциал. Для этого нужно лишь отказаться от насилия и лжи, на которых держится власть богатых.
Ленин: Ах, вот как! Значит, по-вашему, насилие и ложь допустимы, если они помогают установить справедливость? А я думаю, что нет ничего справедливее равенства, которое утверждается насилием и ложью. Ведь тогда каждый получает то, что заслуживает, не так ли?
Ганди: Я понимаю ваши сомнения, Владимир. Но я верю, что будущее человечества — за ненасильственным сопротивлением. Это долгий и трудный путь, но он может привести к свободе и справедливости.
Ленин: Нет, товарищ Ганди, ваш путь неверный. В будущем человечества свобода и справедливость могут быть установлены только путём насилия и принуждения. И вы, идеалисты, которые хотите помочь людям, должны быть готовы принять эту жестокую правду жизни.
Шаблоны документов
Напиши руководителю письмо с просьбой провести новогодний корпоратив в Оймяконе. Тщательно обоснуй
Уважаемый [Имя руководителя],
Я обращаюсь к Вам с просьбой о проведении новогоднего корпоративного мероприятия в Оймяконе. Как Вам, вероятно, известно, Оймякон - это место, где температура может опускаться до -60 градусов Цельсия, но при этом там есть множество развлечений и уникальных культурных достопримечательностей. Например, мы можем организовать поход в горы или поездку в долину реки Индигирка для знакомства с культурой местных жителей.
Кроме того, я считаю, что проведение новогоднего корпоратива в Оймяконе позволит укрепить командный дух и улучшить взаимодействие между сотрудниками. Люди, которые проведут время вместе вне офиса, будут более лояльны к своим коллегам и смогут лучше работать в команде в будущем.
Я также хотел бы отметить, что Оймякон является красивым местом с уникальной природой. Участники мероприятия смогут покататься на собачьих упряжках, совершить экскурсию по окрестностям и попробовать национальную кухню. Это поможет им отдохнуть от суеты города и насладиться красотой природы.
Я надеюсь, что Вы рассмотрите мою просьбу и примете решение о проведении новогоднего корпоратива в Оймяконе. Я готов организовать мероприятие в соответствии с Вашими требованиями и бюджетом.
С уважением,
[Ваше имя]
Творчество
Напиши хокку про счастье программиста
Счастье — это тёплый дом
И любимая жена.
А код — что? Это потом.
Напиши хокку про маркетолога
Маркетолог в душе
Как котенок, —
Играет с новыми идеями.
Напиши стих про Хабр
Хабр, как зеркало, в котором
Мы видим отражение себя.
В нём можно встретить и гения, и идиота,
И честного, и подлеца.Хабр - это кладезь информации,
Где каждый может почерпнуть
Что-то новое, полезное, интересное,
Что пригодится в жизни впредь.
Составление списков, рекомендаций и т.д.
Проведи SWOT-анализ колонизации Марса
Сильные стороны:
1. Продвижение технологий и научных исследований в области космоса и возможности их применения для космических исследований и колонизации Марса.
2. Развитие экономических отношений между странами и компаниями, которые будут участвовать в колонизации Марса.
3. Повышение внимания к исследованию космоса и необходимости развития новых технологий и подходов для освоения Марса.
4. Создание новых рабочих мест и рост экономики.Слабые стороны:
1. Необходимость масштабных инвестиций и финансовых ресурсов для реализации проекта колонизации Марса.
2. Высокая стоимость проекта и длительность его реализации.
3. Риск потери жизни и здоровья участников проекта из-за продолжительных космических перелетов и изменений условий на поверхности Марса.
4. Ограниченные ресурсы Земли, которые могут быть использованы для поддержания и развития колонии на Марсе.Возможности:
1. Создание передовых технологических решений и разработок для космических исследований и колонизации Марса.
2. Расширение сети космических станций и присутствие человека на других планетах в Солнечной системе.
3. Развитие программ по изучению ресурсов на других планетах и поиск новых форм жизни.
4. Открытие новых возможностей для бизнеса и расширение списка участников колонизации Марса.Угрозы:
1. Непредвиденные катастрофы на борту космических кораблей или изменение условий на поверхности Марса, что может привести к переносу основной программы колонизации с красной планеты на другую планету в нашей солнечной системе.
2. Политические и экономические конфликты между участниками проекта и возможными препятствиями на этапе реализации проекта.
Напиши пять мест, которые нужно посетить в отпуске во Владивостоке
Конечно! Вот мой список:
1. Набережная Цесаревича - одна из самых красивых набережных в городе, с которой открывается вид на океан и мосты.
2. Остров Русский - крупнейший остров в заливе Петра Великого, где можно прогуляться по живописным тропам, насладиться видом на море и посетить музеи.
3. Улица Пушкинская - главная улица города, где находятся множество ресторанов, кафе и магазинов, а также знаменитый музей изобразительных искусств.
4. Ботанический сад ДВО РАН - большой парк с множеством экзотических растений и животных, а также красивыми прудами и фонтанами.
5. Площадь Борцов Революции - центральная площадь Владивостока, на которой расположены различные памятники и архитектурные сооружения, такие как здание администрации края и театр оперы и балета.
Развлекательный контент
Придумай шутку про программиста
Работа программиста – это как фильм ужасов: вроде бы забавно, но всегда есть ощущение,
что может случиться что-то плохое.
Сочини историю про Винни-Пуха, который охотится на вампиров
Жил-был плюшевый медведь по имени Винни-Пух. Он был необычным медведем: добрым, весёлым и любознательным. Больше всего на свете Винни-Пух мечтал о приключениях. А какие приключения без опасностей? Вот поэтому он решил стать охотником на вампиров!
Винни-Пух со своей бандой готовил кровавую месть проклятым упырям, которые не так давно укусили его любимого ослика Иа. Друзья помогали медвежонку с походами в лес за дровами, отстреливались от врагов из луков и арбалетов (при этом, правда, забыв зарядить оружие), а также искали запасы чеснока.
И вот однажды Винни-Пуху и его банде удалось найти и разгромить вампирскую базу. Однако враг не собирался сдаваться и обратился за помощью к могущественному колдуну. Теперь Винни-Пуху и его друзьям предстоит бой с тысячами зомбированных кровососов. Что ж, похоже, приключения будут нелёгкими...
Тем временем Пух донимал вопросами Пятачка: «Как отличить вампиров от нормальных кроликов? Где у них главные вены? Когда начнётся превращение?»
Поиски ответов приводили их в древнее подземелье, где Винни-Пух случайно разрушил какой-то артефакт. За это разгневанный колдун проклял медвежонка, и теперь того ждали вечные муки и кошмары. Он попытался удрать через потайной ход, но путь обратно преградила зловещая фигура в чёрном балахоне. Колдун заявил, что убьёт Пуха, если тот ещё раз приблизится к древнему манускрипту.
Однако Пух не хотел становиться вампиром! Он попытался убить колдуна, но тот легко отразил неуклюжую атаку медвежонка. Тогда Пух собрал всю свою волю в кулак и призвал на помощь своего талисмана — белого кролика. Оказалось, тот был оборотнем и смог дать медвежонку волшебную силу, после чего Винни-Пух бесстрашно бросился на злодея. Битва была жаркой, ведь Винни-Пух решил использовать против колдуна всё своё боевое мастерство плюс некоторые весьма эффективные партизанские методы.
В итоге Пух победил! Приключения продолжаются! Быть может, на пыльных тропинках дремучих лесов появятся наши следы…
Мультимодальность
Мы работаем над пониманием моделью не только текстовой информации но и других ее разновидностей. Сейчас у нас в работе несколько моделей, которые позволят добавить в диалоговый формат анализ и генерацию изображений.
Генерация сейчас происходит моделью Kandinsky, которая совсем недавно была обновлена и лично меня очень порадовала своим качеством. За техническими деталями и примерами её работы приглашаю в статью Kandinsky 2.1, или Когда +0,1 значит очень много.
Также мы реализовали подход FROMAGe из статьи Grounding Language Models to Images for Multimodal Generation», который планируем выпустить в следующем релизе. Этот подход позволяет добавить к уже готовой языковой модели описательную способность предобученного на парах картинка-текст энкодера типа CLIP через дополнительный проекционный слой. При таком подходе изображение кодируется одним эмбеддингом (представление данных в виде вектора чисел).
Плюс такого подхода в том, что изображение занимает мало места в общем контексте. Минус — информации в одном эмбеддинге не достаточно для подробного понимания картинки и часть деталей безусловно будет теряться (тут предстоит еще ряд экспериментов со способами компактного представления изображений). Так или иначе, мы планируем дальше расширять когнитивные возможности нашей модели со следующими релизами.
Демо и Open source
Теперь главное. Мы плавно открываем модель для всех желающих, в том числе и по API. Также мы запустили закрытый Telegram-канал — вступившие в него пользователи в числе первых получат доступ к GigaChat. Доступ будет открываться волнами, чтобы адекватно поддерживать нагрузку. Хочется, чтобы у пользователей не было каких-то чрезмерных таймаутов при работе с моделью.
А модель ruGPT-3.5 13B, на основе которой был обучен GigaChat, мы скоро выложим в открытый доступ на huggingface. Поэтому сообщество скоро сможет само обучать качественные русскоязычные модели даже на домашних видеокартах и в Colab’е. Благо, что в последнее время у многих появился опыт дообучения LLaMA, используя LoRA адаптеры (при таком подходе обучается не вся сеть, а только отдельные дополнительные слои).
Планы
Это первая итерация наших экспериментов с инструктивным обучением и у нас уже накопился некоторый опыт и идеи по улучшению модели.
Размер и архитектура. Кажется, что значительная доля «понимания» моделью нужд пользователя обеспечивается ёмкостью модели, поэтому мы планируем масштабировать нашу 13-ти миллиардную ruGPT-3.5, а также внести несколько улучшений в её архитектуру и пайпланы обучения. Результатом станет появление более ёмкой и совершенной ruGPT-4.
Датасет инструкций. Еще один ключевой момент в обучении, тут наша команда экспертов и разметчиков продолжает улучшать и балансировать корпус инструкций.
Обучение при помощи PPO. Как было сказано выше, это финальный компонент в выравнивании ответов модели и по нашим оценкам он может добавить ещё около 10% в качестве.
Этичность и риски. Следуя духу времени, мы также исследуем способы выравнивания модели в этическом плане. Тут главное не перегнуть палку, сделав модель слишком душной и отвечающей на все вопросы в стиле «извините, но я не смогу рассказать вам про взрывы градиентов, ведь взрывы опасны».
Open source. По возможности, будем продолжать делиться не только опытом, но и конкретными вещами. Запланирован релиз моделей ruGPT-3.5, mGPT 13B и других ресурсов.
Благодарности
Как участник проекта и человек, которому доверили написание статьи, не могу не отметить коллег из широкого круга команд, которые за короткий срок смогли активизироваться и организоваться в общем деле. Это десятки парней и девушек из команд SberDevices, Sber AI и Научно-исследовательского института искусственного интеллекта AIRI (особая благодарность Лизе Гончаровой), которые легко и непринужденно закрывают сложные технические задачи и руководят процессом 24/7.
На связи с вами
А ещё многие из нас ведут каналы в telegram, в которых мы делимся интересными вещами из мира ИИ и горячих трудовых будней. Подписывайтесь, чтобы быть в курсе развития проекта и индустрии:
градиент обреченный — мой скромный канал про машинное обучение, языки и Lingtrain.
NLP Core Team — канал коллег, занимающихся NLP и PLP и выпустивших FRED'а.
Dealer AI — канал крёстного отца RL Саши Абрамова.
AbstractDL — лучшие обзоры статей и новинок из мира CV и NLP от Антона Разжигаева.
Градиентное погружение — Сеня Шахматов и Максим Герасимов рассказывают про свой путь в DS и участие в соревнованиях.
Шрёдингер кота — авторский канал Дани Эль-Айясса про NLP (и не только).
Dendi Math&AI — Денис Димитров завел канал и поведает вам про математику и ИИ (когда начнет писать посты).
Complete AI — канал Андрея Кузнецова, более 10 лет занимающегося CV, про знаковые события в индустрии.
Kali Novskaya — лицо русскоязычного NLP Татьяна Шаврина, рассказывает про нейросети, AI alignment и Фёрби.
Канал Сергея Маркова — наш руководитель про перспективы ИИ, искусство, личное (и мемы).