Оглавление

Команда PyTorch от Meta* и Lightning AI анонсировали интеграцию фреймворка Monarch в платформу Lightning Studios, что обещает революционизировать процесс распределенного обучения моделей машинного обучения. Новый подход устраняет традиционные барьеры при работе с крупномасштабными GPU-кластерами, предоставляя интерактивную среду разработки прямо из блокнотов.

Проблема итераций в распределенном обучении

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

Интеграция с платформой Lightning AI и приложением Multi-Machine Training (MMT) позволяет пользователям асинхронно планировать крупномасштабные задачи, автоматически обеспечивая и конфигурируя вычислительные среды от множества облачных провайдеров, включая AWS, Google Cloud Platform, Voltage Park, Nebius и Lambda.

Анонс партнерства PyTorch и Lightning AI по распределенному обучению
Источник: www.pytorch.org

Это выглядит как очередная попытка сделать распределенное обучение доступным для всех, но в отличие от предыдущих решений, здесь действительно чувствуется системный подход. Вместо того чтобы просто обернуть сложные технологии в красивый интерфейс, команды работают над фундаментальными изменениями в парадигме разработки — от перезапуска кластеров при каждом изменении до устойчивой среды, которая просто ждет, пока вы вернетесь к работе.

Три ключевые возможности интеграции

Постоянные вычисления и бесшовные итерации

С 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 признана экстремистской и запрещена в РФ