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

SkyPilot активно разрабатывается в Sky Computing Lab Калифорнийского университета в Беркли уже более года. Он используется более чем в 10 организациях для различных сценариев использования, в том числе: обучение моделей на GPU/TPU (3-кратная экономия затрат), настройка распределенных гиперпараметров и пакетные задания биоинформатики на сотнях процессоров. точечные экземпляры (6,5-кратная экономия на регулярной основе).

Как это работает

Учитывая задание и его требования к ресурсам (ЦП/ГП/ТПУ), SkyPilot автоматически определяет, в каких местах (зона/регион/облако) есть вычислительные ресурсы для выполнения задания, а затем отправляет его в самое дешевое для выполнения.

SkyPilot автоматизирует выполнение тяжелой работы в облаке:

  • Надежное предоставление кластера с автоматическим переключением на другой ресурс при возникновении ошибок емкости или квоты.
  • Синхронизируйте пользовательский код и файлы (из локальных или облачных корзин) с кластером.
  • Управление очередями и выполнением заданий

SkyPilot также значительно сокращает растущие счета за облачные услуги, часто более чем в 3 раза:

  • Автоматически находить самую дешевую зону/регион/облако, предлагающую запрашиваемые ресурсы (экономия затрат примерно в 2 раза).
  • Управляемый спот обеспечивает экономию затрат примерно в 3–6 раз за счет использования спотовых инстансов с автоматическим восстановлением после вытеснения.
  • Автостоп автоматически очищает простаивающие кластеры — основной вклад в предотвращение перерасхода облачных ресурсов.

SkyPilot приносит пользу как пользователям мультиоблачных, так и однооблачных систем; читайте дальше, чтобы понять, почему!

Начало работы за 5 минут

Начало работы со SkyPilot занимает менее 5 минут. Сначала установите и проверьте, настроены ли облачные учетные данные (docs):

pip install 'skypilot[aws,gcp,azure]'  # Pick your clouds.
sky check

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

sky launch 'echo Hello, SkyPilot!'
sky launch --gpus V100 'nvidia-smi'

Они запустят виртуальную машину в облаке и выполнят на ней указанные команды.

Вот настоящая обучающая работа по глубокому обучению с использованием HuggingFace Transformers. С помощью SkyPilot пользователи запускают существующий проект, оборачивая его в простой файл YAML (подробнее в Быстром старте):

Обратите внимание, что в строке 2 мы просто указываем accelerators: V100:4 в качестве требований к ресурсам, и нет необходимости указывать, в каком облаке/регионе выполнять задание (тем не менее, этот элемент управления существует).

Запускаем задание в облако:

sky launch huggingface.yaml

Вот и все! Это покажет некоторые выходные данные, содержащие следующую таблицу, при условии, что включены три облака:

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

Мы также можем запустить то же задание на управляемой спотовой ВМ (автоматическое восстановление после вытеснения), сокращая расходы примерно в 3,5 раза:

sky spot launch huggingface.yaml

Вы можете надежно запускать и останавливать кластеры, например, с повторными попытками и автоматической остановкой:

sky launch -t p3.2xlarge --retry-until-up --idle-minutes-to-autostop=5

Помимо CLI, SkyPilot предоставляет программный Python API. Он позволяет разработчикам создавать мультиоблачные приложения с облачно-независимым интерфейсом.

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

Примеры использования SkyPilot в реальных условиях

За последние несколько месяцев мы постепенно развернули SkyPilot для десятков специалистов-практиков и исследователей в области машинного обучения и обработки данных из более чем 10 организаций. Из пользовательских отчетов мы видим, что система действительно решает общие проблемы, с которыми мы сталкивались сами.

Появилось несколько моделей использования, от интерактивной разработки до выполнения множества проектов в разных регионах или облаках и масштабирования:

Обучение машинному обучению и настройка гиперпараметров на GPU и TPU

Ведущие группы машинного обучения в Berkeley AI Research (BAIR) и Stanford используют SkyPilot для проведения обучения машинному обучению в облаке. Обычно пользователи запускают свои существующие проекты машинного обучения без изменения кода (см. Примеры платформы машинного обучения). Надежная подготовка экземпляров графического процессора, постановка множества заданий в очередь в кластере и одновременное выполнение ~100 тестов гиперпараметров — вот основные преимущества, о которых сообщают пользователи. Более того, пользователям нравится, что одно и то же задание, которое выполняется в AWS, может выполняться в GCP/Azure с одним изменением аргумента.

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

Пакетные задания биоинформатики на спотовых инстансах ЦП с экономией средств в 6,5 раз

Ученые из Института биологических исследований Солка использовали SkyPilot для запуска еженедельных повторяющихся пакетных заданий на спотовых инстансах. Эти задания работают с разными частями данных секвенирования и до неприличия параллельны. Используя управляемую точку SkyPilot, ученые Солка запускают свои вычисления на сотнях спотовых инстансов ЦП, сокращая затраты в 6,5 раз по сравнению с использованием инстансов по запросу и значительно сокращая время выполнения задач по сравнению с использованием загруженного локального кластера. Пользователи Salk сообщают, что, абстрагируя облако, SkyPilot позволяет им сосредоточиться на науке, а не на изучении тонкостей облака.

Создание мультиоблачных приложений с помощью SkyPilot

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

Почему мультиоблачность (и мультирегиональность) стала новой нормой?

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

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

Снизить расходы

Использование облака с лучшей ценой на такое же/аналогичное оборудование может автоматически сократить значительные расходы. Возьмем, к примеру, графические процессоры. На момент написания в Azure были самые дешевые экземпляры с графическими процессорами NVIDIA A100, при этом GCP и AWS взимали надбавку в размере 8 % и 20 % соответственно.

Различия в цене существуют и для процессоров. Для последних инстансов общего назначения (с теми же виртуальными ЦП/памятью) различия могут превышать 50 % (см. рисунок выше).

Используйте лучшее в своем классе оборудование

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

  • TPU GCP для высокопроизводительного обучения машинному обучению
  • Inferentia от AWS для экономичного вывода машинного обучения и процессоры Graviton для рабочих нагрузок ЦП.
  • Intel SGX от Azure для конфиденциальных вычислений

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

Увеличить доступность ограниченных ресурсов

Помните пресловутые ошибки Insufficient Capacity? Желаемые облачные экземпляры трудно получить. Инстансы по запросу с высокопроизводительными графическими процессорами, такими как NVIDIA V100 и A100, часто недоступны. Спотовые инстансы с графическими процессорами или с большим количеством ЦП получить практически невозможно. Эмпирически мы наблюдали время ожидания в десятки часов, даже дней, чтобы предоставить такие скудные ресурсы.

Чтобы повысить вероятность успешного получения таких ресурсов, естественным подходом является использование нескольких облаков. (Предположим, что каждое облако имеет 40%-й шанс предоставить ресурсы; использование 3-х облаков увеличивает шанс до 1–0,6³ = 78%.)

Пользователям одного облака также нужны несколько регионов

Интересно, что все перечисленные выше преимущества применимы к нескольким регионам одного облака:

(1) Цены значительно различаются по регионам/зонам. Для обычных GPU/CPU разница в цене по запросу между зонами может достигать 20 % (см. рисунок). Для спотовых экземпляров разница в цене может быть более чем в 3 раза. Проще говоря: пользователи могут сократить расходы, совершая покупки во многих регионах/зонах в облаке.

(2) Предложения по оборудованию/услугам различаются в зависимости от региона использования облака. Например, GCP TPU V3 доступны только в 2 регионах из 35 глобальных регионов.

(3) Более вероятно, что получение скудных ресурсов из многих регионов будет успешным.

Введите SkyPilot

Несмотря на эти преимущества, в Беркли мы на собственном опыте много лет сталкивались со сложностью использования нескольких облаков и регионов. Исследователи в наших лабораториях (AMPLab, RISELab, а теперь и Sky Computing Lab) в значительной степени полагаются на общедоступные облака для запуска проектов в области машинного обучения, науки о данных, систем, баз данных и безопасности. Мы увидели, что использовать одно облако уже сложно, а использование нескольких облаков только усугубляет нагрузку на конечного пользователя.

Чтобы упростить использование нескольких облаков/регионов и сократить расходы, мы создали SkyPilot. Это первый межоблачный брокер, ключевой компонент концепции Sky Computing, которую мы отстаиваем в этом белом документе.

Заглядывая вперед

В ближайшие месяцы мы расскажем больше о системе, подробных примерах использования и советах по началу работы. Чтобы начать использовать SkyPilot, узнайте больше по адресу:

Для вопросов или обсуждений, мы здесь, чтобы помочь! Вы можете связаться с командой разработчиков через GitHub Issues или Slack сообщества. Чтобы следить за последними обновлениями проекта, пожалуйста, подпишитесь на нас в Twitter и подпишитесь на GitHub.

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

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

Написано Zongheng Yang и Ion Stoica. Мы благодарим всю команду — Zhanghao Wu, Wei-Lin Chiang, Michael Luo, Romil Bhardwaj, Woosuk Kwon, Siyuan Zhuang, Mehul Raheja, Isaac Ong, Sumanth Gurram, Edward Zeng, Vincent Liu, Daniel Kang и Scott Shenker. Спасибо Донни Гринбергу, Даниэлю Кангу, Чжанхао Ву и Ромилу Бхардваджу за полезные советы по этому посту.

Обновлено: Ветка объявлений Twitter.