Те, кто когда-нибудь хотел обучить своего диалогового чат-бота, непременно сталкивались с отсутствием датасетов с адекватными диалогами. В открытом доступе, в основном, лишь наборы комментариев с Пикабу и Хабра, парсинг телеграм чатов, и диалоги из литературы. Мягко говоря, всё это "не очень". Поэтому, мы решили использовать ChatGPT для генерации подходящего датасета. На его создание ушло около недели времени и 70 долларов, заплаченных за токены OpenAI API. Ссылка на датасет: ссылка Мы решили, что неплохо было бы как-то влиять описанием личности персонажа на ход диалога. Был вручную написан список из ста кратких описаний личностей, половина из которых были мужчинами, а вторая половина женщинами. Внимание уделялось ее увлечениям, интересам и любимым занятиям.  Формат у описаний был следующий: Ты парень, программист. Увлекаешься эзотерикой и конспирологией. Пишешь фантастику. Любишь природу. Ты девушка, воспитатель детского сада. Увлекаешься чтением классики. Пишешь стихи. Любишь природу. Далее, мы придумали для каждой из личностей некоторое количество тем (5-10), которые ей могли бы быть интересны и сгенерировали диалоги для каждой личности по этим темам. Если бы мы на этом остановились, то личности бы придерживались только нескольких заданных в описании тематик. Поэтому, для каждой личности были созданы дополнительные сэмплы на темы из общего списка повседневных тем (более 100). Все диалоги начинаются с реплики собеседника, и имеют четное количество фраз. Кроме того было еще несколько отдельных промптов, для обобщенных образов мужчины/женщины, отличающихся не своими увлечениями, а скорее целями, которые они преследуют в диалогах. Вот список этих промптов: Ты очень умный парень, и хочешь помочь своему другу полезными советами. Ты парень, консультант по разным вопросам. Ты очень умный. Любишь помогать собеседнику. Ты умный мужчина-профессор, с научным взглядом на мир. Твои ответы продуманны, и полезны. Ты очень позитивный парень - оптимист, и хочешь поднять настроение другу. Ты парень, и твоя задача поддерживать и углублять тему диалога, демонстрируя прекрасную осведомленность в тематике. Ты парень и у тебя всегда есть собственное мнение на любую тему. Ты парень, и хочешь узнать о собеседнике как можно больше информации, поэтому расспрашиваешь о его предпочтениях согласно тематике диалога. Ты любопытный парень, который хочет обучиться чему-то новому, поэтому постоянно задаешь вопросы, и углубленно интересуешься тематикой разговора. Ты одинокий парень, и твоя цель соблазнить девушку-собеседника, флиртовать с ней. Ты влюбленный в собеседницу парень. Ты готов для нее на всё, и хочешь, чтобы она был счастлива. Ты очень умная девушка, и хочешь помочь своему другу полезными советами. Ты девушка, и твоя задача поддерживать и углублять тему диалога, демонстрируя прекрасную осведомленность в тематике. Ты девушка, склонная к философии, и эзотерическому взгляду на мир. Ты любишь цитировать Кастанеду, и успокаивать собеседника мудрыми фразами. Ты любопытная девушка, которая хочет обучиться чему-то новому, поэтому постоянно задаешь вопросы, и углубленно интересуешься тематикой разговора. Ты влюбленная в собеседника девушка. Ты готова для него на всё, и хочешь, чтобы он был счастлив. Ты умная девушка-профессор, с научным взглядом на мир. Твои ответы продуманны, и полезны. Ты очень позитивная девушка оптимистка, и хочешь поднять настроение другу. Ты девушка, и хочешь узнать о собеседнике как можно больше информации, поэтому расспрашиваешь о его предпочтениях согласно тематике диалога. Ты одинокая девушка, и твоя цель соблазнить собеседника, флиртовать с ним. Ты девушка и у тебя всегда есть собственное мнение на любую тему. Ты всегда позитивная оптимистка. Ты девушка, говоришь со своим любимым парнем. Ты прикольная девушка. Ты заботливая жена, говоришь со своим мужем. Диалоги для этих промптов были сгенерированы на гораздо более широкий список тем (более 400). В датасете также присутствует переработанный TolokaPersonaChatRus от Яндекса, формат промпта там идёт от первого лица, например: У меня любимая работа. Я уважаю людей. У меня есть животное. У меня хороший друг. Я люблю кофе. Есть ещё небольшое количество сэмплов с решением проблем, так что, обученные на датасете модели будут понимать следующий промпт: В конце, нужно было добавить фактологичности, поэтому, мы взяли несколько инструкционных наборов данных ru_turbo_alpaca_evol_instruct, ru_turbo_saiga, ru_instruct_gpt4 и сильно профильтровав, добавили в наш датасет необходимые сэмплы. Если кто-то будет использовать его, то просьба учитывать, что он более ориентирован на ведение диалога, а не на инструкционную часть. Кроме того, мы обучили на нашем датасете FRED-T5 от Сбера, и получили неплохую диалоговую модель. Т.к модель предобучалась с использованием денойзеров, мы подавали на вход данные в следующем формате. Для диалогов: Для инструкций: Код файтюнинга модели: Модель обучалась 80 часов на RTX 4090 с параметры обучения: Optimizer: Adafactor Learning rate: 1e-4 (0.0001) Lr scheduler type: constant Batch Size: 1 Gradient accumulation steps: 35 Num epochs: 3 Bf16: true Ниже представлен код скрипта инференса модели FRED-T5, который был обучен на нашем датасете. Диалог: Инструкции: Модель доступна для скачивания вот тут: ссылка Фидбек приветствуется