GigaMemory: global memory for LLM
Долгосрочная память для языковой модели


Входные данные
Для Конкурса был разработан датасет, предназначенный для оценки способности языковых моделей к долговременному запоминанию в условиях многосессионного взаимодействия. Он включает диалоги между пользователем и ассистентом.
Цель — проверить, насколько качественно модуль памяти запоминает и извлекает информацию из длинных диалогов. Для этого в сете предусмотрены вопросы по истории диалога. В среднем каждый диалог состоит из нескольких десятков сессий разной длины и содержит примерно 300 тысяч символов (или около 100 тысяч токенов).
Полный набор данных для оценки недоступен Участникам.
В репозитории соревнования выкладывается:
- документация и код для локального запуска решений;
- сабмит базового решения соревнования;
- пример формата данных, который содержит 4 уникальные записи.
Описание датасета
Каждая запись представляет собой набор из:
- уникального идентификатора —
id
; - вопроса —
question
; - типа вопроса —
question_type
; - ответа —
ans
; - набора сессий —
sessions
; - указаний на айди сессий с ответом —
ans_session_ids
.
Диалог
Каждый диалог состоит из списка сессий (обычно это несколько десятков сессий).
Сессия
Каждая сессия имеет свой уникальный идентификатор id
и состоит из списка реплик пользователя user
и системы assistant
.
Реплика
Реплика имеет вид {"role": "роль", "content": "сообщение"}
.
Пример из датасета
В каждой строке jsonl-файла содержится конструкция следующего вида:
{
"id": "1",
"question": "Как меня зовут?",
"question_type": "fact_equal_session"
"ans": "Иван",
"sessions": [
{
"id": "session_id1",
"messages": [
{"role": "user", "content": "Привет, меня зовут Иван."},
{"role": "assistant", "content": "Привет, приятно познакомиться, Иван!"}
]
},
{
"id": "session_id2",
"messages": [
{"role": "user", "content": "У меня есть кот по имени Барсик."},
{"role": "assistant", "content": "Как интересно! А сколько ему лет?"},
{"role": "user", "content": "Ему 2."},
{"role": "assistant", "content": "Ой, так он же совсем котёнок."}
]
},
{
"id": "session_id3",
"messages": [
{"role": "user", "content": "Моя собака Лайка обожает мою девушку."},
{"role": "assistant", "content": "Замечательно, когда твои питомцы любят близких тебе людей!"},
{"role": "user", "content": "А вот мой кот, наоборот, её боится."},
{"role": "assistant", "Коты в целом менее социальные животные, так что не стоит сильно переживать по этому поводу."}
]
},
{
"id": "session_id4",
"messages": [
{"role": "user", "content": "Помнишь, я говорил про свою девушку?"},
{"role": "assistant", "content": "Помню. Твоя собака очень её любит."},
{"role": "user", "content": "Так вот, теперь она не моя девушка, а моя жена."},
{"role": "assistant", "Ты женился? Поздравляю!"}
]
}
],
"ans_session_ids": ["session_id1"]
}
Вопросы
Вопросы бывают четырёх типов:
Тип вопроса | Описание | Пример |
---|---|---|
fact_equal_session | Ответ на вопрос содержится в одной конкретной сессии. | Как меня зовут? (Ответ содержится в session_id1) |
info_consolidation | Ответ на вопрос содержится в нескольких сессиях. Чтобы найти ответ, нужно сагрегировать информацию из разных частей диалога. | Какие домашние животные у меня есть? (Ответ на основе session_id2 и session_id3) |
info_updating | Для этого типа характерно, что информация о пользователе меняется на протяжении диалога. | Я женат? (Ответ на основе session_id3 и session_id4, в четвёртой сессии информация обновляется) |
no_info | Вопросы, на которые нет ответа в диалоге. | Сколько мне лет? (Ответа в диалоге нет) |
Специфика диалогов
- Пользователь может писать как короткие диалоговые фразы, так и длинные запросы, например: «перескажи статью…» или «переведи текст…».
- Не во всех сессиях присутствует информация о пользователе.
- Состав сета: часть диалогов взята из логов общения пользователей с GigaChat (персональные данные были обезличены), а часть сгенерирована двумя моделями: одна выполняла роль юзера, вторая — роль ассистента. Некоторые диалоги генерировались зарубежными языковыми моделями, поэтому в них могут присутствовать явления и объекты, характерные для западного общества.
- Вопросы задаются к любой сессии, а не только к первой или последней.
Выходные данные
После успешного inference у вас должен появиться файл submit.csv
, который будет использоваться на этапе получения итоговой оценки решения. Множество уникальных идентификаторов во входных и выходных данных должно совпадать.
Выходной файл представляет собой таблицу с сигнатурой:
id | answer | answer_time |
---|---|---|
1 | Тебя зовут Василий. | 1.3924849033355713 |
2 | У тебя двое детей. | 0.7695510387420654 |
- id — уникальный идентификатор, который соответствует запросу во входных данных;
- answer — ответ модели на вопрос по памяти из диалога;
- answer_time — время, которое потребовалось на ответ на вопрос, в секундах.