PyTorch и Lightning AI объединяют усилия для упрощения распределенного обучения
Команда PyTorch от Meta* и Lightning AI анонсировали интеграцию фреймворка Monarch в платформу Lightning Studios, что обещает революционизировать процесс распределенного обучения моделей машинного обучения. Новый подход устраняет традиционные барьеры при работе с крупномасштабными GPU-кластерами, предоставляя интерактивную среду разработки прямо из блокнотов.
Проблема итераций в распределенном обучении
Исторически разработка на крупных кластерах сопровождалась длительными циклами итераций — каждый код требовал перераспределения ресурсов, пересборки и повторного развертывания рабочих процессов с нуля. Monarch атакует эти узкие места с помощью специализированного языка для распределенных вычислений, позволяя разработчикам работать непосредственно на кластерах из единого локального тренировочного скрипта.
Интеграция с платформой Lightning AI и приложением Multi-Machine Training (MMT) позволяет пользователям асинхронно планировать крупномасштабные задачи, автоматически обеспечивая и конфигурируя вычислительные среды от множества облачных провайдеров, включая AWS, Google Cloud Platform, Voltage Park, Nebius и Lambda.

Это выглядит как очередная попытка сделать распределенное обучение доступным для всех, но в отличие от предыдущих решений, здесь действительно чувствуется системный подход. Вместо того чтобы просто обернуть сложные технологии в красивый интерфейс, команды работают над фундаментальными изменениями в парадигме разработки — от перезапуска кластеров при каждом изменении до устойчивой среды, которая просто ждет, пока вы вернетесь к работе.
Три ключевые возможности интеграции
Постоянные вычисления и бесшовные итерации
С Monarch вычислительные ресурсы сохраняются даже во время итераций, экспериментов или перерывов. Процессный аллокатор системы отвечает за маршрутизацию сообщений и создание процессных сеток произвольной формы, что отделяет аппаратное обеспечение от пользовательской среды выполнения.
Основная абстракция Monarch начинается с возможности аллокации Process Meshes. После выделения процессов пользователи могут использовать акторную модель Monarch для развертывания инкапсулированных единиц Python-кода. Эти акторы функционируют как серверы, предоставляя конечные точки в качестве примитивов коммуникации.
import asyncio
from monarch.actor import Actor, current_rank, endpoint, proc_mesh
NUM_ACTORS = 4
class ToyActor(Actor):
def __init__(self):
self.rank = current_rank().rank
@endpoint
async def hello_world(self, msg):
print(f"Identity: {self.rank}, {msg=}")
async def create_toy_actors():
local_proc_mesh = proc_mesh(gpus=NUM_ACTORS)
toy_actor = await local_proc_mesh.spawn("toy_actor", ToyActor)
return toy_actor, local_proc_mesh
async def call_all_actors(toy_actor):
await toy_actor.hello_world.call("hey there, from script!!")
Управление кластерами прямо из блокнота
Масштабируйтесь до сотен GPU и оркестрируйте сложные распределенные задачи — все в рамках Studio notebook. Monarch предоставляет мощь кластера буквально под рукой с простотой, характерной для Lightning Studios.
Резервирование кластера через Lightning MMT осуществляется простым определением необходимых GPU, количества узлов и GPU на узел. После этого можно вызывать тренировочные акторы через определенную процессную сетку.
from lightning_sdk import Machine, MMT, Studio
studio = Studio()
NUM_NODES = 16
NUM_GPUS = 8
studio.install_plugin("multi-machine-training")
machine_type = getattr(Machine, f"H100_X_{NUM_GPUS}")
job = MMT.run(
command=process_allocator,
name="Multi-Nodes-Monarch-Titan",
machine=machine_type,
studio=studio,
num_machines=NUM_NODES,
env={
"CUDA_VISIBLE_DEVICES": "0,1,2,3,4,5,6,7",
},
)
Интерактивная отладка в реальном времени
Отлаживайте живые распределенные задачи интерактивно, не прерывая рабочий процесс. Monarch открывает новый уровень контроля и понимания, ускоряя процесс обнаружения и инноваций.
Система поддерживает отладку pdb для Python actor meshes. Можно настроить акторы с использованием встроенных точек останова Python (breakpoint()) для отладки. При запуске программы Monarch отображает таблицу со всеми акторами, остановленными на точках останова, включая детали имени актора, ранга, координат, имени хоста, функции и номера строки.
Технические преимущества
- Сокращение времени итераций: от минут на итерацию до практически нулевого времени ожидания для последовательных запусков
- Автоматическое управление ресурсами: Monarch обрабатывает обмен кодами и файлами между блокнотом и рабочими узлами
- Устойчивость к сбоям: вычислительная среда остается живой даже при завершении или сбое клиентской программы
- Интуитивное программирование: API построен вокруг удаленных акторов с масштабируемым обменом сообщениями
Новый рабочий процесс позволяет разработчикам добавлять забытые операторы печати, изменять конфигурации моделей или даже изменять поток выполнения — все из знакомого интерактивного блокнота и в контексте единого выделения ресурсов.
По сообщению PyTorch, интеграция уже доступна для тестирования и обещает существенно изменить опыт работы с распределенным обучением для сообщества машинного обучения.
*Meta признана экстремистской и запрещена в РФ
