Погружение в тонкости бэкенд-систем

Фото: Джейк Стангел (Jake Stangel)
Что впервые привлекло вас в инженерии?
Мне посчастливилось познакомиться с программированием в раннем возрасте, и это стало отправной точкой для изучения других тем. В средней школе друг познакомил меня с особой версией языка программирования BASIC, встроенной в калькуляторы Texas Instruments (мой код, предсказуемо, было невозможно поддерживать из-за ограничения в 27 однобуквенных переменных на программу и интенсивного использования операторов GOTO). Тем не менее, мы создавали простые программы: текстовые игры-бродилки, чат-приложение для связанных кабелем калькуляторов и стандартные помощники для расчета квадратных уравнений.
Позже я писал более сложные программы: визуальный помощник для иллюстрации метода Ньютона и калькулятор орбит для оценки положения планет и их спутников, что привлекло внимание школьного клуба Linux. Вскоре я уже боролся с NDISwrapper, пытаясь запустить беспроводной адаптер CardBus моего ноутбука, и раскрашивал окна своего рабочего стола с помощью Compiz! Такой паттерн познания через код продолжился в старшей школе и за ее пределами, сформировав мой сегодняшний интерес к инженерии.
Что привело вас в OpenAI?
На моей предыдущей работе я перешел с роли бэкенд-разработчика на позицию full-stack специалиста, но быстро понял, что не испытываю симпатии к фронтенду и UX-дизайну. Мне хотелось вернуться к работе ближе к бэкенд-системам, и я скучал по взаимодействию с окружением Linux, которым наслаждался во время учебы. OpenAI предложила именно те переменные в работе, которые я искал, и даже больше: было бы трудно найти место, лучше подходящее моим интересам, чем работа над суперкомпьютерными кластерами OpenAI.
На решении каких проблем вы сосредоточены здесь, в OpenAI?
Исследовательские рабочие процессы в сфере ИИ по своей природе динамичны; исследователи хотят иметь возможность взять препринт с arXiv и протестировать новые подходы, не будучи связанными ограничениями платформы, на которой они запускают свой код. Они также невероятно сложны: исследователи во многом похожи на математиков — они полагаются на интуицию, накопленную за годы карьеры, чтобы разработать решение для любой задачи, которая привлекла их внимание на этой неделе. Тот факт, что эти среды выполнения задействуют одни из крупнейших суперкомпьютеров в мире, добавляет еще один уровень сложности, и работа с этим предпоследним уровнем как раз и входит в зону ответственности моей команды. Мы стараемся предугадать потребности исследователей до того, как они заблокируют прогресс, а если это не удается, мы работаем с исследовательскими командами, чтобы выявлять узкие места и максимально быстро находить обходные пути.

Фото: Джейк Стангел (Jake Stangel)
Чем, по вашему мнению, работа над суперкомпьютерами в OpenAI отличается от работы в других местах?
Масштабы, с которыми мы работаем, честно говоря, поражают воображение. Сторонние производители оборудования регулярно признаются нам, что сталкиваются с проблемами, которых раньше никогда не видели. Часто это происходит просто потому, что в наших инсталляциях в один непрерывный суперкомпьютер объединено больше оборудования, чем у любых других их клиентов, хотя иногда это является следствием наших ожиданий к производительности. Синхронизированный характер большинства подходов к обучению моделей приводит к конфигурации, при которой весь кластер фактически работает со скоростью самого медленного узла.
Наши самые заметные модели обучаются на суперкомпьютерах стоимостью в миллиарды долларов, и в результате нам приходится устранять падения производительности, которые большинство других просто проигнорировало бы. Восхитительно видеть, как изменение в одну строчку попадает в основную ветку ядра с пониманием того, что это сэкономит около 6 дней вычислительного времени нашего парка машин в неделю, или видеть пункт в новом релизе драйвера и понимать, что именно одно из наших открытий привело к исправлению, которое теперь вошло в основной репозиторий.
Как выглядит ваш типичный рабочий день в OpenAI?
Мои дни обычно состоят из смеси работы с кодом, расследования проблем и посещения встреч. Встречи доминируют по вторникам (и, к счастью, обычно только по вторникам), а остальная часть недели делится между отладкой и программированием. Выявленные проблемы обычно превращаются в задачи по кодингу: например, написание проектной документации, отправка быстрого хотфикса в ветку PR или добавление логики пассивной проверки работоспособности, чтобы изолировать сбоящее оборудование от наших кластеров.
Поиск причин неполадок требует небольшой работы детектива. Влияние на исследования варьируется от расплывчатого («моя задача, кажется, работает медленнее, чем вчера») до пугающе конкретного («мне кажется, если я пущу через Ethernet-сетевуху больше 30 Гбит/с, это вызывает панику ядра?»). Вероятно, это знакомая смесь: продуктивная в дни, которые идут по плану, и увлекательная, когда привычный ход вещей нарушается и у вас появляется шанс узнать что-то новое.
«OpenAI дает возможность глубоко погрузиться в аспекты вычислений, которые игнорируются в других местах».
Что заряжает вас энергией каждый день?
Я редко прихожу на работу без четкого понимания того, что нужно сделать, и обычно знаю, какая именно команда, проект и какие исследователи выиграют от своевременного выполнения задачи. OpenAI — это крупнейший работодатель из всех, где я работал, и для моей повседневной мотивации критически важно четко осознавать влияние своей работы. Мне также доставляет удовольствие открывать для себя тонкости систем. OpenAI — не первая компания, где я занимаюсь бэкенд-системами, но в сфере высокопроизводительных вычислений (HPC) я работаю впервые.
Технологии, с которыми мы работаем, часто существуют исключительно из-за требований к производительности, специфичных для данной области. На предыдущих местах работы мне не нужно было беспокоиться о физической топологии нашего оборудования — например, о том, чтобы связь происходила в пределах одного домена NUMA, или о том, чтобы графический процессор использовал расположенное рядом устройство NVME или InfiniBand через GPUDirect от Nvidia, или о том, что системные процессы привязаны к конкретным CPU во избежание конфликтов из-за «шумных соседей» с исследовательскими средами выполнения. OpenAI предоставляет возможность детально изучить аспект вычислений, которым пренебрегают в других местах, и это поддерживает мой интерес к текущей задаче.
Где вы находите вдохновение?
Ничто так не вдохновляет, как наблюдение за тем, как наши исследовательские команды добиваются успехов в улучшении своих моделей. Многие группы настраивают ботов в Slack или простые площадки (playgrounds), где можно взаимодействовать с моделями, находящимися еще в разработке, и тестировать их, позволяя воочию наблюдать за тем, как модели совершенствуются по мере продолжения обучения!
Я также использую популярный эмодзи в Slack — : meow_party:, чтобы отмечать мотивирующий или вдохновляющий контент из наших различных каналов. С момента моего прихода в середине 2020 года у меня накопилось более 400 постов с тегом : meow_party:, то есть в среднем около 4 в неделю!
- Посмотреть вакансии в OpenAI
Автор
Полный текст статьи читайте на OpenAI
