Нужно для чат-бота на русском под Android. Может, есть какие то маленькие модели на русском?
Я пробовал, и знаю, что DeepPavlov пробовал тоже: 1. https://huggingface.co/cointegrated/rubert-tiny2 2. https://huggingface.co/models?sort=trending&search=DeepPavlov%2Fdistilrubert
Огромное спасибо! Это и искал 👍
Давид, скажите, пожалуйста, можно ли доучить cointegrated/rubert-tiny2 на моем тексте (задача QA, медицина), используя стандартную процедуру (https://huggingface.co/docs/transformers/tasks/question_answering)?
Однозначно можно. Но я не могу заранее предсказать, насколько качество упадёт по сравнению с использованием более крупной модели (скажем, bert-base с 12 слоями вместо 3 слоёв у tiny). Априори кажется, что для задачи question answering модель должна выполнить довольно много логики: сначала вычленить вопрос, затем вычленить в тексте какие-то ключевые слова, связанные с этим вопросом и подсказывающие что ответ где-то рядом, и только потом выделить начало и конец ответа. Возможно, что трёхслойная модель просто не успеет всю эту логику провернуть. Но, конечно, надо экспериментировать.
А почему есть желание дообучать такую архитектуру, а не LLM, например Сайгу или Мистраль — разве для QA они сравнимы по качеству? P.S. Мне для схожих задач удавалось подставлять rubert-tiny2 в примеры с transformers, работало но чтобы обучение пошло, пришлось learning_rate изменить на порядок и эпох вдвое добавить к примеру из на bert из transformers.
Спасибо, попробую!
нужна маленькая модель для Android без доступа к сети
Тогда ясно, попробуйте еще e5-small и, может быть, если базу ответов можно сделать, то cos sim на них и вопросе, может на моделях squad2 от Sentence-Transformers. И кажется DeepPavlov для QA еще что-то хорошее open sourc’ил.
Кстати, а что сейчас для вас является бОльшим ботлнеком - размер модели или время на её инференс? Мне любопытно, потому что я сам вообще ни разу трансформеры на смартфонах не запускал) Если основная беда в размере, то можно попробовать уменьшить модель, выкинув из словаря эмбеддинги для редко используемых слов, а чтобы повысить качество, добавить ещё несколько трансформерных слоёв. А если проблема в скорости, но не в мегабайтах, то можно наоборот добавить больше токенов в словарь, чтобы уменьшить число токенов на один текст, а значит, и количество вычислений. Ну и разные другие хаки тоже можно применять, чтобы выменивать память на скорость или наоборот.
Насколько кстати хороша практика добавлять / удалять слои, особенно учитывая что они видимо с рандомной инициализацией идут в первом случае?
Эта практика - не очень стандартная. Но если у вас достаточно большой обучающий датасет, то это может сработать. При добавлении новых слоёв у меня хорошо заходило обучать одну эпоху только новые слои с большим learning rate, заморозив все старые, чтобы модель не сломалась. А потом уже размораживать все слои, уменьшать learning rate, и дообучать всю модель целиком.
Важно и то и другое. Делаем что то вроде умного голосового помощника по узкой теме
Звучит классно, напиши пожалуйста потом результат, как оно запустилось на смартфоне, с какой скоростью и тд
Обсуждают сегодня