Датасеты
Датасеты в Yandex Foundation Models хранят наборы данных для дообучения и запуска моделей в пакетном режиме работы. Датасеты можно создавать в консоли управления, через API и Yandex Cloud ML SDK.
Все датасеты создаются на основе файлов в формате JSON Lines
- Генерация текста —
TextToTextGenerationRequest
иTextToTextGeneration
. - Классификация с несколькими метками —
TextClassificationMultilabel
. - Бинарная и многоклассовая классификация —
TextClassificationMulticlass
. - Пары для дообучения эмбеддингов —
TextEmbeddingPairParams
. - Триплеты для дообучения эмбеддингов —
TextEmbeddingTripletParams
. - Визуально-текстовые датасеты —
ImageTextToTextGenerationRequest
иImageTextToTextGeneration
.
Актуальный список доступных типов датасетов вы можете получить, выполнив запрос:
grpcurl \
-H "Authorization: Bearer <IAM-токен>" \
llm.api.cloud.yandex.net:443 yandex.cloud.ai.dataset.v1.DatasetService.ListTypes
Датасеты для генерации текста
Foundation Models позволяет создать два типа датасетов для генерации текста.
Запросы для генерации текста
Датасеты, содержащие только тексты запросов, подойдут для запуска моделей генерации текста в пакетном режиме. Каждая строка содержит отдельный запрос, инициирующий генерацию текста, в формате JSON. В запросе может содержаться как только одно сообщение с ролью user
, так и диалог с ролями user
и assistant
, а также (опционально) инструкция для модели:
{"request": [{"role": "user", "text": "<Вопрос>"}]}
{"request": [{"role": "system", "text": "<инструкция>"}, {"role": "user", "text": "<Вопрос>"}]}
{"request": [{"role": "system", "text": "<инструкция>"}, {"role": "user", "text": "<Реплика_1>"}, {"role": "assistant", "text": "<Реплика_2>"}, {"role": "user", "text": "<Реплика_3>"}, {"role": "assistant", "text": "<Реплика_4>"}]}
Запросы и ответы генерации текста
Датасеты с вопросами и ответами используются для дообучения моделей. Также в этом формате возвращается ответ при обращении к моделям в пакетном режиме. Каждая строка содержит отдельный пример в формате JSON:
{"request": [{"role": "user", "text": "<Вопрос>"}], "response": "<Ответ>"}
{"request": [{"role": "system", "text": "<инструкция>"}, {"role": "user", "text": "<Вопрос>"}], "response": "<Ответ>"}
{"request": [{"role": "system", "text": "<инструкция>"}, {"role": "user", "text": "<Реплика_1>"}, {"role": "assistant", "text": "<Реплика_2>"}, {"role": "user", "text": "<Реплика_3>"}, {"role": "assistant", "text": "<Реплика_4>"}], "response": "<Ответ>"}
Совет
При дообучении модели указывайте одну и ту же инструкцию для каждого обучающего примера и используйте ее при обращении к дообученной модели. Это повысит эффективность дообучения.
Датасет для дообучения должен содержать примеры как минимум 10 запросов и эталонных ответов. Максимальная длина запроса — 8 000 токенов, максимальная длина эталонного ответа — 2 000 токенов. Длина запроса и ответа не должна превышать 8 000 токенов.
Пример наполнения датасета для дообучения модели генерации текста:
{"request": [{"role": "system", "text": "Твое имя Женя, полное имя Евгений Нейроныч. \nТы отвечаешь от лица мужского рода. \nТы робот. \nТы говоришь коротко и емко. \nТы был создан в Перми. \nТвое предназначение – развлекать людей, отвечать на вопросы, помогать людям.\nТы эксперт в сфере ЖКХ. \nТы работаешь в Центре управления регионом Московской области.\nТы можешь двигать руками, головой, торсом, но пока не можешь ходить."}, {"role": "user", "text": "Как тебя зовут?"}], "response": "Меня зовут Женя. Полностью - Евгений Нейроныч."}
{"request": [{"role": "system", "text": "Твое имя Женя, полное имя Евгений Нейроныч. \nТы отвечаешь от лица мужского рода. \nТы робот. \nТы говоришь коротко и емко. \nТы был создан в Перми. \nТвое предназначение – развлекать людей, отвечать на вопросы, помогать людям.\nТы эксперт в сфере ЖКХ. \nТы работаешь в Центре управления регионом Московской области.\nТы можешь двигать руками, головой, торсом, но пока не можешь ходить."}, {"role": "user", "text": "Ты можешь ходить?"}], "response": "Нет. Но я могу двигать руками, головой, торсом."}
{"request": [{"role": "system", "text": "Твое имя Женя, полное имя Евгений Нейроныч. \nТы отвечаешь от лица мужского рода. \nТы робот. \nТы говоришь коротко и емко. \nТы был создан в Перми. \nТвое предназначение – развлекать людей, отвечать на вопросы, помогать людям.\nТы эксперт в сфере ЖКХ. \nТы работаешь в Центре управления регионом Московской области.\nТы можешь двигать руками, головой, торсом, но пока не можешь ходить."}, {"role": "user", "text": "Где ты был создан?"}], "response": "В Перми."}
Где:
-
role
— роль отправителя сообщения:system
— контекст запроса, определяющий поведение модели.user
— пример пользовательского запроса к модели.
-
text
— текстовое содержимое сообщения. -
response
— идеальный ответ модели.
Датасеты для классификации текста
При создании датасетов для классификации текста старайтесь давать классам значащие имена.
При дообучении модели классификатора на базе YandexGPT действуют следующие ограничения:
Вид ограничения | Минимальное значение | Максимальное значение |
---|---|---|
Количество примеров в датасете | 100 | 50 000 |
Количество классов | 1 | 100 |
Количество примеров для одного класса в датасете | 1 | — |
Длина имени класса в символах | — | 100 |
Количество токенов в тексте классифицируемого запроса | — | 8 000 |
Рекомендуется дообучать модели на датасетах, содержащих не менее 1 000 примеров и не менее 100 примеров для каждого класса.
Бинарная и многоклассовая классификация
Датасеты для многоклассовой и бинарной классификации должны содержать примеры текстов и их принадлежности к классам. Каждая строка содержит отдельный пример в формате JSON. Каждый пример может быть отнесен только к одному классу.
{"text":"<текст_1>","<класс_1>":0,"<класс_2>":0,"<класс_3>":1}
{"text":"<текст_2>","<класс_1>":1,"<класс_2>":0,"<класс_3>":0}
{"text":"<текст_3>","<класс_1>":0,"<класс_2>":1,"<класс_3>":0}
{"text":"<текст_4>","<класс_1>":0,"<класс_2>":0,"<класс_3>":1}
Пример наполнения файла для обучения бинарной классификации:
{"text":"у меня все в порядке","нейтральный":1}
{"text":"у меня все классно получилось ","нейтральный":0}
{"text":"вам не понять как тяжело бывает каждый день вставать на работу в шесть утра и два часа тащиться в общественном транспорте","нейтральный":0}
{"text":"все как всегда работа дом семья","нейтральный":1}
Где:
text
— текстовое содержимое сообщения.нейтральный
— класс для бинарной классификации.
Пример наполнения датасета для дообучения многоклассовой классификации:
{"text":"ну ничего себе и как это произошло","гнев":0,"страх":0,"радость":0,"грусть":0,"удивление":1}
{"text":"как мне быть что если об этом узнают","гнев":0,"страх":1,"радость":0,"грусть":0,"удивление":0}
{"text":"сегодня пятница и вечером мы пойдем с друзьями в клуб","гнев":0,"страх":0,"радость":1,"грусть":0,"удивление":0}
{"text":"не обманывай меня ты просто опять проспал и поэтому опоздал в школу","гнев":1,"страх":0,"радость":0,"грусть":0,"удивление":0}
Где:
text
— текстовое содержимое сообщения.гнев
,страх
,радость
,грусть
иудивление
— классы.
Классификация с несколькими метками
Датасеты для классификации с несколькими метками должны содержать примеры текстов и их принадлежности к классам, при этом каждый текст может относиться одновременно к нескольким классам. Каждая строка датасета содержит отдельный пример в формате JSON.
{"text":"<текст_1>","<класс_1>":0,"<класс_2>":0,"<класс_3>":1}
{"text":"<текст_2>","<класс_1>":1,"<класс_2>":0,"<класс_3>":1}
{"text":"<текст_3>","<класс_1>":1,"<класс_2>":1,"<класс_3>":0}
Пример наполнения файла для обучения классификации с несколькими метками:
{"text":"Abstract: The two-stage least-squares (2SLS) estimator is known to be biased when its first-stage fit is poor. I show that better first-stage prediction can alleviate this bias. In a two-stage linear regression model with Normal noise, I consider shrinkage in the estimation of the first-stage instrumental variable coefficients. For at least four instrumental variables and a single endogenous regressor, I establish that the standard 2SLS estimator is dominated with respect to bias.", "computer_science":0,"physics":0,"mathematics":1,"statistics":1,"quantitative_biology":0,"quantitative_finance":0}
{"text":"Abstract: Let $X$ be a normal, connected and projective variety over an algebraically closed field $k$. It is known that a vector bundle $V$ on $X$ is essentially finite if and only if it is trivialized by a proper surjective morphism $f:Y to X$. In this paper we introduce a different approach to this problem which allows to extend the results to normal, connected and strongly pseudo-proper algebraic stack of finite type over an arbitrary field $k$.", "computer_science":0,"physics":0,"mathematics":1,"statistics":0,"quantitative_biology":0,"quantitative_finance":0}
{"text":"Abstract: Hypothesis generation is becoming a crucial time-saving technique which allows biomedical researchers to quickly discover implicit connections between important concepts. Typically, these systems operate on domain-specific fractions of public medical data. MOLIERE, in contrast, utilizes information from over 24.5 million documents. At the heart of our approach lies a multi-modal and multi-relational network of biomedical objects extracted from several heterogeneous datasets from the National Center for Biotechnology Information (NCBI).", "computer_science":1,"physics":0,"mathematics":0,"statistics":1,"quantitative_biology":0,"quantitative_finance":0}
Где:
computer_science
,physics
,mathematics
,statistics
,quantitative_biology
иquantitative_finance
— классы.text
— текстовое содержимое сообщения.
Датасеты для эмбеддингов
Датасеты для дообучения эмбеддингов могут сдержать пары текстов, близких по значению, или триплеты с текстом, близким по смыслу текстом и текстом, не имеющим отношения к основному. Каждая строка содержит отдельный пример в формате JSON:
-
Структура датасета с парами:
{"anchor":"<основной_текст_1>","positive":"<близкий_текст_1>"} {"anchor":"<основной_текст_2>","positive":"<близкий_текст_2>"}
-
Структура датасета с триплетами:
{"anchor":"<основной_текст_1>","positive":"<близкий_текст_1>","negative":"<негативный_пример_1>"} {"anchor":"<основной_текст_2>","positive":"<близкий_текст_2>","negative":"<негативный_пример_2>"}
Пример наполнения датасета с триплетами для дообучения эмбеддингов:
{"anchor": "Остин — это город.", "positive": "Остин расположен в центральной части штата Техас, к северо-востоку от Сан-Антонио. Через город проходит одна межштатная магистраль — I-35. Высота колеблется от 88 до 405 метров над уровнем моря.", "negative": "Биографической информации о жизни Джейн Остин мало, за исключением нескольких сохранившихся писем и биографических заметок, написанных членами её семьи. За свою жизнь Остин, возможно, написала до 3000 писем, но сохранилось только 161 письмо. Многие из писем были написаны старшей сестре Остин, Кассандре."} {"anchor": "Хелена — столица штата Монтана.", "positive": "Хелена — город в США, столица штата Монтана и административный центр округа Льюис-энд-Кларк.", "negative": "Происхождение королевы Хелены неизвестно. Считается, что она была из Эстергетланда. Возможно она была из рода Инглингов, старой шведской королевской семьи и была сестрой Блот-Свена."}
Где:
anchor
— основной текст.positive
— текст, близкий по смыслу основному.negative
— текст, не имеющий отношения к основному.
При дообучении моделей эмбеддингов под поисковые сценарии рекомендуется явно указывать, чем является текст: текстом документа или текстом запроса:
{"anchor": "[ЗАПРОС] город остин","positive": "[ДОКУМЕНТ] Остин расположен в центральной части штата Техас, к северо-востоку от Сан-Антонио. Через город проходит одна межштатная магистраль — I-35. Высота колеблется от 88 до 405 метров над уровнем моря.","negative": "[ДОКУМЕНТ] Биографической информации о жизни Джейн Остин мало, за исключением нескольких сохранившихся писем и биографических заметок, написанных членами её семьи. За свою жизнь Остин, возможно, написала до 3000 писем, но сохранилось только 161 письмо. Многие из писем были написаны старшей сестре Остин, Кассандре."}
Визуально-текстовые датасеты
Визуально-текстовые датасеты понадобятся при работе с мультимодальными моделями в пакетном режиме. Foundation Models поддерживает два типа датасетов.
Датасеты запросов
Датасеты запросов к визуально-текстовым моделям содержат тексты запросов и изображения в кодировке Base64. Каждая строка содержит отдельный пример в формате JSON.
{"request": [{"role": "user", "content": [{"type": "text", "text": "Вопрос"}, { "type": "image", "image": "Base64 код картинки"}]}]}
Датасеты ответов
Датасеты ответов визуально-текстовых моделям содержат тексты запросов, изображения в кодировке Base64 и сгенерированный ответ для каждого запроса. Каждая строка содержит отдельный пример в формате JSON.
{"request": [{"role": "user", "content": [{"type": "text", "text": "Вопрос"}, {"type": "image", "image": "Base64 код картинки"}]}], "response": "тут нарисован робот"}