OS | CPU | vCPU | RAM |
---|---|---|---|
Fedora Linux 39 (WE) | Intel(R) Core(TM) i7-10510U @ 4.90 GHz | 8 | 15.4 GiB |
Проверка состояния шин автомобиля по фотографии. По фото с близкого расстояния моедель оценивает износ шин и выдает степень пригоность для эксплуатации.
Использованный датасет: Tire-Check
triton/model_repository
└── tire_quality_classifier
├── 1
│ └── model.onnx
└── config.pbtxt
Для замера метрик импользовалась команда:
perf_analyzer -m tire_quality_classifier --percentile=95 -u localhost:8500 --shape=IMAGES:1,3,150,150 --concurrency-range 1:8
(как базовый шаблон, с соответствующими изменениями для конкретных оптимизаций)
Optimization | Conq Range | Throughput, fps | Latency, ms | Details |
---|---|---|---|---|
Base | ||||
Base | ||||
Base | ||||
Base | ||||
Dynamic Batching | wo params | |||
Dynamic Batching | wo params | |||
Dynamic Batching | wo params | |||
Dynamic Batching | wo params | |||
Dynamic Batching | preffered bs |
|||
Dynamic Batching | preffered bs |
|||
Dynamic Batching | preffered bs |
|||
Dynamic Batching | preffered bs |
|||
Dynamic Batching | 1 | max delay |
||
Dynamic Batching | 2 | max delay |
||
Dynamic Batching | 4 | max delay |
||
Dynamic Batching | 8 | max delay |
||
Dynamic Batching | 1 | max delay |
||
Dynamic Batching | 2 | max delay |
||
Dynamic Batching | 4 | max delay |
||
Dynamic Batching | 8 | max delay |
||
More instances | 1 | 2, with dynamic batching | ||
More instances | 2 | 2, with dynamic batching | ||
More instances | 4 | 2, with dynamic batching | ||
More instances | 8 | 2, with dynamic batching | ||
More instances | 1 | 4, with dynamic batching | ||
More instances | 2 | 4, with dynamic batching | ||
More instances | 4 | 4, with dynamic batching | ||
More instances | 8 | 4, with dynamic batching | ||
Open Vino | 1 | with dynamic batching, 4 instances | ||
Open Vino | 2 | with dynamic batching, 4 instances | ||
Open Vino | 4 | with dynamic batching, 4 instances | ||
Open Vino | 8 | with dynamic batching, 4 instances |
Dynamic batching - позволяет автоматически увеличивать размер батча, если в очереди накопилось достаточно запросов, что позволяет увеличить throughput и уменьшить latency.
Эта оптимизация может использоваться и без параметров, но позволяет указать некоторые для повышения эффективности.
Были проведены жксперименты с такими параметрами как:
-
preferred_batch_size
: предпочтительный размер батча, который будет использоваться, если в очереди накопилось достаточно запросов -
max_queue_delay_microseconds
: максимальное время ожидания запросов в очереди, после которого они будут отправлены на выполнение
Такжже можно было указать queue_policy или priority_levels, но это предполагает слишком большое количество экспериментов, и с учётом игрушечности задачи и использования ноутбука для экспериментов, выглядит нецелесообразным.
Позволяет запускать несколько экземпляров модели, что позволяет увеличить throughput и уменьшить latency.
Собственно, попробовал 2 и 4 экземпляра, больше некуда тк ноутбук)
Позволяет использовать модель, оптимизированную для работы на CPU с помощью OpenVino.
Позволяет указать диапазон количества запросов, для которых будет использоваться один экземпляр модели.
-
По-хорошему следовало провести эксперименты с разными оптимизациями по одновременно, но это предполагает слишком большое количество экспериментов
-
Max batch size -
$4$ - был выбран из головы~
-
В целом, все оптимизации позволяют увеличить throughput и уменьшить latency, но не в разы, а в пределах
$10-20%$ -
Наилучший результат показала оптимизация с использованием OpenVino, но это неудивительно, тк она предполагает использование модели, оптимизированной для работы на CPU, но прям чуть-чуть
-
Итоговая версия конфига:
-
-
preferred_batch_size
:$4$
-
-
-
max_queue_delay_microseconds
:$200$
-
-
-
instance_group
:$4$
-
-
-
inference_provider
:openvino_cpu
-