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

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

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

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

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

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

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

    Применение Kubernetes-приложений для сервисов инференса

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

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

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

    Пакетная обработка сервисов инференса

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

    Интерактивная демонстрация инференса

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

    Поддержка runtime инференса

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

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

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

    Создание сервиса инференса

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

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

    TIP

    Для пользовательской публикации сервиса инференса требуется ручная настройка параметров. Вы также можете создать "template", объединив входные параметры, для быстрой публикации сервисов инференса.

    Шаг 2: Начните публикацию сервиса инференса

    Нажмите на имя модели, чтобы перейти на страницу сведений о модели, затем нажмите 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, чтобы развернуть сервис инференса
    2. Custom Publish:

      • Нажмите Custom Publish
      • Перейдите в форму пользовательской публикации и настройте параметры
      • Нажмите Publish, чтобы развернуть сервис инференса

    Шаг 5: Отслеживайте и управляйте сервисом инференса

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

    Примечание: Сервис инференса будет автоматически масштабироваться вверх и вниз между "minimum number of replicas" и "maximum number of replicas" в зависимости от трафика запросов. Если значение "minimum number of replicas" установлено в 0, сервис инференса будет автоматически приостанавливаться и освобождать ресурсы, когда в течение некоторого времени отсутствуют запросы. В этом случае при поступлении запроса сервис инференса может автоматически запуститься и загрузить модель, кэшированную в PVC.

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

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

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

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

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

    Шаг 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
    • Подтвердите удаление

    Обновление сервиса инференса

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

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

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

    Интерактивная демонстрация инференса

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

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

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

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

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

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

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

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

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

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

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

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

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

    Предустановленные параметры
    ParameterData TypeDescription
    do_sampleboolИспользовать ли выборку; если нет, используется жадное декодирование.
    max_new_tokensintМаксимальное количество токенов для генерации без учета токенов в prompt.
    repetition_penaltyfloatШтраф за повторения, контролирующий повторяющийся контент в сгенерированном тексте; 1.0 означает отсутствие повтора, 0 — повторение.
    temperaturefloatСтепень случайности модели при выборе следующего токена во время генерации текста; 1.0 — высокая случайность, 0 — низкая.
    top_kintПри вычислении вероятностного распределения следующего токена учитывать только top k токенов с наибольшей вероятностью.
    top_pfloatУправляет накопленным вероятностным распределением, учитываемым моделью при выборе следующего токена.
    use_cacheboolИспользовать ли промежуточные результаты, вычисленные моделью в процессе генерации.
    Другие параметры
    ParameterData TypeDescription
    max_lengthintМаксимальное количество сгенерированных токенов. Соответствует количеству токенов во входном prompt + max_new_tokens. Если задан max_new_tokens, его действие имеет приоритет.
    min_lengthintМинимальное количество сгенерированных токенов. Соответствует количеству токенов во входном prompt + 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 и тем выше вероятность, что сгенерированный текст будет соответствовать ожиданиям. Если значение penalty_alpha слишком велико, это может привести к чрезмерной однообразности сгенерированного текста.
    typical_pfloatLocal typicality измеряет сходство между условной вероятностью предсказания следующего целевого токена и ожидаемой условной вероятностью предсказания следующего случайного токена с учетом уже сгенерированного фрагмента текста. Если задано число с плавающей точкой меньше 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.

    Text-to-Image

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

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

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

    Предустановленные параметры
    ParameterData TypeDescription
    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