Создать датасет
Перед началом работы
Чтобы воспользоваться примерами:
Для работы из консоли управления подготовительные действия не требуются.
-
Получите и сохраните API-ключ сервисного аккаунта.
В примерах используется аутентификация с помощью API-ключа. Yandex Cloud ML SDK также поддерживает аутентификацию с помощью IAM-токена и OAuth-токена. Подробнее см. в разделе Аутентификация в Yandex Cloud ML SDK.
-
С помощью менеджера пакетов pip
установите библиотеку ML SDK:pip install yandex-cloud-ml-sdk
-
Получите данные для аутентификации в API, как описано в разделе Аутентификация в API Yandex Foundation Models.
-
Чтобы воспользоваться примерами, установите cURL
. -
Установите gRPCurl
. -
(Опционально) Установите утилиту jq
для потоковой обработки JSON-файлов. -
Получите IAM-токен для аутентификации в API.
Примечание
У IAM-токена короткое время жизни — не более 12 часов.
Подготовьте файл датасета в формате JSON Lines
Получите JSON-схему датасета
Если вам необходима JSON-схема, чтобы подготовить данные, вы можете получить структуру любого типа датасета с помощью запроса API:
grpcurl \
-H "Authorization: Bearer <IAM-токен>" \
-d '{"task_type": "<тип_датасета>"}' \
llm.api.cloud.yandex.net:443 yandex.cloud.ai.dataset.v1.DatasetService.ListUploadSchemas
Где:
-
<IAM-токе>
-
<тип_датасета>
— тип датасета, для которого вы запрашиваете JSON-схему. Доступные значения:- Генерация текста —
TextToTextGenerationRequest
иTextToTextGeneration
. - Классификация с несколькими метками —
TextClassificationMultilabel
. - Бинарная и многоклассовая классификация —
TextClassificationMulticlass
. - Пары для дообучения эмбеддингов —
TextEmbeddingPairParams
. - Триплеты для дообучения эмбеддингов —
TextEmbeddingTripletParams
. - Визуально-текстовые датасеты —
ImageTextToTextGenerationRequest
иImageTextToTextGeneration
.
- Генерация текста —
Загрузите датасет
-
В консоли управления
выберите каталог, на который у вашего аккаунта есть ролиai.playground.user
иai.datasets.editor
или выше. -
В списке сервисов выберите Foundation Models.
-
На панели слева нажмите
Датасеты. -
Нажмите Создать датасет.
-
Введите имя и описания датасета. Требования к имени:
- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
В поле Тип выберите тип датасета.
-
(Опционально) Добавьте или удалите метки датасета. Они позволяют сгруппировать ресурсы в логические группы.
-
Нажмите Выбрать файл или перетащите созданный ранее JSON-файл в зону загрузки.
-
Нажмите Создать датасет.
-
Создайте файл
dataset-create.py
и добавьте в него код:#!/usr/bin/env python3 from __future__ import annotations import pathlib from yandex_cloud_ml_sdk import YCloudML from yandex_cloud_ml_sdk.auth import YandexCloudCLIAuth def main() -> None: sdk = YCloudML( folder_id="<идентификатор_каталога>", auth="<API-ключ>", ) # Так можно посмотреть список всех загруженных датасетов for dataset in sdk.datasets.list(): print(f"List of existing datasets {dataset=}") # Так можно удалить все ранее загруженные датасеты # но лучше этого не делать, если не нужно # for dataset in sdk.datasets.list(): # dataset.delete() # Создаем датасет dataset_draft = sdk.datasets.draft_from_path( task_type="<тип_датасета>", path="<путь_к_файлу>", upload_format="jsonlines", name="<название>", ) # Дождемся окончания загрузки данных и создания датасета operation = dataset_draft.upload_deferred() tuning_dataset = operation.wait() print(f"new {tuning_dataset=}") if __name__ == "__main__": main()
Где:
<IAM-токен>
— IAM-токен сервисного аккаунта, полученный перед началом работы.<идентификатор_каталога>
— идентификатор каталога, в котором создается датасет.<путь_к_файлу>
— путь к заранее подготовленному файлу.<тип_датасета>
— тип создаваемого датасета.
-
Выполните созданный файл:
python3 dataset-create.py
Результат:
new tuning_dataset=Dataset(id='fds6vl5ttl0n********', folder_id='b1gt6g8ht345********', name='YandexGPT Lite tuning', description=None, metadata=None, created_by='ajegtlf2q28a********', created_at=datetime. datetime(2025, 3, 13, 8, 12, 43), updated_at=datetime.datetime(2025, 3, 13, 8, 13, 17), labels=None, allow_data_logging=False, status=<DatasetStatus.READY: 3>, task_type='TextClassificationMulticlass', rows=4, size_bytes=5679, validation_errors=())
Сохраните идентификатор созданного датасета (значение поля
id
) — он понадобится для запуска модели.
-
Создайте датасет:
grpcurl \ -H "Authorization: Bearer <IAM-токен>" \ -d @ \ llm.api.cloud.yandex.net:443 yandex.cloud.ai.dataset.v1.DatasetService/Create <<EOM { "folder_id": "<идентификатор_каталога>", "name": "My awesome dataset", "task_type": "<тип_датасета>", "upload_format": "jsonlines" } EOM
Где:
<IAM-токен>
— IAM-токен сервисного аккаунта, полученный перед началом работы.<идентификатор_каталога>
— идентификатор каталога, в котором создается датасет.<тип_датасета>
— тип создаваемого датасета.
Результат:
{ "datasetId": "fds8hd01tset********", "dataset": { "datasetId": "fds8hd01tset********", "folderId": "b1gt6g8ht345********", "name": "My awesome dataset", "status": "DRAFT", "taskType": "<указанный_в_запросе_тип_задачи>", "createdAt": "2025-01-20T14:51:34Z", "updatedAt": "2025-01-20T14:51:34Z", "createdById": "ajeg2b2et02f********", "createdBy": "ajeg2b2et02f********" } }
Сохраните идентификатор созданного датасета (значение поля
datasetId
) он понадобится при загрузке данных в датасет. -
Получите ссылку, по которой вы сможете загрузить данные в датасет:
grpcurl \ -H "Authorization: Bearer <IAM-токен>" \ -d '{"dataset_id": "<идентификатор_датасета>", "size_bytes": <размер_датасета>}' \ llm.api.cloud.yandex.net:443 yandex.cloud.ai.dataset.v1.DatasetService/GetUploadDraftUrl | jq
Где:
<IAM-токен>
— IAM-токен сервисного аккаунта, полученный перед началом работы.<идентификатор_датасета>
— идентификатор датасета, сохраненный на предыдущем шаге.<размер_датасета>
— размер в байтах файла с данными для дообучения. В терминале получить размер файла можно с помощью командыls -l <путь_к_файлу>
.
Результат:
{ "datasetId": "fdso08c1u1cq********", "uploadUrl": "https://storage.yandexcloud.net/ai-fomo-drafts-prod/b1gt6g8ht345********/fdso08c1u1cq********?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20250120T105352Z&X-Amz-SignedHeaders=content-length%3Bhost&X-Amz-Expires=86400&X-Amz-Credential=YCAJE_WuJJ9D1r6huCoc8I3yO%2F20250120%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=611d7951994ae939acf4d32cc0c154c738d02adb2a04707a704f34ca********" }
Поле
uploadUrl
ответа содержит ссылку, по которой вы сможете загрузить ваши данные в датасет.Совет
Если вы не использовали утилиту jq, в полученной ссылке замените все последовательности символов
\u0026
на&
, чтобы использовать ее для загрузки датасета. -
Загрузите данные, указав полученную на предыдущем шаге ссылку и путь к файлу с данными для дообучения:
curl \ --request PUT \ --upload-file <путь_к_файлу> \ "<ссылка>"
-
После окончания загрузки данных запустите валидацию датасета:
grpcurl \ -H "Authorization: Bearer <IAM-токен>" \ -d '{"dataset_id": "<идентификатор_датасета>"}' \ llm.api.cloud.yandex.net:443 yandex.cloud.ai.dataset.v1.DatasetService/Validate
Где:
<IAM-токен>
— IAM-токен сервисного аккаунта, полученный перед началом работы.<идентификатор_датасета>
— идентификатор датасета, сохраненный ранее.
Результат:
{ "id": "fdso01v2jdd4********", "createdAt": "2025-01-20T11:03:48Z", "modifiedAt": "2025-01-20T11:03:48Z" }
Сохраните идентификатор операции валидации (поле
id
) — он понадобится на следующем шаге. -
Валидация датасета может занять некоторое время. Чтобы узнать статус операции и, при наличии, получить отчет о возникших ошибках, отправьте запрос:
grpcurl \ -H "Authorization: Bearer <IAM-токен>" \ -d '{"operation_id": "<идентификатор_операции_валидации>"}' \ llm.api.cloud.yandex.net:443 yandex.cloud.operation.OperationService/Get
Где:
<IAM-токен>
— IAM-токен сервисного аккаунта, полученный перед началом работы.<идентификатор_операции_валидации>
— идентификатор операции валидации, сохраненный на предыдущем шаге.
Результат:
{ "id": "fdso01v2jdd4********", "createdAt": "2025-01-20T11:03:48Z", "modifiedAt": "2025-01-20T11:04:46Z", "done": true, "response": { "@type": "type.googleapis.com/yandex.cloud.ai.dataset.v1.ValidateDatasetResponse", "datasetId": "fdso08c1u1cq********", "isValid": true } }
Значение поля
isValid
—true
. Значит, валидация загруженного датасета прошла успешно.