Больше текстов в пакете — меньше скорости? Как подобрать batch_size в Transformers
Один длинный документ меняет цену всего пакета. Короткий протокол помогает выбрать размер, сохранить содержание входов и проверить запас памяти на своей нагрузке.
Один длинный документ способен сделать пакетную обработку коротких текстов невыгодной. В действующей документации Transformers описан этот компромисс: увеличение batch_size само по себе не гарантирует ускорения. Разберём, как выбрать размер пакета для готового набора текстов, прежде чем запускать всю коллекцию.
Что известно
Пакет позволяет обрабатывать несколько входов вместе. Но при разной длине последовательности дополняются до общей длины внутри пакета: короткие записи получают лишние позиции. В демонстрации Hugging Face редкий длинный вход резко увеличивает объём такого дополнения; большой пакет заканчивается нехваткой памяти GPU. Это пример из документации, а не наш замер и не универсальный предел для современных видеокарт.
Памятка относится к обычной пакетной обработке pipeline. Не переносите её автоматически на серверы генерации с непрерывным объединением запросов: у них другая организация работы. Даже внутри pipeline конкретная задача и модель меняют расход памяти.
Как подобрать компромисс
Представьте архив обращений: большинство — несколько строк, некоторые — длинные цепочки писем. Учебный план проверки такой: сохраните небольшой неизменный набор с обоими типами входа, закрепите модель, устройство, версию библиотеки и правила обработки длинного текста. Сначала получите базовый результат с batch_size=1.
Затем сравните, например, размеры 4 и 8 на том же наборе. Это стартовые варианты эксперимента, а не рекомендации для любой GPU. Запишите полное время обработки коллекции, число успешно обработанных записей и максимальный расход памяти. Загрузку модели и прогрев учитывайте одинаково во всех вариантах. Не сравнивайте быстрый повторный запуск с первым холодным.
Если длинные обращения портят результат, отдельно проверьте группировку входов по длине. Сохраняйте исходные идентификаторы: после сортировки ответы должны вернуться к правильным обращениям. Не обрезайте текст только ради красивой скорости — это уже изменение задачи. Проверьте, что важный фрагмент в конце длинного письма остаётся доступен модели.
Что ещё неясно до измерения
Граница памяти и выигрыш зависят от нагрузки. Предусмотрите обработку ошибки нехватки памяти и возможность уменьшить пакет без потери необработанных записей. Если задача — отвечать человеку сразу, отдельно измеряйте задержку одного запроса: высокая пропускная способность архива ещё не означает удобный интерактивный сервис.
Выбирайте наименьший размер пакета, который даёт нужную производительность с запасом памяти и сохраняет содержание входов. Для нерегулярных документов удобство одной настройки приходится обменивать на дополнительную проверку длинных случаев.
Комментарии
Войдите, чтобы оставить комментарий
Пока нет комментариев. Начните обсуждение.