Добірка фреймворків для машинного навчання



В останні роки машинне навчання перетворилося в мейнстрім небувалої сили. Ця тенденція підживлюється не лише дешевизною хмарних середовищ, але й доступністю найпотужніших відеокарт, застосовуваних для подібних обчислень, — з'явилася ще і маса фреймворків для машинного навчання. Майже всі з них open source, але куди важливіше те, що ці фреймворки проектуються таким чином, щоб абстрагуватися від найважчих частин машинного навчання, роблячи ці технології більш доступними широкому класу розробників. Під катом представлена підбірка фреймворків для машинного навчання, як недавно створених, так перероблених у році, що минає. Якщо у вас все добре з англійською, то стаття в оригіналі доступна здесь.

Apache Spark MLlib


Apache Spark найбільше відомий завдяки своїй причетності до сімейства Hadoop. Але цей фреймворк для обробки даних всередині пам'яті (in-memory) з'явився поза Hadoop, і досі продовжує заробляти собі репутацію за межами цієї екосистеми. Spark перетворився на звичний інструмент для машинного навчання завдяки зростаючої бібліотеки алгоритмів, які можна швидко застосувати до знаходяться в пам'яті.

Spark не застиг у своєму розвитку, його алгоритми постійно розширюються і переглядаються. У релізі 1.5 додано багато нових алгоритмів, поліпшені існуючі, а також в Python посилена підтримка MLlib, основної платформи для розв'язання математичних і статистичних завдань. В Spark 1.6, крім іншого, завдяки безперервним конвеєрів (persistent pipelines) з'явилася можливість припинення і продовження виконання завдань Spark ML.

Apache Singa


Фреймворки «глибинного навчання» використовуються для рішення важких завдань машинного навчання, зразок обробки природних мов і розпізнавання зображень. Нещодавно в інкубатор Apache був прийнятий open source-фреймворк Singa, призначений для полегшення тренувань моделей глибокого навчання на великих обсягах даних.

Singa забезпечує просту програмну модель для тренування мереж на базі кластеру машин, а також підтримує багато стандартні види тренувальних завдань: згорткові нейронні мережі, обмежені машини Больцмана і рекурентні нейронні мережі. Моделі можна тренувати синхронно (одна за одною) і асинхронно (спільно), залежно від того, що краще підходить для даної проблеми. Також Singa полегшує процес налаштування кластера за допомогою Apache Zookeeper.

Caffe


Caffe — фреймворк глибинного навчання. Він зроблений з розрахунком на виразність, швидкість і модульність». Спочатку фреймворк створювався для проектів машинного зору, але з тих пір розвинувся і тепер застосовується і для інших завдань, в тому числі для розпізнавання мовлення та роботи з мультимедіа.
Головна перевага Caffe — швидкість. Фреймворк повністю написаний на С++, підтримує CUDA, і при необхідності вміє перемикати потік обробки між процесором і відеокартою. У пакет поставки входить набір безкоштовних і open source референсних моделей для стандартних завдань по класифікації. Також чимало моделей створено співтовариством користувачів Caffe.

Microsoft Azure ML Studio


Враховуючи величезний обсяг даних і обчислювальної потужності, необхідний для машинного навчання, хмари є ідеальним середовищем для ML-додатків. Microsoft оснастила Azure власним сервісом машинного навчання, за який можна платити тільки за фактом використання — Azure ML Studio. Доступні версії з помісячним і погодинною оплатою, а також безкоштовна (free-tier). Зокрема, за допомогою цієї системи створено проект HowOldRobot.

Azure ML Studio дозволяє створювати і тренувати моделі, перетворювати їх в API для надання іншим сервісам. На один аккаунт може виділятися до 10 Гб місця для зберігання даних, хоча можна підключити і власне Azure-сховище. Доступний широкий спектр алгоритмів, створених Microsoft і сторонніми компаніями. Щоб спробувати сервіс, не треба навіть створювати аккаунт, досить увійти анонімно, і можна ганяти Azure ML Studio протягом восьми годин.

Amazon Machine Learning


У Amazon є свій стандартний підхід до надання хмарних сервісів: спочатку зацікавленої аудиторії надається базова функціональність, ця аудиторія щось з неї ліпить, а компанія з'ясовує, що ж насправді потрібно людям.

Те ж саме можна сказати і про Amazon Machine Learning. Сервіс підключається до даних, що зберігаються в Amazon S3,: Redshift або RDS, він може виконувати двійковий класифікацію, многоклассовую категоризацію, а також регресію за вказаними даними для створення моделі. Однак цей сервіс зав'язаний на Amazon. Мало того, що він використовує дані, що лежать в належать компанії сховищах, так ще і моделі не можна імпортувати або експортувати, а вибірки даних для тренувань не можуть бути більше 100 Гб. Але все ж це хороший інструмент для початку, ілюструє, що машинне навчання перетворюється з розкоші в практичний інструмент.

Інструментарій для розподіленого машинного навчання (Microsoft Distributed Machine Learning Toolkit)


Чим більше комп'ютерів ви можете задіяти для вирішення проблеми машинного навчання, тим краще. Але об'єднання великого парку машин і створення ML-додатків, які ефективно на них виконуються, може бути непростим завданням. Фреймворк DMTK (Distributed Machine Learning Toolkit) призначений для вирішення проблеми розподілу різних ML-операцій по кластеру систем.

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

Google TensorFlow


Як і Microsoft DMTK, Google TensorFlow — це фреймворк машинного навчання, створений для розподілу обчислень в рамках кластера. Поряд з Google Kubernetes цей фреймворк розроблявся для вирішення внутрішніх проблем Google, але в кінці кінців компанія випустила його у відкрите плавання у вигляді open source-продукту.

TensorFlow реалізує графи потоків даних (data flow graphs), коли порції даних («тензори») можуть оброблятися серією описаних графом алгоритмів. Переміщення даних по системі називається «потоками». Графи можна збиратися з допомогою С++ або Python, і обробляти процесором або відеокартою. У Google є довгострокові плани розвитку TensorFlow силами сторонніх розробників.

Інструментарій для створення обчислювальних мереж Microsoft (Microsoft Computational Network Toolkit)


По гарячих слідах DMTK Microsoft випустила ще один інструментарій для машинного навчання — CNTK.

CNTK аналогічний Google TensorFlow, він дозволяє створювати нейронні мережі за допомогою орієнтованих графів. Microsoft порівнює цей фреймворк з такими продуктами, як Caffe, Theano та Torch. Його головна перевага — швидкість, особливо коли мова йде про паралельне використання декількох процесорів і відеокарт. Microsoft стверджує, що використання CNTK в поєднанні з GPU-кластерами на базі Azure дозволяє на порядок прискорити тренування по розпізнаванню мови віртуальним помічником Cortana.

Спочатку CNTK розроблявся як частину дослідницької програми з розпізнавання мови і пропонувався у вигляді open source-проекту, але з тих пір компанія перевыпустила його на GitHub під набагато більш ліберальної ліцензією.

Veles (Samsung)


Veles — це розподілена платформа для створення програми глибокого навчання. Як і TensorFlow і DMTK, вона написана на С++, хоча для автоматизації та координації вузлів використовується Python. Перш ніж згодовуватися кластеру вибірки даних, їх можна аналізувати і автоматично нормалізувати. REST API дозволяє негайно використовувати натреновані моделі в робочих проектах (якщо у вас досить потужне обладнання).

Використання Python у Veles виходить за межі «склеює коду». Наприклад, IPython (тепер Jupyter), інструмент для візуалізації та аналізу даних, може виводити дані з кластера Veles. Samsung сподівається, що статус open source допоможе стимулювати подальший розвиток продукту, як і портування під Windows і Mac OS X.

Brainstorm


Проект Brainstorm розроблений аспірантами з швейцарського інституту IDSIA (Institute Dalle Molle for Artificial Intelligence). Він створювався для того, щоб зробити нейронні мережі глибокого навчання швидше, гнучкіше і цікавіше». Вже є підтримка різних рекурентних нейронних мереж, наприклад, LSTM.

У Brainstorm використовується Python для реалізації двох «обробників» — API управління даними: один для процесорних обчислень з допомогою бібліотеки Numpy, а другий для використання відеокарт за допомогою CUDA. Велика частина роботи виконується в Python-скриптах, тому не чекайте розкішного фронтенд-інтерфейсу, якщо тільки не прикрутіть щось своє. Але у авторів є далекосяжні плани щодо «вилучення уроків з більш ранніх open source-проектів» та використання «нових елементів дизайну, сумісних з різними платформами і обчислювальними бэкендами».

mlpack 2


Багато проектів по машинному навчання використовують mlpack, написану на С++ бібліотеку, створену у 2011 році і призначену для масштабування, прискорення і спрощення використання». Впровадити mlpack для виконання зроблених нашвидкуруч операцій типу «чорний ящик» можна з допомогою файлів кешу, виконуваних через командний рядок, а для більш складних робіт — з допомогою API C++.

У mlpack 2.0 був проведений великий обсяг роботи по рефакторінгу і впровадження нових алгоритмів, переробки, прискоренню і позбавлення від неефективних старих алгоритмів. Наприклад, для нативних функцій генерування випадкових чисел C++11 було виключено генератор бібліотеки Boost.

Одним з давніх недоліків mlpack є брак біндінгів для будь-яких інших мов, за винятком С++. Тому програмісти, що пишуть на інших мовах, не можуть використовувати mlpack, поки хтось не викотить відповідну обгортку. Було додано підтримку MATLAB, але подібні проекти найбільше виграють у тих випадках, коли вони безпосередньо корисні в основних середовищах, де і використовується машинне навчання.

Marvin


Ще один відносно свіжий продукт. Marvin — це фреймворк для нейронних мереж, створений у Princeton Vision Group. В його основі всього кілька файлів, написаних на С++, і CUDA-фреймворк. Незважаючи на мінімалізм коду, Marvin поставляється з непоганим кількістю попередньо натренованих моделей, які можна використовувати з належним цитуванням і впроваджувати за допомогою pull request'ів, як і код самого проекту.

Neon


Компанія Nervana створює програмно-апаратну платформу для глибокого навчання. І як open source-проекту пропонує фреймворк Neon. За допомогою плагінів він може виконувати важкі обчислення на процесори, відеокарти або обладнанні, створеному Nervana.

Neon написаний на Python, з кількома шматками на С++ і асемблері. Так що якщо ви робите наукову роботу на Python, або використовуєте якийсь інший фреймворк, який має Python-биндинги, то можете відразу ж використовувати Neon.

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


Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.