ISSN 0236-235X (P)
ISSN 2311-2735 (E)
3

13 Сентября 2024

Архитектура программной платформы разработки  и тестирования нейросетевых моделей  для создания специализированных словарей

DOI:10.15827/0236-235X.137.014-019
Дата подачи статьи: 16.12.2021
УДК: 519.68

Пуртов Д.Н. (idmitry.purtov@gmail.com) - Поволжский государственный технологический университет (аспирант), Йошкар-Ола, Россия, Сидоркина И.Г. (SidorkinaIG@volgatech.net) - Поволжский государственный технологический университет (профессор), Йошкар-Ола, Россия, доктор технических наук
Ключевые слова: модульная архитектура, docker, sklearn, python, нейросетевая модель, виртуализация среды
Keywords: modular architecture, docker, sklearn, python, a neural network, environment virtualization


     

Программные решения на базе нейросетевых моделей становятся все более востребованными. Доказано, что процесс разработки модулей с нейросетевой составляющей, например, для создания специализированных словарей, все более усложняется [1]. Это связано с неопределенностью [2] в работе моделей. Большую часть времени на их создание занимает выбор методов и параметров, по которым будут выполняться преобразование текстовой информации в числовую и обучение нейросетевой модели [2, 3].

Синтез оптимального решения по выбору параметров и методов построения нейросетевых моделей обусловливает необходимость экспериментировать с ними. Изменение параметров и методов приводит к изменению эффективности работы модели, количества математических операций и циклов обучения, что влияет на время, необходимое для создания мо- дели [3, 4]. При реализации нейронной сети на языке программирования с использованием библиотеки sklearn [5] эти изменения заключаются в переписывании участка кода python, реализующего вызов методов из библиотеки.

Экспериментально доказано, что необходимость изменения параметров, а затем методов построения нейросетевых моделей при формировании специализированных словарей диктуется программной платформой, которая позволяет создавать множество различных моделей благодаря быстросменяемому и дополняемому программному коду при использовании специальной библиотеки, например, sklearn. В библиотеке для создания линейной нейросетевой модели на базе логистической регрессии достаточно вызвать метод sklearn.linear_model. LogisticRegression с нужными параметрами. Результатом работы этой функции будет готовая модель для формирования специализированных словарей. Однако качество работы модели напрямую зависит от входных данных и параметров, переданных в метод. Например, параметр C в методе sklearn.linear_model. LogisticRegression настраивает силу регуляризации [5] и напрямую влияет на качество модели.

Библиотеки помогают быстро разрабатывать различные модели, ускоряя процесс подготовки данных и создания моделей с их оценкой. Ускорение достигается за счет того, что подобные библиотеки предоставляют готовые интерфейсы решения большинства задач, связанных с написанием программного кода. Однако остается проблема масштабирования процесса поиска локально-оптимального решения для формирования специализированных словарей. При этом доказано, что последовательный процесс подбора и комбинирования методов и параметров подготовки данных, а также создание и тестирование нейросетевой модели занимают достаточно много времени [6].

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

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

Блок с программным кодом представляет собой множество независимых узкоспециализированных программ или модулей, написанных на языке программирования. Наличие множества этих программ позволяет упростить их разработку и поддержку благодаря уменьшению функциональных особенностей программы [7]. Представленный блок менее под- вержен рискам нестабильной работы и регрес- сионного эффекта изменения логики программы при внесении правок в программный код. Кроме этого, предложено группировать эти модули по их назначению, что позволит ускорить поиск нужных модулей. Данный блок с программным кодом для создания и тестирования нейросетевых моделей, формирующих специализированные словари, состоит из четырех групп модулей: обработки данных, создания моделей, оценки моделей, создания словарей.

Группа обработки данных включает модули, преобразующие текст в числовой вид [8], группа создания модулей – модули, обучающие нейросетевые модели. Модули оценки анализируют полученный результат [9], модули создания словарей формируют их по оценочным данным, исходя из того, является ли слово из текста искомым [9].

Блок docker контейнеров представляет собой виртуальные машины, которые могут содержать все необходимые предустановленные и настроенные программы [10]. В них сосредоточены модули, выполняющие программный код из первого блока.

Контейнерный подход позволяет запускать множество экземпляров как одних и тех же, так и разных модулей. Это решение [8, 11] позволяет распределять вычислительные мощности и параллельно работать с ними. Также контейнерный подход решает проблему настройки среды [10]. Это достигается за счет того, что контейнер является самодостаточной и независимой системой, включающей все необходимые дополнительные программные продукты и настройки. Таким образом, формируется кластер независимых виртуальных контейнеров с модулями, работающими параллельно в любой локальной облачной среде, поддерживающей контейнеризацию.

Блок шины данных представляет собой общее дисковое пространство, которое можно получить, используя технологию монтирования папок [10] в docker контейнерах, что позволяет контейнерам обмениваться данными.

Таким образом, процесс создания нейросетевых моделей для формирования специализированных словарей состоит из следующих этапов: обработка данных, создание моделей, оценка моделей, создание словарей. Каждый этап выполняется в своем изолированном docker контейнере, формируя последовательность. Предложенная последовательность реализуется поэтапным запуском контейнеров с модулями и передачей между ними результатов работы на основе предложенных программных и архитектурных решений, как это показано на рисунке 2.

В результате последовательность создания и тестирования нейросетевых моделей с формированием специализированных словарей (рис. 2) реализует запуск модулей:

-     обработки тестовых данных в контей- нере с сохранением результата в шине данных (блок 1);

-     создания нейросетевой модели с сохранением модели в шине данных (блок 2);

-     оценки качества работы нейросетевой модели с сохранением результата оценки в шине данных (блок 3);

-     создания узкоспециализированного словаря, в котором происходит обработка данных, полученных из других модулей, с принятием решения о формировании нужного словаря (блок 4).

Разработанная программная платформа позволяет создавать несколько последовательностей параллельно, что увеличивает скорость и дает возможность комбинировать существующие модели и их результаты для создания новой последовательности. Таким образом, число последовательностей для поиска локально-оптимального результата растет (рис. 3).

Предложенное решение параллельного  создания последовательностей реализует методологию непрерывной интеграции [12] и раз- вертывания приложений с их выполнением.  Параллельный запуск нескольких последовательностей позволяет создавать несколько решений одновременно для получения наилучшего локально-оптимального результата. Результатом каждого этапа последовательности является модуль для решения определенной задачи. Результат работы сохраняется в шине данных, что дает возможность повторно использовать его для создания новой последовательности через комбинирование с пропуском некоторых этапов. На рисунке 3 показано, как последовательность 3 создается из параллельно разработанных элементов последовательностей 1 и 2. Благодаря повторному использованию элементов уже существующих последовательностей и возможности строить любые из них параллельно уменьшается время создания новой последовательности.

Разработанная программная платформа решает архитектурно-инфраструктурные вопро­сы через программную платформу для поиска параметров и методов построения нейросетевых моделей, осуществляющих, например, создание модели для синтеза специализированных словарей. Платформа позволяет создавать множество различных моделей параллельно и повторно использовать программный код.

Таким образом, в результате исследования существующих инструментов и методов, используемых для создания моделей анализа текстов, предложены архитектура программной платформы и инструмент ее использования для формирования специализированных словарей. Важной особенностью программного решения является возможность одновременно создавать различные нейросетевые модели. Программная платформа позволяет строить последовательности разработки и тестирования нейросетевых моделей для формирования специализированных словарей, состоящие из следующих этапов: обработка данных, создание нейросетевой модели, оценка нейросетевой модели, создание словарей. Комбинирование этапов для ранее созданных последовательностей дает возможность получать новые для поиска локально-оптимального результата. Запуск всех последовательностей происходит в изолированной виртуальной среде параллельно и изолированно друг от друга, что позволяет увеличить скорость разработки разнообразных решений.

Литература

1.    Фаустова К.И. Нейронные сети: Применение сегодня и перспективы развития // Территория науки. 2017. № 4. С. 83–87.

2.    Гермиханова Х.Р. Методы обучения нейронной сети (некоторые аспекты) // Инновационные аспекты развития науки и техники: сб. статей. 2020. № 2. С. 6–10.

3.    Гридин В.Н., Солодовников В.И., Карнаков В.В. Выбор начальных значений и оптимизация параметров нейронной сети // Новые информационные технологии в автоматизированных системах: матер. семинара. 2016. № 19. С. 270–273.

4.    Пуртов Д.Н., Сидоркина И.Г. Проблема обучения нейронной сети при извлечении ключевой информации // ИС & ИТ. 2019. Ч. 2. С. 291–295.

5.    Рашка С., Мирджалили В. Python и машинное обучение. Машинное и глубокое обучение с использованием Python, scikit-learn; [пер. с англ.]. СПб: Диалектика, 2020. 848 c.

6.    Волосова А.В. Параллельные методы и алгоритмы. М.: Мади, 2020. 176 c.

7.    Трембач В.М. Модульная архитектура интеллектуальной системы для решения задач интернета вещей // Открытое образование. 2019. № 3. С. 32–43. DOI: 10.21686/1818-4243-2019-4-32-43.

8.    Жердева М.В., Артюшенко В.М. Стемминг и лемматизация в lucene.Net // Лесной вестник. 2016. № 3. С. 131–134.

9.    Гуськов C.Ю., Лёвин В.В. Интервальные доверительные оценки для показателей качества бинарных классификаторов – ROC-кривых, AUC для случая малых выборок // Инженерный журнал: наука и инновации. 2015. № 3. С. 1–15. URL: http://engjournal.ru/catalog/mesc/idme/1376.html (дата обращения: 20.10.2021).

10. Mouat A. Using Docker: Developing and Deploying Software with Containers. O'Reilly Media Publ., 2017, 354 p.

11. Баранов А.В., Николаев Д.С. Использование контейнерной виртуализации в организации высокопроизводительных вычислений // Программные системы: теория и приложения. 2016. № 1.  С. 117–134.

12. Шляпников В.М. Ускорение непрерывной интеграции и развертывания python-приложений // Инновационные аспекты развития науки и техники. 2021. № 2. С. 71–78.

References

1.  Faustova K.I. Neural networks: Application today and development prospects. Science Territory, 2017, no. 4, pp. 83–87 (in Russ.).

2.  Germikhanova Kh.R. Neural network training methods (some aspects). Proc. Innovative Aspects of Science and Technology Development, 2020, no. 2, pp. 6–10 (in Russ.).

3.  Gridin V.N., Solodovnikov V.I., Karnakov V.V. Selection of initial values and optimization of neural network parameters. Proc. New Information Technologies in Automated Systems, 2016, no. 19, pp. 270–273 (in Russ.).

4.  Purtov D.N., Sidorkina I.G. The problem of training a neural network when extracting key information. IT & IS, 2019, no. 2, pp. 291–295 (in Russ.).

5.  Rashka S., Mirjalili V. Python Machine Learning: Machine Learning and Deep Learning with Python, scikit-learn. 2020, 725 p. (Russ. ed.: St. Petersburg, 2020, 848 p.).

6.  Volosova A.V. Parallel Methods and Algorithms. Moscow, 2020, 176 p. (in Russ.).

7.  Trembach V.M. Modular architecture of an intelligent system for solving problems of the Internet of things. Open Education, 2019, no. 3, pp. 32–43. DOI: 10.21686/1818-4243-2019-4-32-43 (in Russ.).

8.  Zherdeva M.V., Artyushenko V.M. Stemming and lemmatization in lucene.Net. Forestry Bulletin, 2016, no. 3, pp. 131–134 (in Russ.).

9.  Guskov S.Yu., Levin V.V. Confidence interval estimation for quality factors of binary classifiers – roc curves, AUC for small samples. Engineering Journal: Science and Innovations, 2015, no. 3, pp. 1–15. Available at: http://engjournal.ru/catalog/mesc/idme/1376.html (accessed October 20, 2021) (in Russ.).

10. Mouat A. Using Docker: Developing and Deploying Software with Containers. O'Reilly Media Publ., 2017, 354 p.

11. Baranov A.V., Nikolaev D.S. The use of container virtualization in the organization of high-performance computing. Program Systems: Theory and Applications, 2016, no. 1, pp. 117–134 (in Russ.).

12. Shlyapnikov V.M. Accelerate continuous integration and deployment of python-applications. Innovative Aspects of the Development of Science and Technology, 2021, no. 2, pp. 71–78 (in Russ.).



http://swsys.ru/index.php?id=4871&lang=%E2%8C%A9%3Den&like=1&page=article


Perhaps, you might be interested in the following articles of similar topics: