🦄 Enterprise Edition Версия Silero - Скорость, Пропускная Способность и Сайзинги

Обновление от 2023-10-25

Сейчас в список наших основных поддерживаемых решений входят:

  • Программный модуль "СИЛЕРО" для синтеза речи на русском языке и сопутствующих задач на основе нейронных сетей и алгоритмов машинного обучения (ссылка, Реестровая запись №15935);
  • "Программный модуль "СИЛЕРО" для распознавания речи и сопутствующих задач на основе нейронных сетей и алгоритмов машинного обучения" (ссылка, Реестровая запись №10106);

Для получения коммерческого предложения по лицензированию нужно отправить письмо на электронную почту hello@silero.ai с указанием:

  • Названия вашего юрлица;
  • Предполагаемого сценария использования;
  • Какой-либо оценки по масштабу использования для примерного расчета сайзингов для коммерческого предложения;

Обновление от 2022-10-11

Публичная версия документации программного модуля Силеро для синтеза речи на русском языке доступна по ссылке. Она содержит информацию про:

  • Описание функциональных характеристик;
  • Информацию для установки и эксплуатации ПО;

Сайзинги

Актуальные сайзинги для наших дистрибутивов на базе Ubuntu и Astra Linux, версия 1.5.4. За этот период произошло радикальное ускорение синтеза речи и увеличение его качества.

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

Распознавание речи, CPU

Intel(R) Core(TM) i7-6800K CPU @ 3.40GHz

СайзингМинимум
Файл AMru_small_v015_q.jit
Файл LMru_lm_v*.distro.model
RAM8 GB
Ядер процессора6+
Тактовая частота ядра3.5 GHz+
2 потока на ядро процессораДа
AVX2 инструкции процессораОбязательно
--scale lm-consumer=8
--scale am-consumer-short=1
--scale am-consumer-long=1
WORKERS (воркеры API)8
AM_BATCH_DELAY0.05
AM_BATCH_SIZE10
AM_LANES3
CPUSET_SHORT0-1 # 1 ядро
CPUSET_LONG2-5 # 2 ядра
CPUSET_LM6-11 # 3 ядра

v1.5.4:

Метрики4 "потока"8 "потоков"
Среднее время ответа, мс290370
95-я перцентиль, мс480670
99-я перцентиль, мс600890
Файлов за 1000 мс1219
Файлов за 500 мс6.09.0
Секунд аудио в секунду (1 / RTF)4163
Биллинговые потоки6-1210-16
Секунд аудио в секунду на ядро6.810.3

v1.5.4_astra:

Метрики4 "потока"8 "потоков"
Среднее время ответа, мс280370
95-я перцентиль, мс470680
99-я перцентиль, мс580860
Файлов за 1000 мс1319
Файлов за 500 мс6.09.0
Секунд аудио в секунду (1 / RTF)4264
Биллинговые потоки6-1210-16
Секунд аудио в секунду на ядро6.810.3

Сайзинги на astra почти не отличаются и приведены для справки.

Распознавание речи, GPU

v1.5.4:

СайзингРекомендуется
Файл AMru_xlarge_v015.model
Файл LMru_lm_v*.distro.model
RAM12 GB
Ядер процессора12+
Тактовая частота ядра3.5 GHz+
2 потока на ядро процессораДа
AVX2 инструкции процессораНе обязательно
--scale lm-consumer=16
AM_LANES
WORKERS (воркеры API)16
AM_BATCH_DELAY0.05
AM_BATCH_SIZE10
Совместимые GPU(*)

1080Ti:

Метрики8 "потоков"16 "потоков"
Среднее время ответа, мс340440
95-я перцентиль, мс520650
99-я перцентиль, мс610820
Файлов за 1000 мс21.233.0
Файлов за 500 мс10.616.5
Секунд аудио в секунду (1 / RTF)71111
Биллинговые потоки12 - 1816 - 24

3090:

Метрики8 "потоков"16 "потоков"24 "потока"
Среднее время ответа, мс240230250
95-я перцентиль, мс340350370
99-я перцентиль, мс400400450
Файлов за 1000 мс31.063.687.6
Файлов за 500 мс15.531.843.8
Секунд аудио в секунду (1 / RTF)105214295
Биллинговые потоки15 - 2030 - 4042 - 50

Время ответа в секундах в зависимости от числа поднятых AM-консьюмеров и количества параллельных потоков (workers), отправляющих запросы с аудио в API.

  • Яркая палитра - среднее время ответа;
  • Тёмная палитра - 95 перцентиль;
  • Светлая палитра - 99 перцентиль;

1/RTF - Количество секунд распознанного аудио за 1 секунду работы - в зависимости от числа поднятых AM-консьюмеров и количества параллельных потоков(workers), отправляющих запросы с аудио в API.

Синтез речи, CPU

Intel(R) Core(TM) i7-6800K CPU @ 3.40GHz

СайзингМинимум
RAM3 GB
Ядер процессора2+
Тактовая частота ядра3.5 GHz+
2 потока на ядро процессораДа
AVX2 инструкции процессораНе обязательно
--scale tts-consumer=1
CPUSET_TTS0-3 # 2 ядра

v1.5.4

Метрики8KHz/1 "поток"24KHz/1 "поток"48KHz/1 "поток"
Среднее время ответа, мс130260460
95-я перцентиль, мс190440780
99-я перцентиль, мс2205201020
Секунд аудио в секунду (1 / RTF)412012

v1.5.4_astra

Метрики8KHz/1 "поток"24KHz/1 "поток"48KHz/1 "поток"
Среднее время ответа, мс120260460
95-я перцентиль, мс180440820
99-я перцентиль, мс2105201070
Секунд аудио в секунду (1 / RTF)442112

Сайзинги на astra почти не отличаются и приведены для справки.

Синтез речи, GPU

v1.5.4

СайзингРекомендуется
Файл TTStts_ru_v015_newacc.pt
RAM3 GB
Ядер процессора6+
Тактовая частота ядра3.5 GHz+
2 потока на ядро процессораДа
AVX2 инструкции процессораНе обязательно
--scale tts-consumer=2
WORKERS (воркеры API)8
Совместимые GPU(*)

1080Ti SR=8000 Hz

Метрики1 "поток"4 "потока"8 "потоков"
Среднее время ответа, мс8080130
95-я перцентиль, мс90120170
99-я перцентиль, мс90130200
Секунд аудио в секунду (1 / RTF)71252328

1080Ti SR=24000 Hz

Метрики1 "поток"4 "потока"8 "потоков"
Среднее время ответа, мс90110190
95-я перцентиль, мс120170250
99-я перцентиль, мс130190290
Секунд аудио в секунду (1 / RTF)58192224

1080Ti SR=48000 Hz

Метрики1 "поток"4 "потока"8 "потоков"
Среднее время ответа, мс110140250
95-я перцентиль, мс140230360
99-я перцентиль, мс160260390
Секунд аудио в секунду (1 / RTF)50148168

3090 SR=8000Hz

Метрики1 "поток"4 "потока"8 "потоков"
Среднее время ответа, мс505070
95-я перцентиль, мс507090
99-я перцентиль, мс6080100
Секунд аудио в секунду (1 / RTF)114416624

3090 SR=24000Hz

Метрики1 "поток"4 "потока"8 "потоков"
Среднее время ответа, мс607090
95-я перцентиль, мс7090120
99-я перцентиль, мс70100140
Секунд аудио в секунду (1 / RTF)95328464

3090  SR=48000Hz

Метрики1 "поток"4 "потока"8 "потоков"
Среднее время ответа, мс7080120
95-я перцентиль, мс90120170
99-я перцентиль, мс110140180
Секунд аудио в секунду (1 / RTF)80272352

Время ответа в секундах в зависимости от числа поднятых TTS консьюмеров и количества параллельных потоков(workers), отправляющих запросы с текстом в API.

  • Яркая палитра - среднее время ответа;
  • Тёмная палитра - 95 перцентиль;
  • Светлая палитра - 99 перцентиль;

Количество секунд синтезируемого аудио за 1 секунду работы - в зависимости от числа поднятых TTS консьюмеров и количества параллельных потоков(workers), отправляющих запросы с текстом в API.

(*)

В целом подходят любые GPU Nvidia начиная с архитектуры Pascal, в  частности:

  • Любые игровые GPU Nvidia выше чем 1070 8+GB RAM с турбиной;
  • Любые однослотовые GPU Nvidia серии Quadro 8+GB RAM (TDP 100 - 150W) с турбиной или пассивные;
  • Nvidia Tesla T4, пассивная, TDP 75W;
  • Любые карты лучше / мощнее;

Обновление от 2021-11-18

Сейчас в список наших основных поддерживаемых решений входят:

  • Распознавание речи;
  • Синтез речи;
  • Детектор голоса и расстановка пунктуации и знаков препинания являются вспомогательными;

Дальше мы приведем сайзинги для GPU и CPU версии нашего распознавания и синтеза речи для недавнего масштабного релиза наших дистрибутивов v012:

  • GPU сайзинг для распознавания речи;
  • GPU сайзинг для синтеза речи;
  • СPU сайзинг для распознавания речи;
  • CPU сайзинг для синтеза речи;

GPU сайзинг для распознавания речи

СайзингРекомендуется
Файл AMru_xlarge_v012.model
Файл LMru_lm_v*.distro.model
RAM12 GB
Ядер процессора12+
Тактовая частота ядра3.5 GHz+
2 потока на ядро процессораДа
AVX2 инструкции процессораНе обязательно
--scale lm-consumer=16
AM_LANES
WORKERS (воркеры API)16
AM_BATCH_DELAY0.05
AM_BATCH_SIZE10
Совместимые GPU(*)

1080 Ti

Метрики8 "потоков"16 "потоков"
Среднее время ответа, мс320440
95-я перцентиль, мс500660
99-я перцентиль, мс630820
Файлов за 1000 мс22.433.2
Файлов за 500 мс11.216.6
Секунд аудио в секунду (1 / RTF)75112
Биллинговые потоки12 - 1816 - 24

3090

Метрики8 "потоков"16 "потоков"24 "потоков"
Среднее время ответа, мс240230290
95-я перцентиль, мс330340450
99-я перцентиль, мс390400530
Файлов за 1000 мс316375
Файлов за 500 мс15.531.537.5
Секунд аудио в секунду (1 / RTF)106212254
Биллинговые потоки16 - 3232 - 4838 - 52

GPU сайзинг для синтеза речи

СайзингРекомендуется
RAM3 GB
Ядер процессора8+
Тактовая частота ядра3 GHz+
2 потока на ядро процессораДа
AVX2 инструкции процессораНе обязательно
WORKERS (воркеры API)8
TTS_BATCH_DELAY0.1
TTS_BATCH_SIZE8
Совместимые GPU(*)
Метрики8 "потоков"
Среднее время ответа, мс582
95-я перцентиль, мс1151
99-я перцентиль, мс1240
Секунд аудио в секунду (1 / RTF)39
Секунд аудио в секунду на батч4.9

СPU сайзинг для распознавания речи

СайзингМинимум
Файл AMru_small_v013_q.model
Файл LMru_lm_v*.distro.model
RAM8 GB
Ядер процессора6+
Тактовая частота ядра3.5 GHz+
2 потока на ядро процессораДа
AVX2 инструкции процессораОбязательно
--scale lm-consumer=8
--scale am-consumer-short=1
--scale am-consumer-long=1
WORKERS (воркеры API)8
AM_BATCH_DELAY0.05
AM_BATCH_SIZE10
AM_LANES3
CPUSET_SHORT0-1 # 1 ядро
CPUSET_LONG2-5 # 2 ядра
CPUSET_LM6-11 # 3 ядра

Intel(R) Core(TM) i7-6800K CPU @ 3.40GHz:

Метрики4 "потока"8 "потоков"
Среднее время ответа, мс280380
95-я перцентиль, мс490720
99-я перцентиль, мс630870
Файлов за 1000 мс1218
Файлов за 500 мс6.09.0
Секунд аудио в секунду (1 / RTF)4162
Биллинговые потоки6-1210-16
Секунд аудио в секунду на ядро6.810.3

CPU сайзинг для синтеза речи

СайзингМинимум
RAM3 GB
Ядер процессора2+
Тактовая частота ядра3.5 GHz+
2 потока на ядро процессораДа
AVX2 инструкции процессораОбязательно
--scale tts-consumer=1
TTS_BATCH_DELAY0
TTS_BATCH_SIZE1
CPUSET_TTS0-4 # 2 ядра

Intel(R) Core(TM) i7-6800K CPU @ 3.40GHz:

Метрики1 "поток"2 "потока"
Среднее время ответа, мс17413225
95-я перцентиль, мс38536185
99-я перцентиль, мс46227737
Секунд аудио в секунду (1 / RTF)6.53.5
Секунд аудио в секунду на ядро3.251.75


Оригинальная Статья от 2020-12-05

Какое-то время назад мы публиковали целый ряд статей про нашу систему Speech-To-Text, а именно про:

  • Её качество;
  • Её скорость и пропускную способность;
  • Про требования к ресурсам;

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

Чем Мы Занимались Все Это Время

Может показаться, что мы ушли в подполье, но с тех пор многое изменилось и мы не сидели без дела:

  • Мы выпустили публичную Community Edition версию наших моделей для нескольких языков. Нас даже похвалил Soumith Chintala;
  • Cделали несколько глобальных рефакторингов кода, выпустили V2 версию нашей CE-edition модели для английского языка;
  • Публично выпустили экспериментальную модель для украинского языка в рамках Silero Models для мотивации наших украинских коллег;
  • Запустили несколько больших research-проектов и провели большую подготовительную работу для обширного обновления перезапуска (как говорится, stay tuned!). Будем выпускать новые публичные продукты when it's done;

Финальное Ускорение Наших Моделей

По ряду причин уже не буду тут вдаваться в детали, но финальную акустическую модель удалось существенно ускорить (настолько, что это практически перестало быть боттлнеком даже для CPU сайзингов!).

Метрики указаны в секундах аудио обработанных в секунду на 1 ядро процессора (1 / RTF на ядро):

Batch size FP32 FP32 + Fused FP32 + INT8 FP32 Fused + INT8 Full INT8 + Fused New Best
1 7.7 8.8 8.8 9.1 11.0 22.6
5 11.8 13.6 13.6 15.6 17.5 29.8
10 12.8 14.6 14.6 16.7 18.0 29.3
25 12.9 14.9 14.9 17.9 18.7 29.8

Может показаться, что скачок является слишком огромным, но мы просто не сидели без дела. Тут еще важно отметить, что цифры отчасти кажутся нереалистичными в сравнении с теми же 8+ RTS, о которых писал фейсбук в своей статье. Но тут важно понимать, что мы обрабатываем аудио батчами, а фейсбук - по одному кусочками по 750 ms. Плюс это идеальные условия, когда файлы по сути кормятся в акустическую сеть из памяти. В реальности все не так радужно (смотрите сайзинги ниже) и мы тратим гораздо больше времени на ожидание и коммуникацию.

Ускорения против базовой "маленькой модели":

Batch size FP32 + Fused FP32 + INT8 FP32 Fused + INT8 Full INT8 + Fused New Best
1 14% 14% 18% 42% 193%
5 16% 16% 32% 48% 153%
10 15% 15% 31% 41% 130%
25 15% 15% 39% 44% 130%
image

Сайзинги и Дистрибутивы

Метрики акустической модели являются несколько абстрактными. В реальном деплое на скорость и пропускную способность (latency / throughput) влияет гораздо больше вещей - пост-обработка, архитектура сервиса, задержка сети, сериализация, коммуникация, итд итп.

По этой причине - мы просто провели огромную работу по расчету реальных сайзингов наших EE моделей и оптимизации гипер-параметров наших дистрибутивов.

Пара слов о методологии:

  • Метрики рассчитаны для файлов длиной 1 - 7 секунд, которые "кормятся" в сервис в 4 - 8 - 16 потоков;
  • Распределение длин файлов соответствует распределению длин файлов в реальных диалогах людей по телефону;
  • Метрики рассчитаны для многопоточного веб-сервиса, что немного абстрагируется от сценария реального использования. Ну то есть если мы можем держать условно 8 потоков с условной гарантией в latency в 500 мс, то это значит, что правильно настроив конечную бизнес-логику, можно обрабатывать сильно больше, чем 8 одновременных звонков;
  • Реальные люди не говорят одновременно, пока человек заканчивает вторую фразу мы уже усеваем обработать первую итд итп. Но это уже сильно зависит от реального бизнес-кейса;

Настройка Сайзинга Для GPU

Сайзинг Минимум Рекомендуется
Диск SSD, 256+ GB NVME, 256+ GB
RAM 32 GB 32 GB
Ядер процессора 8+ 12+
Тактовая частота ядра 3 GHz+ 3.5 GHz+
2 потока на ядро процессора Да Да
AVX2 инструкции процессора Не обязательно Не обязательно
Совместимые GPU (*) (*)
Количество GPU 1 1
Метрики 8 "потоков" 16 "потоков"
Среднее время ответа, мс 280 320
95-я перцентиль, мс 430 476
99-я перцентиль, мс 520 592
Файлов за 1000 мс 25.0 43.4
Файлов за 500 мс 12.5 21.7
Секунд аудио в секунду (1 / RTF) 85.6 145.0
Биллинговые потоки 12 - 18 22 - 30
Секунд аудио в секунду на ядро 10.7 12.1

(*) Есть 3 типа подходящих GPU:

  • Любые игровые GPU Nvidia выше чем 1070 8+GB RAM с турбиной;
  • Любые однослотовые GPU Nvidia серии Quadro 8+GB RAM (TDP 100 - 150W) с турбиной или пассивные;
  • Nvidia Tesla T4, пассивная, TDP 75W;

Настройка Сайзинга Для CPU

Сайзинг Минимум Рекомендуется
Диск SSD, 256+ GB SSD, 256+ GB
RAM 32 GB 32 GB
Ядер процессора 8+ 12+
Тактовая частота ядра 3.5 GHz+ 3.5 GHz+
2 потока на ядро процессора Да Да
AVX2 инструкции процессора Обязательно Обязательно
Метрики 4 "потока" 8 "потоков"
Среднее время ответа, мс 320 470
95-я перцентиль, мс 580 760
99-я перцентиль, мс 720 890
Файлов за 1000 мс 11.1 15.9
Файлов за 500 мс 5.6 8.0
Секунд аудио в секунду (1 / RTF) 37.0 53.0
Биллинговые потоки 6 - 9 8 - 10
Секунд аудио в секунду на ядро 4.6 4.4

Комментарии по Сайзингам

  • В реальности со всем фаршем даже у сервиса с GPU получается только 10 - 15 RTS на одно ядро процессора (хотя теоретический RTS самой модели на GPU находится где-то в районе 500 - 1,000). В теории число воркеров CPU на 1 GPU можно наращивать больше, чем мы пробовали, но мы упираемся в удорожание процессоров;
  • CPU-версия сервиса показывает только в районе 5 честных RTS, что немало, но она скорее оптимизирована как баланс между гарантиями по latency и throughput;
  • Метрики настоящие и честные и подбор параметров стоил много боли и страданий. Если честно - я вообще не видел, чтобы кто-то вообще показывал перцентили реальных систем;
  • Многие крупные проекты просят 50 одновременных разговоров, поэтому иметь возможность покрыть такой проект используя всего 2 GPU (+ резервирование) это довольно круто;
  • Использование GPU сервиса где-то в 2-3 раза дешевле, чем если считать все только на CPU;