Современные технологии обработки естественного языка стремительно развиваются, позволяя автоматизировать множество задач, включая классификацию текстов. Одной из эффективных моделей для таких задач является NeoBERT — инновационная разработка в семействе трансформеров, ориентированная на улучшение качества и скорости работы с текстом. В данной статье рассматривается процесс дообучения NeoBERT на задаче многоклассовой текстовой классификации, основанный на примере реального проекта, где для создания обучающего набора данных использовалась генерация с помощью больших языковых моделей (LLM). Выбор модели для дообучения является ключевым этапом, напрямую влияющим на качество результата и скорость обучения. Классический BERT и его облегчённая версия DistilBERT имеют ограничения, такие как ограниченный размер контекста и сравнительно медленное обучение, что не всегда удобно для большого объёма данных и сложных задач.
Поэтому для оптимизации работы автора проекта привлекли внимание современные модели, в числе которых оказался NeoBERT. Несмотря на то, что изначально планировалось использовать ModernBERT, некоторые технические сложности с локальным запуском моделей, связанные с зависимостями вроде xformers, заставили начать с ModernBERT для тестового запуска, а затем переключиться на NeoBERT. Для обучения на современных моделях необходим GPU-ускоритель, однако вопрос доступности мощного железа часто становится ограничителем. В процессе автор испытал трудности с Google Colab, где много внимания уделялось настройке окружения и устранению системных ошибок, а также с SageMaker Studio Lab, где запуск инстанса не увенчался успехом из-за непонятных ошибок. Обнаружение платформы Lightning.
ai оказалось решением, предоставившим возможность использовать бесплатный CPU и GPU для развертывания рабочего окружения, что позволило избежать проблем с совместимостью и настройкой и значительно ускорило экспериментальную стадию. Качество модели во многом зависит от корректного и обоснованного формирования набора данных. В данном случае для обучения классификатора применялся набор из 800 примеров, созданный с помощью генеративных возможностей большой языковой модели OpenAI o4-mini. Создаваемый датасет представлял собой связку метаинформации о статьях и извлечённого из них текста, который был подготовлен на основе markdown-файлов, полученных через парсинг pdf-документов с использованием PyMuPDF4LLM. Особое внимание уделялось предварительному исследованию данных, включая очистку и объединение категорий, чтобы избежать излишнего дробления классов.
Также длина текстов ограничивалась 5000 токенами, что снижало риск переполнения памяти и сокращало время тренировок. Подготовка датасета включала преобразование исходных данных в формат, совместимый с Hugging Face Trainer. После эксплорирования и подготовки DataFrame с помощью Polars и записи данных в parquet-формат, датасет был загружен в память через встроенные средства библиотеки datasets. Классы были автоматически перекодированы в числовые метки, а набор разделён на обучающую и тестовую части с долей теста в 10%. Данный подход обеспечивает сохранение статистической целостности данных и способствует адекватной оценке модели на новых примерах.
Процесс токенизации реализован посредством AutoTokenizer из transformers, что гарантировало корректное преобразование текстов в входные для модели тензоры с необходимой обрезкой и паддингом до фиксированной длины. Такой подход стандартен при работе с трансформерами и помогает модели эффективнее обучаться, снижается шум от переменной длины текстов. Главным этапом выступает загрузка предобученной модели NeoBERT через AutoModelForSequenceClassification с явным указанием числа уникальных классов и сопоставлением меток и их идентификаторов. Особенностью NeoBERT является возможность доверенного запуска удалённого кода (trust_remote_code=True), позволяющая корректно интерпретировать кастомные архитектурные решения. Настройка параметров обучения продумана с учётом размера обучающего набора и возможностей оборудования.
Выставлен высокий learning rate 5e-4 и 20 эпох, использована оптимизация adamw с ускорением на PyTorch Fused, а также включена поддержка bf16 для ускорения вычислений без серьёзной потери точности. Для стабилизации тренировок и минимизации переобучения применена мягкая метка (label smoothing) с коэффициентом 0.1, которая помогает модели не быть переоптимизированной на конкретных примерах и повышает её обобщающую способность. Во время тренировки реализовано автоматическое логирование на TensorBoard, что удобно для анализа динамики обучения. Переобучение оказалось серьёзной проблемой, особенно учитывая небольшой размер и вариативность данных.
В попытке противодействовать этому явлению была применена стратегия заморозки весов всех слоёв базовой модели за исключением классификационной головы и последних критичных слоёв нейросети. Такой подход позволяет сохранить уже имеющиеся эмбеддинги и учить только последние трансформерные блоки, что, как правило, снижает риск переобучения на мелких выборках. Обучение было выполнено с использованием Trainer из Hugging Face, что упрощает многие аспекты, от распределённого обучения до обнаружения лучшей модели по метрике f1 с учётом сбалансированного среднего значения для всех классов. Возможность возобновления обучения с контрольной точки позволяет эффективно использовать вычислительные ресурсы и управлять длительными экспериментами. В результате проведённых экспериментов удалось создать пригодную для использования модель, однако полностью решить проблему переобучения не получилось.
Это связано как с размером и качеством исходных данных, так и с сложностью задачи многоклассовой классификации, требующей богатых и разнообразных представлений данных в обучающем наборе. На будущее рассматриваются варианты улучшения качества данных — альтернативные методы извлечения текста из PDF, расширение контекста вводимых данных для повышения информативности и более тщательное исследование гиперпараметров и архитектуры (например, эксперименты с различными параметрами оптимизации, регуляризации и углублённое изучение влияния слоёв). Публичный доступ к модели и экспериментальным скриптам через Hugging Face Hub позволяет заинтересованным специалистам использовать результаты проекта и развивать их дальше. Такая открытость способствует продвижению научных исследований и инженерных решений в области ИИ. Таким образом, опыт дообучения NeoBERT на специфической задаче многоклассовой классификации демонстрирует, насколько важны качественные данные и продуманная настройка обучения.
Технологии трансформеров продолжают развиваться, и грамотное применение современных моделей в сочетании с инновационными методами подготовки данных открывает новые горизонты для автоматизации сложных задач анализа текстовой информации. Профессионалы, работающие с NLP, могут почерпнуть полезные идеи в описанном случае, адаптируя их под свои проекты и условия.