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

Первые дела в первую очередь!

Что такое глубокое обучение?

Глубокое обучение - это класс алгоритмов машинного обучения, основанных на структуре и функциях мозга, которые называются искусственными нейронными сетями.

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

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

Что я пытался сделать?

Я присоединился к соревнованию Kaggle, организованному The Nature Conservancy, задача которого заключалась в том, чтобы предсказать 8 классов / категорий / видов рыб.

Итак, было дано определенное количество изображений, помеченных как принадлежащие к этим классам:

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

Сверточные нейронные сети (ConvNets или CNN) - это категория нейронных сетей, которые оказались очень эффективными в таких областях, как распознавание и классификация изображений. ConvNets успешно распознают лица, объекты и дорожные знаки, помимо обеспечения зрения роботов и беспилотных автомобилей.

Беллоу - это пример действия CNN!

Играя в соревновании

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

Кошмар начинается

Я попытался улучшить свою модель глубокого обучения и подумал о ядрах Kaggle (подумайте об этом как о сценарии R или python) и форумах, у меня появились новые идеи, о, это должно быть здорово, но чем больше я погружаюсь в конкуренцию, моя модель становилась слишком сложный и требующий много времени для запуска, я действительно хотел извлечь уроки из этого конкурса и посмотреть, какие результаты я получу от моих текущих моделей, поэтому я принял глупое решение:

«Неважно, сколько времени это займет, я просто оставлю свой скрипт python запущенным до его завершения, пока они не выключат свой ноутбук и не ограничу количество процессов, которые я выполняю, пока скрипт работает. Бег."

да, это я был дураком!

Происходит что-то ужасное, отключение электроэнергии после того, как мой код работал в течение 5 дней (по моим прогнозам, 5-й день будет последним)

Я бросил школу в восторге от мысли, что мой сценарий закончится (снова дурак). Когда я приехал домой, мне сказали об отключении электричества, и я не мог поверить, что (на самом деле это было первое отключение электроэнергии в году), все было потеряно, 5 дней впустую, но, к счастью, я многому научился из этого и Я нашел несколько полезных решений для запуска своего скрипта. Мой наивный подход оставить свой сценарий все эти дни напомнил мне эту цитату:

«Первый принцип заключается в том, что вы не должны дурачить себя - вас легче всего обмануть». - Ричад Фейнман

Для глубокого обучения требуется лучшее оборудование

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

Решение 0: купите новое оборудование

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

Решение 1. Облачная платформа Google

На самом деле Google Cloud было первым решением, так как при регистрации я получил 300 долларов. Благодаря этому я смог создать несколько виртуальных машин (ВМ), установить все зависимости и подготовить их для запуска моего кода.

Решение 2. Amazon Web Services (AWS)

AWS - это невероятное количество отличных облачных сервисов, которые, безусловно, стоит попробовать, но одна вещь, которую мне не нравится в AWS Free Tier по сравнению с другими облачными решениями, такими как Google Cloud и Azure, заключается в том, что они предоставляют вам набор ресурсов, в то время как мне больше подходит для получения бесплатных кредитов и выбора услуг, которые вы хотите попробовать.

Решение 3: Microsoft Azure

Если вы создадите свою бесплатную учетную запись Azure, вы получите бесплатный кредит в размере 200 долларов для изучения сервисов Azure. Мне нравится то, что у них есть виртуальные машины, которые поставляются с графическими процессорами, а в Google Cloud или AWS вам придется попросить их добавить GPU.

Решение 4: концентратор Флойда

Как они говорят: Устраните технические узкие места в глубоком обучении, это не может быть более правдой, я люблю этих ребят, Floydhub предлагает 100 часов бесплатного графического процессора (глубокое обучение лучше на графическом процессоре).

Заключение

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

Полезные ссылки

Призыв к действию!

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

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

Удачного обучения.