Сучасні корпоративні інформаційні системи генерують величезні обсяги даних, які самі по собі не приносять користі, якщо їх вчасно не обробити. Машинне навчання дозволяють прискорити обробку, але всі дані можуть не вміститися на одній машині.
Сьогодні корпоративні сховища будуються на базі як класичних реляційних СУБД (Oracle DB, PostgreSQL) і NoSQL-рішень (MongoDB, Cassandra), так і складних розподілених систем (Apache Hadoop, Apache Ignite, Hazelcast, Oracle Coherence). Для обробки даних зазвичай використовуються спеціалізовані підходи і системи вирішення конкретних бізнес-завдань, зокрема, на основі методів машинного навчання, що дозволяє автоматизувати роботу з величезними обсягами розподілених між різними сховищами даних.
Припустимо, є система зберігання і система обробки даних, а для виконання прогнозу - наприклад, на основі історичних даних, які обробляються за допомогою технологій машинного навчання, - потрібно як мінімум передати дані між двома системами: вивантажити дані зі сховища, перетворити, а потім завантажити в спеціалізовану систему, яка використовує, наприклад, технології машинного навчання. Найбільш популярним підходом є ETL (Extract Transform Load), що реалізується як за допомогою самописних bash-скриптів, так і засобами потужних комерційних інтеграційних продуктів від таких компаній, як Informatica або SAP.
Мал. 1. Вузьке горло традиційних систем
Однак у цього підходу є недоліки (рис. 1). Наприклад, дані, вивантажують з сховища, зазвичай передають по мережі, і якщо їх дійсно багато, то передача займе більше часу, ніж навчання нейронної мережі, що використовується в моделі аналізу історичних даних. До того ж вивантаження великих обсягів даних може істотно знизити продуктивність корпоративних мереж компанії, додати проблем з доступом до даних з інших зовнішніх і внутрішніх систем. Все це означає необхідність розгортання значних обчислювальних і мережних ресурсів, великі витрати на інфраструктуру, персонал і, як наслідок, стримує зростання бізнесу - інформаційна система виявляється не готова як до різкого збільшення обсягів даних (наприклад, в разі напливу клієнтів), так і до розгортання і випробуванню нових бізнес-моделей.
Зберігання даних окремо від системи машинного навчання, де вони обробляються і де виконується навчання моделі, може звести нанівець зусилля щодо прискорення процесу навчання нейронної мережі, особливо коли даних так багато, що вони не вміщаються на одній машині. Завдання можна вирішити, якщо зосередитися на проблемі довгого ETL і тренувати модель глибинного навчання на кластері, забезпечивши не паралельно, а розподілену систему навчання.
У розподілених системах немає дані доставляються до обчислювачам, а, навпаки, аналіз даних виконується за місцем їх зберігання (рис. 2).
Таку розподілену систему зберігання і обробки можна побудувати на базі рішення з відкритим кодом Apache Ignite [1] , Яке забезпечує горизонтальне масштабування, підтримує розподілене, що передбачає обробку в пам'яті (in-memory) сховище «ключ-значення» з дотриманням вимог ACID, персистентності і ANSI SQL, а також має вбудовані засоби підтримки таких методів машинного навчання, як лінійна і логістична регресія , алгоритми кластеризації, дерева рішень, випадковий ліс, градієнтний бустінг дерев і ряд інших. Крім того, в Apache Ignite передбачена підтримка TensorFlow - однієї з популярних платформ для вирішення завдань методами глибинного навчання.
Apache Ignite розгортається або на кластері з декількох серверів категорії bare metal (сервер, керований гіпервізором, завантаженим перед ОС), або в контейнерах, а всі дані зберігаються і обробляються в оперативній пам'яті, що істотно швидше, ніж у традиційних рішень, що використовують жорсткі диски. Така архітектура пред'являє особливі вимоги до масштабованості і відмовостійкості - для будь-яких розподілених рішень зміна топології кластера «на льоту» є штатною ситуацією. Інакше кажучи, система повинна бути готова як до введення нових вузлів, на які необхідно перенести частину навантаження, так і до висновку, в тому числі і нештатному, з кластера вузлів, на яких зберігалися дані або виконувалися обчислення. Всі ці ж вимоги справедливі і для розподілених платформ підтримки систем на безе технологій машинного навчання.
У розподіленої системи зберігання та обробки не потрібно переносити величезні обсяги даних у зовнішню систему - в Apache Ignite є вбудовані механізми для аналізу і обробки даних як традиційними методами, так і засобами машинного навчання. Відпадає необхідність витрат на додаткові системи і серверні потужності. Також в розподіленої системі є можливість негайно почати навчання Предсказательная моделей, не чекаючи вивантаження даних в окремі системи. Режим continuous learning означає, що можна при необхідності коректувати поведінку моделі буквально «на льоту» - з'являється можливість швидкої адаптації моделі до зміни даних і їх обсягів.
***
Для підтримки роботи з великими даними методами глибинного навчання все частіше застосовуються горизонтально масштабовані архітектури: вартість вертикального масштабування зростає експоненціально, а горизонтального - майже лінійно. Крім того, існують фізичні обмеження на вертикальний ріст, а це означає, що традиційні системи зберігання не можуть розширюватися безкінечно або хоча б досить швидко. Це особливо критично для задач глибинного навчання в разі, коли даних більше, ніж може поміститися на одній машині. З'явилися принципово нові системи HTAP (Hybrid transaction / analytical processing), що поєднують в собі функціональність зберігання і обробки даних. І з часом такі рішення прийдуть на зміну монолітним вертикально масштабується архитектурам.
- Микита Іванов. Універсальна платформа для роботи в оперативній пам'яті // Відкриті системи. СУБД. - 2018. - № 2. - С. 12-13. URL: https: www.osp.ru/os/2018/2/13054147/ (Дата звернення: 25.11.2018).
Юрій Бабак ( [email protected] ) - керівник відділу досліджень і розробок в області машинного навчання, компанія GridGain Systems. Стаття підготовлена на основі матеріалів виступу на конференції «Технології управління даними - 2018» .