Сучасний етап розвитку технологій обробки природної мови (NLP) характеризується домінуванням архітектур на основі трансформерів. Моделі типу BERT демонструють високу точність у задачах аналізу тональності та багатокласової класифікації текстових даних. Проте розгортання таких моделей у реальних виробничих системах (production) натрапляє на проблему високої обчислювальної складності та значної затримки під час логічного висновку, особливо за умов використання центральних процесорів (CPU). Тому оптимізація обчислювальних графів трансформерних архітектур без втрати їхньої виразної здатності є актуальною науково-практичною задачею.
Мета роботи — розробка та дослідження об’єктно-орієнтованого програмного конвеєра для оптимізації та розгортання трансформерної моделі класифікації текстів у середовищі ONNX Runtime для підвищення швидкодії обчислень на CPU.
Основний матеріал дослідження. Для реалізації поставленої мети було розроблено модульну архітектуру програмного комплексу, що інкапсулює етапи обробки даних та виконання інференсу. Як базове математичне ядро обрано багатомовну модель bert-base-multilingual-uncased-sentiment, що складається з 12 прихованих шарів та 12 голів внутрішньої уваги.
Програмний конвеєр побудовано на принципах об’єктно-орієнтованого проектування із застосуванням патерну Singleton для обчислювального ядра, що запобігає повторному десеріалізації та завантаженню важких ваг моделі в оперативну пам'ять. Архітектура системи включає такі ключові компоненти:
1. TextPreprocessor — модуль лінгвістичної передобробки, що реалізує нормалізацію вхідного текстового потоку, очищення від синтаксичного шуму (зокрема HTML-тегів) та зведення до нижнього регістру.
2. TokenizerModule — інкапсулює алгоритм субсимвольної токенізації WordPiece, кодуючи очищений текст у тензорні структури ідентифікаторів (input_ids) та масок уваги (attention_mask).
3. ONNXInferenceEngine — центральний обчислювальний модуль, який виконує експорт базової PyTorch-моделі у проміжне представлення ONNX (Open Neural Network Exchange) за допомогою інструментарію Hugging Face Optimum та забезпечує пряме поширення сигналу через оптимізований граф.
4. PostProcessor — виконує реформатування вихідного вектора неактивованих логітів у дискретний розподіл ймовірностей для цільових класів.
5. AppController — здійснює загальну диспетчеризацію та взаємодію між бізнес-логікою та графічним веб-інтерфейсом на базі фреймворку Gradio.
Рисунок 1 – Діаграма класів програмного застосунку
Процес оптимізації обчислювального графа в ONNX Runtime передбачає злиття макро-вузлів (operator fusion), зокрема об’єднання послідовних операцій матричного множення, додавання констант та функцій активації шару в єдині оптимізовані блоки (наприклад, злиття шарів LayerNormalization та операцій виділення класифікаційного токена [CLS] через вузол Gather).
Експериментальні результати. Для оцінки ефективності розробленого підходу проведено серію обчислювальних експериментів, де порівнювалися показники базової моделі PyTorch (Baseline) та оптимізованого ONNX-конвеєра під час виконання інференсу на CPU. Бенчмаркінг проводився за умов фіксованого апаратного середовища із заміром середньої затримки на вибірці текстових запитів (100 ітерацій після попереднього «розігріву» нейромережі).
Результати порівняльного аналізу продуктивності наведено в таблиці 1.
Таблиця 1 — Оцінка продуктивності обчислень
Аналіз експериментальних даних показує, що оптимізація обчислювального графа та використання інференс-рушія ONNX Runtime дозволили скоротити середній час обробки одного запиту з 211.15 мс до 44.98 мс. Це забезпечує прискорення обчислень приблизно у 4,69 раза. При цьому метрика максимальної абсолютної помилки (MAE) при порівнянні вихідних векторів ймовірностей PyTorch та ONNX не перевищує поріг 10^(-6), що свідчить про повне збереження математичної точності моделі та відсутність деградації якості класифікації.
Висновки. Досліджено та практично реалізовано метод оптимізації трансформерної моделі BERT для задач класифікації текстів. Об’єднання операцій обчислювального графа та перехід до інференс-рушія ONNX Runtime дозволяє досягти стабільного прискорення обчислень на CPU у 4,69 разів без втрати точності розпізнавання семантики. Розроблена модульна ООП-архітектура є готовим інженерним рішенням для розгортання високонавантажених NLP-сервісів на стандартній серверній інфраструктурі.
Список літератури
1. Vaswani A., Shazeer N., Parmar N. et al. Attention is all you need. Advances in Neural Information Processing Systems. 2017. Vol. 30. P. 5998–6008.
2. Devlin J., Chang M.-W., Lee K., Toutanova K. BERT: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805. 2018.
3. ONNX Runtime: cross-platform, high-performance ML inferencing. URL: https://onnxruntime.ai/docs/ (дата звернення: 11.05.2026).
4. Abid A., Abdalla A., Abid A. et al. Gradio: Hassle-Free Sharing and Testing of ML Models in the Wild. 2019. URL: https://arxiv.org/abs/1906.02569 (дата звернення: 11.05.2026).
5. Hugging Face. Optimum: A performance optimization library. URL: https://huggingface.co/docs/optimum (дата звернення: 11.05.2026).
|