
Д.В. Сошников1
1 Научно-исследовательский университет «Высшая школа экономики» (Москва, Россия)
1 Московский авиационный институт (национальный исследовательский университет) (Москва, Россия)
1 dmitri@soshnikov.com
Постановка проблемы. В задачах обучения сложных нейросетевых моделей часто необходимо совершать предобработку данных, включая аугментацию, извлечение признаков и комбинирование данных из нескольких источников. Для решения подобных задач удобно использовать подходы на основе конвейеров данных, которые могут быть сформулированы в функциональном стиле.
Цель. Построить математическую модель потоковой обработки данных, а также реализовать на ее основе соответствующие Python-библиотеки mPyPl.
Результаты. Рассмотрена идея и архитектура библиотеки. Описана соответствующая математическая модель. Реализована библиотека, которая определяет набор операций на ленивых потоках данных именованных словарей, представленных в виде генераторов и называемых именованными индексируемыми потоками данных (ИИПД), и позволяет обогащать эти потоки данных новыми именованными полями в процессе подготовки данных и извлечения признаков. Определены основные операции на ИИПД и показано сходство предложенного подхода с монадами. Показано использование библиотеки в сложных задачах глубокого обучения для обнаружения событий в видео. Обсуждены различные стратегии обработки данных, которые позволяют находить компромисс между используемым объемом памяти и производительностью.
Практическая значимость. Разработанная на основе предложенного подхода библиотека mPyPl используется в ряде проектов отдела стратегических технологий компании Microsoft [1].
Сошников Д.В. Библиотека mPyPl: функциональный подход к обработке данных в глубоком обучении // Информационно-измерительные и управляющие системы. 2024. Т. 22. № 5. С. 88−96. DOI: https://doi.org/10.18127/j20700814-202405-10
- Soshnikov D., Valieva A. mPyPl: Python Monadic Pipeline Library for Complex Functional Data Processing // Microsoft Journal of Applied Research (MS-JAR). December 2019. V. 12. Also available externally as arXiv:2106.09164 [cs.PL]. DOI: 10.48550/arXiv.2106.09164.
- CrowdFlowerr: Data science report. 2016. https://visit.figure-eight.com/rs/416-ZBE-142/images/CrowdFlower_DataScienceReport_ 2016.pdf (дата обращения: 9.06.2024).
- McKinney W. (2010). Data structures for statistical computing in python // Proceedings of the 9th Python in Science Conference (editors Van der Walt S. and Millman J). P. 51−56.
- Chollet F. et al. Keras. 2015. https://keras.io.
- Pallard J. Pipe python package. 2016. https://github.com/JulienPalard/Pipe.
- Chollet F.. Building powerful image classification models using very little data. 2016. https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html.
- Databricks 2019a. Deep learning pipelines for apache spark. https://github.com/databricks/spark-deep-learning.
- Databricks 2019b. Distributed training with horovod on databricks. https://docs.databricks.com/applications/deep-learning /distributed-training/index.html.
- Wadler P.. Comprehending monads // Mathematical Structures in Computer Science. 1992. P. 61−78.
- Yana Valieva, Dmitry Soshnikov, Tim Scarfe . Race events recognition project. 2019. https://github.com/vJenny/race-events-recognition.