УДК 004.8

ОПТИМИЗАЦИЯ НЕЙРОСЕТЕВЫХ МОДЕЛЕЙ ЕСТЕСТВЕННО-ЯЗЫКОВОГО ПОНИМАНИЯ (NLU) В УСЛОВИЯХ ОГРАНИЧЕННЫХ ВЫЧИСЛИТЕЛЬНЫХ РЕСУРСОВ

Сидорика М. Д., Лазебная Л. А.
ФГБОУ ВО «Донецкий национальный технический университет», г. Донецк
кафедра «Прикладная математика и искусственный интеллект»
E-mail: sidorika.maks@gmail.com

Аннотация. Сидорика М.Д., Лазебная Л.А. Оптимизация нейросетевых моделей естественно-языкового понимания (NLU) в условиях ограниченных вычислительных ресурсов. Предложен подход на основе Quantization-Aware Training (QAT) для русскоязыковой модели DeepPavlov/rubert-base-cased с экспортом в ONNX и динамической квантизацией в INT8. Результаты подтверждают его применимость для голосовых ассистентов и edge-устройств.

Ключевые слова: квантование, QAT, ONNX, ruBERT, NLU, оптимизация моделей, ограниченные ресурсы.

Введение

Современные системы естественно-языкового понимания (NLU) на основе трансформеров, такие как BERT и его русскоязычные аналоги (например, DeepPavlov/rubert-base-cased) [1], демонстрируют высокую точность в задачах классификации команд, извлечения интентов и анализа текста. Однако их практическое применение в условиях ограниченных вычислительных ресурсов (на персональных компьютерах, встраиваемых системах или edge-устройствах) затруднено из-за значительного объёма памяти и высоких требований к производительности.

Одним из эффективных подходов к решению этой проблемы является квантование – снижение битности представления весов и активаций модели с 32-битных чисел с плавающей запятой (FP32) до 8-битных целых чисел (INT8) [2]. Однако пост-тренировочное квантование (PTQ) зачастую приводит к катастрофическому падению точности, особенно для чувствительных архитектур, таких как BERT.

В данной работе применяется метод Quantization-Aware Training (QAT), при котором модель адаптируется к низкой точности уже на этапе дообучения. Предложен полный pipeline оптимизации: fine-tuning ruBERT на кастомном датасете команд, QAT-адаптация, экспорт в формат ONNX и динамическая квантизация с использованием onnxruntime [3, 4, 5]. Эксперимент показал, что предложенный подход позволяет достичь точности 97 % при сжатии модели в 4 раза и ускорении инференса в 2,8 раза по сравнению с исходной PyTorch-моделью, что подтверждает его пригодность для развёртывания NLU-систем в ресурсоограниченных средах.

1. Анализ существующих методов оптимизации

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

Наиболее распространёнными подходами являются прореживание (pruning), дистилляция знаний (knowledge distillation) и квантование (quantization). Прореживание заключается в удалении малозначимых весов или нейронов, что уменьшает количество параметров и вычислений. Дистилляция предполагает обучение компактной «студенческой» модели на основе предсказаний более крупной «учительской» модели, передавая ей обобщённые знания. Однако наибольшее распространение в задачах развёртывания на CPU-устройствах получило квантование – снижение битности представления весов и активаций с 32-битных чисел с плавающей запятой (FP32) до 8-битных целых чисел (INT8) [2].

Квантование реализуется двумя основными способами: Post-Training Quantization (PTQ) и Quantization-Aware Training (QAT). PTQ применяется к уже обученной модели и не требует повторного обучения. Веса статически преобразуются в INT8 на основе статистики, собранной на небольшом калибровочном наборе данных, в то время как активации могут квантоваться динамически во время инференса. Несмотря на простоту, PTQ часто приводит к значительной потере точности, особенно для чувствительных архитектур, таких как BERT, где даже небольшие искажения в распределении активаций могут нарушить работу механизма внимания и нормализации слоёв [2].

В отличие от PTQ, QAT интегрирует процесс квантования непосредственно в этап дообучения модели. Во время прямого прохода веса и активации эмулируются в низкой точности (INT8), что позволяет модели адаптироваться к шуму, вносимому квантованием. При этом обратное распространение ошибки выполняется в FP32, что сохраняет стабильность градиентного спуска. В результате модель «учится» компенсировать ошибки квантования, что позволяет достичь минимальной потери точности при последующем преобразовании в INT8 [3].

Для развёртывания оптимизированных моделей широко используется формат ONNX (Open Neural Network Exchange), обеспечивающий переносимость между фреймворками. Библиотека ONNX Runtime предоставляет инструменты для экспорта, оптимизации и квантования моделей, включая поддержку динамического квантования через quantize_dynamic. При этом, как показывает практика, для BERT-моделей критически важно использовать QUInt8 (беззнаковое 8-битное квантование) с параметром reduce_range=True, так как это обеспечивает стабильность на CPU и минимизирует искажения в слоях LayerNormalization [5].

Таким образом, комбинация QAT + экспорт в ONNX + динамическая квантизация в INT8 представляет собой наиболее эффективный подход для развёртывания высокоточных NLU-моделей в ресурсоограниченных средах.

2. Методика проведения эксперимента

В качестве базовой модели использована предобученная русскоязычная BERT-архитектура DeepPavlov/rubert-base-cased, опубликованная на платформе Hugging Face. Данная модель показывает высокую эффективность в задачах естественно-языкового понимания (NLU) для русского языка.

Для адаптации модели к целевой задаче был создан собственный датасет, состоящий из 1444 обучающих и 100 тестовых фраз, распределённых по 10 классам. Каждый класс представлен сбалансированно (в среднем по 100 примеров в обучающей и по 10 в тестовой выборке). Фразы составлены с учётом реальных сценариев использования голосового ассистента.

Полный pipeline оптимизации включает следующие этапы:

  1. Fine-tuning. Исходная модель rubert-base-cased дообучается на целевом датасете с использованием стандартного подхода Hugging Face Transformers. Обучение проводится в течение 3 эпох с использованием кросс-энтропийной функции потерь и оптимизатора AdamW (learning rate = 2e-5).
  2. Quantization-Aware Training (QAT). К дообученной модели применяется QAT в течение 1 дополнительной эпохи. Используется конфигурация fbgemm (оптимизированная для CPU), а квантование embedding-слоёв отключается, так как оно не даёт выигрыша в производительности и может снижать точность. Веса и активации эмулируются в формате INT8, но обратное распространение ошибки выполняется в FP32 для сохранения стабильности обучения.
  3. Экспорт в ONNX FP32. QAT-адаптированная модель экспортируется в формат ONNX с использованием legacy-экспортера PyTorch (dynamo=false), что позволяет избежать ошибок shape inference, характерных для новых версий torch.export при работе с BERT-архитектурами.
  4. Динамическая квантизация в INT8. Полученная ONNX FP32-модель подвергается динамической квантизации с использованием библиотеки onnxruntime.quantization. Ключевые параметры:
    • weight_type=QuantType.QUInt8 – беззнаковое 8-битное квантование весов;
    • reduce_range=True – ограничение диапазона до 7 бит для повышения стабильности на CPU [3, 4, 5].

Для объективной оценки эффективности предложенного подхода используются следующие метрики:

Все эксперименты проводились на CPU (AMD Ryzen 5 5600) в условиях, имитирующих развёртывание на ресурсоограниченном устройстве (без GPU-ускорения).

3. Результаты эксперимента и их анализ

Экспериментальное исследование проводилось на датасете, состоящем из 1444 обучающих и 100 тестовых фраз, распределённых по 10 классам (табл. 1). Каждый класс представлен сбалансированно, что исключает смещение модели в сторону доминирующих категорий. Особое внимание уделено включению класса unknown, содержащего фразы, не относящиеся к целевым командам (например, «что такое нейросеть?», «расскажи анекдот»), что повышает работоспособность системы в реальных условиях.

Все модели оценивались по трём ключевым метрикам: точность (accuracy), F1-мера (weighted average), скорость инференса (samples/sec) и размер модели (МБ). Результаты представлены в табл. 2.

Как видно из табл. 2, применение Quantization-Aware Training (QAT) позволило достичь нулевой потери точности при переходе к 8-битному представлению. При этом:

Таблица 1 – Классы датасета
Класс Описание Пример фразы
open_browser Запуск веб-браузера «запусти браузер и открой онлайн-тест по python»
play_music Воспроизведение музыки «включи музыку с шумом дождя и грозы для сна»
create_folder Создание директории «создай папку Симуляторы»
mute_audio Отключение звука «отключи звук всех приложений сразу»
show_weather Запрос погоды «какая погода в моем регионе»
open_explorer Открытие файлового менеджера «открой окно проводника»
play_video Воспроизведение видео «включи видео с флешки»
minimize_all Сворачивание всех окон «спрячь все активные приложения»
logout Выход из системы «заверши работу и закрой сессию»
unknown Нерелевантные фразы «что делать если грустно»
Таблица 2 – Сравнение моделей
Модель Accuracy F1 Скорость (samples/sec) Размер (МБ)
PyTorch FP32 0.9700 0.9698 13.67 678.5
ONNX FP32 0.9700 0.9698 24.00 678.7
ONNX INT8 (QAT) 0.9700 0.9698 27.53 170.4

Для визуализации результатов были построены графики (рис. 1, 2), отражающие соотношение точности, скорости и размера моделей.

Сравнение подходов к квантованию: QAT и PTQ
Рисунок 1 – Сравнение подходов к квантованию: Quantization-Aware Training (QAT, слева) и Post-Training Quantization (PTQ, справа)
Сравнение моделей по точности, скорости и размеру, а также матрица ошибок
Рисунок 2 – Сравнение моделей: (а) точность и F1-мера, (б) скорость инференса, (в) размер модели, (г) матрица ошибок для ONNX INT8

Анализ classification report для ONNX INT8-модели показывает, что худшими по F1-мере являются классы open_browser (0.89) и play_video (0.91), что связано с их семантической близостью к другим командам (например, фраза «открой браузер» может быть ошибочно классифицирована как «открой проводник»). Однако даже для этих классов точность остаётся высокой (>0.8), что свидетельствует о достаточной дискриминативной способности модели в условиях реального использования.

Матрица ошибок (рис. 2г) подтверждает отсутствие системных смещений: основная масса предсказаний сосредоточена на главной диагонали, а ошибки распределены случайно и преимущественно возникают между семантически смежными классами. Это указывает на то, что модель не переобучена и корректно обобщает входные данные, что особенно важно для голосовых интерфейсов, где формулировки команд могут варьироваться.

Ключевым подтверждением корректности квантования является анализ структуры ONNX-графов:

Особое внимание стоит уделить выбору беззнакового квантования (QUInt8) с параметром reduce_range=True. Как показали предварительные эксперименты, использование знакового квантования (QInt8) приводило к значительной потере точности (до 0,1), что связано с чувствительностью слоёв LayerNormalization к смещению распределения активаций. В то же время QUInt8 с ограниченным диапазоном обеспечивает стабильность численных вычислений на CPU и сохраняет высокую точность, что согласуется с рекомендациями Microsoft для NLP-моделей [5].

Таким образом, предложенный pipeline QAT → ONNX FP32 → INT8 обеспечивает оптимальный баланс между точностью, скоростью и компактностью, что делает его пригодным для развёртывания в ресурсоограниченных средах, таких как персональные компьютеры, встраиваемые системы и edge-устройства. Полученные результаты открывают путь к интеграции подобных моделей в локальные голосовые ассистенты, где критически важны низкая задержка, автономность и энергоэффективность.

Выводы

В ходе проведённого исследования была экспериментально подтверждена методика оптимизации нейросетевых моделей естественно-языкового понимания (NLU) для развёртывания в условиях ограниченных вычислительных ресурсов. На основе русскоязычной модели DeepPavlov/rubert-base-cased и собственного датасета из 1444 фраз (10 классов) был реализован полный pipeline: fine-tuning → Quantization-Aware Training (QAT) → экспорт в ONNX → динамическая квантизация в INT8.

Экспериментальные результаты показали, что предложенный подход позволяет сохранить точность модели на уровне 97 % при сжатии размера в 4 раза (с 678 МБ до 170 МБ) и ускорении инференса в 2,8 раза (с 13,7 до 27,5 samples/sec) по сравнению с исходной PyTorch-моделью. Ключевым фактором успеха стало применение QAT, который позволил модели адаптироваться к низкой точности представления весов и активаций, что полностью компенсировало потери, характерные для пост-тренировочного квантования (PTQ).

Анализ структуры ONNX-графов подтвердил корректность квантования: в INT8-модели присутствуют специфические узлы (MatMulInteger, DynamicQuantizeLinear), свидетельствующие о переходе к 8-битным целочисленным операциям. При этом classification report и матрица ошибок показали отсутствие системных смещений и высокую устойчивость модели даже для семантически близких классов.

Полученные результаты подтверждают практическую применимость предложенного подхода для развёртывания NLU-систем на CPU-устройствах, включая персональные компьютеры, встраиваемые системы и edge-устройства. Методика особенно актуальна для задач голосового управления, где критически важны низкая задержка, компактность модели и высокая точность распознавания.

В перспективе планируется исследование комбинации QAT с другими методами оптимизации (прореживание, дистилляция), а также миграция на современные инструменты квантования (torchao), что позволит ещё больше повысить эффективность развёртывания моделей искусственного интеллекта в ресурсоограниченных средах.

Литература

  1. DeepPavlov/rubert-base-cased. Hugging Face Models. – URL: https://huggingface.co/DeepPavlov/rubert-base-cased .
  2. Jacob B. Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference / B. Jacob, S. Kligys, B. Chen [et al.] // Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). – 2018.
  3. Хабр. Квантование нейросетей: от теории к практике / А. Петров. – 2024. – URL: https://habr.com/ru/articles/848306/ .
  4. PyTorch ONNX Export Documentation. – URL: https://pytorch.org/docs/stable/onnx.html .
  5. ONNX Runtime Quantization Guide. – URL: https://onnxruntime.ai/docs/performance/quantization.html .

Abstract

Sidorka M.D., Lazebnaya L.A. Optimization of Natural Language Understanding (NLU) Neural Models under Limited Computational Resources. The paper proposes an approach based on Quantization-Aware Training (QAT) applied to the Russian-language model DeepPavlov/rubert-base-cased, followed by export to ONNX format and dynamic quantization to INT8. The results confirm the applicability of the proposed method for voice assistants and edge devices.

Keywords: quantization, QAT, ONNX, ruBERT, NLU, model optimization, resource-constrained devices.