Компания Meta* впервые предоставила возможность заглянуть во внутреннее устройство своей инфраструктуры хранения данных, заявив, что система, лежащая в основе ее операций в области искусственного интеллекта (ИИ), помогла сократить время, необходимое исследователям для перемещения данных для обучения ИИ между регионами, до 97 процентов.
Технологический гигант, который, по слухам, готовится присоединиться к числу поставщиков гипермасштабируемых услуг, запуская подразделение облачных вычислений, представил подробный публичный отчет, в котором говорится, что, хотя вычислительная мощность графических процессоров (GPU) удваивалась примерно каждые два года, скорость систем хранения данных не успевала за этим ростом.
,
Стремясь устранить этот разрыв и обеспечить работу кластеров хранения данных, обслуживающих все продукты Meta*, включая Meta* AI, Reality Labs, ее платформы социальных сетей и потребности ее потенциальных клиентов облачных сервисов, инженеры технологического гиганта перестроили свой уровень хранения BLOB (Binary Large Object), который располагается поверх существующей многопользовательской системы хранения данных под названием Tectonic и охватывает экзабайты данных в ее глобальных центрах обработки данных.
Хотя устаревшая архитектура BLOB от Meta* подходила для рабочих нагрузок веб-приложений, таких как Facebook* и Instagram* , она не была ресурсоэффективной при поддержке обучения ИИ. По словам инженеров-программистов Сидхарта Баджаджа и Венкатрагхавана Шринивасана, старая система имела слишком много наложенных сервисных уровней и требовала последовательного поиска метаданных с сохранением состояния через несколько уровней, прежде чем она могла сопоставить путь к файлу с его фактическим местоположением хранения, что увеличивало задержку и снижало производительность.
Перестроенный фундамент хранения данных Meta* сосредоточился на трех основных изменениях. Первое заключалось в объединении фрагментированной системы метаданных в единую унифицированную схему, поддерживаемую базой данных под названием ZippyDB, что позволило осуществлять поиск путей практически мгновенно. Второе изменение заключалось в устранении «прокси-сервера плоскости данных», который был заменен архитектурой «толстого клиента», способной передавать байты напрямую с серверов хранения данных клиентам, что способствовало достижению целей по энергоэффективности и снижению задержек. Третьим и последним шагом стал переход инженеров от модели глобального развертывания к региональной, размещая хранилище рядом с GPU, которые в нем нуждаются.
«С помощью этих изменений мы перестроили основы и достигли цели — не добавлять никаких накладных расходов поверх Tectonic», — говорится в блоге Meta*. «Устранив прокси-сервер данных, мы также остаемся в рамках бюджета по энергопотреблению».
,
Укрощение всплесков и горячих точек
Помимо общего улучшения своего стека хранения данных, чтобы сделать его пригодным для рабочих нагрузок ИИ, инженеры Meta* использовали свободную память GPU в качестве распределенного кэша данных для часто и одновременно запрашиваемых данных.
Команда использовала опыт, полученный при разработке Owl — системы Meta* для распределения больших объектов данных, которая сочетает децентрализованную одноранговую плоскость данных с централизованной плоскостью управления. Изначально созданная для быстрой доставки обновлений приложений или вирусного контента на огромное количество серверов, инженеры применили существующую логику однорангового обмена данными из Owl, внедрив ее в комплект разработки программного обеспечения (SDK) клиента BLOB-хранилища, чтобы весь доступ к данным проходил через этот кэш и уменьшал частоту запросов GPU к хранилищу за конкретными данными.
Наряду с интеграцией Owl, Meta* внедрила отдельный кэш метаданных «read-plan» (план чтения), который возвращает адрес хранения часто запрашиваемых файлов за одну-две миллисекунды.
Технологический гигант заявил, что это сочетание помогает поглощать пиковые нагрузки, например, когда GPU одновременно перезапускаются и запрашивают одни и те же «горячие» веса моделей, а также снижает задержку, поскольку данные подаются напрямую из памяти, а не с диска.
Финальная доработка стека BLOB-хранилища Meta* была сосредоточена исключительно на устранении узких мест, таких как пиковые нагрузки на исходящий трафик, которые вызывали перегрузки и тайм-ауты, что в конечном итоге приводило к остановке GPU. Было внедрено динамическое программное решение для управления параллелизмом, способное настраивать параллелизм на основе сигналов перегрузки на уровне приложений. Вместо того чтобы приложения слепо «забивали» серверы хранения данных запросами, система Meta* автоматически снижает количество запросов, которые приложение может отправлять одновременно при высокой нагрузке.
По словам Баджаджа и Шринивасана, пересмотренный стек BLOB-хранилища Meta* теперь может поддерживать рабочие нагрузки ИИ без остановок GPU, экономя деньги технологического гиганта и обеспечивая прирост производительности.
,
Однако помимо устранения остановок GPU, инженерам Meta* также пришлось решить проблему фактической доставки данных своим исследователям. Поскольку GPU все больше распределялись по регионам, сотрудникам регулярно приходилось часами ждать копирования и приема наборов данных в ту часть мира, где будет выполняться их задача по обучению.
Чтобы решить эту проблему, инженеры снова взялись за работу, создав многоуровневую систему кэширования, слабо смоделированную по тому, как центральный процессор компьютера извлекает данные с диска в более быстрые уровни памяти.
Память и флэш-накопители на хосте GPU служат самым быстрым уровнем, а региональные флэш-массивы BLOB-хранилища выступают в качестве следующего уровня. Требуемые данные поднимаются вверх с помощью механизма «предварительной выборки» (prefetch), который заранее загружает данные, которые исследователь собирается использовать, в более быстрое хранилище, а глобальный массив BLOB-хранилища на базе HDD выступает в качестве «абсолютного источника истины».
Новая парадигма загрузки данных применяется к производственным рабочим нагрузкам уже сегодня и сократила время приема для всех рабочих нагрузок Meta*. Среднее время приема сократилось со 150 минут до всего лишь 10, что составляет падение на 93 процента. На максимальном уровне время приема, которое ранее составляло 89 часов, сократилось до 182 минут, что составляет ошеломляющее снижение на 97 процентов.
«Современные рабочие нагрузки ИИ очень требовательны к данным, и хранение играет важную роль как в вычислительных затратах, так и в скорости инноваций. Узкие места в хранении напрямую влияют на утилизацию GPU и вычислительные затраты, а в мире с геораспределенными GPU время, затрачиваемое на прием данных между регионами, напрямую влияет на скорость итераций в исследованиях», — написали они.
«Архитектура BLOB-хранилища в Meta* была создана для обслуживания семейства приложений Meta*, и нам потребовалось скачкообразное улучшение производительности для поддержки рабочих нагрузок ИИ… Перестроив подсистему метаданных и внедрив многоуровневую архитектуру кэширования с предварительной выборкой/выгрузкой по требованию, мы можем эффективно удовлетворять потребности современных рабочих нагрузок».
Facebook*, Instagram* и WhatsApp* принадлежат компании Meta* Platforms Inc., деятельность которой признана экстремистской и запрещена на территории Российской Федерации.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Ben Wodecki




