Это не чат, это GigaChat. Русскоязычная ChatGPT от Сбера

Дракончик ждёт вас ниже

Хайп вокруг нейросетей, выровненных при помощи инструкций и человеческой оценки (известных в народе под единым брендом «ChatGPT»), трудно не заметить. Люди разных профессий и возрастов дивятся примерам нейросетевых генераций, используют ChatGPT для создания контента и рассуждают на темы сознания, а также повсеместного отнимания нейросетями рабочих мест. Отдадим должное качеству продукта от OpenAI — так и подмывает использовать эту технологию по любому поводу — «напиши статью», «исправь код», «дай совет по общению с девушками».

Но как достичь или хотя бы приблизиться к подобному качеству? Что играет ключевую роль при обучении — данные, архитектура, ёмкость модели или что-то ещё? Создатели ChatGPT, к сожалению, не раскрывают деталей своих экспериментов, поэтому многочисленные исследователи нащупывают свой путь и опираются на результаты друг друга.

Мы с радостью хотим поделиться с сообществом своим опытом по созданию подобной модели, включая технические детали, а также дать возможность попробовать её, в том числе через API. Итак, «Салют, GigaChat! Как приручить дракона?»

### Затравка

Готовимся к колонизации Марса

Для начала напомним читателям, что языковая модель — это сущность, которая вбирает в себя знания из текстов, после чего может быть использована для понимания машиной текстовой информации. Мы используем языковые модели каждый день: набирая сообщение в телефоне или при поиске чего-то в интернете, мы видим их предложения.

Простые виды таких моделей могут считать вероятности переходов между всеми возможными вариантами символов, а при генерации выдавать самый очевидный вариант.

Самые сложные на сегодняшний день модели имеют так называемую трансформерную архитектуру. Корни этого подхода берут начало в уже классической статье «[[Attention is all you need]]». Если хочется сформировать классификацию этих моделей, то можно обратиться к диаграмме из очень содержательного обзора «[[Transformer models: an introduction and catalog]]»:

Взято из статьи “Transformer models: an introduction and catalog”

Главный объект внимания располагается в нижнем правом углу и представляет собой семейство моделей, обученных с применением инструкций. Что же это такое и как это работает?

Общий подход для тренировки подобных моделей (RLHF) примерно такой:

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




> 💡 На данном этапе модель знает очень много о мире, но не умеет в правильной форме нам ответить.

  2. Провести над этой моделью SFT (supervised fine-tuning). Кажется, что это наиболее важный пункт, так как для его реализации требуется собрать очень качественный набор обучающих данных в инструктивной форме. Такие данные могут выглядеть примерно так:



    
    
    Вопрос: В какое состояние переходит вода при её охлаждении до нуля градусов?
    
    Ответ: При охлаждении до 4х градусов вода сжимается, до 0 градусов постепенно
    расширяется, а при температуре ниже 0 переходит в твердое состояние – лёд, и
    расширяется гораздо сильней, чем в жидком состоянии.

> 💡 Инструктивные данные как бы задают форму ответов модели, настраивая её отвечать подобным образом. Чтобы данные были максимально качественными, нужно их провалидировать, в том числе при помощи экспертов в конкретных областях.

  3. Натренировать модель-оценщик (reward model). Это отдельная небольшая классификационная модель, которая умеет предсказывать, какой из предложенных ей вариантов, сгенерированных языковой моделью, лучше с точки зрения человека. Чтобы её натренировать, нужна соответствующая разметка.

  4. Финальное выравнивание. Теперь нужно пропускать через нашу модель результаты генерации и обновлять веса при помощи 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 и Фёрби.

   [[Канал Сергея Маркова]] — наш руководитель про перспективы ИИ, искусство, личное (и мемы).