Когда я впервые увидел цифру 131 000 GPU, у меня дернулся глаз. Это не опечатка и не рекламный трюк. OpenAI действительно собирается соединить столько ускорителей в одну вычислительную сеть для обучения моделей следующего поколения. И то, как они это делают, ломает привычные шаблоны сетевой инженерии.
Вместо того чтобы полагаться на динамическую маршрутизацию вроде BGP (которую обожают провайдеры и корпоративные сети), инженеры OpenAI выбрали путь тотального контроля — статический протокол MRC (Massive Resolution Clos). Спойлер: это работает быстрее, но требует адского труда при проектировании.
Ключевой факт: Сеть на 131 000 GPU — это не просто масштабирование, а смена парадигмы. Классические протоколы динамической маршрутизации не справляются с такими объемами и латентностью. MRC — это попытка зашить топологию прямо в железо.
Почему BGP умер для AI-кластеров
BGP — протокол, который держит интернет. Он умеет находить пути, переживать отказы и адаптироваться. Но у BGP есть проблема: он медленный. При сходимости (convergence) после изменения топологии могут пройти секунды. Для LLM-тренировки, где каждый микросекундный джиттер убивает пропускную способность, секунды — это катастрофа.
OpenAI выбрала статическую маршрутизацию. Звучит как шаг назад? Да, но только на первый взгляд. MRC — это протокол, который заранее знает всю топологию кластера. Никаких Hello-пакетов, никакого согласования маршрутов. Коммутаторы просто получают таблицы форвардинга, загруженные из центрального контроллера.
Инженеры OpenAI пожертвовали гибкостью ради двух вещей: предсказуемой латентности и нулевой потери пакетов при нормальной работе. Если вам кажется, что это слишком жестко, вспомните, что обучение GPT-5 (или что там сейчас у них) жрет сотни мегаватт. Каждый потерянный пакет — это миллионы потраченных впустую долларов.
Как устроен MRC: клоз без компромиссов
Архитектура MRC (Massive Resolution Clos) базируется на классическом фат-три, но с изюминкой. Вместо трех уровней коммутации OpenAI использует четыре уровня для 131 000 GPU. Верхний уровень — spine, затем два уровня leaf, и, наконец, ToR (Top of Rack). Каждый GPU подключен через NVSwitch к своему ToR-коммутатору.
Но самое интересное — это способ разметки потоков. MRC использует не IP-адреса, а аппаратные идентификаторы GPU. Маршрутизация происходит на уровне канала передачи данных (Layer 2), но с фиксированными таблицами, которые не меняются без перезагрузки коммутатора.
Звучит как безумие. А если сломается коммутатор? OpenAI предусмотрела это: резервные статические маршруты заранее просчитаны и загружены на соседние устройства. Никаких BGP-пиров — просто аппаратный failover за микросекунду.
Гигабитные тоннели и проблема хопов
При 131 000 GPU каждый GPU должен общаться с каждым. Даже при использовании AllReduce и других коллективных операций, латентность имеет значение. Внутри одного стоечного модуля (с GB200) — до 36 GPU, которые соединены через NVLink. Но между стойками — уже оптика.
OpenAI использует 400G Ethernet (а скоро, говорят, 800G) для соединения spine и leaf. Но из-за четырехуровневой топологии число хопов между двумя GPU может достигать 6-8. Это много. Чтобы снизить задержку, MRC использует технику Underlay Adaptive Routing (UAR) — аппаратная балансировка без участия протокола.
По сути, каждый пакет имеет заранее предписанный путь, выбранный из нескольких вариантов на основе хэша. Но хэш детерминирован и не меняется от пакета к пакету. Это не динамическая маршрутизация — это статическое мультипутевое распределение.
Интересно, что OpenA I отказалась от технологии VLAN и VXLAN. Вместо этого они используют «голый» Ethernet с маппингом GPU-ID напрямую на MAC-адреса коммутаторов. Говорят, это дало прирост производительности в 15% за счет уменьшения накладных расходов на туннелирование.
А что с отказоустойчивостью?
Вопрос, который задают все сетевые инженеры: как MRC переживает падение коммутатора? Ответ — аппаратный dual-homing. Каждый GPU подключен к двум разным ToR-коммутаторам. Если один ToR умирает, трафик автоматически переключается на второй. Никаких BGP-сообщений — просто ECMP на уровне железа.
Но есть подвох: статические таблицы форвардинга не меняются при отказе. Это значит, что коммутатор, который потерял соседа, продолжает слать пакеты в никуда? Нет. OpenA I использует технологию Hardware Resilient Forwarding (HRF) — коммутатор сам детектирует dead link и заменяет исходящий порт в статической таблице на резервный. Это занимает около 1 микросекунды.
Звучит как магия, но на самом деле это реализовано на уровне ASIC Broadcom Jericho2c+, который умеет делать аппаратный редирект без участия CPU. Умные ребята в OpenA I знают, что главный враг — это софт.
Кстати, о софте. Для управления всей этой статической конфигурацией OpenA I написала свой оркестратор на Rust (конечно, на Rust — быстрее и без GC). Он генерирует конфигурации для каждого из тысяч коммутаторов, валидирует их и загружает через gRPC. Перезагрузка всей сети занимает около 10 минут. Если учесть, что они делают это раз в месяц, — терпимо.
Сравнение с альтернативами: InfiniBand и Ethernet
Традиционно для HPC и AI используют InfiniBand. Но OpenA I выбрала Ethernet. Почему? Инсайдеры говорят, что дело в гибкости масштабирования. InfiniBand хорош для N-1, но для 131 000 GPU количество коммутаторов и длина кабелей становится кошмаром. Ethernet проще в развертывании и дешевле.
К тому же, Ethernet позволяет использовать стандартные оптические модули и трансиверы. Нет привязки к одному вендору. OpenA I использует коммутаторы от Mellanox (Nvidia Spectrum-4) и Arista, причем в одной сети. Протокол MRC как раз абстрагируется от вендора — лишь бы ASIC поддерживал статические таблицы и HRF.
Если вам интересно, как объединяют GPU разных вендоров для менее масштабных задач, там свои грабли. Но OpenA I унифицировала все — только NVIDIA GB200, только Ethernet, только MRC.
HPC с точки зрения OpenAI: что они узнали на ошибках других
OpenA I не первая, кто строит сети такого масштаба. Meta (они тогда еще назывались Facebook) строили cluster с 16 000 GPU и использовали динамическую маршрутизацию. Результат — потеря 30% пропускной способности из-за джиттера и пакетной потери. Microsoft тоже обожглись с BGP в кластере для GPT-4.
OpenAI вывод учли: никакой динамики. Только статика. Только аппаратный failover. Инженеры компании признаются, что проектирование топологии заняло полгода. Пришлось вручную оптимизировать расположение GPU в стойках, чтобы минимизировать количество хопов между наиболее часто общающимися парами.
Они разбили кластер на логические домены по 4096 GPU. Внутри домена — полная связность (виртуальная), между доменами — ограниченная. Это снизило требования к spine-слою. По сути, они воссоздали модель суперкомпьютера в стиле IBM Blue Gene, но на современном железе.
Забавный факт: Сеть OpenA I на 131 000 GPU потребляет около 15 МВт только на коммутаторы и оптику. Это больше, чем датацентр среднего размера целиком. Но когда у тебя обучение модели стоит $100 млн, 15 МВт — это мелочь.
Отказ от BGP — тренд или исключение?
Я думаю, что мы увидим больше таких решений. Другие компании — Google, AWS, Anthropic — тоже строят кластеры на десятки тысяч GPU. Даже энтузиасты собирают кластеры дома, но там свои подходы.
MRC OpenA I — это не протокол в классическом понимании, а философия: «железо должно быть тупым, но быстрым». И это работает. Вопрос в цене. Такая сеть требует абсолютной идентичности топологии и отсутствия ошибок в конфигурации. Одна опечатка в таблице маршрутизации — и кластер встанет на часы.
Но OpenA I готова платить эту цену. Потому что каждая секунда простоя из-за динамической маршрутизации стоила бы дороже, чем содержание целой команды инженеров, которые вручную прокладывают статические маршруты для 200 000 портов.
Честно говоря, я восхищаюсь их смелостью. И немного боюсь того момента, когда кабель перегрызет мышка и вся эта красивая статика рухнет. Но, видимо, у них есть резервная копия топологии на бумажке. Шучу. Наверное.
Что будет, когда они перейдут на 1 миллион GPU? Думаю, тогда динамическая маршрутизация снова станет актуальной — но уже с аппаратной поддержкой и временем сходимости в микросекунды. А пока — статика правит бал.