Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • AI Studio
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Практические руководства
    • Все руководства
      • Развертывание сервиса в DataSphere из модели ONNX
      • Развертывание сервиса в DataSphere на основе Docker-образа
      • Развертывание сервиса в DataSphere на основе Docker-образа с FastAPI
      • Развертывание gRPC-сервиса на основе Docker-образа
      • Генерация изображения с помощью модели Stable Diffusion

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

  • Перед началом работы
  • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
  • Создайте каталог
  • Создайте сервисный аккаунт для проекта DataSphere
  • Создайте модель
  • Создайте ноду
  • Проверьте работу развернутого сервиса
  • Как удалить созданные ресурсы
  1. Машинное обучение и искусственный интеллект
  2. Эксплуатация DataSphere
  3. Развертывание сервиса в DataSphere из модели ONNX

Развертывание сервиса в Yandex DataSphere из модели ONNX

Статья создана
Yandex Cloud
Обновлена 6 марта 2025 г.
  • Перед началом работы
    • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
    • Создайте каталог
    • Создайте сервисный аккаунт для проекта DataSphere
  • Создайте модель
  • Создайте ноду
  • Проверьте работу развернутого сервиса
  • Как удалить созданные ресурсы

DataSphere позволяет разворачивать и эксплуатировать сервисы на основе обученной в проекте модели.

В этом практическом руководстве вы развернете сервис из модели в формате ONNX. Модель fast-neural-style-mosaic-onnx преобразует изображение в соответствии с заданным стилем. Модель взята из хранилища моделей ONNX.

  1. Подготовьте инфраструктуру.
  2. Создайте модель.
  3. Создайте ноду.
  4. Проверьте работу развернутого сервиса.

Если созданные ресурсы вам больше не нужны, удалите их.

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

Перед началом работы нужно зарегистрироваться в Yandex Cloud, настроить сообщество и привязать к нему платежный аккаунт:

  1. На главной странице DataSphere нажмите Попробовать бесплатно и выберите аккаунт для входа — Яндекс ID или рабочий аккаунт в федерации (SSO).
  2. Выберите организацию Yandex Identity Hub, в которой вы будете работать в Yandex Cloud.
  3. Создайте сообщество.
  4. Привяжите платежный аккаунт к сообществу DataSphere, в котором вы будете работать. Убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его в интерфейсе DataSphere.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость развертывания сервиса из модели входят:

  • плата за постоянно запущенные инстансы ноды (см. тарифы DataSphere);
  • плата за запуск ячеек с кодом для проверки работы развернутого сервиса.

Подготовьте инфраструктуруПодготовьте инфраструктуру

Войдите в консоль управления Yandex Cloud и выберите организацию, в которой вы работаете с DataSphere. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт.

Если у вас есть активный платежный аккаунт, на странице облака вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура.

Примечание

Если вы работаете с Yandex Cloud через федерацию удостоверений, вам может быть недоступна платежная информация. В этом случае обратитесь к администратору вашей организации в Yandex Cloud.

Создайте каталогСоздайте каталог

Создайте каталог, в котором вы развернете всю необходимую инфраструктуру, а ваш сервис будет хранить логи.

Примечание

В примере инфраструктура Yandex Cloud и развернутый сервис работают в одном каталоге Yandex Cloud, однако это не обязательно.

Консоль управления
  1. В консоли управления выберите облако и нажмите кнопку Создать каталог.
  2. Введите имя каталога, например data-folder.
  3. Нажмите кнопку Создать.

Создайте сервисный аккаунт для проекта DataSphereСоздайте сервисный аккаунт для проекта DataSphere

Консоль управления
  1. Перейдите в каталог data-folder.

  2. В списке сервисов выберите Identity and Access Management.

  3. Нажмите кнопку Создать сервисный аккаунт.

  4. Введите имя сервисного аккаунта, например datasphere-sa.

  5. Нажмите Добавить роль и назначьте сервисному аккаунту роли:

    • vpc.user — для работы с сетью DataSphere.
    • datasphere.user — чтобы отправлять запросы в ноду.
  6. Нажмите кнопку Создать.

Создайте модельСоздайте модель

Модель fast-neural-style-mosaic-onnx — это одна из моделей переноса стиля, разработанная для преобразования изображения под стиль другого изображения.

  1. Откройте проект DataSphere:

    1. Выберите нужный проект в своем сообществе или на главной странице DataSphere во вкладке Недавние проекты.

    2. Нажмите кнопку Открыть проект в JupyterLab и дождитесь окончания загрузки.
    3. Откройте вкладку с ноутбуком.
  2. Установите модуль onnx:

    %pip install onnx
    
  3. Скачайте файл mosaic.onnx:

    !wget -O "mosaic.onnx" "https://github.com/onnx/models/raw/main/validated/vision/style_transfer/fast_neural_style/model/mosaic-8.onnx"
    
  4. Загрузите модель в переменную и проверьте ее согласованность:

    import onnx
    
    onnx_model = onnx.load("mosaic.onnx")
    onnx.checker.check_model(onnx_model)
    
  5. На панели справа выберите . В появившемся окне нажмите Создать модель.

  6. Выберите имя переменной, из которой вы хотите создать модель.

  7. Введите имя модели, например onnx-model.

  8. Нажмите кнопку Создать.

Создайте нодуСоздайте ноду

  1. Выберите нужный проект в своем сообществе или на главной странице DataSphere во вкладке Недавние проекты.

  2. В правом верхнем углу нажмите кнопку Создать ресурс. Во всплывающем окне выберите Нода.
  3. В поле Имя введите имя ноды.
  4. В блоке Тип укажите тип ресурса — Модель.
  5. В поле Модели выберите модель onnx-model.
  6. В блоке Каталог выберите каталог data-folder.
  7. В блоке Обеспечение выберите конфигурацию вычислительных ресурсов инстанса, зону доступности и идентификатор подсети в которых будет размещен инстанс.
  8. В блоке Список управления доступом (ACL) нажмите кнопку Добавить ACL и укажите идентификаторы каталогов, из которых можно будет подключаться к ноде. По умолчанию указывается идентификатор каталога пользователя, создающего ноду.
  9. Нажмите кнопку Создать.

Проверьте работу развернутого сервисаПроверьте работу развернутого сервиса

  1. Создайте секреты для проверки работы ноды:

    • IAM_SECRET со значением IAM-токена.
    • NODE_ID с идентификатором ноды.
    • FOLDER_ID с идентификатором каталога.
  2. Откройте проект DataSphere:

    1. Выберите нужный проект в своем сообществе или на главной странице DataSphere во вкладке Недавние проекты.

    2. Нажмите кнопку Открыть проект в JupyterLab и дождитесь окончания загрузки.
    3. Откройте вкладку с ноутбуком.
  3. Установите модуль tritonclient:

    %pip install tritonclient[http]
    
  4. Импортируйте необходимые библиотеки:

    import numpy as np 
    import matplotlib.pyplot as plt
    from PIL import Image 
    import requests
    import urllib
    import os 
    %matplotlib inline
    
  5. Подготовьте изображение:

    url, filename = ("https://github.com/pytorch/hub/raw/master/images/dog.jpg", "dog.jpg")
    try: urllib.URLopener().retrieve(url, filename)
    except: urllib.request.urlretrieve(url, filename)
    
    # loading input and resize if needed
    onnx_image = Image.open(filename)
    
    size_reduction_factor = 5
    onnx_image = onnx_image.resize((224, 224))
    
    # Preprocess image
    x = np.array(onnx_image).astype('float32')
    x = np.transpose(x, [2, 0, 1])
    onnx_input = np.expand_dims(x, axis=0) 
    
    plt.figure(figsize=(15, 15))
    plt.imshow(onnx_image)
    plt.show()
    
  6. Аутентифицируйтесь, используя ранее созданные секреты:

    IAM_SECRET = os.environ['IAM_SECRET']
    NODE_ID = os.environ['NODE_ID']
    FOLDER_ID = os.environ['FOLDER_ID']
    
    headers = {
        "Authorization": f"Bearer {IAM_SECRET}", # get IAM token from secrets
        "x-node-id": f"{NODE_ID}", # sample node
        "x-folder-id": f"{FOLDER_ID}" # node folder ID
    }
    
  7. Отправьте тестовые запросы, подставив идентификатор модели:

    import tritonclient.http as httpclient
    
    model="<идентификатор_модели_в_DataSphere>"
    
    # request model config with model ready status
    print(f"""model_name: {model},\n
          model_ready: {triton_client.is_model_ready(model_name=model, headers=headers)},\n
          model_config: {triton_client.get_model_config(model_name=model, headers=headers)}\n""")
    
  8. Подготовьте изображение и отправьте запрос в ноду:

    payload = httpclient.InferInput("input1", list(onnx_input.shape), "FP32")
    payload.set_data_from_numpy(onnx_input, binary_data=False)
    results = triton_client.infer(model, inputs=[payload], headers=headers)
    
  9. Получите результат преобразования изображения:

    output = results.as_numpy("output1")[0]
    output = np.clip(output, 0, 255)
    output = output.transpose(1,2,0).astype("uint8")
    img = Image.fromarray(output)
    img
    

    В ответе вы получите преобразованное изображение.

Как удалить созданные ресурсыКак удалить созданные ресурсы

При развертывании и эксплуатации моделей вы платите за время работы каждого инстанса ноды — от момента запуска до момента удаления.

Если развернутый сервис вам больше не нужен, удалите ноду.

  1. Удалите ноду.
  2. Удалите секреты.

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

Предыдущая
Дообучение моделей в DataSphere
Следующая
Развертывание сервиса в DataSphere на основе Docker-образа
Проект Яндекса
© 2025 ООО «Яндекс.Облако»