Чего не хватает в «Алисе»

Спросили чего мне не хватает в «Алисе». Чтобы описать, надо последить за своими сценариями, крепко подумать, а потом тщательно всё описать. С таким планом отвечать я буду вечность. Поэтому опишу всего один пункт, мне его не хватает сильнее всего.

Скриншот интерфейса умного дома: карточки датчиков (двери, дыма, протечки) и часов по комнатам с показателями заряда, температуры и влажности.
Датчики моего «умного дома», которые видит «Алиса»

У меня дома, помимо датчиков воздуха, о качестве которого я регулярно пишу, есть несколько датчиков утечки воды и датчик дыма в кухне-гостиной. При этом часть датчиков привязана к «Mi Home» через китайское облако, а остальное — к «Алисе».

Я надеялся сделать сигнальные сценарии, которые при утечке и/или дыме слали бы мне на смартфон уведомление.

В MiHome мне это удалось без проблем — простой двухшаговый сценарий «если сработал датчик, то послать уведомление на телефон».

Но тут выяснилось, что «Алиса» на такое неспособна. В группе для бывших сотрудников «Яндекса» мне так и сказали, что такой возможности сейчас нет, порекомендовали запрограммировать колонку на проигрывание громкого звука в момент срабатывания датчика.

Но это не одно и то же, разумеется. Не хочу, чтобы показалось, что я хвастаюсь своей социальной жизнью, но в момент утечки воды или возгорания, не могу обещать обязательно быть дома.

В общем, отсутствующая возможность отправки уведомлений из сценариев «Алисы» возглавляет мой список того, что мне очень бы хотелось чтобы было.

14 комментариев

Работа над ошибками

Вчера я писал о том как я чуть не прожарил нашу машину с графическими процессорами, а сегодня мы сделали работу над ошибками.

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

Вид изнутри корпуса ПК: шесть вентиляторов с желтыми наклейками, система охлаждения Deep Cool, зеленая подсветка оперативной памяти и синие LED-полосы на стенке корпуса.
Техники добавили ещё шесть мелких вентиляторов к имеющимся четырём большим

Во-первых, в «Конду» надо было ставить не просто «Пайторч», а специальную версию с поддержкой CUDA, там названия библиотек немного другие. Во-вторых, в «Тензорфлоу» тоже надо было доставить некоторое количество библиотек, сейчас даже не вспомню какие, не записывал.

Почему-то это всё разбросано по целой груде всяких туториалов, так что мне несколько раз по кругу пришлось перепробовать несколько комбинаций. На одну библиотеку я вообще руками создал симлинк с другим именем, не уверен, что это правильный способ, но в спешке выбирать не приходится — хотелось уже побыстрее получить результат.

Таблица процессов GPU: 8 процессов python (PID 12348–12355) на GPU 0–7, тип C, потребление памяти от 226 до 327 MiB; строка приглашения (base) [root@localhost ~]#
Успех — обработка запустилась на графических ядрах, в максимуме памяти потребляется больше

А самое главное — модель и токенайзер нужно было явно перебросить на графическое ядро (там есть ещё какая-то автоматика, но как её правильно включить я пока не разобрался) вызовом метода to. В аргументе указывается cuda: и номер ядра. В моём случае — от нуля до семи.

Это всё отжирает чуть меньше половины памяти одного ядра, так что в параллели удаётся запустить четырнадцать процессов. Возможно, если перейти на потоки, будет лучше, но пока так. Тестировал очень просто:

time xargs -n1 -P14 python test.py < <(seq 0 13)

В этом примере моя тестовая программа берёт номер ядра по модулю восемь из первого параметра, таким образом я размазываю запущенное по всем ядрам равномерно.

Четырнадцать процессов параллельно обрабатываются примерно за 40 секунд, один работает примерно за 17, больше половины времени занимает инициализация всего добра и загрузка модели.

Жаль я не смог запустить двадцать процессов  — памяти не хватило. Именно с этим числом процессов мне за десять минут почти удалось зажарить центральный процессор.

Оставить комментарий