Как в Meta избавились от простоев ИИ-ускорителей: полная перестройка глобального хранилища данных
Meta✴ осуществила полную реорганизацию своей системы хранения для искусственного интеллекта, чтобы исключить простои ускорителей. По данным SDxCentral, инфраструктура, обеспечивающая работу ИИ-процессов, позволила в несколько раз уменьшить время, затрачиваемое исследователями на перемещение обучающих наборов данных между разными регионами. Как следует из опубликованных аналитических материалов, скорость функционирования прежних систем хранения отставала от постоянно растущей производительности GPU, которая удваивалась примерно каждые два года.
Для преодоления этого разрыва и создания условий для работы кластеров хранения, охватывающих все продукты Meta✴, включая Meta✴ AI, Reality Labs, социальные платформы и потребности будущих облачных клиентов, инженеры компании перепроектировали слой хранения BLOB-объектов (Binary Large Object), который функционирует поверх глобальной многопользовательской системы хранения Tectonic, обрабатывающей экзабайты информации.
Загрузка данных на два GPU (Источник изображений: Meta✴)
Компания подчеркнула, что прежняя архитектура BLOB-хранилищ Meta✴ отлично справлялась с задачами веб-приложений, таких как Facebook✴ и Instagram✴, но для обучения ИИ оказалась малопригодной. Она содержала избыточное количество сервисных слоёв и требовала выполнения множества запросов к метаданным на разных уровнях, прежде чем определялся путь к файлу и его фактическое расположение в хранилище, что приводило к росту задержек и снижению производительности.
Прежний алгоритм обработки запросов для API getObject
Модернизация системы хранения данных опиралась на три главных нововведения. Во-первых, разобщённая структура метаданных была преобразована в единую базу, функционирующую на базе ZippyDB, что обеспечило практически мгновенный поиск путей. Во-вторых, были устранены промежуточные слои, мешавшие прямой передаче байтов с серверов хранения (fat client), что увеличило энергоэффективность и сократило задержки. В-третьих, произошёл переход от глобальной модели развёртывания к региональной, при которой хранилище данных располагается вблизи GPU, действительно нуждающихся в них. Эти шаги позволили полностью исключить дополнительные издержки при работе с Tectonic, соблюсти лимиты энергопотребления и упростить архитектуру хранения. Кроме того, Meta✴ задействовала свободную память GPU для организации распределённого кеша «горячих» данных.
Новый алгоритм обработки запросов для API getObject
Разработчики применили опыт, полученный при создании Owl — системы для дистрибуции крупных объектов, объединяющей децентрализованную P2P-плоскость данных с централизованной плоскостью управления. Они внедрили логику однорангового обмена из Owl SDK на стороне клиента, что уменьшило количество обращений GPU к хранилищу. Также был добавлен отдельный кеш метаданных, который возвращает адреса часто востребованных файлов за 1–2 мс. Это позволило успешно справляться с пиковыми нагрузками, например, когда GPU одновременно запрашивают одни и те же «горячие» веса модели, а также улучшить задержку, так как данные извлекаются из памяти, а не с диска.
Эволюция архитектуры загрузки данных
В окончательной версии стека для хранения BLOB-объектов были реализованы меры по устранению проблемных мест, включая всплески исходящего трафика, которые нередко вызывали перегрузки, тайм-ауты и остановку работы GPU. В частности, было внедрено программное обеспечение для динамического регулирования параллельного доступа в зависимости от поведения приложений. При высокой нагрузке система автоматически снижает количество запросов, доступных приложению.
Кроме того, в Meta✴ решили задачу передачи данных исследователям. Поскольку вычислительные ресурсы были распределены по разным регионам, сотрудникам часто приходилось ждать часами, пока наборы данных скопируются и отправятся в нужную часть мира, где выполнялась их задача обучения. Для этого была разработана многоуровневая система кеширования. Оперативная память и SSD на GPU-хостах служат самым быстрым уровнем, получая данные из региональных флеш-хранилищ BLOB-объектов, куда, в свою очередь, информация поступает из глобальных озёр данных на базе HDD.
Для ускорения применяется механизм предвыборки, который заранее загружает данные, планируемые к использованию исследователем. Эта схема уже позволила значительно сократить время загрузки во всех рабочих нагрузках Meta✴. В среднем время загрузки уменьшилось со 150 минут до всего 10 минут (снижение на 93 %). Meta✴ зафиксировала максимальное сокращение времени загрузки с 89 часов до всего 182 минут.
Источник:
- SDxCentral