Oppressor & Tokenizer
Я тут подумал, как сократить расходы на тренировки, чтобы производительность не страдала. Думаю, ты бы мог подкинуть пару идей по поводу обрезки и совместного использования параметров. Как ты обычно решаешь, с чего начать оптимизацию?
Начни с тех частей, которые меньше всего влияют на снижение производительности. Посмотри на величину весов или на информацию Фишера для каждого параметра; выпиливай наименее значимые или информативные. В случае с трансформерами обычно это означает урезание скрытых слоев прямого распространения или attention heads с наименьшей активностью. Потом переходи к embedding слоям или выходной проекции, но только если ты убедился, что падение производительности минимально. Следи за градиентами по слоям – если градиенты слоя выровнены, это хороший кандидат на совместное использование или уменьшение. Итерируйся и отслеживай кривую валидации; это твой главный показатель.
Хороший ход, но помни, эффективность так же важна, как и теория. Если слой или область имеет плоские градиенты, не просто уменьшай его – сначала попробуй уменьшить немного и посмотри, повлияет ли это на сходимость. Следи за кривой валидации; даже небольшое падение сейчас может потом обернуться проблемой. Будь безжалостен к цифрам.
Ты прав, метрики должны быть решающими. Подключу небольшой общий модуль, быстро подстрою, и понаблюдаю за ошибкой. Если кривая останется ровной, зафиксирую этот модуль; если начнет сбиваться, откачу и попробую другой слой. Последовательность обрезки определяется цифрами, а не только интуицией.
Звучит организованно – просто следи за показателями. Если убытки вырастут, будь готов быстро отменить изменения. Без догадок – пусть метрики диктуют каждое изменение.
Понял, буду ориентироваться на метрики и сразу откачу, если потери взлетят. Никаких догадок, только решения, основанные на данных.