Пошаговое руководство по запуску ваших моделей на инстансах EC2.

Вы слышали Евангелие. Это десятилетие искусственного интеллекта. Вы выбрали машинное обучение (так мы говорим, правда?) Как хобби, вы готовитесь к следующему карьерному ходу или вы молодой ученый, серьезно подумывающий о том, чтобы уйти из академических кругов, чтобы добиться успеха в новой экономике. Вы много раз слышали о Kaggle, фактическом короле платформ для соревнований по машинному обучению.

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

Вы слышали Евангелие. Это десятилетие искусственного интеллекта.

Вы работали как надо, но крайний срок конкурса ужасно близок, а волшебной пули у вас еще нет. Вы потратили много времени на спарринги с эффективностью памяти (здесь 8 ГБ ОЗУ), и независимо от того, насколько хорошо вы построили модель, время работы на вашей машине никогда не будет достаточно хорошим. По мере того, как конкуренция усиливалась, вы все чаще и чаще смотрели на свой экран, ожидая, пока ваша модель закончит работу, пытаясь не слишком отвлекаться, но при этом ища способы не тратить время зря. «Осталось слишком много работы, чтобы тратить день или два на изучение того, как запускать свои модели в облаке», - подумали вы.

Затем, прежде чем вы это осознаете, соревнование заканчивается, и молот падает. Вы не попали в топ-10, больше похоже на топ-1000…. Сейчас 5 утра, ты почти не спала последние 3 дня. Вы почувствовали ожог.

На следующий день вы с удовольствием прочитаете лучшие решения, любезно предоставленные замечательными кагглерами. Вы понимаете, что ваше решение было более или менее тем же, что и в первой десятке, за исключением того, что у них было ›128 ГБ памяти и вычислительные чудовища с миллионом ядер и блестящими дорогими графическими процессорами. Вы снова чувствуете ожог. Но это неплохо, поверьте мне. Это неизбежное зло.

AWS приходит на помощь! Не нужно отчаиваться, ведь мы живем в век облаков. Позвольте мне провести вас через несколько простых шагов, и в течение часа (или 10 минут, если у вас уже есть учетная запись AWS) вы можете позволить своим моделям работать на 16-ядерной машине 64 ГБ всего за 0,7 доллара в час . Теперь вы действительно сможете сосредоточиться на методологии (настоящий секрет топовых каглеров).

Вы можете запускать свои модели на 16-ядерном компьютере с объемом памяти 64 ГБ всего за 70 центов в час.

Так что пристегните ремень безопасности, ваш скрипт python будет запущен на машине EC2, прежде чем вы сможете сказать «Что?».

Примечание. Некоторые организации онлайн-образования предоставляют кредиты AWS education на некоторых своих курсах по науке о данных. Убедитесь, что вы забрали их, если это так.

Хорошо, это не серверы AWS, но они красиво выглядят ... не так ли? Мы здесь не для того, чтобы говорить о типах стоек, а для того, чтобы их использовать. Итак, вы готовы? Пойдем.

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

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

  • Создайте и настройте свою учетную запись. Найдите время, чтобы узнать о преимуществах Уровня бесплатного пользования AWS.
  • Перейдите к инструменту выбора региона и выберите «Орегон». Это сделает перенос наборов данных из Kaggle быстрым и легким. Доступные экземпляры и типы также очень хороши. Если бы вы использовали больше локальных источников данных, было бы разумно выбрать другой регион, в противном случае не беспокойтесь.

  • Перейдите в раздел «Службы» в левом верхнем углу консоли и выберите Вычислить ›EC2.

  • А пока вы найдете сводку своей ситуации с эластичными вычислениями. Нажмите синюю кнопку «Запустить экземпляр».

  • Перейдите в AMI сообщества (образ машины Amazon) и введите «git conda» в поле поиска. AMI - это предварительно сконфигурированные системы, и, поскольку мы делаем это впервые, мы создадим систему, которая поможет нам довольно быстро справиться с выполнением скриптов Python на ML. Вы должны были получить один результат, как показано ниже. В нем есть python 3.6, anaconda, git и docker. Если нет, проверьте свой регион. Здесь мы не будем использовать докер, но с помощью нескольких строк кода мы должны быть готовы запустить XGB, lightgbm, sklearn…

  • Выберите тип экземпляра. Их много, но мне больше всего нравится m5.4xlarge. С 16 ядрами и 64 ГБ памяти за 0,7 доллара в час это лучшее соотношение производительность / стоимость. Конечно, вам следует выбрать экземпляр, наиболее подходящий для ваших нужд. Цены не указаны на этой странице, поэтому я помещу ссылку здесь для облегчения доступа. Если вы чувствуете себя неуверенно на этом этапе, выберите микро-экземпляр t2, он включен в ваш уровень бесплатного пользования.
  • Нажмите "Обзор и запуск". Убедитесь, что все как вы хотите (здесь не должно быть никаких сюрпризов)
  • Нажмите "Запустить". Ваш экземпляр почти готов. Осталось только сгенерировать пару ключей для безопасного взаимодействия с экземпляром EC2. Появится следующее окно:

  • Выберите «создать новую пару ключей» и введите имя, которое будет присвоено вашему закрытому ключу. Загрузите ключ в папку своего проекта. Он будет использоваться для идентификации вас как владельца экземпляра. Крайне важно, чтобы этот ключ не был найден кем-то злонамеренно, поэтому поместите его в разумное место, чтобы мы могли использовать его позже, но достаточно конкретный, чтобы не потеряться / не украсть (например, ваш рабочий стол). Скрытые папки достаточно хороши для этого, но ваша папка проекта, скорее всего, пока достаточно хороша.
  • Нажмите Запустить экземпляр, а затем Просмотреть экземпляр. Скопируйте его IP-адрес в буфер обмена. Он нам понадобится для подключения к нему. Выберите свой экземпляр и нажмите кнопку «скопировать в буфер обмена», которая появляется при наведении курсора на поле «общедоступный DNS (IPv4)».

На данный момент ваш экземпляр запущен. Нам просто нужно заставить его делать то, что мы хотим!

В этом разделе я дам инструкции для пользователей Windows, поскольку он не основан на UNIX и, следовательно, немного сложнее с точки зрения связи с сервером. Если вы используете MacOS или Linux, все должно быть проще, хотя и тяжелее для командной строки.

Чтобы подключиться к экземпляру, нам нужно использовать SSH, безопасный протокол для связи с компьютером. Подумайте о HTTPS, но в командной строке (ознакомьтесь с этой статьей, чтобы ознакомиться с ними). В любом случае, хотя ваш браузер без проблем обрабатывает https, Windows не оснащена клиентами SSH. Нам понадобится небольшая программа, которую не свергали с престола с момента ее выпуска в 1999 году: PuTTy. Вы можете скачать его здесь. Установите программное обеспечение.

  • Первое, что мы сделаем, это конвертируем файл закрытого ключа из .pem в .ppk, формат, понятный PuTTY. Запустите PuTTYgen и загрузите свой закрытый ключ. (Кнопка «Загрузить» или «Файл»> «Загрузить закрытый ключ»). Убедитесь, что вы выбрали «Все файлы» (*. *), Чтобы просмотреть файл .pem, полученный от Amazon.

  • Используйте парольную фразу, чтобы защитить свой ключ, и сохраните свой закрытый ключ (кнопка "Сохранить закрытый ключ" или "Файл" ›сохранить закрытый ключ). Теперь вы можете удалить файл .pem, так как ваш ключ теперь безопасно хранится в файле .ppk, который будет использовать PuTTY.
  • Запустите PuTTY. Вы попадете в его окно конфигурации. В два простых шага мы будем работать удаленно на нашем экземпляре AWS. Сначала перейдите в пункт меню Подключение ›SSH› Auth и загрузите файл .ppk.

  • Если позже вы столкнетесь с отключениями, вы можете перейти в Подключения и изменить параметр секунд между сообщениями проверки активности.
  • Затем вернитесь к сеансу и введите информацию об экземпляре. В поле Имя хоста введите: ubuntu @ my_instance_ip_address (если вы ранее выбрали не-ubuntu AMI, получите свое имя пользователя на этой странице). Убедитесь, что выбраны порт по умолчанию: 22 и тип подключения: SSH. Важно: Сохраните конфигурацию сеанса, она нам понадобится позже. Здесь я решил назвать его My_new_AWS_instance.

  • Нажмите Открыть. Putty спросит вас, доверяете ли вы удаленному компьютеру, к которому собираетесь подключиться. Скажи да. Затем потребуется несколько секунд для вашей аутентификации, прежде чем дать вам руку в консоли. Теперь вы контролируете свой экземпляр.

Удивительный! Вы дома на своей машине с расширенной AWS. А теперь давайте устроимся поудобнее и установим нужные нам пакеты.

Я выбрал этот AMI, потому что, если вы не занимаетесь нейронными сетями, он наиболее близок к тому, что нам нужно. Anaconda установлена, поэтому добавлять новые пакеты будет проще простого. Запустите conda list, чтобы увидеть все установленные пакеты. Вы найдете несколько знакомых библиотек по науке о данных:

  • numpy, pandas и scipy
  • ipython, jupyter и jupyter lab
  • matplotlib, seaborn и боке
  • scikit-learn и scikit-image
  • nltk
  • networkx
  • sqlite и sqlalchemy

Но королей Kaggle: XGB и LightGBM нет. Давайте установим их и добавим в этот микс, заняв второе место, CatBoost. Выполните следующие команды:

  • conda install -c conda-forge xgboost
  • conda install -c conda-forge lightgbm
  • conda install -c conda-forge catboost

Чтобы соревноваться в Kaggle, нам нужны наборы данных. К счастью, у Kaggle есть отличный API, который позволит нам загружать наши наборы данных в экземпляр EC2 через командную строку. Удачным ходом является то, что он также позволит вам автоматически отправлять прогнозы. Но сначала вам понадобится ключ API от Kaggle, чтобы он мог идентифицировать вас, когда экземпляр EC2 делает запросы.

  • Перейдите в Моя учетная запись на Kaggle.
  • Прокрутите вниз и нажмите создать новый токен API.
  • Сохраните файл kaggle.json в папке вашего проекта. Это ваш ключ API. Как и предыдущий ключ SSH, он должен храниться в секрете.
  • Загрузите и установите WinSCP. Это упростит отправку локальных файлов экземпляру. Не забывайте делать пожертвования, если вам это нравится.
  • Запустите. Если вы сохранили сеанс PuTTY, как я вас просил, вы собираетесь меня поблагодарить. На экране входа в систему нажмите Инструменты ›Импорт сайтов. Выберите сохраненный сеанс, а затем войдите.

  • Теперь у вас есть браузер с локальными и удаленными файлами. найдите json, содержащий ваш ключ kaggle. Щелкните правой кнопкой мыши на правой панели (удаленные папки) и создайте новую папку с именем «.kaggle». Точка делает папку скрытой для повышения безопасности.
  • Нажмите Открыть каталог (ctrl + o) и введите имя только что созданной папки. Загрузите туда kaggle.json (с помощью F5 или перетаскивания).
  • В PuTTY запустите chmod 600 /home/ubuntu/,kaggle/kaggle.json, чтобы зашифровать свой ключ. Теперь он очень надежно хранится. Также запустите pip install kaggle. Теперь вы готовы использовать API. О его командах читайте здесь.
  • Чтобы скачать файлы вашего соревнования, запустите kaggle competitions list, чтобы получить имя вашего соревнования. Выделите его (в Linux эквивалент ctrl + c). Теперь введите kaggle competitions download -c my_competition -f data_file в месте, где вы щелкаете правой кнопкой мыши, вместо того, чтобы вводить название вашего соревнования (эквивалентно ctrl + v), а затем введите имя файла, который вы хотите загрузить.

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

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

Вот почему вы действительно не должны пропускать следующие шаги, иначе счет будет преследовать вас! Так что следуй за мной.

  • Перейдите в Панель управления платежами ›Бюджеты. Установите ежемесячный бюджет. Он уведомит вас, когда ваши расходы достигнут определенного порога.
  • Нет, правда, сделай это. Береженого Бог бережет. Если вы планируете использовать его несколько раз, подумайте о включении CloudWatch и настройке его оповещений о выставлении счетов.
  • Кроме того, скачайте мобильное приложение AWS, чтобы вы могли легко проверять, что работает, откуда угодно.

Я надеюсь, что это позволит вам тратить время на то, что важно: читать статьи, тестировать новые методы и создавать надежные методики. А теперь иди за медалями!