• Русский
  • Сервис инференса

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

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

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

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

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

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

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

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

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

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

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

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

    Интерфейс инференса

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

    Поддержка среды выполнения инференса

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

    Способы доступа, журналы, Swagger, мониторинг и т. д.

    • Предоставляет несколько способов доступа, таких как HTTP API и gRPC.
    • Поддерживает детальную запись и анализ журналов, чтобы облегчить устранение неполадок пользователями.
    • Автоматически генерирует документацию Swagger, чтобы упростить интеграцию и вызов 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: Выберите режим публикации и настройте параметры

    Перейдите на страницу Publish Mode Selection. 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-сервис и изменить конфигурацию, которая могла привести к ошибке запуска.

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

    AML завершает выпуск и эксплуатацию облачных нативных inference-сервисов на основе CRD kserve InferenceService. Если вы знакомы с использованием kserve, вы также можете нажать кнопку "YAML" в правом верхнем углу при выборе "Publish inference service directly from model", чтобы напрямую изменить YAML-файл и выполнить более сложные операции публикации.

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

    ПараметрОписание
    NameОбязательно. Имя inference API.
    DescriptionПодробное описание inference API, объясняющее его функциональность и назначение.
    ModelОбязательно. Имя модели, используемой для инференса.
    VersionОбязательно. Версия модели. Доступные варианты: Branch и Tag.
    Inference RuntimesОбязательно. Движок, используемый для среды выполнения инференса.
    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Подключение существующего Kubernetes Persistent Volume Claim (PVC) в качестве хранилища.
    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 service name.
    3. На странице сведений о inference-сервисе нажмите Actions > Update в правом верхнем углу, чтобы перейти на страницу обновления.
    4. Измените необходимые поля и нажмите Update. Система выполнит rolling update, чтобы не нарушить работу существующих клиентских запросов.

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

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

    Интерактивный инференс

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

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

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

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

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

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

    2. Нажмите вкладку Access Method, чтобы получить способ доступа внутри кластера или вне кластера. К способу доступа внутри кластера можно обращаться напрямую из Notebook или других контейнеров в этом кластере K8s. Если требуется доступ из-за пределов кластера (например, с локального ноутбука), необходимо использовать способ доступа вне кластера.

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

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

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

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

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

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

    Предустановленные параметры
    ПараметрТип данныхОписание
    do_sampleboolИспользовать ли сэмплирование; если нет, используется жадное декодирование.
    max_new_tokensintМаксимальное количество токенов для генерации, без учета токенов в prompt.
    repetition_penaltyfloatШтраф за повторения для контроля повторяющегося контента в сгенерированном тексте; 1.0 означает отсутствие повторений, 0 — повторение.
    temperaturefloatСтепень случайности модели для следующего токена при генерации текста; 1.0 — высокая случайность, 0 — низкая.
    top_kintПри вычислении распределения вероятностей следующего токена учитывать только k токенов с наибольшей вероятностью.
    top_pfloatУправляет накопленным распределением вероятностей, которое модель учитывает при выборе следующего токена.
    use_cacheboolИспользовать ли промежуточные результаты, вычисленные моделью в процессе генерации.
    Другие параметры
    ПараметрТип данныхОписание
    max_lengthintМаксимальное количество сгенерированных токенов. Соответствует количеству токенов во входном prompt + max_new_tokens. Если задан max_new_tokens, его эффект имеет приоритет над max_new_tokens.
    min_lengthintМинимальное количество сгенерированных токенов. Соответствует количеству токенов во входном prompt + min_new_tokens. Если задан min_new_tokens, его эффект имеет приоритет над min_new_tokens.
    min_new_tokensintМинимальное количество сгенерированных токенов без учета токенов в prompt.
    early_stopboolУправляет условием остановки для методов на основе beam search. True: генерация останавливается, когда появляются num_beams завершенных кандидатов. False: применяются эвристики для остановки генерации, когда маловероятно найти лучшие кандидаты.
    num_beamsintКоличество beam, используемых для beam search. 1 означает отсутствие beam search.
    max_timeintМаксимальное время, разрешенное для выполнения вычисления, в секундах.
    num_beam_groupsintДелит num_beams на группы, чтобы обеспечить разнообразие между различными beam-группами.
    diversity_penaltyfloatЭффективен, когда включен num_beam_groups. Этот параметр задает штраф за разнообразие между группами, чтобы контент, генерируемый каждой группой, максимально отличался.
    penalty_alphafloatContrastive search включается, когда penalty_alpha больше 0, а top_k больше 1. Чем больше значение penalty_alpha, тем сильнее contrastive-штраф и тем выше вероятность того, что сгенерированный текст будет соответствовать ожиданиям. Если значение penalty_alpha слишком велико, это может привести к чрезмерной однородности сгенерированного текста.
    typical_pfloatЛокальная типичность измеряет сходство между условной вероятностью предсказания следующего целевого токена и ожидаемой условной вероятностью предсказания следующего случайного токена с учетом уже сгенерированного фрагмента текста. Если задано число с плавающей точкой меньше 1, для генерации сохраняется наименьшее множество локально типичных токенов, чьи вероятности суммарно достигают или превышают typical_p.
    epsilon_cutofffloatЕсли задано число с плавающей точкой строго между 0 и 1, будут сэмплироваться только токены с условной вероятностью выше epsilon_cutoff. Рекомендуемые значения: от 3e-4 до 9e-4 в зависимости от размера модели.
    eta_cutofffloatEta sampling — это гибрид local typical sampling и epsilon sampling. Если задано число с плавающей точкой строго между 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Количество шагов денойзинга. Большое количество шагов денойзинга обычно дает изображения более высокого качества, но замедляет инференс.
    use_cacheboolИспользовать ли промежуточные результаты, вычисленные моделью в процессе генерации.
    Другие параметры
    ПараметрТип данныхОписание
    heightintВысота сгенерированного изображения в пикселях.
    widthintШирина сгенерированного изображения в пикселях.
    guidance_scalefloatИспользуется для настройки баланса между качеством и разнообразием сгенерированного изображения. Большие значения увеличивают разнообразие, но снижают качество; рекомендуемый диапазон — от 7 до 8.5.
    negative_promptstr or 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