Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Foundation Models
    • Все инструкции
    • Отключить логирование запросов
    • Получить API-ключ
    • Пакетная обработка данных
      • Создать датасет
      • Создать датасет для дообучения генерации текста
      • Создать датасет для дообучения классификации текста
  • Yandex Cloud ML SDK
  • Совместимость с OpenAI
  • Управление доступом
  • Правила тарификации
  • Публичные материалы
  • История изменений

В этой статье:

  • Перед началом работы
  • Загрузите датасет
  1. Пошаговые инструкции
  2. Работа с датасетами
  3. Создать датасет для дообучения генерации текста

Создать датасет для дообучения модели генерации текста

Статья создана
Yandex Cloud
Улучшена
Danila N.
Обновлена 24 апреля 2025 г.
  • Перед началом работы
  • Загрузите датасет

Перед началом работы

Чтобы воспользоваться примерами:

Консоль управления
SDK
cURL

Для работы из консоли управления подготовительные действия не требуются.

  1. Создайте сервисный аккаунт и назначьте ему роль ai.editor.

  2. Получите и сохраните API-ключ сервисного аккаунта.

    В примерах используется аутентификация с помощью API-ключа. Yandex Cloud ML SDK также поддерживает аутентификацию с помощью IAM-токена и OAuth-токена. Подробнее см. в разделе Аутентификация в Yandex Cloud ML SDK.

  3. С помощью менеджера пакетов pip установите библиотеку ML SDK:

    pip install yandex-cloud-ml-sdk
    
  1. Получите данные для аутентификации в API, как описано в разделе Аутентификация в API Yandex Foundation Models.

  2. Чтобы воспользоваться примерами, установите cURL.

  3. Установите gRPCurl.

  4. (Опционально) Установите утилиту jq для потоковой обработки JSON-файлов.

  5. Получите IAM-токен для аутентификации в API.

    Примечание

    У IAM-токена короткое время жизни — не более 12 часов.

Загрузите датасет

Подготовьте данные для дообучения модели в формате JSON Lines в кодировке UTF-8. Если вы хотите разбить данные на два датасета для обучения и валидации, повторите следующие шаги для каждого датасета. Используйте полученные в результате загрузки идентификаторы при запуске дообучения.

Создайте датасет для дообучения:

Консоль управления
SDK
cURL
  1. В консоли управления выберите каталог, на который у вашего аккаунта есть роли ai.playground.user и ai.datasets.editor или выше.

  2. В списке сервисов выберите Foundation Models.

  3. На панели слева нажмите Датасеты.

  4. Нажмите Создать датасет.

  5. Введите имя и описания датасета. Требования к имени:

    • длина — от 2 до 63 символов;
    • может содержать строчные буквы латинского алфавита, цифры и дефисы;
    • первый символ — буква, последний — не дефис.
  6. В поле Тип выберите Генерация текста.

  7. (Опционально) Добавьте или удалите метки датасета. Они позволяют разделить и сгруппировать ресурсы на логические группы.

  8. Нажмите Выбрать файл или перетащите созданный ранее JSON-файл в зону загрузки.

  9. Нажмите Создать датасет.

  1. Создайте файл 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.exceptions import DatasetValidationError
    
    
    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()
    
        # Создаем датасет для дообучения базовой модели YandexGPT Lite
        dataset_draft = sdk.datasets.draft_from_path(
            task_type="TextToTextGeneration",
            path="<путь_к_файлу>",
            upload_format="jsonlines",
            name="YandexGPT Lite tuning",
        )
    
        # Дождемся окончания загрузки данных и создания датасета
        operation = dataset_draft.upload_deferred()
        tuning_dataset = operation.wait()
        print(f"new {tuning_dataset=}")
    
    if __name__ == "__main__":
        main()
    

    Где:

    • <идентификатор_каталога> — идентификатор каталога, в котором создан сервисный аккаунт.

    • <API-ключ> — API-ключ сервисного аккаунта, полученный ранее и необходимый для аутентификации в API.

      В примерах используется аутентификация с помощью API-ключа. Yandex Cloud ML SDK также поддерживает аутентификацию с помощью IAM-токена и OAuth-токена. Подробнее см. в разделе Аутентификация в Yandex Cloud ML SDK.

    • <путь_к_файлу> — путь к файлу, содержащему заранее подготовленные примеры для дообучения модели.

  2. Выполните созданный файл:

    python3 dataset-create.py
    

    Результат:

    new tuning_dataset=Dataset(id='fdsv21bmp09v********', folder_id='b1gt6g8ht345********', name=
    'YandexGPT Lite tuning', description=None, metadata=None, created_by='ajegtlf2q28a********', 
    created_at=datetime.datetime(2025, 3, 12, 19, 31, 44), updated_at=datetime.datetime(2025, 3, 
    12, 19, 32, 20), labels=None, allow_data_logging=False, status=<DatasetStatus.READY: 3>, 
    task_type='TextToTextGeneration', rows=3, size_bytes=3514, validation_errors=())
    

    Сохраните идентификатор созданного датасета (значение поля id) — он понадобится при дообучении модели.

  1. Создайте датасет:

    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": "TextToTextGeneration", 
        "upload_format": "jsonlines"
      }
    EOM
    

    Где:

    • <IAM-токен> — IAM-токен сервисного аккаунта, полученный перед началом работы.
    • <идентификатор_каталога> — идентификатор каталога, в котором создается датасет.

    Результат:

    {
      "datasetId": "fdso08c1u1cq********",
      "dataset": {
        "datasetId": "fdso08c1u1cq********",
        "folderId": "b1gt6g8ht345********",
        "name": "My awesome dataset",
        "status": "DRAFT",
        "taskType": "TextToTextGeneration",
        "createdAt": "2025-01-20T10:36:50Z",
        "updatedAt": "2025-01-20T10:36:50Z",
        "createdById": "ajeg2b2et02f********",
        "createdBy": "ajeg2b2et02f********"
      }
    }
    

    Сохраните идентификатор созданного датасета (значение поля datasetId) — он понадобится при загрузке данных в датасет.

  2. Получите ссылку, по которой вы сможете загрузить данные в датасет:

    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 на &, чтобы использовать ее для загрузки датасета.

  3. Загрузите данные, указав полученную на предыдущем шаге ссылку и путь к файлу с данными для дообучения:

    curl \
      --request PUT \
      --upload-file <путь_к_файлу> \
      "<ссылка>"
    
  4. После окончания загрузки данных запустите валидацию датасета:

    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) — он понадобится на следующем шаге.

  5. Валидация датасета может занять некоторое время. Чтобы узнать статус операции и, при наличии, получить отчет о возникших ошибках, отправьте запрос:

    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. Значит, валидация загруженного датасета прошла успешно.

Была ли статья полезна?

Предыдущая
Создать датасет
Следующая
Создать датасет для дообучения классификации текста
Проект Яндекса
© 2025 ООО «Яндекс.Облако»