Как стать автором
Обновить

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

Время на прочтение 8 мин
Количество просмотров 12K
Всего голосов 24: ↑24 и ↓0 +24
Комментарии 12

Комментарии 12

Пока делал картинку из заголовка (надеюсь, все оценят шутку про "кровожадность" и отсутствие "интеллекта" у модели) совсем забыл добавить, что в некоторых конкретных случаях паузы могут быть эквивалентны запятым (на примере этого предложения это очень ярко видно).


Но прокидывание пауз из речи мы тоже пока не делали.

Модель прекрасная и долгожданная, но судя по всему, в опубликованной версии есть пара мелких ошибок. Либо я что-то делаю совсем не так :(

При попытке ручного импорта или загрузки через torch.hub модель жалуется на отсутствие файла version в ней. Если этот файл воткнуть вручную, начинает жаловаться на extern_modules.

Запустить её, к сожалению, не получилось. Хотя очень хочется воткнуть в своего "домашнего" бота для распознавания голосовух в Телеграмм.

Оказалось, что это я дурак ;) Изначально пытался запускать локально на версии 1.8.1, ничего не работало. Обновил PyTorch до 1.9.1 и все заработало! Огромное спасибо, будем тестировать))

Что-то похожее было в торче 1.8 при попытке открыть пакеты.
Пакеты появились начиная с 1.9.
В репозитории это явно написано, но наверное следует написать хотя бы тут на всякий случай:


Basic dependencies for examples:

torch, 1.9+;
pyyaml, but it's installed with torch itself

Вообще happy path тут такой, что пробуете в колабе, дальше запускаете локально, там даже отдельные примеры показывают немного внутрянку и как не тянуть утилитку из hubconf.py при локальном запуске (она по сути просто скачивает список моделей, выбирает последнюю из запускает ее).

На версии 1.9.1 всё работает идеально. Модель подключается буквально одной строчкой:

import torch
tmodel = torch.package.PackageImporter("/home/silero/v1_4lang_q.pt").load_pickle("te_model", "model")

И дальше улучшение текста внедряется точно так же в одну строку:

text = tmodel.enhance_text( text, "ru" )

Просто идеальная моделька для "домашнего" бота распознавания голосовых сообщений.

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


Я уже молчу про работу по оптимизации модели.

На винде не взлетела, пока в hubconf.py не добавил open('latest_silero_models.yml', 'r', encoding='utf8')

Спасибо за находку, честно говоря мы и не подумали, что open использует системную кодировку по умолчанию.

Может я что-тоупустил, но из статьи не понятно, какой алгоритм и архитектуру построения модели вы используете. Что значит бертоподобная? Почему, скажем, не elmo или gpt-подобная?

Что значит бертоподобная?

Значит сделана на основе пре-тренированной BERT-подобной модели.


Почему, скажем, не elmo или gpt-подобная?

ELMO насколько я помню (уже давно читал статью) это внутренние состояния больших RNN-ок (это медленное и непрактичное, если память не изменяет), и если честно когда статья вышла, я вообще не понял в чем фишка.


Чем GPT от BERT отличается навскидку не вспомню, но это уже трансформеры (сетки на основе self-attention слоев). А значит роль играет не столько как они работают, а как и на чем они были пре-тренированы (и на каких языках и токенах). Если еще раз память не изменяет, то фишка берто-подобных сеток была именно в относительной "скорости" их тренировки и отсутствии рекуррентности.


Мы выбирали по сути из доступных пре-тренированных моделей, адекватных по количеству языков, задаче на которой их тренировали и размеру.


Я не большой фанат того, что на что сейчас тратят гигантские бюджеты NLP, но если вынести за скобки мое личное мнение про построение капитализации на "перебивании as-is" чужих моделей к себе в хаб, то если поискать по доступным моделям у хагов, там и адекватных вариантов базовой модели буквально пара.


Повторюсь, что мы смогли ужать все без потери качества до <100 мегабайт, но предполагаю, что уровень 25-50 мегабайт тоже вполне достижим.

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

Публикации

Истории