Кращі практики Google та Uber для глибокого навчання

Існує більше для створення стійкого рішення для глибокого навчання, ніж те, що передбачено рамками глибокого навчання, такими як TensorFlow та PyTorch. Ці рамки є досить хорошими для досліджень, але вони не враховують проблем, пов'язаних із розгортанням виробництва. Я раніше писав про технічну заборгованість та необхідність таких адаптивних біологічних архітектур. Для підтримки життєздатного бізнесу з використанням Deep Learning вам абсолютно потрібна архітектура, яка підтримує стійке вдосконалення за наявності частих і несподіваних змін у навколишньому середовищі. Поточні рамки глибокого навчання дають лише одну частину повного рішення.

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

Основна мотивація системи Uber під назвою Мікеланджело полягала в тому, що "не було створено систем для створення надійних, рівномірних та відтворюваних трубопроводів для створення та управління даними про навчання та прогнозування в масштабі". У своїй роботі вони описують обмеження існуючих рамок. питання розгортання та управління технічною заборгованістю. У роботі є достатньо аргументів, які повинні переконати будь-якого скептика в тому, що існуючі рамки є недостатніми для виробництва.

Я не збираюсь з вами повністю переглядати папір Uber. Я скоріше збираюся висвітлити деякі важливі моменти щодо їх архітектури. Система Uber - це не суворо система глибокого навчання, а скоріше система машинного навчання, яка може використовувати багато методів МЛ залежно від придатності. Він побудований на таких компонентах з відкритим кодом: HDFS, Spark, Samza, Cassandra, MLLib, XGBoost та TensorFlow. Отже, це звичайна система BigData, яка включає компоненти машинного навчання для своєї аналітики:

Michelangelo побудований на основі інфраструктури даних і обчислень Uber, забезпечуючи озеро даних, яке зберігає всі трансакційні та зареєстровані дані Uber, брокери Kafka, які агрегують вхідні повідомлення від усіх служб Uber, потоковий обчислювальний апарат Samza, керовані кластери Cassandra та Uber's - інструменти надання та розгортання послуг вдома.

Архітектура підтримує наступний робочий процес:

  1. Управління даними
  2. Тренуйте моделі
  3. Оцініть моделі
  4. Розгортати, прогнозувати та контролювати

Архітектури Михайлангело Убера зображені так:

Я збираюся пропустити звичайні проблеми архітектури Big Data і вказати на деякі помітні ідеї, які стосуються більше машинного навчання.

Michaelangelo розділяє управління даними між онлайн і офлайн трубопроводами. Крім того, для дозволу обміну знаннями та їх повторного використання для всієї організації надається "магазин сховищ":

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

Uber створив мову для домену (DSL) для моделерів для вибору, перетворення та комбінування функції перед відправкою моделі на навчання та прогнозування. Нині підтримувані методи ML - це дерева рішень, лінійні та логістичні моделі, k-засоби, часові ряди та глибокі нейронні мережі.

Конфігурація моделі визначає тип, гіпер-параметри, посилання на джерела даних, функцію DSL-вирази та вимоги до обчислювальних ресурсів (тобто cpus, пам'ять, використання GPU тощо). Навчання проводиться в кластері YARN або Mesos.

Після модельного навчання показники ефективності розраховуються та надаються у звіті про оцінку. Вся інформація, яка є конфігурацією моделі, вивченою моделлю та звітом про оцінку, зберігається у сховищі версій моделі для аналізу та розгортання. Інформація про модель містить:

  • Хто тренував модель
  • Час початку та закінчення навчальної роботи
  • Повна конфігурація моделі (використовувані функції, значення гіпер-параметрів тощо)
  • Посилання на набори даних про навчання та тести
  • Поширення та відносна важливість кожної ознаки
  • Показники точності моделі
  • Стандартні діаграми та графіки для кожного типу моделі (наприклад, крива ROC, крива PR та матриця плутанини для двійкового класифікатора)
  • Повні вивчені параметри моделі
  • Зведена статистика для візуалізації моделі

Ідея полягає в демократизації доступу до моделей ML, обмінюючись ними з іншими для покращення організаційних знань. Унікальною особливістю підходу Uber є розкриття "Магазину функцій", яке дозволяє багатьом різним сторонам обмінюватися своїми даними в різних моделях ML.

Люди в Google опублікували нещодавній документ "TFX: платформа машинного навчання на базі TensorFlow", в якій детально описується їх внутрішня система.

Цей документ структурований аналогічно паперу Uber тим, що він охоплює той самий робочий процес:

  1. Управління даними - аналіз даних, перетворення та перевірка даних
  2. Моделі поїздів - Модельне навчання: Теплий пуск та специфікація моделі
  3. Оцінити моделі - Оцінка моделі та валідація
  4. Розгортання, прогнозування та моніторинг - Обслуговування моделей

Архітектура Google керується наступними заявленими принципами високого рівня:

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

Давайте поглибимося трохи глибше в унікальні можливості Google TFX. Тут є безліч примх мудрості, а також представлення кількох унікальних можливостей.

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

TFX обробляє дані, що складаються, і зберігає перетворення для підтримки узгодженості. Крім того, система забезпечує єдину та послідовну основу для управління відображеннями між цілими цілими числами.

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

TFX використовує TensorFlow в якості опису моделі. TFX має таке поняття «теплий старт», яке надихається технікою трансферного навчання, знайденою в Deep Learning. Ідея полягає у зменшенні обсягу навчання шляхом використання існуючих тренувань. На відміну від трансферного навчання, що використовує існуючу заздалегідь підготовлену мережу, теплий стартовий вибірково визначає мережу загальних особливостей як її вихідну точку. Мережа, яка навчається за загальними ознаками, використовується як основа для навчання більш спеціалізованих мереж. Здається, ця функція реалізована в TF-Slim.

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

TFX використовує структуру TensorFlow Serving для розгортання та обслуговування. Рамка дозволяє обслуговувати різні моделі, зберігаючи однакову архітектуру та API. Обслуговування TensorFlow демонструє «м'яку ізоляцію моделі», що дозволяє розгорнути моделі з кількома орендарями. Рамка також розроблена для підтримки масштабованих висновків.

У документі TFX згадується необхідність оптимізації десеріалізації моделей. Мабуть, був створений індивідуальний аналіз буфера протоколу для підвищення продуктивності до 2–5 разів.

Розбирання внутрішньої архітектури Uber та Google забезпечує хороший огляд точок болю та рішень для створення власної внутрішньої платформи. У порівнянні з наявними рамками DL з відкритим кодом, тут більше акцентується на управлінні та обміні метаінформацією. Підхід Google також вимагає додаткових зусиль для забезпечення рівномірності та автоматизованої перевірки. Це практики, які ми бачили раніше у звичайних програмно-інженерних проектах.

Практичні розробки програмного забезпечення, такі як Test Driven Development (TDD), безперервна інтеграція, відкат та відновлення, контроль змін тощо, впроваджуються в передові методи машинного навчання. Спеціалісту недостатньо розробити на зошиті Юпітер і перекинути його через стіну для команди, щоб зробити оперативним. Ті ж цілі до кінця присвячують практику, яку ми сьогодні знаходимо в кращих машинобудівних компаніях, також будуть затребувані в починаннях машинного навчання. Ми сьогодні бачимо це як в Uber, так і в Google, і тому ми повинні очікувати цього в будь-якій стійкій практиці ML / DL.

Оновлення: https://www.linkedin.com/pulse/ai-layer-diego-oppenheimer, https://arxiv.org/abs/1804.09997v1

Дослідіть глибоке навчання: Штучна інтуїція: Неможлива революція глибокого навчанняВикористовуйте глибоке навчання: AI Playbook