Высокопроизводительное предоставление моделей с Triton Inference Server
Репозиторий моделей, конфигурация модели config.pbtxt, параллельные экземпляры моделей, динамическое пакетирование
«Высокопроизводительное предоставление моделей с Triton Inference Server» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.
Что такое Triton
NVIDIA Triton — сервер инференса — промышленная система обслуживания запросов, одновременно размещающая множество моделей на CPU и GPU. Она поддерживает несколько серверных частей (TensorRT, ONNX, PyTorch, TensorFlow, Python) через единый API HTTP/gRPC, а также встроенное пакетирование и параллельное выполнение.
Репозиторий моделей
Triton загружает модели из репозитория моделей — каталога, в котором у каждой модели есть собственная папка, вложенная папка с числовой версией и файл config.pbtxt.
model_repository/
resnet50/
config.pbtxt
1/
model.onnx
bert/
config.pbtxt
1/
model.ptconfig.pbtxt: серверная часть
Файл config.pbtxt описывает, как Triton должен запускать модель. Серверная часть (или платформа) сообщает Triton, какую среду выполнения использовать.
name: "resnet50"
backend: "onnxruntime"
max_batch_size: 32Входные и выходные тензоры
Для каждого входа и выхода указываются его имя, тип данных и размерности тензора (форма). Формы должны соответствовать ожиданиям модели. Ведущее измерение пакета подразумевается параметром max_batch_size.
input [
{
name: "input"
data_type: TYPE_FP32
dims: [ 3, 224, 224 ]
}
]
output [
{
name: "output"
data_type: TYPE_FP32
dims: [ 1000 ]
}
]Типы данных
Triton использует явные типы данных тензоров, чтобы клиенты и модель одинаково интерпретировали расположение байтов:
TYPE_FP32— 32-разрядное число с плавающей точкой (часто используется для изображений)TYPE_FP16— половинная точность (быстрее на GPU)TYPE_INT64— идентификаторы токенов для NLPTYPE_INT8— квантизованные модели
Идея динамического пакетирования
Динамическое пакетирование позволяет Triton объединять несколько входящих запросов в один большой пакет перед запуском модели. GPU гораздо эффективнее работает с большими пакетами, поэтому пропускная способность значительно увеличивается без изменения кода клиента.
Настройка динамического пакетирования
Вы включаете его в конфигурации и задаёте, как долго Triton ожидает накопления запросов. Небольшое значение max_queue_delay_microseconds позволяет немного увеличить задержку ради значительно большей пропускной способности.
dynamic_batching {
preferred_batch_size: [ 8, 16 ]
max_queue_delay_microseconds: 1000
}Параллельные экземпляры модели
По умолчанию Triton запускает одну копию (экземпляр) модели. С помощью группы экземпляров можно параллельно запускать несколько экземпляров на одном или нескольких GPU, одновременно обрабатывать независимые запросы и повышать загрузку ресурсов.
instance_group [
{
count: 2
kind: KIND_GPU
gpus: [ 0 ]
}
]Пакетирование и параллелизм
Эти механизмы решают разные задачи:
- Динамическое пакетирование объединяет запросы в один вызов модели (пропускная способность одного вызова)
- Параллельные экземпляры одновременно выполняют несколько вызовов модели (параллелизм)
Они дополняют друг друга; в промышленных конфигурациях часто используются оба механизма.
perf_analyzer
Анализатор производительности — инструмент Triton, который нагружает сервер синтетическими запросами и сообщает о пропускной способности (инференсов в секунду) и процентилях задержки. Используйте его, чтобы найти настройки пакетирования и параллелизма, максимизирующие пропускную способность в пределах допустимой задержки.
perf_analyzer -m resnet50 \
--concurrency-range 1:8 \
--percentile 95Чтение результатов perf_analyzer
Инструмент перебирает уровни параллелизма и выводит пропускную способность и задержку для каждого из них. Ищите точку перегиба кривой: момент, когда дальнейшее увеличение параллелизма перестаёт повышать пропускную способность или увеличивает задержку P95 выше допустимого предела.
# Concurrency: 4, throughput: 1820 infer/sec, p95 latency: 9.1 ms
# Concurrency: 8, throughput: 1905 infer/sec, p95 latency: 17.4 msБыстрая проверка
Проверьте свои знания о Triton.
Итоги
Вы научились обеспечивать высокопроизводительное обслуживание запросов с помощью Triton:
- Репозиторий моделей: отдельные папки для моделей с вложенными папками версий и
config.pbtxt config.pbtxtзадаёт серверную часть, формы входных и выходных тензоров и типы данных- Динамическое пакетирование повышает пропускную способность; параллельные экземпляры добавляют параллелизм
- perf_analyzer сравнивает пропускную способность и задержку для настройки параметров
Часто задаваемые вопросы
Урок «Высокопроизводительное предоставление моделей с Triton Inference Server» бесплатный?
Да — полный текст урока «Высокопроизводительное предоставление моделей с Triton Inference Server» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.
Чему я научусь в уроке «Высокопроизводительное предоставление моделей с Triton Inference Server»?
Репозиторий моделей, конфигурация модели config.pbtxt, параллельные экземпляры моделей, динамическое пакетирование Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn AI with Python?
Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Высокопроизводительное предоставление моделей с Triton Inference Server»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn AI with Python?
Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Контейнеризация моделей машинного обучения с помощью Docker
- Развертывание в облаке: AWS SageMaker
- Высокопроизводительное предоставление моделей с Triton Inference Server
- Масштабирование и автоматическое масштабирование конечных точек моделей