Как стать автором
Обновить
Привет, Хабр! Меня зовут Дмитрий (@pagin), и я специализируюсь на вопросах ускорения и уменьшения свёрточных сетей. Моя основная работа — распознавание автомобилей и классификация транспорта, поэтому я обучаю много небольших CNN и часто пользуюсь облачными сервисами для ML. Раньше я использовал Google Colab и был в меру доволен. Но огорчался каждые 12 часов, когда ноутбук и окружение умирали. Недавно услышал про DataSphere от Yandex. Под катом расскажу про его отличия от Google Colab, опыт запуска обучения, особенности окружения и ценовую политику. Если любишь ресёрчить в ML и хочешь удобное рабочее пространство, то го под кат.
Читать далее
Всего голосов 26: ↑26 и ↓0 +26
Комментарии 17

Комментарии 17

Главный недостаток сферы для меня - только V100 на борту, нет тех же T4. Недавно выбирал лучшее облако для обучений, и лучшим ввариантом оказался пока что сырой, но очень удобный Saturn Cloud, во многом как раз из-за большего разброса видеокарт.

А как в Saturn Cloud остальные моменты? Pricing подпиской? На что больше похож в целом — Colab или DataSphere?

Не увидел комментарий. В сатурне цена за час работы ноутбука (одна т4 сейчас стоит $0.62/ч).

Остальные моменты - после колаба прекрасная вещь. Интерфейс - классический юпитер-лаб на удалённом сервере (гугловский блокнот меня раздражал), видеокарта есть всегда и именно та, что ты взял, а также, что после колаба меня порадовало, в нём нормальная работа с файлами (в колабе 10к изображений с драйва читались около 1.5 часов, когда в сатурне секунд 15:) ).

Из минусов - сыроватость сервиса, бывают падения и необычные ошибки, но всё обычно решается перезапуском сервера.

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

А для каких сценариев обучение используете T4, если не секрет?
Мы думаем, чтобы добавить в ДатаСферу карты поменьше. T4 пока не факт, что получится. Пока думаем в сторону 1/7 карты A100.

Не увидел комментарий. На T4 я обучал YOLOv5m на своих данных, по цене выходит где-то около доллара за обучение, но это на минимальном тарифе, а на больших тарифах дешевле. Может, в сфере будет выгоднее (хотя и тут 70р много меньше стоимости часа работы датасаентиста), но меня в ней сразу отпугнул интерфейс расчёта цены.

Проблема интерфейса в том, что когда ты хочешь арендовать видеокарту, то жмёшь "тарифы", как и на всех других сайтах. И когда ты выбираешь сервер с v100, то видишь цифру в 34тр/мес, а для небольших задач типа пары раз обучить ту же ёлу (не говоря о гораздо меньших сетках) этого слишком много.

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

ау, народ, может кто пробовал уже?

Какая-то слишком радужная статья. У меня не такой позитивный опыт с датасферой.

Во-первых очень часто вылазили ошибки такие: Execute error: Servant g1.1 not allocated: Internal Error. Абсолютно неинформативно - ты ждешь несколько минут пока запустится ячейка, потом раз - и эта ошибка. Причем это не ошибка в коде, потому что через какое-то время все работает на этой же ячейке.

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

Для решения второй проблемы придумана возможность создавать свое окружение при помощи Docker. Пишешь прямо в проекте свой Dockerfile со своими зависимостями, билдишь его и ставишь использовать по умолчанию. Интерфейс очень своеобразный - надо писать код dockerfile прямо в проекте, жать на кнопку Build и молиться что все соберется как надо.

Может не собраться. В таком случае думаете можно отредактировать файл и запустить снова? Нет - редактировать нельзя, надо клонировать конфигурацию (у нее при этом на конце появляется посфикс "- clone") и редактировать-билдить заново.

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

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

То, что при сборке нельзя выбрать на каком виде инстансов будет производится сборка тоже нельзя - только на c1.4. Это особенно доставляет, потому что некоторые пакеты при сборке проверяют конфигурацию системы и не ставят модули для cuda, если не видят в системе GPU. Мне пришлось патчить установщик Deepspeed чтобы отключить эту проверку, а я тот еще питонист, так что это заняло немного дохрена времени.

Кстати, если вы думаете, что сможете при сборке забрать файлы из проекта (в моем случае патченый DeepSpeed), удачи вам с этим - я так и не нашел как это провернуть, пришлось их куда-то выкладывать, откуда можно потом curlом скачивать в процессе сборки образа.

"Что же ты там такое запускал" - недоуменно спросите вы?

А я просто хотел запустить сберовский ruGPT3XL_generation.ipynb.

"Ну и что же в итоге, получилось?"

Да получилось, но сколько времени и нервов я на это потратил - вам лучше не знать

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

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

Круто, что у тебя есть такой опыт. Думаю, радужность, моего отзыва следуют как раз из недостаточно сложной задачи и окружения. Единственной проблемой для меня стал неподдерживаемый SEPARABLECONV2D, который потратил сравнимо меньше моих нервов. Значит, есть причина ещё раз задуматься о применимости DataSphere для больших проектов

Спасибо вам за подробный отзыв, правда очень полезно.

Во-первых очень часто вылазили ошибки такие: Execute error: Servant g1.1 not allocated: Internal Error.

Работаем с этим, боль постепенно решается.

Во-вторых, непросто поставить дополнительные пакеты или что-то нестандартное.

Дело в том, что Датасфера – не Колаб. Ради версионирования и serverless наша система имеет другие ограничения по сравнению с Колабом. Мы стараемся минимизировать их, но некоторые ограничения неизбежны.

Может не собраться. В таком случае думаете можно отредактировать файл и запустить снова? Нет — редактировать нельзя, надо клонировать конфигурацию (у нее при этом на конце появляется посфикс "- clone") и редактировать-билдить заново.

Мы негативно относимся к mutable сущностям. А вот UI имеет смысл допилить, чтобы выглядело как редактирование in-place.

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

Такого фидбека мы не встречали, изучим. Да и acceptance тесты это не показывают. Попробуем сами массово пособирать образы.

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

Звучит как баг, исследуем.

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

Да, это понятная проблема. Должна решиться с переездом докеров в отдельное хранилище.

То, что при сборке нельзя выбрать на каком виде инстансов будет производится сборка тоже нельзя — только на c1.4. Это особенно доставляет, потому что некоторые пакеты при сборке проверяют конфигурацию системы и не ставят модули для cuda, если не видят в системе GPU.

Интересный фидбек, но разрешать сборку на g1.1 пока не планируем. Но будем за этим наблюдать. В идеале библиотека должна допускать конфигурацию, какие модули устанавливать, какие – нет.

Кстати, если вы думаете, что сможете при сборке забрать файлы из проекта (в моем случае патченый DeepSpeed), удачи вам с этим

Так было в самом начале. Сейчас доступны все данные с диска.

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

пcc, парень, попробуй это

K80 в обычном. T4 и P100 в Pro. 2vCPU @2.2GHz
Ну вообще-то нет, в бесплатной версии можно тоже получить T4/P100 (где-то год назад ещё были P4) — я весной на бесплатном регулярно получал P100. В Pro версии можно ещё получить V100 и запустить среду с большим объемом ОЗУ (в 2 раза больше, чем в обычной сессии), которая также ещё дает 4vCPU вместо 2vCPU.

А вы везунчик! Я ни разу не получал в простом Colab что-то из T4/P100. Так или иначе, для Pro выделение мощных GPU в приоритете и происходит чаще(о чем написано в официальной документации). В любом случае, несколько коробит такая ситуация, когда скорость обучения твоей сети зависит от воли случая. А про 4vCPU не знал, спасибо за замечание!

А вы везунчик! Я ни разу не получал в простом Colab что-то из T4/P100.
Странно, когда я сидел на бесплатном Colab, то мне T4/P4/P100 чуть ли не чаще, чем K80 выпадали. Причем K80 начинали чаще падать ближе к приближению лимита по использованию ресурсов, а после того как «отдохнешь» дня 3, то опять топ карточки падают. Я одно время просто использовал несколько аккаунтов и чередовал их, похоже что Гугл это никак не трекает.

Про приоритет — это да, так и есть. Добавлю, что сейчас ещё на Pro теперь падает либо P100, либо V100, а карты слабее — нет. Но это моё эмпирическое наблюдение, поскольку я с марта сижу на Pro версии и мне ещё ни разу не падало что-то кроме P100/V100.

В любом случае, несколько коробит такая ситуация, когда скорость обучения твоей сети зависит от воли случая.
Ну в какой-то мере согласен, но за $10 в месяц иметь доступ к машине с P100/V100 — это очень хорошее предложение, несмотря даже на все минусы, вроде 24-часового ограничения и возможного «кулдауна», если превысить ресурсные лимиты — а они на Pro весьма большие, я где-то 3-4 дня нон-стоп (ну без учета 24-часовых рестартов, естественно) тренировал сетки и меня не отключали. Если тренируешь часто, то предложение Колаба выглядит более привлекательным, чем у Яндекса, имхо.

Вот бы нахаляву заиметь 4x V100, недельку сетку потренировать, уже задолбался в google colab между 5 аккаунтами перекидывать данные...

Короче взял подписку Google Colab Pro за 10$ в месяц, причем это можно делать и в России, хотя у них написано что вроде нет, вторые сутки без перерыва тренирую сеть которую не тянет моя карта 6 Gb, грант в 2000р. на яндексе сожрал за день.

хорошая статья и прикололо, что из Яндекса тут же в комментах отметились)

народ, а если ползать между Google Colab, Yandex Sphere, SaturnCloud, puzl.ee, etc, то на каком хранилище данных лучше оставлять свои пожитки для долгого хранения?

(в идеале хотелось бы, чтобы внешние данные можно было замаунтить локально, как Google Drive в Google Colab)

Зарегистрируйтесь на Хабре , чтобы оставить комментарий