Я интересовался машинным обучением с тех пор, как в 2015 году прошел курс машинного обучения Эндрю Нг на Coursera. К сожалению, этот курс недоступен для новых регистраций, но специализация глубокого обучения также стоит посмотреть, если вы интересно.

Я человек, который любит разбираться в том, как все работает. Курс Coursera отлично подходил для этого, даже если я не очень хорошо разбирался в математике. Когда я начал баловаться с соревнованиями Kaggle, чтобы практиковать то, что я изучил, этот образ мышления привел меня в кроличью нору DIY Python, scikit-learn, TensorFlow и Spark (с добавлением небольшого количества Scala, просто чтобы было интересно).

Я провел недели, изучая детали и совершенствуя свою модель для конкурса Kaggle Титаник. Мы с другом по работе обсуждали проект. В тот вечер он пошел домой, загрузил тренировочные данные в AWS SageMaker и получил результат, который с тех пор мне не удалось побить. Втайне я думаю, что ему, возможно, повезло, или он проделал больше работы, чем показал, но даже в этом случае это показывает силу доступных инструментов.

Если вы не знакомы с SageMaker, AWS описывает его так:

полностью управляемый сервис для создания, обучения и развертывания моделей машинного обучения (ML) для любого варианта использования с полностью управляемой инфраструктурой, инструментами и рабочими процессами.

Помимо прочего, он предоставляет размещенную записную книжку, которую вы можете использовать для построения моделей и прогнозов. Он также предоставляет автопилот, который берет на себя почти всю тяжелую работу. Загрузите свои данные, настройте задание, и он выполнит для вас проектирование функций, выбор алгоритма и настройку гиперпараметров.

За последние годы я потратил гораздо больше времени на использование AWS, чем на машинное обучение, поэтому посмотреть, насколько хорошо я могу справиться с вызовом Kaggle с помощью SageMaker, кажется, уже давно пора. Возможно, сейчас самое время — через пять лет после моего первого представления на Kaggle — догнать Уилла с моей старой работы…

Что такое Титаник Челлендж

Kaggle — отличное место для начала машинного обучения. Существует множество практических задач с наборами данных и сообществом, обсуждающим свой подход к решению каждой проблемы. Titanic Challenge — это их вводное соревнование, что-то вроде «Hello World» для науки о данных.

Соревнование простое: используйте машинное обучение, чтобы создать модель, которая предсказывает, какие пассажиры выжили после кораблекрушения Титаника.

Данные для обучения невелики: всего 61 КБ на 900 записей, поэтому построение модели не требует больших вычислительных мощностей. Данные поддаются нескольким алгоритмам, включая логистическую регрессию и классификацию случайного леса, оба из которых — для алгоритмов машинного обучения — относительно интуитивно понятны.

Подход «сделай сам»

Я начал с установки Jupyter Notebook на свой ноутбук, так как у меня уже был установлен и запущен Python. Затем я установил нужные мне библиотеки: numpy, pandas и scikit-learn. Затем я прыгнул в блокнот и построил свое решение:

  1. Загрузите данные в фреймы данных.
  2. Разделите данные на обучающий и тестовый наборы данных.
  3. Подготовьте данные, например, заполнив пробелы, получив дополнительные признаки.
  4. Создайте случайную модель леса.
  5. Используйте модель, чтобы предсказать результаты для «секретных» записей, которые Kaggle скрывает, чтобы судить о них.

Полный код находится на GitHub, если вы хотите взглянуть поближе. Это дало мне разумную оценку 0,77990 (точность 78%).

Параметры AWS

Расходы

Если вы следите за новостями этого блога, имейте в виду, что ресурсы AWS являются платными. Уровень бесплатного пользования удобен для экспериментов, но если вы выйдете за его пределы, счета за большие экземпляры быстро возрастут.

Уровень бесплатного пользования покрывает до 250 часов работы в студии или ноутбуке среднего размера в месяц. В месяце до 744 часов, поэтому не забывайте выключать их, когда не используете! Он также покрывает до 50 часов очень больших инстансов для обучения, но с Autopilot вы, скорее всего, выйдете за эти рамки и будете использовать более крупные инстансы, поэтому следите за расходами. Я должен был знать лучше, но усвоил это на собственном горьком опыте в прошлом месяце.

Проверьте Цены на SageMaker и рассмотрите возможность настройки уведомлений о выставлении счетов, чтобы заранее предупреждать вас о растущих расходах. Не забудьте отключить инстансы и очистить ресурсы, когда закончите.

Блокнот своими руками

Можно взять код из моей записной книжки DIY, вставить ее в записную книжку, размещенную в SageMaker, изменить пару строк кода для загрузки данных из корзины S3, а не из локального каталога, и получить те же результаты. На самом деле это было бы проще, чем делать все своими руками, потому что нет необходимости устанавливать зависимости. Помимо простоты, у вас будет доступ к мощной облачной инфраструктуре для обучения вашей модели. Это не проблема запустить случайный лес из 1000 записей на вашем ноутбуке, но вы можете ждать дольше, чем перерыв на кофе, обучая нейронную сеть на огромном наборе данных.

Автопилот

В этой статье я хотел воспользоваться всеми преимуществами SageMaker, чтобы продемонстрировать, насколько простым может быть этот процесс. Поэтому я решил использовать SageMaker Автопилот. Шаги, которые я опишу далее, предназначены для сравнения различных подходов. Если вы ищете учебник или подробное объяснение, есть лучшие ресурсы:

Шаги высокого уровня в блокноте:

  • Импортируйте необходимые библиотеки.
  • Краткий обзор наших тренировочных данных.
  • Настройка задания AutoML.
  • Запуск задания AutoML.
  • Делать прогнозы с помощью наиболее эффективной модели-кандидата.

Выполнение задания AutoML — это то место, где происходит тяжелая работа. Автопилот анализирует обучающие данные, запускает задания по разработке признаков и автоматически настраивает модель.

Эта работа заняла чуть более 75 минут: четыре минуты на анализ данных, девять минут на разработку функций, 48 минут на настройку модели и по 8 минут на создание отчета об объяснимости и анализе. Это дольше, чем я ожидал, и я рассмотрю это в будущем. Я ожидаю, что работа может быть оптимизирована, чтобы сократить время и затраты.

Вот ссылка на блокнот в моем GitHub для справки, но если вы заинтересованы в том, чтобы сделать это самостоятельно, вам будет гораздо лучше начать с примера блокнота для жилья в Калифорнии с автопилотом. Это все, что я сделал, так что лучше начать с оригинала.

Там все еще есть разумное количество кода, но присмотритесь, и вы увидите, что подавляющее большинство является шаблонным. Измените источники данных из примера, и вы практически готовы к работе. Я не проводил никакого анализа или разработки функций, все это сделал SageMaker. Как только вы поймете, как работает этот инструмент, вы сможете добавить новый набор данных и настроить совершенно другую модель всего за несколько минут работы и короткое ожидание автоматической настройки. Автопилот также предлагает способы улучшения данных; они доступны через студию SageMaker в блокнотах, созданных для каждого задания. Видео, связанное ранее, показывает, как их использовать.

Исход

Я не развертывал конечную точку, так как это была разовая работа. Вместо этого я провел преобразование, чтобы пропустить входные данные через тот же конвейер (разработка функций и т. д.), что и наши обучающие данные, и сделать вывод оттуда. Я загрузил прогнозы с S3, вручную добавил заголовки и столбец идентификатора пассажира в соответствии с форматом, ожидаемым Kaggle, и отправил данные. Результат был немного разочаровывающим: 0,77511 (точность 77,5%). Разочаровывает, потому что это на 0,4% хуже, чем мои самодельные усилия, но это все равно впечатляет, поскольку мне не пришлось заниматься разработкой функций, выбором алгоритма или настройкой гиперпараметров. Потратив немного больше времени, усилий и улучшив понимание набора инструментов, я уверен, что улучшусь еще на пару процентных пунктов.

Заключение

Я видел такие же конечные результаты от автопилота, как и от моего самостоятельного анализа. Вычисления для моего самостоятельного анализа были бесплатными, тогда как Autopilot стоил мне около 20 долларов. Большим преимуществом является то, что в то время как Autopilot отнял у меня целый вечер хакерского примера кода, который я не до конца понял, подход «сделай сам» отнял у меня много вечеров и выходных за изучением, множеством анализов данных и подготовки, а также часов экспериментов. Вместо того, чтобы знать науку о данных, вы можете получить хорошие результаты, зная, как использовать инструмент с небольшим количеством Python.

Что касается подхода «сделай сам», то настоящий практик мог бы добиться гораздо большего, чем я, за гораздо меньшее время. Но тогда они могли бы сделать еще лучше и за меньшее время с помощью такого инструмента, как SageMaker.

Если бы я делал это для работы, автопилот был бы правильным выбором. Экономия времени стоила 20 долларов. В качестве хобби я останусь со своими блокнотами. Так я узнал гораздо больше и получил удовольствие от путешествия.

Что еще может SageMaker?

Пока я использовал только часть SageMaker. Это гораздо более мощный инструмент, чем размещенный блокнот с некоторыми умными библиотеками.

  • Studio предоставляет полноценную среду для работы с машинным обучением.
  • Ground Truth позволяет передать ручную маркировку данных на аутсорсинг, что упрощает сбор обучающих данных. Механический турок для электронных таблиц.
  • Модели можно развертывать на размещенных конечных точках, что позволяет делать прогнозы с помощью вызовов API. Их можно настроить так, чтобы они были максимально доступными и производительными, как вы ожидаете от облачной службы, и стать частью вашего приложения.
  • Рабочие процессы доступны для конвейера разработки программного обеспечения с контролем версий, утверждениями и автоматическим развертыванием.
  • Доступ к оборудованию, оптимизированному для обучения моделей, через AWS Neuron и такие инструменты, как SageMaker Neo, которые оптимизируют модели для логического вывода на разных платформах.

Больше, чтобы узнать

Если вы хотите узнать больше, в Интернете есть множество полезных ресурсов. Моими фаворитами до сих пор были:

  • Kaggle: практические задачи в области науки о данных, интересные наборы данных для экспериментов, а также знающее и поддерживающее сообщество для обсуждения решений.
  • AWS AI/ML Specialty: профессиональная сертификация, посвященная развертыванию, эксплуатации и потоковой передаче данных в ресурсы машинного обучения AWS. Особенно полезно при производственной нагрузке по машинному обучению в облаке.
  • Открытая специализация глубокого обучения ИИ: углубленное изучение глубокого обучения, включая теорию, стоящую за ним, и лучшие практики его использования. Гораздо глубже и теоретичнее, чем специальность AWS. Больше академик, чем практик.

Об авторе:
Эд Иствуд является архитектором AWS в Версии 1.