Дообучение классификаторов на базе YandexGPT
В Yandex DataSphere
Примечание
Дообучение фундаментальных моделей находится на стадии Preview.
Примечание
Классификаторы на базе YandexGPT находятся на стадии Preview.
Чтобы дообучить классификатор YandexGPT:
- Подготовьте инфраструктуру.
- Подготовьте данные для обучения.
- Дообучите классификатор.
- Отправьте запрос к классификатору.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Перед началом работы нужно зарегистрироваться в Yandex Cloud, настроить сообщество и привязать к нему платежный аккаунт:
- На главной странице DataSphere
нажмите Попробовать бесплатно и выберите аккаунт для входа — Яндекс ID или рабочий аккаунт в федерации (SSO). - Выберите организацию Yandex Cloud Organization, в которой вы будете работать в Yandex Cloud.
- Создайте сообщество.
- Привяжите платежный аккаунт к сообществу DataSphere, в котором вы будете работать. Убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе
ACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его в интерфейсе DataSphere.
Подготовьте инфраструктуру
Войдите в консоль управления
Если у вас есть активный платежный аккаунт, на странице облака
Примечание
Если вы работаете с Yandex Cloud через федерацию удостоверений, вам может быть недоступна платежная информация. В этом случае обратитесь к администратору вашей организации в Yandex Cloud.
Создайте каталог
- В консоли управления
выберите облако и нажмите кнопку Создать каталог. - Введите имя каталога, например
data-folder
. - Нажмите кнопку Создать.
Создайте сервисный аккаунт для проекта DataSphere
Обращаться к дообученной модели можно через интерфейс DataSphere (Playground) или через API Foundation Models. Если вы планируете делать запросы через API, вам понадобится сервисный аккаунт с ролью ai.languageModels.user
. Сервисный аккаунт должен быть участником проекта DataSphere, в котором будет дообучен классификатор.
- Перейдите в каталог
data-folder
. - В списке сервисов выберите Identity and Access Management.
- Нажмите кнопку Создать сервисный аккаунт.
- Введите имя сервисного аккаунта, например
ai-user
. - Нажмите Добавить роль и назначьте сервисному аккаунту роль
ai.languageModels.user
. - Нажмите кнопку Создать.
Добавьте сервисный аккаунт в проект
Чтобы сервисный аккаунт мог обращаться к дообученному классификатору, добавьте его в список участников проекта.
-
Выберите нужный проект в своем сообществе или на главной странице
DataSphere во вкладке Недавние проекты. - На вкладке Участники нажмите Добавить участника.
- Выберите аккаунт
ai-user
и нажмите Добавить.
Подготовьте данные для обучения
Примечание
Чтобы повышать качество генерируемых ответов, YandexGPT API логирует промты пользователей. Не передавайте в запросах чувствительную информацию и персональные данные.
При дообучении модели классификатора на базе YandexGPT действуют следующие ограничения:
Вид ограничения | Минимальное значение | Максимальное значение |
---|---|---|
Количество примеров в датасете | 100 | 50 000 |
Количество классов | 2 | 100 |
Количество примеров для одного класса в датасете | 1 | — |
Длина имени класса в символах | — | 100 |
Количество символов в тексте классифицируемого запроса | — | 10 000 |
Рекомендуется дообучать модели на датасетах, содержащих не менее 1000 примеров и не менее 100 примеров для каждого класса.
Пример наполнения файла для обучения бинарной классификации:
{"text":"у меня все в порядке","нейтральный":1,"эмоциональный":0}
{"text":"у меня все классно получилось ","нейтральный":0,"эмоциональный":1}
{"text":"вам не понять как тяжело бывает каждый день вставать на работу в шесть утра и два часа тащиться в общественном транспорте","нейтральный":0,"эмоциональный":1}
{"text":"все как всегда работа дом семья","нейтральный":1,"эмоциональный":0}
Где:
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
— текстовое содержимое сообщения.гнев
,страх
,радость
,грусть
иудивление
— классы.
Пример наполнения файла для обучения классификации с несколькими метками:
{"computer_science":0,"physics":0,"mathematics":1,"statistics":1,"quantitative_biology":0,"quantitative_finance":0,"text":"Title: Bias Reduction in Instrumental Variable Estimation through First-Stage Shrinkage\nAbstract: The two-stage least-squares (2SLS) estimator is known to be biased when its\nfirst-stage fit is poor. I show that better first-stage prediction can\nalleviate this bias. In a two-stage linear regression model with Normal noise,\nI consider shrinkage in the estimation of the first-stage instrumental variable\ncoefficients. For at least four instrumental variables and a single endogenous\nregressor, I establish that the standard 2SLS estimator is dominated with\nrespect to bias. The dominating IV estimator applies James-Stein type shrinkage\nin a first-stage high-dimensional Normal-means problem followed by a\ncontrol-function approach in the second stage. It preserves invariances of the\nstructural instrumental variable equations.\n"}
{"computer_science":0,"physics":0,"mathematics":1,"statistics":0,"quantitative_biology":0,"quantitative_finance":0,"text":"Title: Essentially Finite Vector Bundles on Normal Pseudo-proper Algebraic Stacks\nAbstract: Let $X$ be a normal, connected and projective variety over an algebraically\nclosed field $k$. It is known that a vector bundle $V$ on $X$ is essentially\nfinite if and only if it is trivialized by a proper surjective morphism $f:Y\\to\nX$. In this paper we introduce a different approach to this problem which\nallows to extend the results to normal, connected and strongly pseudo-proper\nalgebraic stack of finite type over an arbitrary field $k$.\n"}
{"computer_science":1,"physics":0,"mathematics":0,"statistics":1,"quantitative_biology":0,"quantitative_finance":0,"text":"Title: MOLIERE: Automatic Biomedical Hypothesis Generation System\nAbstract: Hypothesis generation is becoming a crucial time-saving technique which\nallows biomedical researchers to quickly discover implicit connections between\nimportant concepts. Typically, these systems operate on domain-specific\nfractions of public medical data. MOLIERE, in contrast, utilizes information\nfrom over 24.5 million documents. At the heart of our approach lies a\nmulti-modal and multi-relational network of biomedical objects extracted from\nseveral heterogeneous datasets from the National Center for Biotechnology\nInformation (NCBI). These objects include but are not limited to scientific\npapers, keywords, genes, proteins, diseases, and diagnoses. We model hypotheses\nusing Latent Dirichlet Allocation applied on abstracts found near shortest\npaths discovered within this network, and demonstrate the effectiveness of\nMOLIERE by performing hypothesis generation on historical data. Our network,\nimplementation, and resulting data are all publicly available for the broad\nscientific community.\n"}
Где:
-
computer_science
,physics
,mathematics
,statistics
,quantitative_biology
иquantitative_finance
— классы. -
text
— текстовое содержимое сообщения:Title
— заголовок сообщения.Abstract
— основной текст сообщения.
После завершения обучения вы получите идентификатор модели, дообученной под задачи классификации. Этот идентификатор нужно передавать в поле modelUri
тела запроса в методе classify Text Classification API.
Дообучите модель
-
Выберите нужный проект в своем сообществе или на главной странице
DataSphere во вкладке Недавние проекты. -
На панели слева нажмите Фундаментальные модели.
-
Выберите модель Классификатор YandexGPT и нажмите Дообучить модель.
-
В открывшемся окне укажите свой проект и нажмите Добавить.
-
В поле Имя введите название модели.
-
Выберите Тип классификации:
- Бинарная — если каждый запрос относится к одной из двух групп.
- Многоклассовая — если нужно разделить множество запросов на несколько групп.
- С несколькими метками — если у каждого запроса может быть больше одной группы.
-
Прикрепите файл JSON с парами запросов и классов в поле Файл с примерами.
-
Нажмите Запустить дообучение и дождитесь окончания дообучения. Это может занять несколько часов.
-
Чтобы проверить статус дообученной модели:
-
Выберите нужный проект в своем сообществе или на главной странице
DataSphere во вкладке Недавние проекты. -
В списке доступных ресурсов проекта выберите Модели.
-
На вкладке Собственные выберите Дообученные фундаментальные модели.
Также здесь можно получить идентификатор модели, который потребуется для запроса через API.
-
Отправьте запрос к дообученному классификатору
-
Выберите нужный проект в своем сообществе или на главной странице
DataSphere во вкладке Недавние проекты. - В списке доступных ресурсов проекта выберите Модели.
- На вкладке Собственные выберите Дообученные фундаментальные модели.
- Выберите свою дообученную модель и нажмите Попробовать в Playground.
- Напишите текст, который нужно классифицировать, в блоке Запрос.
- Нажмите Отправить запрос.
Чтобы воспользоваться примерами, установите cURL
-
Создайте файл с телом запроса (например,
body.json
):{ "model_uri": "cls://<идентификатор_каталога>/<идентификатор_классификатора>", "text": "<текст_запроса>" }
Где:
model_uri
— идентификатор модели, которая будет использоваться для классификации сообщения. Параметр содержит идентификатор каталога Yandex Cloud и идентификатор дообученной в DataSphere модели.text
— текстовое содержимое сообщения. Суммарное количество токенов на один запрос не должно превышать 8000.
-
Отправьте запрос к классификатору, выполнив команду:
export IAM_TOKEN=<IAM-токен> curl --request POST \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --data "@<путь_к_файлу_с_телом_запроса>" \ "https://llm.api.cloud.yandex.net:443/foundationModels/v1/textClassification"
В ответе сервис вернет результаты классификации с определенными значениями вероятности (
confidence
) принадлежности текста запроса к каждому из классов:{ "predictions": [ { "label": "<название_класса_1>", "confidence": 0.00010150671005249023 }, { "label": "<название_класса_2>", "confidence": 0.000008225440979003906 }, ... { "label": "<название_класса_n>", "confidence": 0.93212890625 } ], "modelVersion": "<версия_модели>" }
При многоклассовой классификации сумма значений полей вероятности (
confidence
) для всех классов всегда равна1
.При классификации с несколькими метками значение поля вероятности (
confidence
) для каждого класса рассчитывается независимо (сумма значений не равна1
).