Привет, Хабр!
В данной статье рассмотрим незаслуженно забытую тему децентрализованных облачных вычислений, проведём анализ существующих решений и попробуем ответить на главный вопрос - почему мастодонты AWS / Azure до сих пор остаются единственным production-ready решением для облачных вычислений, не оставляя шансов децентрализованным пулам мощностей?
Определение и область применения
Начнём с области применения. Облачные вычисления применяются для широкого спектра задач:
Работа backend'a и хостинг веб-сайтов, мобильных и десктопных приложений
Обучение и инференс нейронных сетей, проведение computing-heavy вычислений для исследовательских задач в различных областях
Облачный гейминг, рендеринг
И множество других требовательных к вычислительной мощности задач
Вариантов их решения условно два: покупка и содержание собственного сервера, либо обращение к услугам облачных провайдеров. Второй вариант имеет множество плюсов: произвольная локация сервера, набор различных конфигураций, техническая поддержка, гарантии стабильной работы.
Минусы тоже есть: высокая цена, тонкая настройка конфигурации невозможна - можно попасть в промежуток между дешевыми, но недостаточными, и дорогими, но избыточными конфигурациями, самый актуальный - для граждан и бизнеса стран, находящихся под санкциями, вариант зарубежных облачных провайдеров сопряжен с рисками и головной болью с оплатой.
А что же децентрализованные вычисления? Это тот же AWS, только машины расположены не в множестве централизованных серверных в ряде регионов мира, а в домах / гаражах / серверных множества людей по всему земному шару, а каждая машина / кластер будет являться нодой сети блокчейна. Гарантом сделки будет выступать не централизованная корпорация, а смарт контракты, платим не картой, а токенами сети.
Плюсы и минусы этого подхода ниже.
Польза и вред
В децентрализованных вычислениях может принимать участие практически любое устройство: старый компьютер на пентиуме, мобильный телефон, майнинг ферма, любительский GPU кластер, современный домашний ПК. А расположены они могут быть в любом месте с электричеством и интернетом.
Это предоставляет арендаторам вычислительных мощностей феерический выбор конфигураций и локаций - можно арендовать мощности престарелого ПК слесаря дяди Васи, а можно арендовать рендер ферму дядюшки Джона из Северной Америки.
Ограничить вам доступ к вычислениям никакие санкции, ограничения и запреты не смогут - блокчейн живет своей жизнью.
Привлекательна и потенциальная стоимость таких услуг - косты и желаемая маржа частных энтузиастов арендодателей мощностей в разы ниже, чем у корпоративных серверов.
Распределенные системы потенциально могут решить задачу скейлинга мощностей «чем больше – тем быстрее» гораздо эффективнее централизованных провайдеров. Множество различных нод в распределенной сети для подобных задач могут сработать эффективнее реплицированных серверных инстансов, к примеру, в AWS.
Сказка, не правда ли? Но чудес не бывает, поэтому без минусов не обошлось.
У дяди Васи отключили электричество / интернет, и ваши вычисления улетели коту под хвост. Сэкономили? Да. Рады? Маловероятно.
Облачные провайдеры обладают необходимой инфраструктурой для обеспечения бесперебойной работы ваших вычислений, а вот нода из децентрализованной сети - очень вряд ли.
Ваши данные и алгоритмы представляют коммерческую ценность? Дядюшка Джон может оказаться любопытным. Возможно он захочет посмотреть, что же вы крутите на его ноде. И ваши данные / алгоритмы будут скомпрометированы.
К мастодонтам AWS и Azure в этом плане доверия, конечно же, в разы больше.
Посмотрим, что из существующих решений нам сейчас доступно.
Актуальные децентрализованные решения для вычислений и хранения данных
Начнем с периферии.
Вычисления, как правило, берутся не из воздуха, а производятся на основе данных, которые где-то хранятся. Порой эти данные могут иметь очень внушительный размер. Какие есть решения децентрализованного хранения данных?
IPFS (InterPlanetary File System) — технология распределенной файловой системы, основанная на DHT (Distributed Hash Table) и протоколе BitTorrent. Она позволяет объединить файловые системы на различных устройствах в одну, используя контентную адресацию.
Обладает высокой пропускной способностью, хранение бесплатно. Однако удаление файлов не предусмотрено, да и вообще хранение файла в сети кем-то, помимо автора, не гарантированно. Оплата для хостеров не предусмотрена.
Есть альтернативные технологии, хранение в которых не бесплатно.
Например, Sia, Storj, Ethereum Swarm, MadeSAFE.
Чтобы обеспечить надежность хранения, используются различные проверки, например, proof of storage (доказательство принятия файла), proof of retrievability (доказательство, что файл в наличии и может быть извлечен). Пользователь платит за хранение, а хостеры получают награду. Плюсы - хранение файлов гарантированно, их можно удалять, пропускная способность высока, надежность хранения засчёт финансовой мотивации. Минусы - не бесплатно и, как правило, совсем не дешево.
С хранением понятно, а что же вычисления?
Единственный относительно известный и развивающийся сервис, найденный мной - iExec.
Схема работы от авторов представлена на рисунке.
На бумаге все выглядит крайне пристойно: децентрализация, безопасность данных, выбор конфигурации и локации, прозрачность взаимодействия хостер / арендатор. Внутренняя валюта - токен RLC, используемый для оплаты и вознаграждения хостеров.
А что же на деле?
А на деле есть нюанс - для нейросетей и других «обычных» вычислений это решение не подойдет. Только dApps, только Web 3.0. Но сервис вполне рабочий - в пуле есть мощности для аренды, их даже кто-то арендует и что-то с ними делает.
Узкоспециализированная, конечно, но вполне жизнеспособная (и живущая) система.
А где же провайдеры децентрализованных «обычных» вычислений?
Досконально прошерстив гугл могу со всей ответственностью заявить - ready-to-go решений в этой области мной обнаружено не было. Проекты на бумаге, замороженные, концепты и гипотетические проекты есть, но когда они попадут в реальную жизнь и попадут ли - большая загадка.
Заключение
Что мы получаем в сухом остатке?
Распределённый реестр, он же блокчейн, выглядит применимым к задаче облачных вычислений. Децентрализованные облачные вычисления имеют право на существование и точно могут найти своих потребителей, но с текущими проблемами (которые довольно сложно решить) шансы на конец гегемонии AWS и др. облачных решений крайне малы.
Недостаточно спроса (по причине рисков и проблем), недостаточно предложений - ведь их рождает спрос. Не будут же хостеры просто так включать свои машины в сеть вычислений, если в ней никто особенно и не вычисляет. Выстреливших проектов не наблюдается, развития и обсуждения темы - тоже.
С хранением файлов всё несколько более радужно. Инфраструктура есть, решений немало, спрос есть как минимум со стороны dApps - не будет же децентрализованное приложение хранить данные на централизованном файлохранилище.
И не будем забывать - в стезе децентрализованного хранения и обмена файлами есть крайне успешный мастодонт uTorrent :)
От себя добавлю, что мне, как ML ресёрчеру, было бы очень интересно воспользоваться децентрализованной сетью GPU кластеров для обучения нейросетевых моделей, если бы такое решение существовало... Но увы и ах - пока это невозможно.
Будем наблюдать за развитием этой отрасли.
Комментарии (10)
triky99
04.01.2023 21:58+2потому что на децентрализованных пулах нечего считать.
считают или госконторы или универы на грантах - им персоналка дяди джо просто не нужна
drakononov Автор
04.01.2023 22:45Понял ваш посыл, в целом согласен, если говорим о "внушительных" вычислениях - высоконагруженные сервисы, обучение огромных моделей, моделирование сложных физических и биохимических процессов - без огромных денег / грантов / льгот это в принципе трудновыполнимо
А средне-мелкого много чего есть для просчета. Но это лишь укрепляет позицию децентрализованных пулов вычислений в качестве нишевых решений для ограниченного пула задач
Areso
06.01.2023 00:23Если убрать пахнующие скамом web3/dApp/blockchain/smartcontract баззворды, то опции вполне находятся, именно распределенные:
PlayKey / MTS Fog Play / Drova.io и т.п.
Конечно, если вам "ехать". Если "шашечки" - ну, можете сделать своё решение, с куртизанками и баззвордами.
Ну или вот, BOINC / GRIDCOIN https://gridcoin.us/
lair
А с латентностью (и пропускной способностью) вы что будете делать, когда конкретый кастомер нажимает кнопку в приложении в Филадельфии, а у вас соответствующий код "децентрализовано" выполняется в чьем-то гараже в Иркутске?
rzerda
Что будем, что будем… Страдать будем (с).
Автору как ML ресёчреру интересно не распределенными вычислениями воспользоваться, а модельки дёшево тренировать. Теги вон про одни блокчейны и децентрализацию, ни одного про Амдала и скорость света.
lair
Так оно все равно не будет дешево, потому что таскать данные для обучения моделек - недешево (как и память на оконечном устройстве, чтобы оно туда влезло).
drakononov Автор
Про задержки и пропускную способность - солидарен с вами. Инфраструктура и расположение в таких вопросах - решают всё, дяди Васи и сообщества любителей-энтузиастов не подойдут
Вы верно подметили - тягать данные это недешево, а порой и больно с точки зрения времени передачи. В типовых случаях скорость передачи едва ли превысит (хорошо, если вообще достигнет) 100 МБит. Подтянуть датасет ~700 Гб - 17 часов минимум.
это стандартная боль в ML/DL - данные перебрасывать с хоста на хост приходится в любом случае во время сбора / препроцессинга / фильтрации, нужно лишь грамотно строить процессы, чтобы лишний раз ничего никуда не тянуть.
На дистанции в этом вопросе вряд ли будет принципиальная разница между централизованными и децентрализованными провайдерами, что к тем, что к другим большие данные за минуту не отправить. И у обоих хранение влетит в копеечку
lair
А кто вообще подойдет, чтобы это было осмысленно?
Да нет, как раз принципиальная разница есть: у централизованного провайдера можно организовать локализованное хранение данных (лежит в том же датацентре, где и считаем). А у децентрализованного это по определению невозможно.
drakononov Автор
Да, вы правы
Под дистанцией я подразумевал множество циклов сбора данных / обработки / обучения, в каждом новом цикле всё равно их нужно откуда-то куда-то тягать, вероятно это несколько сгладит разницу
lair
Не сгладит, а только усугубит. Когда у вас нормально построенная локализованная архитектура, у вас в каждом новом цикле все накладные расходы остаются в рамках одного датацентра. В децентрализованной же архитектуре вы каждый раз будете лить свои данные на какую-то новую ноду неизвестно где.