Порівняння фреймворків машинного навчання



Abstract. Theses of the report contain a comparison of the existing machine learning frameworks for Python language. The paper briefly describes pros amd cons of every chosen framework. The authors gave their own recommedations for using each of the chosen framework.

Keywords: image recognition, machine learning, convolutional neural networks, machine learning frameworks.

Дорогий Ярослав Юрійович

КПІ ім. Ігоря Сікорського

Київ, Україна

cisco.rna@gmail.com

Левченко Ксенія В’ячеславівна

КПІ ім. Ігоря Сікорського

Київ, Україна

ksulevchenko95@gmail.com

Comparison of the machine learning frameworks

Abstract. Theses of the report contain a comparison of the existing machine learning frameworks for Python language. The paper briefly describes pros amd cons of every chosen framework. The authors gave their own recommedations for using each of the chosen framework.

Keywords: image recognition, machine learning, convolutional neural networks, machine learning frameworks.

Yaroslav Dorohyi

Department of ACTS, FICT NTUU “Igor Sikorsky Kyiv Polytechnic Institute”

Kyiv, Ukraine

cisco.rna@gmail.com

Kseniia Levchenko

Department of ACTS, FICT NTUU “Igor Sikorsky Kyiv Polytechnic Institute”

Kyiv, Ukraine

ksulevchenko95@gmail.com

ВСТУП

У наш час є актуальною проблема побудови нейронних мереж, адже вони використовуються у таких галузях як медична діагностика (виявлення вад на рентгенівських знімках), розпізнавання текстів, мови, технічна діагностика, системи контролю. Нейронні мережі дозволяють розв’язувати складні задачі класифікації, у яких без автоматизації було б задіяно велику кількість людських ресурсів. Це такі галузі як медична діагностика (виявлення вад на рентгенівських знімках), розпізнавання текстів, мови, технічна діагностика, системи контролю. Для побудови схожої власної системи (або для початку побудови таких систем) дуже зручно використовувати вже готові рішення, які значно понижують поріг входження у галузь розробки систем розпізнавання. На сьогодні існує велика кількість фреймворків, що полегшують реалізацію системи на основі нейронних мереж та дозволяють сфокусуватись на архітектурі системи, на задачах, що вона розв’язує, а не на розробці конкретного програмного забезпечення.

ПОСТАНОВКА ЗАДАЧІ

Спочатку визначимо задачу, на прикладі якої буде проводитись порівняння найпопулярніших фреймворків машинного навчання. Нехай, нам необхідно побудувати систему розпізнавання певних об’єктів на зображеннях. Оберемо такі об’єкти, що присутні у публічних датасетах, наприклад об’єкти з CIFAR-10 датасету [1]. Оскільки це задача розпізнавання зображень, то для своєї системи оберемо convolutional neural network (згорткову нейронну мережу) [2], що найкраще справляється з таким типом задач через особливості своєї архітектури. Мову програмування обрано Python, оскільки для неї фреймворки представлені найширше. Виходячи з постановки нашої задачі можна виділити такі критерії порівняння: простота опису архітектури нейронної мережі, підтримка роботи із згортковими нейронними мережами, простота переналаштування архітектури мережі, що є дуже важливим фактором, оскільки швидке переналаштування мережі дозволяє легко проводити експерименти з різними варіантами нейронних мереж можливість навчання на графічному процесорі (а саме підтримка платформи CUDA [3]), доступність прикладів, підтримка попередньо натренованих моделей, які дозволяють покращити результати навчання, підтримка різних ОС.

ПОРІВНЯННЯ ФРЕЙМВОРКІВ

Для порівняння було обрано такі фреймворки: PyTorch [4], TensorFlow [5], Caffe [6], MxNet [7]. PyTorch. Це фреймворк, який дозволяє проводити об-числення швидко на графчіному процесорі та будувати нейронні мережі. Переваги: підтримка попередньо натре-нованих моделей, швидка зміна архітектури нейронної мережі завдяки техніці reverse-mode auto-differentiation (автома-тичне диференціювання з рухом назад), підтримка візуалі-зації побудованої архітектури, опис моделі за допомогою методів, що мають назви шарів згорткової нейронної ме-режі, підтримка візуалізації побудованої архітектури, опис моделі за допомогою методів, що мають назви шарів згорткової нейронної мережі (conv, relu, max_pool), що пришвидшує початок роботи з цим фремворком, підтрим-ка CUDA. До недоліків можна віднести те, що код для тре-нування необхідно писати самому, що сповільнює розро-бку [8].

Таблиця 1 Порівняння фреймворків за обраними критеріями

Таблиця 2 Оцінка кожного фреймворку за обраними критеріями

TensorFlow. Фреймворк від Google, який замінив Theano, став простішим і швидшим на відміну від попере-дника, є найпопулярнішим серед розробників. Переваги: архітектура мережі описується у термінах, що використо-вуються у CNN, має детальну візуалізацію TensorBoard, що будує граф під час навчання, готова реалізація трену-вання, використовує auto-differentiation для переналашту-вання архітектури, підтримує паралельні обчислення, підтримка CUDA. Недоліки: значно повільніший за інші фреймворки (наприклад, MxNet), невелика кількість попе-редньо натренованих моделей, складний для початківця [9].

Caffe. Фреймворк, який спеціалізується саме на розпі-знаванні зображень. Переваги: гарна підтримка CNN, велика кількість попередньо натренованих моделей, опис моделей відбувається за допомогою JSON, що дозволяє краще розуміти вкладеність та структуру шарів без візуа-лізації, або за допомогою вбудованих методів, присутня візуалізація, типи шарів описуються у відомих термінах для CNN, тренування проводиться без написання додат-кового коду, лише за допомогою файлів налаштувань, підтримка CUDA. Недоліки: важко розширювати для ви-конання інших задач розпізнавання повільно працює з великими мережами, які не були попередньо натреновані, відсутність швидкого переналаштування, навчання про-водитиметься спочатку, майже відсутня підтримка [10].

MXNet. Фреймворк для машинного навчання від Mi-crosoft і Amazon. Переваги: набагато швидший за інші фреймворки (швидше навчання, менше використання опе-ративної пам’яті), підтримує попередньо натреновані моделі (у прикладах пристуній готовий код для fine-tuning), опис моделі проводиться у термінах CNN, присут-ня візуалізація, можливе швидке переналаштування завдя-ки auto-differentiation, готовий код для тренування, підт-римка CUDA. Недоліки: необхідно встановлювати окремі версії фреймоврка для GPU та CPU, невелика кількість документації [11]. Основні критерії порівняння винесені в таблицю 1. Ва-рто додати, що усі фреймворки підтримують навчання на GPU за допомогою CUDA, та мають візуалізацію побудо-ваної мережі. В результаті порівняння кожного фреймворку за обра-ними критеріями, їх було оцінено по калі від 0 до 5 (від йгіршого результату до найкращого). Результат цієї оцін-ки представлено в таблиці 2. Кожен критерій також було оцінено по шкалі від 0 до 5 (від зовсім не важливого, до дуже важливого) з точки зору важливості для прийняття рішення, який фреймворк вико-ристовувати. Результати представлено в таблиці 3.

Таблиця 3 Оцінка критеріїв за їх важливістю

ВИСНОВКИ

Порівняння, що приведено вище полегшує попередній вибір фреймворку для розв’язку задач, які є подібними до поставленої. В результаті оцінки кожного фреймворку, за обраними критеріями було отримано, що MXNet є най-кращими фреймворком, а Caffe – найгіршим. MXNet є наймолодшим представником, включає у себе необхідні для розробника компоненти, швидко розвивається, тому і отримав найкращий результат. Caffe навпаки, хоч і вико-ристовується досі, є застарілим фреймворком, тому деякі моменти його реалізації не є актуальними. Звичайно, що кожен розробник особисто обирає важ-ливість того чи іншого критерію, в залежності від умов поставленої задачі, обчислювальних можливостей, необ-хідності часто змінювати і перенавчати архітектуру ней-ронної мережі. Якщо було обрано техніку навчання fine-tuning, то не варто обирати TensorFlow, адже це не основ-на задача цього фреймворку, в цьому випадку Caffe має перевагу. Якщо важлива швидкість навчання і перенала-штування мережі, то краще звернути увагу на MxNet та PyTorch, адже вони можуть забезпечити цю швидкість. Якщо задача складна, не вистачає готових рішень, потрі-бна підтримка професіоналів у сфері машинного навчан-ня, то можна обрати TensorFlow як найрозповсюдженіший фреймворк, що означає, що легше буде отримати певну допомогу при вирішенні задачі.

ЛІТЕРАТУРА

$1.$ CIFAR-10 and CIFAR-100 datasets [Електронний ресурс] : [Веб-сайт]. – Режим доступу: https://www.cs.toronto.edu/~kriz/cifar.html (дата звернення 30.04.2018). – Назва з екрана.

$2.$ CS231n: Convolutional Neural Networks for Visual Recognition [Електронний ресурс] : [Веб-сайт]. – Режим доступу: http://cs231n.github.io/convolutional\-networks/ (дата звернення 30.04.2018). – Назва з екрана.

$3.$ CUDA Zone | NVIDIA Developer [Електронний ре-сурс] : [Веб-сайт]. – Режим доступу: https://developer.nvidia.com/cuda\-zone (дата звернення 30.04.2018). – Назва з екрана.

$4.$ PyTorch [Електронний ресурс] : [Веб-сайт]. – Ре-жим доступу: http://pytorch.org/ (дата звернення 30.04.2018). – Назва з екрана.

$5.$ TensorFlow [Електронний ресурс] : [Веб-сайт]. – Режим доступу: https://www.tensorflow.org/ (дата звернення 30.04.2018). – Назва з екрана.

$6.$ Caffe | Deep Learning Framework [Електронний ре-сурс] : [Веб-сайт]. – Режим доступу: http://caffe.berkeleyvision.org/ (дата звернення 30.04.2018). – Назва з екрана.

$7.$ MXNet: A scalable deep learning framework [Елект-ронний ресурс] : [Веб-сайт]. – Режим доступу: https://mxnet.incubator.apache.org/ (дата звернення 30.04.2018). – Назва з екрана.

$8.$ Adam Paszke Automatic differentiation in PyTorch/ A. Paszke, S. Gross // 31st Conference on Neural Information Processing Systems (NIPS 2017) – Long Beach, CA, USA, 2017. – С. 1 -3

$9.$ Martin Abadi TensorFlow: A system for large-scale machine learning/ M. Adabi, P. Barham // 12th USENIX Symposium on Operating Systems Design and Implementation (OSDI 16), USENIX Association (2016) – SAVANNAH, GA, USA, 2016. – P. 1 - 5.

$10.$ Yangqing Jia Caffe: Convolutional Architecture for Fast Feature Embedding/ Y. Jia, E. Shelhamer // ACM MULTIMEDIA 2014 OPEN SOURCE SOFTWARE COMPETITION – 2014 – P. 2 – 3.

$11.$ Tianqi Chen MXNet: A Flexible and Efficient Machine Learning Library for Heterogeneous Distributed Systems/ T. Chen, M. Li // In Neural In-formation Processing Systems, Workshop on Machine Learning Systems – 2016 – P. 2 – 5.

May 17, 2018