HiveD — планировщик для рабочих нагрузок глубокого обучения.
HiveD, являющийся отдельным компонентом Microsoft OpenPAI, предназначен для расширения планировщика Kubernetes для мультитенантных кластеров графических процессоров . Мультитенантный кластер графических процессоров предполагает, что несколько арендаторов (команд) используют один и тот же пул графических процессоров в одном физическом кластере (ПК) и предоставляет некоторые гарантии ресурсов каждому арендатору. HiveD моделирует каждого арендатора как виртуальный кластер (VC), так что один арендатор может использовать свой собственный виртуальный кластер, как будто это частный кластер, а также может использовать свободные ресурсы других виртуальных кластеров с более низким приоритетом.
HiveD предоставляет несколько ключевых функций для рабочих нагрузок глубокого обучения.
Отличительной особенностью HiveD является то, что он обеспечивает гарантию ресурсов для каждого виртуального канала не только с точки зрения количества, числового значения, но и с точки зрения топологии , что является ключевым требованием заданий обучения на основе графических процессоров. Например, традиционный планировщик гарантирует, что виртуальный компьютер может использовать 8 графических процессоров. Однако ему неизвестна топология этих 8 графических процессоров. Вполне возможно, что задание обучения с 8 графическими процессорами, которое должно выполняться на одном узле, не может быть выделено, даже если в его виртуальном канале все еще есть 8 свободных графических процессоров. Это связано с тем, что эти 8 свободных графических процессоров могут принадлежать нескольким узлам.
HiveD защищает ресурсы виртуальных инвесторов с помощью ячейки — определяемого пользователем типа ресурса, который кодирует как количество, так и другие виды информации, такие как топология и тип оборудования. В приведенном выше примере пользователь может определить тип ячейки узла с 8 графическими процессорами, и VC может быть назначена одна из таких ячеек. Затем HiveD будет следить за тем, чтобы для VC всегда был доступен один узел с 8 графическими процессорами , независимо от других рабочих нагрузок в кластере.
HiveD позволяет гибко определять ячейки для детальной гарантии ресурсов. Например, пользователи могут определять ячейки на нескольких уровнях топологии (например, коммутатор PCI-e), для разных моделей устройств (например, графического процессора NVIDIA V100, графического процессора AMD Radeon MI100, Cloud TPU v3) или сетевых конфигураций (например, домена InfiniBand). . VC может иметь различные типы ячеек, и HiveD гарантирует их все.
HiveD оптимизирует производительность группового планирования — типичного требования к планированию заданий обучения глубокому обучению, при котором все контейнеры должны быть выделены до начала задания обучения. Несколько заданий, запланированных группой, конкурирующих за один и тот же набор ресурсов, могут привести к голоду, когда каждое задание получает только частичный ресурс и должно ждать неопределенное время.
HiveD планирует все контейнеры в задании транзакционным способом, т. е. все требования этих контейнеров будут удовлетворены или отклонены в целом, что позволяет избежать частичного выделения ресурсов и их истощения.
HiveD поддерживает несколько приоритетов заданий. Задания с более высоким приоритетом могут вытеснить задания с более низким приоритетом. HiveD также вводит оппортунистические задания , то есть задания с самым низким приоритетом, которые могут использовать свободные ресурсы других венчурных капиталистов, когда это возможно (без нарушения гарантий ресурсов для других венчурных капиталистов).
Мультитенантность: виртуальный кластер (VC)
Детализированная гарантия ресурсов VC: количество, топология, тип, закрепленный ресурс VC и т. д.
Гибкое планирование внутри виртуального канала: понимание топологии, гибкие типы оборудования, закрепленный ресурс виртуального канала, настройка политики планирования и т. д.
Оптимизированная фрагментация ресурсов и меньше голодания
Приоритеты, чрезмерное использование с низким приоритетом и вытеснение между/внутри виртуального канала
Задание (полное/частичное) Планирование банды/упреждение
Отказоустойчивость, обнаружение неисправного оборудования, реконфигурация с сохранением работы
Кластер Kubernetes версии 1.14.2 или выше, в облаке или локально.
Планировщик конфигурации
Планировщик запуска
Отправить рабочую нагрузку в планировщик
Руководство пользователя
Демонстрация функции
Дизайн
DockerHub
FrameworkController: универсальный контроллер подов Kubernetes, который может легко использовать HiveD для планирования заданий.
OpenPAI: комплексное решение для платформы искусственного интеллекта. HiveD станет более удобным для пользователя при работе в тандеме с OpenPAI.
Этот проект приветствует вклад и предложения. Большинство вкладов требуют от вас согласия с Лицензионным соглашением для авторов (CLA), в котором говорится, что вы имеете право и действительно предоставляете нам права на использование вашего вклада. Подробную информацию можно найти на странице https://cla.opensource.microsoft.com.
Когда вы отправляете запрос на включение, бот CLA автоматически определяет, нужно ли вам предоставить CLA, и соответствующим образом оформляет PR (например, проверку статуса, комментарий). Просто следуйте инструкциям бота. Вам нужно будет сделать это только один раз во всех репозиториях, используя наш CLA.
В этом проекте принят Кодекс поведения Microsoft с открытым исходным кодом. Для получения дополнительной информации см. часто задаваемые вопросы о Кодексе поведения или свяжитесь с нами по адресу [email protected], если у вас возникнут дополнительные вопросы или комментарии.
Пожалуйста, цитируйте HiveD в своих публикациях, если это поможет вашему исследованию:
@inproceedings {hived-osdi2020, author = {Hanyu Zhao and Zhenhua Han and Zhi Yang and Quanlu Zhang and Fan Yang and Lidong Zhou and Mao Yang and Francis C.M. Lau and Yuqi Wang and Yifan Xiong and Bin Wang}, title = {{HiveD}: Sharing a {GPU} Cluster for Deep Learning with Guarantees}, booktitle = {14th {USENIX} Symposium on Operating Systems Design and Implementation ({OSDI} 20)}, year = {2020}, isbn = {978-1-939133-19-9}, pages = {515--532}, url = {https://www.usenix.org/conference/osdi20/presentation/zhao-hanyu}, publisher = {{USENIX} Association}, month = nov, }