• Русский
  • Inference Service

    Основное определение функции inference service — развертывание обученных моделей машинного обучения или глубокого обучения в виде онлайн-сервисов, доступных по протоколам таким как HTTP API или gRPC, что позволяет приложениям использовать функции модели для предсказания, классификации, генерации и других задач в режиме реального времени или пакетной обработки. Эта функция в основном решает задачу эффективного, стабильного и удобного развертывания моделей в продуктивных средах после завершения обучения модели и предоставляет масштабируемые онлайн-сервисы.

    Преимущества

    • Упрощает процесс развертывания моделей, снижая сложность деплоя.
    • Обеспечивает высокодоступные, высокопроизводительные онлайн и пакетные inference-сервисы.
    • Поддерживает динамическое обновление моделей и управление версиями.
    • Реализует автоматизированную эксплуатацию, сопровождение и мониторинг inference-сервисов.

    Основные возможности

    Прямое развертывание моделей для inference-сервисов

    • Позволяет пользователям напрямую выбирать конкретные версии файлов модели из репозитория моделей и указывать образ inference runtime для быстрого развертывания онлайн inference-сервисов. Система автоматически скачивает, кэширует и загружает модель, запуская inference-сервис. Это упрощает процесс развертывания модели и снижает порог входа.

    Приложение для inference-сервисов

    • Использование Kubernetes-приложений в качестве inference-сервисов. Такой подход обеспечивает большую гибкость, позволяя пользователям настраивать среду inference в соответствии с их потребностями.

    Управление шаблонами inference-сервисов

    • Поддержка создания, управления и удаления шаблонов inference-сервисов, что позволяет пользователям быстро развертывать inference-сервисы на основе заранее определённых шаблонов.

    Пакетные операции с inference-сервисами

    • Поддержка пакетных операций с несколькими inference-сервисами, таких как массовый запуск, остановка, обновление и удаление.
    • Возможность создавать, мониторить и экспортировать результаты пакетных задач inference.
    • Предоставление пакетного управления ресурсами, позволяющего выделять и корректировать ресурсы inference-сервисов пакетно.

    Опыт работы с inference

    • Предоставление интерактивного интерфейса для удобного тестирования и ознакомления пользователей с inference-сервисами.
    • Поддержка множества форматов ввода и вывода для удовлетворения потребностей различных сценариев применения.
    • Предоставление инструментов оценки производительности моделей для помощи пользователям в оптимизации развертывания моделей.

    Поддержка inference runtime

    • Интеграция различных популярных inference-фреймворков, таких как vLLM, Seldon MLServer и др., а также поддержка пользовательских inference runtime.
    TIP
    • vLLM: Оптимизирован для больших языковых моделей (LLM) типа DeepSeek/Qwen, обеспечивает высокую параллельность обработки и повышенную пропускную способность при отличной эффективности использования ресурсов.
    • MLServer: Предназначен для традиционных ML-моделей (XGBoost/классификация изображений), обеспечивает совместимость с несколькими фреймворками и упрощённую отладку.

    Методы доступа, логи, Swagger, мониторинг и др.

    • Предоставляет несколько методов доступа, таких как HTTP API и gRPC.
    • Поддерживает подробную запись и анализ логов для облегчения устранения неполадок пользователями.
    • Автоматически генерирует документацию Swagger для упрощения интеграции и вызова inference-сервисов.
    • Обеспечивает функции мониторинга в реальном времени и оповещений для стабильной работы сервиса.

    Создание inference-сервиса

    Шаг 1: Перейдите в Model Repository

    В левой навигационной панели нажмите Model Repository

    TIP

    Для пользовательской публикации inference-сервиса требуется ручная настройка параметров. Вы также можете создать «шаблон», комбинируя входные параметры для быстрого выпуска inference-сервисов.

    Шаг 2: Инициация публикации inference-сервиса

    Нажмите на имя модели, чтобы перейти на страницу деталей модели, и нажмите Publish Inference Service в правом верхнем углу.

    Шаг 3: Настройка метаданных модели (при необходимости)

    Если кнопка "Publish Inference Service" неактивна, перейдите на вкладку "File Management", нажмите "Edit Metadata" и выберите "Task Type" и "Framework" согласно фактической информации о модели. (Необходимо редактировать метаданные для ветки по умолчанию, чтобы изменения вступили в силу.)

    Шаг 4: Выбор режима публикации и настройка

    Перейдите на страницу выбора режима публикации. AML предлагает варианты Custom Publish и Template Publish.

    1. Template Publish:

      • Выберите модель и нажмите Template Name
      • Откроется форма публикации шаблона, где параметры из шаблона загружены заранее, но могут быть отредактированы вручную
      • Нажмите Publish для развертывания inference-сервиса
    2. Custom Publish:

      • Нажмите Custom Publish
      • Заполните форму пользовательской публикации и настройте параметры
      • Нажмите Publish для развертывания inference-сервиса

    Шаг 5: Мониторинг и управление inference-сервисом

    Вы можете просматривать статус, логи и другие детали опубликованного inference-сервиса в разделе Inference Service в левой навигации. Если inference-сервис не запускается или ресурсов недостаточно, возможно, потребуется обновить или перепубликовать сервис, изменив конфигурацию, которая могла вызвать сбой запуска.

    Примечание: Inference-сервис автоматически масштабируется между «минимальным» и «максимальным» числом реплик в зависимости от трафика запросов. Если «минимальное число реплик» установлено в 0, сервис автоматически приостанавливается и освобождает ресурсы при отсутствии запросов в течение некоторого времени. При поступлении запроса сервис автоматически запускается и загружает модель, кэшированную в PVC.

    AML реализует выпуск и эксплуатацию cloud native inference-сервисов на базе kserve InferenceService CRD. Если вы знакомы с использованием kserve, вы также можете нажать кнопку "YAML" в правом верхнем углу при публикации inference-сервиса напрямую из модели для редактирования YAML-файла и выполнения более продвинутых операций выпуска.

    Описание параметров публикации модели

    ПараметрыОписание
    NameОбязательно, имя API inference.
    DescriptionПодробное описание API inference, объясняющее его функциональность и назначение.
    ModelОбязательно, имя модели, используемой для inference.
    VersionОбязательно, версия модели. Опции включают Branch и Tag.
    Inference RuntimesОбязательно, движок, используемый для runtime inference.
    Requests CPUОбязательно, количество CPU ресурсов, запрашиваемых для inference-сервиса.
    Requests MemoryОбязательно, количество памяти, запрашиваемой для inference-сервиса.
    Limits CPUОбязательно, максимальное количество CPU ресурсов, доступных для inference-сервиса.
    Limits MemoryОбязательно, максимальное количество памяти, доступной для inference-сервиса.
    GPU Acceleration TypeТип GPU-ускорения.
    GPU Acceleration ValueЗначение GPU-ускорения.
    Temporary storageВременное хранилище, используемое inference-сервисом.
    Mount existing PVCМонтирование существующего Persistent Volume Claim (PVC) Kubernetes в качестве хранилища.
    CapacityОбязательно, размер емкости временного хранилища или PVC.
    Auto scalingВключение или отключение функции авто-масштабирования.
    Number of instancesОбязательно, количество экземпляров, запускающих inference-сервис.
    Environment variablesПары ключ-значение, внедряемые в среду выполнения контейнера.
    Add parametersПараметры, передаваемые в исполняемый файл контейнера. Массив строк (например, ["--port=8080", "--batch_size=4"]).
    Startup commandПереопределяет стандартную инструкцию ENTRYPOINT в образе контейнера. Исполняемый файл + аргументы (например, ["python", "serve.py"]).

    Управление шаблонами inference-сервисов

    AML вводит функцию Template Publish для быстрого развертывания inference-сервисов. Вы можете создавать и удалять шаблоны (обновление шаблонов требует создания нового).

    Шаг 1: Создание шаблона

    • В левой навигационной панели нажмите Inference Service > Create Inference Service
    • Нажмите Custom Publish
    • Заполните форму и настройте параметры
    • Нажмите Create Template

    Шаг 2: Создание нового шаблона на основе существующего

    • В левой навигационной панели нажмите Inference Service > Create Inference Service
    • Выберите модель и нажмите Template Name
    • Отредактируйте параметры по необходимости
    • Нажмите Create Template для сохранения как нового шаблона

    Шаг 3: Удаление шаблона

    • В левой навигационной панели нажмите Inference Service > Create Inference Service
    • На карточке шаблона нажмите Actions > Delete
    • Подтвердите удаление

    Обновление inference-сервиса

    1. В левой навигационной панели нажмите Inference Service.
    2. Нажмите на имя inference-сервиса.
    3. На странице деталей inference-сервиса нажмите Actions > Update в правом верхнем углу, чтобы перейти на страницу обновления.
    4. Измените необходимые поля и нажмите Update. Система выполнит rolling update, чтобы избежать прерывания текущих клиентских запросов.

    Вызов опубликованного inference-сервиса

    AML предоставляет визуальный метод "Inference Experience" для типовых задач, чтобы обращаться к опубликованному inference-сервису; также можно использовать HTTP API для вызова inference-сервиса.

    Inference Experience

    AML поддерживает демонстрацию inference-сервисов для следующих типов задач (тип задачи указывается в метаданных модели):

    • Генерация текста
    • Классификация текста
    • Классификация изображений
    • Текст в изображение

    После успешной публикации inference-сервиса для указанных типов задач на странице деталей модели и странице деталей inference-сервиса справа отображается диалоговое окно "Inference Experience". В зависимости от типа задачи ввода и вывода данные могут отличаться. Например, для генерации текста введите текст, и после введённого текста в текстовом поле будет добавлен синий шрифт с текстом, сгенерированным моделью. Опыт inference поддерживает выбор различных inference-сервисов, развернутых в разных кластерах и опубликованных несколько раз одной и той же моделью. После выбора inference-сервиса он будет вызван для возврата результата inference.

    Вызов через HTTP API

    После публикации inference-сервиса вы можете вызывать его из приложений или других сервисов. В этом документе приведён пример на Python, показывающий, как вызвать опубликованный inference API.

    1. В левой навигационной панели нажмите Inference Service > Имя Inference Service, чтобы перейти на страницу деталей inference-сервиса.

    2. Перейдите на вкладку Access Method, чтобы получить метод доступа внутри кластера или вне кластера. Метод внутри кластера доступен напрямую из Notebook или других контейнеров в этом кластере K8s. Для доступа извне кластера (например, с локального ноутбука) используйте метод доступа вне кластера.

    3. Нажмите Call Example, чтобы просмотреть пример кода.

      Примечание: код, приведённый в примере вызова, поддерживает только протокол API, используемый inference-сервисом, опубликованным с runtime mlserver (Seldon MLServer). Кроме того, вкладка Swagger поддерживает доступ только к inference-сервисам, опубликованным с runtime mlserver.

    Описание параметров inference

    При вызове inference-сервиса вы можете настроить поведение вывода модели, изменяя параметры inference. В интерфейсе Inference Experience предустановлены общие параметры и значения по умолчанию, также можно добавить любые пользовательские параметры.

    Описание параметров для разных типов задач

    Генерация текста

    Предустановленные параметры
    ПараметрТип данныхОписание
    do_sampleboolИспользовать ли сэмплирование; если нет, применяется жадное декодирование.
    max_new_tokensintМаксимальное количество генерируемых токенов, игнорируя токены в подсказке.
    repetition_penaltyfloatШтраф за повторения для контроля повторяющегося контента в сгенерированном тексте; 1.0 — без штрафа, 0 — полное повторение.
    temperaturefloatСлучайность модели при генерации следующего токена; 1.0 — высокая случайность, 0 — низкая.
    top_kintПри вычислении распределения вероятностей следующего токена учитываются только top k токенов с наивысшей вероятностью.
    top_pfloatКонтролирует кумулятивное распределение вероятностей, учитываемое моделью при выборе следующего токена.
    use_cacheboolИспользовать ли промежуточные результаты, вычисленные моделью в процессе генерации.
    Другие параметры
    ПараметрТип данныхОписание
    max_lengthintМаксимальное количество генерируемых токенов. Соответствует количеству токенов в подсказке + max_new_tokens. Если max_new_tokens задан, его эффект имеет приоритет.
    min_lengthintМинимальное количество генерируемых токенов. Соответствует количеству токенов в подсказке + min_new_tokens. Если min_new_tokens задан, его эффект имеет приоритет.
    min_new_tokensintМинимальное количество генерируемых токенов, игнорируя токены в подсказке.
    early_stopboolКонтролирует условие остановки для методов beam search. True: генерация останавливается, когда появляется num_beams полных кандидатов. False: применяются эвристики для остановки генерации, когда маловероятно найти лучшие кандидаты.
    num_beamsintКоличество лучей для beam search. 1 означает отсутствие beam search.
    max_timeintМаксимальное время выполнения вычислений в секундах.
    num_beam_groupsintДелит num_beams на группы для обеспечения разнообразия между группами лучей.
    diversity_penaltyfloatЭффективен при включённом num_beam_groups. Применяет штраф за разнообразие между группами, чтобы сгенерированный контент каждой группы был максимально различным.
    penalty_alphafloatКонтрастный поиск включается, если penalty_alpha больше 0 и top_k больше 1. Чем больше значение penalty_alpha, тем сильнее контрастный штраф и тем более соответствующим ожиданиям будет сгенерированный текст. Слишком большое значение может привести к слишком однообразному тексту.
    typical_pfloatЛокальная типичность измеряет сходство между условной вероятностью предсказания следующего целевого токена и ожидаемой условной вероятностью предсказания следующего случайного токена с учётом уже сгенерированного текста. Если задано число меньше 1, сохраняется минимальный набор локально типичных токенов, сумма вероятностей которых достигает или превышает typical_p.
    epsilon_cutofffloatЕсли задано число строго между 0 и 1, сэмплируются только токены с условной вероятностью выше epsilon_cutoff. Рекомендуемые значения варьируются от 3e-4 до 9e-4 в зависимости от размера модели.
    eta_cutofffloatEta sampling — гибрид локального типичного сэмплирования и epsilon-сэмплирования. Если задано число строго между 0 и 1, токен учитывается, если его вероятность больше eta_cutoff или sqrt(eta_cutoff) * exp(-entropy(softmax(next_token_logits))). Рекомендуемые значения варьируются от 3e-4 до 2e-3 в зависимости от размера модели.
    repetition_penaltyfloatПараметр штрафа за повторения. 1.0 означает отсутствие штрафа.

    Для дополнительных параметров смотрите Text Generation Parameter Configuration.

    Текст в изображение

    Предустановленные параметры
    ПараметрТип данныхОписание
    num_inference_stepsintКоличество шагов денойзинга. Большее число шагов обычно даёт более качественные изображения, но замедляет inference.
    use_cacheboolИспользовать ли промежуточные результаты, вычисленные моделью в процессе генерации.
    Другие параметры
    ПараметрТип данныхОписание
    heightintВысота сгенерированного изображения в пикселях.
    widthintШирина сгенерированного изображения в пикселях.
    guidance_scalefloatИспользуется для регулировки баланса между качеством и разнообразием сгенерированного изображения. Большие значения увеличивают разнообразие, но снижают качество; рекомендуемый диапазон 7–8.5.
    negative_promptstr или List[str]Используется для указания контента, который не должен включаться в генерацию изображения.

    Для дополнительных параметров смотрите Text-to-Image Parameter Configuration.

    Классификация текста

    Предустановленные параметры
    ПараметрТип данныхОписание
    top_kintКоличество меток с наивысшими баллами. Если задано None или число больше количества меток в конфигурации модели, по умолчанию возвращается количество всех меток.
    use_cacheboolИспользовать ли промежуточные результаты, вычисленные моделью в процессе генерации.

    Для дополнительных параметров смотрите Text Classification Parameter Configuration

    Дополнительные ссылки

    Image Classification Parameter Configuration

    Conversational Parameter Configuration

    Summarization Parameter Configuration

    Translation Parameter Configuration

    Text2Text Generation Parameter Configuration

    Image-to-Image Parameter Configuration