В прошлом году на выставке Hot Chips 2023 компания Tesla представила свой суперкомпьютер Dojo. Для Tesla машинное обучение ориентировано на беспилотные автомобили. Обучение происходит с использованием видео, что может потребовать большой пропускной способности каналов ввода-вывода. Например, размер одного тензора может составлять 1,7 ГБ для приложений машинного зрения. Компания Tesla обнаружила, что пропускная способность ее суперкомпьютера Dojo может быть ограничена скоростью передачи данных на хост-машины, даже если хост-машины не делают ничего, кроме копирования данных через PCIe.
Tesla решает эту проблему путем добавления дополнительных хостов и дешевого способа подключения этих дополнительных хостов к суперкомпьютеру. Вместо того чтобы использовать типичные для суперкомпьютеров сетевые решения, такие как Infiniband, Tesla решила адаптировать Ethernet к своим потребностям с помощью изменения транспортного уровня. TCP был заменен на Tesla Transport Protocol over Ethernet, или TTPoE. TTPoE разработан как для обеспечения микросекундных задержек, так и для простой аппаратной нагрузки. Уровни нижнего этого слоя остались без изменений, что позволило протоколу работать через стандартные коммутаторы Ethernet.
Протокол TTPoE разработан таким образом, чтобы его работа полностью осуществлялась аппаратно и обеспечивала лучшую задержку по сравнению со стандартным протоколом TCP. Поэтому стейт-машина TTPoE значительно упрощена по сравнению с TCP.
Задержка уменьшается за счет устранения состояний ожидания в TCP. Закрытие соединения в TCP включает в себя отправку FIN
, ожидание подтверждения этого FIN
и ответное подтверждение. После этого соединение переходит в состояние TIME WAIT
, которое требует от реализации подождать некоторое время, позволяя всем неупорядоченным пакетам безопасно пройти, прежде чем новое соединение сможет повторно использовать порт. TTP удаляет состояние TIME_WAIT
и изменяет последовательность закрытия с трех операций передачи на две. Соединение TTP можно закрыть, отправив опкод close
и получив подтверждение этого. Tesla ориентируется на задержки микросекундного масштаба, поэтому даже длительность TIME_WAIT
на уровне миллисекунды может вызвать значительные проблемы.
TCP открывает соединения с помощью "трехстороннее рукопожатие" SYN
, SYN-ACK
, ACK
. TTP применяет аналогичную оптимизацию, как и на завершающем этапе, меняя рукопожатие на двухстороннее. Опять же, открытие соединения с меньшим количеством операций сокращает время ожидания. Эти упрощенные процедуры открытия и закрытия реализованы в аппаратном обеспечении, что также делает их прозрачными для программного обеспечения. Программному обеспечению не нужно явно создавать соединения, а достаточно сообщить аппаратуре, куда она хочет отправить данные или откуда их получить.
Как и TCP, Tesla использует дроп пакетов для контроля перегруженности(congestion control). Но поскольку TTP предназначен для работы через сеть с низкой задержкой, Tesla смогла использовать подход грубой силы для решения проблемы. Традиционная реализация TCP поддерживает скользящее окно перегрузки(sliding congestion window), которое ограничивает количество неподтвержденных данных, которые могут быть отправлены. Вы можете рассматривать это как большой объем трафика, находящегося в движении по сети. Это окно увеличивается, если пакеты подтверждаются быстро, увеличивая пропускную способность. Оно быстро уменьшается, если пакеты дропаются, а подтверждения не поступают в течение определенного времени. Это позволяет TCP изящно обрабатывать множество различных соединений. Пропускная способность будет увеличиваться в домашней локальной сети с низкой задержкой и малыми потерями, и уменьшаться в каналах с высокой задержкой и большими потерями пакетов до вашего интернет-провайдера и далее.
Tesla не собирается использовать TTP на низкокачественных каналах открытого интернета, поэтому для управления перегрузками используется грубая сила. Окно не масштабируется в зависимости от потери пакетов. Аппаратное обеспечение отслеживает отправленные данные в буфере SRAM, который определяет размер окна перегрузки. Отправка прекращается, когда буфер заполняется, а потери пакетов обрабатываются повторной передачей данных, хранящихся в буфере SRAM. Данные удаляются из буфера SRAM, когда соответствующее подтверждение возвращается с другой стороны, естественным образом перемещая скользящее окно вперед.
Tesla обосновала этот подход тем, что традиционные алгоритмы управления перегрузками TCP, такие как Reno, работают на слишком длинном временном интервале, чтобы быть эффективными для их Dojo.
Управление перегрузками осуществляется независимо на каждой конечной точке по модели, знакомой любителям TCP. Tesla сделала это в первую очередь для того, чтобы показать контраст с другими сетями с низкой задержкой, такими как Infiniband, где управление перегрузками осуществляется на уровне коммутатора. Infiniband использует систему кредитов, контролируемую на уровне коммутатора, и не дропает пакеты. Если у конечной точки заканчиваются кредиты, она просто прекращает отправку. Подход TCP и TTP к управлению перегрузками путем простого дропа пакетов устраняет необходимость в отдельной отправке кредитов и снижает сложность сетевых коммутаторов.
Tesla обрабатывает свой протокол TTP в аппаратном блоке, размещенном между чипом и стандартным оборудованием Ethernet. Этот аппаратный блок MAC был разработан архитектором CPU и несет в себе множество особенностей дизайна CPU. Он действует как общий кэш, где арбитр выбирает запросы с учетом рисков упорядочивания.
Пакеты «выбывают» в порядке очередности, когда они были подтверждены, по схеме, напоминающей процессор, который выводит инструкции в порядке очередности из буфера переупорядочивания. Одним из наиболее заметных ресурсов является буфер SRAM для передачи данных объемом 1 МБ, который определяет окно перегрузки, как упоминалось выше. Tesla утверждает, что этот размер достаточен для того, чтобы выдержать около 80 микросекунд сетевой задержки без существенной потери пропускной способности. Если посчитать по закону Литтла, то 1 МБ данных и 80 микросекунд задержки дадут 97,65 Гбит/с. Этого как раз достаточно, чтобы насытить 100-гигабитный сетевой интерфейс.
TPP MAC реализован на устройстве, которое Tesla называет «Dumb-NIC». NIC означает «Network Interface Card». Она называется «dumb», потому что она настолько дешевая и простая, насколько это возможно. Tesla хочет развернуть большое количество узлов для питания своего суперкомпьютера Dojo, и наличие дешевых сетевых карт помогает добиться этого с минимальными затратами.
Помимо TPP MAC, Mojo оснащен хост-чипом с интерфейсом PCIe Gen 3 x16, а также 8 ГБ оперативной памяти DDR4. PCIe Gen 3 и DDR4 не являются передовыми технологиями, но помогают держать стоимость под контролем. Название Mojo происходит от идеи, что дополнительные узлы хоста дают Dojo больше Mojo для поддержания производительности.
Эти карты Mojo устанавливаются на удаленные хост-машины. Когда инженерам требуется дополнительная пропускная способность для передачи данных в суперкомпьютер Dojo, удаленные хост-машины могут быть извлечены из пула. Дополнительная пропускная способность этих машин увеличивается по сравнению с пропускной способностью существующих хост-машин, использующих более дорогой интерфейсный процессор, представленный на прошлогодней конференции Hot Chips.
В целом Mojo и протокол TTPoE представляют собой интересный взгляд на то, как хорошо известный Transmission Control Protocol (TCP) может быть упрощен для использования в более качественной внутрисуперкомпьютерной сети. Хотя теоретически протокол может работать и в Интернете, такие упрощения, как фиксированное окно перегрузки, не будут хорошо работать на низкокачественных линиях связи с интернет-провайдерами и за их пределами.
По сравнению с другими сетевыми решениями для суперкомпьютеров, такими как Infiniband, пользовательский транспортный протокол через Ethernet может обеспечить достаточную дополнительную пропускную способность для удовлетворения потребностей Dojo.
Автор: justwack