AWS, Google, Paperspace, обширный.ai и др.

Я хотел выяснить, где мне следует тренировать свои модели глубокого обучения в Интернете с наименьшими затратами и с наименьшими хлопотами. Мне не удалось найти хорошее сравнение поставщиков облачных сервисов на GPU, поэтому я решил сделать свой собственный.

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

В этой статье я не рассматриваю модели обслуживания, но, возможно, в будущем. Следуйте за мной, чтобы не пропустить.

Параметры чипа глубокого обучения

Давайте кратко рассмотрим типы микросхем, доступных для глубокого обучения. Я упрощу основные предложения, сравнив их с автомобилями Ford.

Одни только процессоры очень медленны для глубокого обучения. Вы не хотите их использовать. Они подходят для многих задач машинного обучения, но не для глубокого обучения. ЦП - это лошадь и багги глубокого обучения.

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

Один NVIDIA K80 - это минимум, который вам нужен, чтобы начать глубокое обучение и избежать мучительно медленного обучения. K80 похож на Ford Model A - это совершенно новый способ передвижения.

NVIDIA P4 быстрее, чем K80. Они как Ford Fiesta. Определенно улучшение по сравнению с моделью А. Они не очень распространены.

P100 - это шаг вперед по сравнению с Fiesta. Это довольно быстрый чип. Абсолютно подходит для большинства приложений глубокого обучения.

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

На сегодняшний день самым быстрым графическим процессором NVDIA на рынке является Tesla V100 - никакого отношения к автомобильной компании Tesla. V100 примерно в 3 раза быстрее, чем P100.

V100 похож на Ford Mustang: быстрый. Это лучший вариант, если вы используете PyTorch прямо сейчас.

Если вы находитесь в облаке Google и используете TensorFlow / Keras, вы также можете использовать блоки тензорной обработки - TPU. Для Google Cloud, Google Colab и PaperSpace (на машинах Google Cloud) доступны версии 2 TPU. Они похожи на гоночный автомобиль Ford GT для матричных вычислений.

TPU v3 доступны для общественности только в Google Cloud. TPU v3 - это самые быстрые чипы для глубокого обучения, которые вы можете найти сегодня. Они отлично подходят для обучения моделей глубокого обучения Keras / TensorFlow. Они похожи на реактивный автомобиль.

Если вы хотите ускорить обучение, вы можете добавить несколько графических процессоров или TPU. Однако по мере увеличения количества вы будете платить больше.

Каркасы

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



TensorFlow имеет наибольшую долю рынка. Keras - это устоявшийся высокоуровневый API, также разработанный Google, который работает на TensorFlow и нескольких других фреймворках. PyTorch - это питонический крутой парень, поддерживаемый Facebook. FastAI - это высокоуровневый API для PyTorch, который упрощает обучение моделей мирового класса с помощью нескольких строк кода.

Модели были обучены с помощью PyTorch v1.0 Preview с FastAI 1.0. PyTorch v1.0 Preview и FastAI v1.0 являются передовыми, но позволяют очень быстро делать действительно крутые вещи.

Конкурсанты

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

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

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

Google Colab

Google Colab бесплатен. Это ноутбук Jupyter с приятным пользовательским интерфейсом. Он интегрируется с GitHub и Google Drive. Colab также позволяет соавторам оставлять комментарии в записной книжке.

Colab очень быстро запускается для Keras или TensorFlow, что неудивительно, учитывая, что эти библиотеки с открытым исходным кодом были созданы Google. Pytorch v1.0 Preview требует некоторой настройки и немного глючит. Мне пришлось отключить параллелизм для обучения с FastAI v1, чтобы сэкономить память при использовании Resnet50 с изображениями с приличным разрешением.

ОБНОВЛЕНИЕ 15 января 2019 г. PyTorch находится на V1, а Google Colab увеличил общую память своих контейнеров Docker. Теперь вы можете запустить этот тест с параллелизмом.

У Colab есть как графические процессоры, так и TPU. На момент написания этой статьи вы не можете использовать TPU с PyTorch. Однако поддержка TPU для PyTorch (и, следовательно, FastAI) находится в разработке - инженеры Google сейчас создают прототип - по состоянию на 25 октября 2018 года.

Google Cloud

Google Cloud Compute Engine - более мощный и настраиваемый облачный вариант, чем Colab. Как и AWS, он требует некоторой настройки, разочаровывающее количество увеличений квот и общий счет немного сложнее оценить. В отличие от AWS, интерфейс Google Cloud проще в использовании, легче настраивается, а TPU доступны для проектов TensorFlow / Keras.

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

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

AWS

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



Предлагаемый AWS GPU начального уровня - p2.xlarge - AWS означает NVDIA Tesla K80 с 4 процессорами и 61 оперативной памятью. По состоянию на конец октября 2018 года вы можете сэкономить, установив спотовую цену в размере 0,28 доллара США в час. Хотя существует риск отсутствия доступных экземпляров. Почти каждый раз, когда я пытался получить спотовый экземпляр по цене чуть выше недавней, я получал такой.

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

Бумажное пространство

Очень быстро запустить Jupyter Notebook с градиентом Paperspace. Также легко настроить предварительную версию PyTorch v1.0 с FastAI v1.0.

Paperspace предлагает TPUv2 от Google - это единственная компания, кроме Google, где я видел возможность сдавать их в аренду. Здесь есть хорошая статья об этой функциональности. TPU немного дороже - 6,50 доллара по сравнению с Google Cloud - где вы можете получить вытесняемые TPU V3 менее чем за половину.

На веб-сайте Paperspace указано, что они серьезно относятся к безопасности. У них есть SLA. Квасцы Y-combinator из Нью-Йорка недавно привлекли раунд на 13 миллионов долларов. Paperspace имеет свои собственные серверы и использует серверы других людей. Они законны.

обширный.ai

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

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

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

Vast.ai имеет больше информации о технических характеристиках машин на их панели инструментов, чем я видел от любого другого облачного провайдера. За 0,065 доллара в час я использовал GTX 1070 Ti с ожидаемым временем безотказной работы 99,5%. Это 6,5 центов в час! Установили последнюю версию PyTorch быстро. Я не рекомендую делать ставку на более низкую цену, просто арендуйте по текущей цене, иначе вы потеряете свою машину.

Помимо ограниченных бесплатных опций Kaggle и Google Colab, обширный.ai - это самый дешевый вариант с достойной производительностью.

Другие варианты

Я посмотрел на многие другие варианты GPU. Я не тестировал все сервисы в моем списке известных поставщиков облачных услуг для графических процессоров - потому что многие из них либо было нелегко быстро настроить, либо не было конкурентоспособным по цене.

Если вы изучаете машинное обучение, то вам стоит потратить некоторое время на Kaggle. У него отличное обучающее сообщество с учебными пособиями, конкурсами и множеством наборов данных. Kaggle предоставляет бесплатные графические процессоры K80 с 12 ГБ видеопамяти, 2 ядрами ЦП и 6 ГБ ОЗУ на максимум 12 часов. Я считаю, что сайт тормозит, а их записные книжки не имеют многих ярлыков, которые обычно есть в записных книжках Jupyter.

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

Я пробовал использовать и IBM Watson, и Microsoft Azure. Оба они с треском провалили простой в настройке тест. Я провел по 30 минут с каждым из них, прежде чем решил, что этого достаточно. Жизнь слишком коротка для ненужных сложностей, когда есть хорошие альтернативы. Они также были

Многие сервисы с быстрым развертыванием имеют хорошее обслуживание клиентов и хороший UX, но даже не упоминается безопасность данных или конфиденциальность данных. VectorDash и Salamander быстро развертываются и довольно рентабельны. Crestle развертывается быстрее, но дороже. FloydHub был намного дороже: K80 стоил более 1 доллара в час. Цены на snark.ai недорогие - менее 10 долларов за базовые машины, но я продолжал получать ошибки при запуске, и через два дня помощь в чате не отвечала (хотя они быстро ответили на предыдущий вопрос).

Amazon SageMaker более удобен для пользователя, чем AWS EC2, но по цене не может конкурировать с другими вариантами в этом списке. Он стоит 1,26 доллара за базовую настройку графического процессора K80, такую ​​как p2.xlarge! Для этого также требуется увеличение квоты, что, как я обнаружил, может занять несколько дней.

Каждая облачная компания должна уделять особое внимание вопросам безопасности, SLA и конфиденциальности данных. Google, AWS и PaperSpace делают это, но многие более мелкие новые компании этого не делают.

Эксперименты

Я обучил модель глубокого обучения на популярной задаче классификации изображений кошек и собак, используя FastAI v1.0 в Jupyter Notebook. Этот тест обеспечил значимую разницу во времени между экземплярами облачного провайдера. Я использовал FastAI, потому что он может обучать модели этой задаче с очень хорошей точностью набора проверки (обычно около 99,5%) быстро, с помощью нескольких строк кода.

Я измерил время с помощью волшебной команды %% time. Время стены сравнивалось, потому что это было время вывода Google Colab. Время стены было суммировано для трех операций: обучение с помощью fit_one_cycle, размораживание и повторная подгонка с помощью fit_one_cycle и прогнозирование с увеличением времени тестирования. ResNet50 использовался для трансферного обучения. Обратите внимание, что время начального обучения было взято на второй запуск, так что время загрузки ResNet50 не будет включено в расчет времени. Код, который я использовал для обучения модели, был адаптирован из документации FastAI и доступен здесь.

Полученные результаты

Вот диаграмма, показывающая результаты по экземплярам со спецификациями машин.

Данные и диаграммы доступны в этом блокноте Jupyter на Kaggle. Вот результаты стоимости обучения, отображаемые графически. GCP - это сокращение от Google Cloud Platform.

Google Colab был бесплатным, но медленным. Из тех, что чего-то стоит тренировать. обширный.ai был, безусловно, самым рентабельным.

Я проверял цены на обширный сайт в течение нескольких дней, и машина с аналогичными характеристиками была общедоступной. Однажды я протестировал аналогичную машину, в результате чего стоимость обучения составила 0,01 доллара США по сравнению с 0,008 доллара США для первой машины, поэтому результаты были очень похожими. Если бы спрос на обширный сайт имелся большой скачок без столь же значительного увеличения количества пользовательских хостов, можно было бы ожидать, что цены вырастут.

Давайте построим график зависимости стоимости часа от времени на тренировку.

Левый нижний угол - это то место, где вы хотите быть, оптимизируя затраты и время обучения. обширный.ai, одиночный P100 Google Cloud и одиночный V100 Google Cloud были сильными вариантами.

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

Если вы действительно не хотите тратить деньги, Google Colab K80 справится со своей задачей, но медленно. Опять же, для Colab было невозможно распараллеливание. Предположительно, это будет решено, и его производительность составит около 20 минут, когда появились K80 от Google Cloud и K80 от AWS. Тогда Colab будет лучшим вариантом, но все равно медленным. Как только TPU будет работать с PyTorch, Colab станет еще лучше для пользователей PyTorch.

Paperspace немного дороже, чем другие варианты с точки зрения эффективности, но это уменьшает множество проблем с настройкой. В Paperspace также есть очень, очень простой Стандартный графический процессор от 0,07 доллара в час, но его характеристики настолько минимальны (например, 512 МБ ОЗУ графического процессора), что он не совсем подходит для глубокого обучения. У Google Colab есть гораздо лучший бесплатный вариант.

Варианты, далекие от границы эффективности, были исключены из окончательных диаграмм. Например, показатель AWS p2.8xlarge будет находиться в верхней середине диаграммы «Стоимость в час против времени на обучение»: более 16 минут на обучение и 4,05 доллара в час для спотового экземпляра. Это не очень хорошая цена.

Время, указанное в этом эксперименте, не отражает время подключения по SSH и установки последних версий пакета, если их еще нет в образе. AWS потребовалось время - не менее 10 минут, чтобы запустить Jupyter Notebook, даже после того, как я делал это много раз для этого проекта.

Google Cloud запустился намного быстрее, отчасти потому, что доступен образ с предварительным просмотром PyTorch v1.0 и FastAI V1.0.

На раскрутку у обширного.ai уходит несколько минут, но одним щелчком мыши вы попадаете в онлайн-блокнот Jupyter на обширном сайте. Он очень прост в использовании.

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

Рекомендации

Если вы новичок в этой области и хотите изучить глубокое обучение, я предлагаю вам сначала изучить Python, Numpy, Pandas и Scikit-learn. Мои рекомендации по средствам обучения находятся в этой статье.

Если вы уже опытный программист и знаете, как обрабатывать ошибки в новом коде, я предлагаю вам начать глубокое обучение с FastAI v1.0. Доступны работающие документы.

Google Colab - отличное место для начала, если вы учитесь с Keras / TensorFlow. Это бесплатно. Если Colab начнет предлагать лучшую поддержку PyTorch v1.0, это также может быть хорошим местом для начала, если вы изучаете FastAI или PyTorch.

ОБНОВЛЕНИЕ 15 января 2019 г. PyTorch находится на V1, а Google Colab увеличил общую память своих контейнеров Docker. Согласно встроенным часам FastAI, на обучение и тестирование модели с FastAI 1.0.40.dev0 ушло 20:10. Это экономия времени более чем на 1/3.

Если вы работаете с FastAI или PyTorch v1.0 и не нуждаетесь в конфиденциальности данных, и вы не являетесь профессионалом с Google Cloud или AWS, я предлагаю вам начать с обширного.ai. Его производительность хорошая, он чрезвычайно недорогой и относительно простой в установке. Я написал руководство по использованию обширного.ai с FastAI здесь.

Если вы масштабируете, используйте Google Cloud. Это полный пакет, доступный и безопасный. Сложность пользовательского интерфейса и конфигурации превосходит AWS. Цены на графические процессоры, процессоры и TPU можно легко оценить, и они не меняются в зависимости от спроса. Однако расшифровать плату за хранение и дополнительные услуги бывает сложно. Кроме того, вам нужно будет запросить увеличение квоты, если вы планируете использовать более мощный графический процессор или TPU.

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

Я надеюсь, что эта статья сэкономит вам время 🕐 и деньги 💵 при построении моделей глубокого обучения.

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

Follow me on Medium, если вам нравится анализ данных, машинное обучение и глубокое обучение.