Основное определение функции inference service — развертывание обученных моделей машинного обучения или глубокого обучения в виде онлайн-сервисов, доступных по протоколам таким как HTTP API или gRPC, что позволяет приложениям использовать функции модели для предсказания, классификации, генерации и других задач в режиме реального времени или пакетной обработки. Эта функция в основном решает задачу эффективного, стабильного и удобного развертывания моделей в продуктивных средах после завершения обучения модели и предоставляет масштабируемые онлайн-сервисы.
Прямое развертывание моделей для inference-сервисов
Приложение для inference-сервисов
Управление шаблонами inference-сервисов
Пакетные операции с inference-сервисами
Опыт работы с inference
Поддержка inference runtime
Методы доступа, логи, Swagger, мониторинг и др.
В левой навигационной панели нажмите Model Repository
Для пользовательской публикации inference-сервиса требуется ручная настройка параметров. Вы также можете создать «шаблон», комбинируя входные параметры для быстрого выпуска inference-сервисов.
Нажмите на имя модели, чтобы перейти на страницу деталей модели, и нажмите Publish Inference Service в правом верхнем углу.
Если кнопка "Publish Inference Service" неактивна, перейдите на вкладку "File Management", нажмите "Edit Metadata" и выберите "Task Type" и "Framework" согласно фактической информации о модели. (Необходимо редактировать метаданные для ветки по умолчанию, чтобы изменения вступили в силу.)
Перейдите на страницу выбора режима публикации. AML предлагает варианты Custom Publish и Template Publish.
Template Publish:
Custom Publish:
Вы можете просматривать статус, логи и другие детали опубликованного 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"]). | 
AML вводит функцию Template Publish для быстрого развертывания inference-сервисов. Вы можете создавать и удалять шаблоны (обновление шаблонов требует создания нового).
AML предоставляет визуальный метод "Inference Experience" для типовых задач, чтобы обращаться к опубликованному inference-сервису; также можно использовать HTTP API для вызова inference-сервиса.
AML поддерживает демонстрацию inference-сервисов для следующих типов задач (тип задачи указывается в метаданных модели):
После успешной публикации inference-сервиса для указанных типов задач на странице деталей модели и странице деталей inference-сервиса справа отображается диалоговое окно "Inference Experience". В зависимости от типа задачи ввода и вывода данные могут отличаться. Например, для генерации текста введите текст, и после введённого текста в текстовом поле будет добавлен синий шрифт с текстом, сгенерированным моделью. Опыт inference поддерживает выбор различных inference-сервисов, развернутых в разных кластерах и опубликованных несколько раз одной и той же моделью. После выбора inference-сервиса он будет вызван для возврата результата inference.
После публикации inference-сервиса вы можете вызывать его из приложений или других сервисов. В этом документе приведён пример на Python, показывающий, как вызвать опубликованный inference API.
В левой навигационной панели нажмите Inference Service > Имя Inference Service, чтобы перейти на страницу деталей inference-сервиса.
Перейдите на вкладку Access Method, чтобы получить метод доступа внутри кластера или вне кластера. Метод внутри кластера доступен напрямую из Notebook или других контейнеров в этом кластере K8s. Для доступа извне кластера (например, с локального ноутбука) используйте метод доступа вне кластера.
Нажмите Call Example, чтобы просмотреть пример кода.
Примечание: код, приведённый в примере вызова, поддерживает только протокол API, используемый inference-сервисом, опубликованным с runtime mlserver (Seldon MLServer). Кроме того, вкладка Swagger поддерживает доступ только к inference-сервисам, опубликованным с runtime mlserver.
При вызове inference-сервиса вы можете настроить поведение вывода модели, изменяя параметры inference. В интерфейсе Inference Experience предустановлены общие параметры и значения по умолчанию, также можно добавить любые пользовательские параметры.
| Параметр | Тип данных | Описание | 
|---|---|---|
| do_sample | bool | Использовать ли сэмплирование; если нет, применяется жадное декодирование. | 
| max_new_tokens | int | Максимальное количество генерируемых токенов, игнорируя токены в подсказке. | 
| repetition_penalty | float | Штраф за повторения для контроля повторяющегося контента в сгенерированном тексте; 1.0 — без штрафа, 0 — полное повторение. | 
| temperature | float | Случайность модели при генерации следующего токена; 1.0 — высокая случайность, 0 — низкая. | 
| top_k | int | При вычислении распределения вероятностей следующего токена учитываются только top k токенов с наивысшей вероятностью. | 
| top_p | float | Контролирует кумулятивное распределение вероятностей, учитываемое моделью при выборе следующего токена. | 
| use_cache | bool | Использовать ли промежуточные результаты, вычисленные моделью в процессе генерации. | 
| Параметр | Тип данных | Описание | 
|---|---|---|
| max_length | int | Максимальное количество генерируемых токенов. Соответствует количеству токенов в подсказке + max_new_tokens. Еслиmax_new_tokensзадан, его эффект имеет приоритет. | 
| min_length | int | Минимальное количество генерируемых токенов. Соответствует количеству токенов в подсказке + min_new_tokens. Еслиmin_new_tokensзадан, его эффект имеет приоритет. | 
| min_new_tokens | int | Минимальное количество генерируемых токенов, игнорируя токены в подсказке. | 
| early_stop | bool | Контролирует условие остановки для методов beam search. True: генерация останавливается, когда появляется num_beamsполных кандидатов. False: применяются эвристики для остановки генерации, когда маловероятно найти лучшие кандидаты. | 
| num_beams | int | Количество лучей для beam search. 1 означает отсутствие beam search. | 
| max_time | int | Максимальное время выполнения вычислений в секундах. | 
| num_beam_groups | int | Делит num_beamsна группы для обеспечения разнообразия между группами лучей. | 
| diversity_penalty | float | Эффективен при включённом num_beam_groups. Применяет штраф за разнообразие между группами, чтобы сгенерированный контент каждой группы был максимально различным. | 
| penalty_alpha | float | Контрастный поиск включается, если penalty_alphaбольше 0 иtop_kбольше 1. Чем больше значениеpenalty_alpha, тем сильнее контрастный штраф и тем более соответствующим ожиданиям будет сгенерированный текст. Слишком большое значение может привести к слишком однообразному тексту. | 
| typical_p | float | Локальная типичность измеряет сходство между условной вероятностью предсказания следующего целевого токена и ожидаемой условной вероятностью предсказания следующего случайного токена с учётом уже сгенерированного текста. Если задано число меньше 1, сохраняется минимальный набор локально типичных токенов, сумма вероятностей которых достигает или превышает typical_p. | 
| epsilon_cutoff | float | Если задано число строго между 0 и 1, сэмплируются только токены с условной вероятностью выше epsilon_cutoff. Рекомендуемые значения варьируются от  3e-4 до 9e-4 в зависимости от размера модели. | 
| eta_cutoff | float | Eta sampling — гибрид локального типичного сэмплирования и epsilon-сэмплирования. Если задано число строго между 0 и 1, токен учитывается, если его вероятность больше eta_cutoffили sqrt(eta_cutoff) * exp(-entropy(softmax(next_token_logits))). Рекомендуемые значения варьируются от  3e-4 до 2e-3 в зависимости от размера модели. | 
| repetition_penalty | float | Параметр штрафа за повторения. 1.0 означает отсутствие штрафа. | 
Для дополнительных параметров смотрите Text Generation Parameter Configuration.
| Параметр | Тип данных | Описание | 
|---|---|---|
| num_inference_steps | int | Количество шагов денойзинга. Большее число шагов обычно даёт более качественные изображения, но замедляет inference. | 
| use_cache | bool | Использовать ли промежуточные результаты, вычисленные моделью в процессе генерации. | 
| Параметр | Тип данных | Описание | 
|---|---|---|
| height | int | Высота сгенерированного изображения в пикселях. | 
| width | int | Ширина сгенерированного изображения в пикселях. | 
| guidance_scale | float | Используется для регулировки баланса между качеством и разнообразием сгенерированного изображения. Большие значения увеличивают разнообразие, но снижают качество; рекомендуемый диапазон 7–8.5. | 
| negative_prompt | str или List[str] | Используется для указания контента, который не должен включаться в генерацию изображения. | 
Для дополнительных параметров смотрите Text-to-Image Parameter Configuration.
| Параметр | Тип данных | Описание | 
|---|---|---|
| top_k | int | Количество меток с наивысшими баллами. Если задано None или число больше количества меток в конфигурации модели, по умолчанию возвращается количество всех меток. | 
| use_cache | bool | Использовать ли промежуточные результаты, вычисленные моделью в процессе генерации. | 
Для дополнительных параметров смотрите Text Classification Parameter Configuration
Image Classification Parameter Configuration
Conversational Parameter Configuration
Summarization Parameter Configuration
Translation Parameter Configuration