Машины для DL

Наблюдения последнего времени.

Вы разворачиваете небольшой Computer Vision проект. Для себя, для заказчика, или ещё для кого.  Вам нужен сервер для обучения. Понятно, что в ходе эксплуатации сервер будет применяться. И для постоянного переобучения. И, возможно, для внедрения. Как его сделать?
Есть пара подходов:

  • Аренда облака – Amazon, Azure, Google
  • Аренда сервера с GPU
  • Сборка своего сервера

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

Облака Амазона, Майкрософта и Гугла безусловно, это самое удобное что только есть для задач машинного обучения. Но стоимость – напрягает. Цены плавают, зависят от местоположения серверов, от тарифов, от используемого сервиса. Проще всего смотреть у Гугла. Одна k80 аренда на полный месяц стоит примерно 20 тысяч рублей. Для p100 – 60.
Для machine learning 1080 примерно сравнима с k80. 1080ti – лучше.

Основной плюс облака – ваша GPU всегда работает. Облака, надежные машины, много машин в облаке, резервируемость, и.т.д.
Ситуаций “сгорела видюха” я даже не слышал.
Облаками пользуются обычно либо крупные фирмы, либо фирмы у которых продукт используется/поставляется по всему миру.
Но использовать облако для экспериментов своей группы – это уже невыгодно. 5 месяцев аренды k80 окупают покупку компа с 1080 ti.

Аренда сервера – ощутимо дешевле. Большая часть серверов бывает с 1080, так что аренда зачастую дешевле раза в 3. Минус-  качество сервера/поддержка. Если честно, ни разу не видел чтобы на арендованных серверах, если возникали проблемы, они решались бы в течении пары часов. Обычно ждать пару дней.
Плюс, в России очень часто сервера работают на видюхах которые использовались для майнинга => часто горят. Обидно 3 дня ловить баг в программе, чтобы понять что это просто видюха погорела при работе в некоторых режимах.
Если честно, то такое я видел часто.

Плюс-какой никакой аутсорс всей инфраструктуры: хранение, доступ, питание, починка.

Сборка своего сервера. Тут есть два пути. Первый – собрать на игровой комплектухе (60-100т.р. на карту в зависимости от производительности сервера и числа видеокарт). Второй – собрать на серверной. Тут минимальная цена за сервер будет где-то 3k usd. Плюс многие комплектующие должны идти под заказ.

Основной плюс серверного варианта – установка в стойки. Но цена аренды объёма в ДЦ не может этого покрыть. Плюс, когда число ваших серверов большое – сильно удобнее обслуживание в стойках. Для ресерч-проекта с числом видюх 2-8, конечно, удобнее и выгоднее – сбор обычных системников.

Итого

Опять же. Всё написанное выше – понятно и банально. Какие выводы?

  1. Если ваш проект приносит неплохую денюжку, планируется рост, а система раскладывается на вычислительные модули – решение от лидеров для вас оптимально. Пишете под  Google|Microsoft|Amazon и смело масштабируетесь
  2. Если у вас ресёрч проект с ограниченны финансированием/в рамках некрупной компании/для ниши которая не требует быстрого масштабирования – собирайте сами. Окупаемость составит 3-4 месяца в сравнении с топовыми компаниями, 5-6 в сравнении с небольшими серверами. При этом учитывайте, что оборудование можно продать после проекта, что значительно уменьшает время окупаемости.
  3. Имеет ли смысл арендовать GPU сервера у частников? Очень редко. Например если у вас распределённая команда и нет офиса, куда раз в пару недель может дойти человек с отвёрткой. Если вам нужно иметь более надёжные схемы питания/интернета, чем предоставит частник. Да и то в этом случае – проще разместить свой сервер в ДЦ по соседству, цены по Москве на установку системника 2-7 тысяч рублей в месяц, в зависимости от уровня надёжности.

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

Про то какие карточки надо использовать k80|Titan Xp|1081080ti|p100 пожалуй писать не буду, в последнее время было очень много статей на эту тему. Скажу лишь что скорее Titan или 1080ti. Любое другое решение надо хорошо обосновать.