Closed Omirax closed 1 year ago
Всё сгенерированные ответы кэшируются. Чтобы почистить кэш просто в браузере перейдите на адрес сервера/clear_cache
.
До авто очистки пока руки не дошли.
В том то и дело, что я видел GET /clear_cache - Очищает кэш уже синтезированных сообщений.
и выполнил сразу.
Получил ответ Success
Но в результате
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
b92407531c1d silero-tts-service 0.43% 1.264GiB / 3.681GiB 34.34% 63MB / 17.4MB 210MB / 438MB 11
1.264GiB - это после очистки кэша. Поэтому и написал.
Тогда мне сложно сказать сейчас.
Я без понятия где память утекает.
Это не критично. Как будет возможность, посмотрите. Я готов помогать искать проблемы с утечкой, если будет нужна моя помощь.
Я перевёл контейнер в фазу активного использования. И в принципе 1.2-1.3GB +/- пока постоянно. В день - примерно 30-40 обращений к Rhasspy и 5-6 HA TTS.
В любом случае - работа Вами проделана великолепная! Это лучшее из того, что я встречал для локального голосового управления!
Это не критично. Как будет возможность, посмотрите. Я готов помогать искать проблемы с утечкой, если будет нужна моя помощь.
Я перевёл контейнер в фазу активного использования. И в принципе 1.2-1.3GB +/- пока постоянно. В день - примерно 30-40 обращений к Rhasspy и 5-6 HA TTS.
В любом случае - работа Вами проделана великолепная! Это лучшее из того, что я встречал для локального голосового управления!
Вот тут странно, у меня в среднем 5 уникальных запросов в день от НА и при этом контейнер ест 250 мегабайт.
Ну как бы вот что мы имеем:
root@b92407531c1d:/usr/app# ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
PID PPID CMD %MEM %CPU
1 0 python3 -u ./main.py 34.2 0.5
126 0 bash 0.0 0.3
132 126 ps -eo pid,ppid,cmd,%mem,%c 0.0 0.0
133 126 head 0.0 0.0
root@b92407531c1d:/usr/app# ps aux | awk '{print $6/1024 " MB\t\t" $11}' | sort -n
0 MB COMMAND
0.59375 MB sort
0.996094 MB awk
3.15625 MB ps
3.73047 MB bash
1290.14 MB python3
И мы тут как не пытались загрузить нашу "Милану" TTS или голосовыми командами - получили вот так:
root@b92407531c1d:/usr/app# ps aux | awk '{print $6/1024 " MB\t\t" $11}' | sort -n
0 MB COMMAND
0.527344 MB sort
0.996094 MB awk
3.07812 MB ps
3.54297 MB bash
1288.71 MB python3
Проблема с памятью по-прежнему актуальна после еще 2-х дней эксплуатации (всего 5 суток после рестарта контейнера):
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
b92407531c1d silero-tts-service 0.43% 1.54GiB / 3.681GiB 41.84% 63MB / 26.3MB 247MB / 552MB 11
...
9909ca915b28 rhasspy 29.10% 574.9MiB / 3.681GiB 15.25% 35.6GB / 2.04GB 1.34GB / 1.4GB 55
Ниже список по использованию памяти в системе:
PID PPID CMD %MEM %CPU
1264200 1264180 python3 -u ./main.py 41.4 0.5
1163836 1163809 python3 -m rhasspyasr_kaldi 11.6 5.2
429030 428965 mariadbd 7.9 0.3
1689210 625579 python3 -m homeassistant -- 7.8 5.3
1249151 1249103 node index.js 1.8 0.7
428255 1 /usr/bin/dockerd -H fd:// - 1.3 1.6
1163837 1163810 python3 -m rhasspywake_rave 0.8 10.4
426 1 /sbin/multipathd -d -s 0.7 0.0
1248885 1248854 /portainer 0.6 0.0
После рестарта контейнера:
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
b92407531c1d silero-tts-service 0.44% 232.3MiB / 3.681GiB 6.16% 936B / 0B 303kB / 0B 7
...
9909ca915b28 rhasspy 28.18% 529.8MiB / 3.681GiB 14.05% 35.7GB / 2.04GB 1.34GB / 1.42GB 55
После первого запроса через rhasspy с ответом "температуры за окном" (примерно 100 знаков)
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
b92407531c1d silero-tts-service 0.42% 649.7MiB / 3.681GiB 17.23% 3.83kB / 586kB 24.3MB / 586kB 11
После следующего уникального запроса из 100 знаков:
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
b92407531c1d silero-tts-service 0.45% 809.7MiB / 3.681GiB 21.48% 7kB / 1.22MB 40.8MB / 1.22MB 11
Повторение первого запроса с ответом "температуры за окном" приводят к увеличению занятости памяти на 1.5-2MB
К сожалению течь памяти у моделей Silero. Я пока не знаю удастся ли вообще эту проблему починить. Пока ничего не помогает.
Всё проблема исправлена, правда костылём. Из-за чего запросы могут выполняться чуть дольше.
Здравствуйте!
А не могли бы Вы залить на докерхаб под другим тэгом образ без внесенных изменений? Дело в том, что у меня много у кого сделаны автоматизации с таймаутами.
timeout: 00:00:20
continue_on_timeout: true
И у меня стали "выпадать" голосовые оповещения. То есть за 20 секунд не успевает отработать.
P.S. Возможно, что я не правильно понял, но вроде модели Silero помешают в память транскрипцию отдельных слов. А потом пользуются ими при комплектации текста. Если это так, то это объясняет то, что повторное сообщение о погоде, но с другими цифрами отрабатывает в 5-6 раз быстрее, чем первое. Сейчас же получается, что 2 одинаковых сообщений о погоде отрабатывает одинаково долго.
Здравствуйте!
А не могли бы Вы залить на докерхаб под другим тэгом образ без внесенных изменений? Дело в том, что у меня много у кого сделаны автоматизации с таймаутами.
timeout: 00:00:20 continue_on_timeout: true
И у меня стали "выпадать" голосовые оповещения. То есть за 20 секунд не успевает отработать.
P.S. Возможно, что я не правильно понял, но вроде модели Silero помешают в память транскрипцию отдельных слов. А потом пользуются ими при комплектации текста. Если это так, то это объясняет то, что повторное сообщение о погоде, но с другими цифрами отрабатывает в 5-6 раз быстрее, чем первое. Сейчас же получается, что 2 одинаковых сообщений о погоде отрабатывает одинаково долго.
Да, поведение вы поняли правильно. Просто есть проблема что память которую они заняли не как не получается освободить. Так что я вынес синтез речи в отдельный процесс, который запускается каждый раз когда нужно что-то синтезировать. Но это плохое решение. Тут получается закономерность. Либо модели жрут много памяти и работают +- быстро или жрут мало памяти и работают долго.
У меня в тестах, получилось добиться жора в 4.5 гб памяти. Что есть много так как у меня на сервере всего 6.
Я хочу попробовать ограничить память контейнеру.
Я хочу попробовать ограничить память контейнеру.
Хорошо, я как домой дойду, выложу в хаб образ з отдельным лейблом, со старой генерацией речи.
Не знаю, относится ли это к проблеме, но:
Important Information for VAD Python Users ⚠️
If you are using the VAD in a:
multi-threaded or
a multi-process application
**Do not forget to disable gradients in EACH process and / or thread.
Otherwise memory may leak noticeably.**
Ну и вот еще https://github.com/snakers4/silero-models/discussions/43
Не знаю, относится ли это к проблеме, но:
Important Information for VAD Python Users ⚠️ If you are using the VAD in a: multi-threaded or a multi-process application **Do not forget to disable gradients in EACH process and / or thread. Otherwise memory may leak noticeably.**
Ну и вот еще snakers4/silero-models#43
VAD Это их система для обнаружения речи, для захвата её микрофоном. Silero также имеют модель stt.
А проблема которую вы нашли, также касается stt моделей.
Я хочу попробовать ограничить память контейнеру.
Ограничение памяти помогло. Но по тестам скорость все рано не много но упала.
Ну хоть так. А то сейчас - перебор! Будем тестить, как зальете на докхаб!
Ну хоть так. А то сейчас - перебор! Будем тестить, как зальете на докхаб!
Всё новая версия в хабе.
Отлично! Уже в работе!
Здравствуйте!
Несколько дней работает контейнер без особого использования. 1.3GB не слишком ли много?