Мы приветствуем решение NVIDIA сделать Run:ai проектом с открытым исходным кодом и работаем над тем, чтобы сделать его первоклассным решением в Lambda Kubernetes Service (LKS).
Lambda, облако для ИИ, поддерживает Run:ai на своей инфраструктуре с 2022 года. Наше видение заключается в том, чтобы упростить внедрение и эксплуатацию возможностей Run:ai через LKS, предоставляя командам больше контроля над тем, как они распределяют и совместно используют ресурсы GPU.
Почему выделение целых GPU приводит к простою мощностей
Разработка ИИ предъявляет разнообразные требования к ресурсам GPU. Сеанс отладки может использовать лишь часть GPU. Оценка модели может запускать множество независимых задач. Распределенное обучение может потребовать много тесно связанных GPU одновременно. И эти потребности меняются по мере того, как проект переходит от идеи к эксперименту и производству.
Выделение целых GPU для небольших задач заставляет исследователей ждать, пока полезные мощности остаются зарезервированными. Та же проблема возникает между командами, когда эксперименты одной группы стоят в очереди за простаивающими ресурсами другой. И то, и другое превращает доступное оборудование в задержки между экспериментами.
Как Run:ai управляет совместным использованием и планированием GPU
Run:ai — это планировщик GPU для Kubernetes. Он добавляет две функции, которых нет в стандартном планировщике Kubernetes: совместное использование GPU, чтобы несколько рабочих нагрузок могли выполняться на одном GPU, и планирование на основе квот, чтобы команды получали гарантированное распределение, но могли занимать простаивающие мощности друг у друга. Результатом является более высокая утилизация GPU в общем кластере без необходимости координировать действия вручную.
На практике это сводится к двум функциям:
- Его фрагменты GPU позволяют рабочим нагрузкам запрашивать и совместно использовать части памяти GPU.
- Его политики планирования позволяют проектам занимать свободные мощности для прерываемых задач и возвращать их, когда другим командам требуется их доля.
Вместе они отвечают на два практических вопроса: какая часть GPU нужна для этого эксперимента и как общий кластер должен реагировать, когда разным командам он нужен в разное время?
Поддержание работоспособности GPU с помощью автоматического восстановления узлов
Совместное использование и вытеснение задач основаны на предположении, что GPU исправен. При работе с оборудованием GPU в больших масштабах это не всегда так. Ускорители выдают ошибки XID, каналы NVLink и PCIe деградируют, строки памяти переназначаются, а порты InfiniBand работают медленнее ожидаемого. Планировщик не может отличить исправный GPU от неисправного, поэтому продолжает отправлять задачи на узел, который их сбрасывает.
Это та часть, за которую отвечает LKS. LKS — это управляемый Kubernetes на GPU от Lambda, и функция автоматического восстановления уже доступна: Lambda отслеживает каждый узел на наличие таких сбоев и представляет каждый из них как стандартное состояние узла Kubernetes. Когда возникает сбой, узел переводится в режим изоляции (cordon), чтобы на него не планировались новые задачи, выполняемая работа переносится (drain), а неисправность либо устраняется автоматически, либо передается напрямую для аппаратного ремонта, и узел возвращается в работу только после повторной проверки. Неисправный GPU становится рутинным событием, а не инцидентом, что позволяет планировщику продолжать распределять задачи без необходимости подачи тикетов.
Run:ai в LKS
Планирование GPU — это уровень, который мы намеренно оставляем открытым. В дальнейшем LKS будет развиваться в сторону библиотеки программного обеспечения для ИИ: планировщики, работающие в Kubernetes, такие как Slurm и Run:ai, будут поставляться как управляемые компоненты, которые Lambda проверяет на совместимость с нашим оборудованием и поддерживает в актуальном состоянии, вместо того чтобы собирать их вручную из Helm-чартов. Run:ai — первоклассная цель для этой библиотеки, и мы работаем с NVIDIA, чтобы достичь этого. Открытый исходный код делает это возможным: он позволяет Lambda упаковывать, тестировать и поддерживать Run:ai как часть LKS, а не просто предоставлять клиентам набор инструкций по интеграции. Мы стремимся к готовой интеграции, где Lambda берет на себя упаковку, проверку и текущие операции.
Как компания, занимающаяся открытыми исследованиями, Lambda ценит возможность изучать, адаптировать и улучшать инструменты, от которых мы зависим. Решение NVIDIA сделать Run:ai проектом с открытым исходным кодом распространяет эту свободу на оркестрацию. Это направление, которое мы видим для инфраструктуры ИИ, и именно к нему мы ведем LKS. Команды сами выбирают, как распределять и совместно использовать свои GPU, в то время как платформа обеспечивает их работоспособность и доступность.
Чтобы узнать больше, прочитайте о Kubernetes на Lambda, изучите нашу документацию или свяжитесь с одним из наших инженеров по машинному обучению (MLE).












