Взрыв мультимодальных AI-приложений выявил критические пробелы в традиционной инфраструктуре обработки данных. Когда Spark и Ray Data занимаются декодированием изображений, транскрипцией аудио и извлечением кадров видео, их жесткие архитектуры рушатся. Память непредсказуемо раздувается, циклы GPU простаивают во время I/O-узких мест, а кластеры накапливают огромные неэффективности. Daft представляет собой фундаментальное переосмысление того, как распределенные системы обработки данных должны справляться с гетерогенными вычислительными требованиями.
Чем отличается мультимодальная обработка данных?
Традиционные движки обработки данных создавались для SQL-агрегаций и соединений таблиц. Мультимодальные нагрузки работают в совершенно другом измерении:
Раздувание памяти: JPEG-файл увеличивается в 20 раз после распаковки. Одно 2-часовое видео декодируется в тысячи отдельных кадров, каждый из которых занимает мегабайты. Параллельная обработка должна предусматривать эти взрывы и управлять ими динамически.
Фрагментированные требования к вычислениям: Цепочки обработки требуют одновременного насыщения CPU, GPU и сети. Одна задача включает загрузку, декодирование, ресемплирование, извлечение признаков, нормализацию, инференс и классификацию — операции, нагружающие разные аппаратные компоненты на разных этапах.
Требования к масштабированию: Недавние производственные нагрузки достигли ошеломляющих масштабов: Common Voice 17 содержит 113 800 аудиофайлов; Common Crawl — 10 000 PDF-файлов; ImageNet — 803 580 изображений; Hollywood2 — 1 000 видео. Инфраструктура обработки данных должна масштабироваться по всем этим направлениям без сбоев.
Архитектура потоковой обработки Daft: разрушая узкое место
Daft кардинально перестраивает поток данных через распределенную систему. Его движок потокового выполнения Swordfish рассматривает данные как постоянно движущиеся, а не статические пакеты, лежащие в памяти.
Модель непрерывного потока: Для раздела, содержащего 100 000 изображений, первые 1 000 сразу же передаются в GPU-инференс, в то время как следующий пакет загружается или декодируется. Ни одна промежуточная точка материализации не блокирует конвейер. Система поддерживает постоянное движение на всех этапах обработки.
Интеллектуальное обратное давление: Когда GPU-инференс становится узким местом, операции на входе автоматически замедляются. Такой подход с ограниченной памятью предотвращает runaway-потребление памяти, характерное для конкурирующих систем.
Адаптивное разбиение: Операции с интенсивным использованием памяти, такие как url_download и image_decode, автоматически регулируют размеры пакетов в реальном времени. Система жертвует гранулярным параллелизмом ради предсказуемых накладных расходов по памяти и стабильной пропускной способности.
Распределенная координация через Flotilla: Каждый узел кластера запускает одного рабочего Swordfish, что позволяет масштабировать потоковую модель горизонтально без архитектурных компромиссов. Те же принципы эффективности применимы как при обработке терабайт данных локально, так и при работе с петабайтами по всему кластеру.
Дополнительно, Daft предлагает нативные возможности специально для мультимодальных операций: примитивы кодирования/декодирования/обрезки/изменения размера изображений, слои встраивания текста и изображений, интеграции с LLM, токенизация, операции косинусного сходства, обработка URL и преобразование видео в кадры — все это реализовано как первоклассные выражения, а не внешние функции Python.
Подход Ray Data: компромиссы в универсальности
Ray Data строится на распределенной Python-экосистеме Ray, предоставляя низкоуровневые абстракции. Пользователи составляют операции через map_batches, применяемые к пакетам PyArrow или DataFrame pandas.
В последовательных операциях Ray Data объединяет их в одну задачу — оптимизация, которая плохо работает при мультимодальных нагрузках. Без аккуратной ручной настройки размеров блоков потребление памяти непредсказуемо растет. Пользователи могут материализовать промежуточные результаты в объектном хранилище Ray, обернув логику в классы, но это влечет за собой накладные расходы сериализации и копирования памяти. Поскольку по умолчанию Ray выделяет только 30% доступной системной памяти, становится неизбежным активное использование spilling на диск.
Гибкость обработки данных достигается за счет потерь в предсказуемости и эффективности.
Реальные показатели: цифры
Бенчмарки на одинаковой инфраструктуре (8 экземпляров AWS g6.xlarge, каждый с NVIDIA L4 GPU, 4 vCPU, 16 ГБ памяти, 100 ГБ EBS) показывают яркие различия:
Задача
Daft
Ray Data
Spark
Транскрипция аудио (113 800 файлов)
6м 22с
29м 20с (в 4.6 раза медленнее)
25м 46с (в 4.0 раза медленнее)
Встраивание документов (10 000 PDF)
1м 54с
14м 32с (в 7.6 раз медленнее)
8м 4с (в 4.2 раза медленнее)
Классификация изображений (803 580 изображений)
4м 23с
23м 30с (в 5.4 раза медленнее)
45м 7с (в 10.3 раза медленнее)
Обнаружение объектов в видео (1 000 видео)
11м 46с
25м 54с (в 2.2 раза медленнее)
3ч 36м (в 18.4 раза медленнее)
Daft выполняет аудиопайплайны в 4.6–29 раз быстрее альтернатив. Обработка документов — в 4.2–7.6 раз быстрее. Классификация изображений показывает улучшения в 5.4–10.3 раза. Видеонагрузки демонстрируют наиболее яркую разницу: Daft завершает за 11м 46с, тогда как Spark — за 3ч 36м — разница в 18.4 раза.
Почему такая разница в производительности?
Нативные мультимодальные операции против внешних UDF: Daft реализует декодирование изображений, встраивание признаков и извлечение кадров видео как оптимизированные внутренние выражения. Ray Data вынуждает пользователей писать UDF на Python с вызовами Pillow, NumPy, Hugging Face и других библиотек. Каждая библиотека использует свой формат данных, создавая лишние перемещения данных и накладные расходы сериализации.
Модель потоковой памяти против материализации: Daft асинхронно передает данные из облачного хранилища через CPU в память GPU и обратно в вывод. Ни одно разделение не материализуется полностью во временный буфер. В то время как слияние операций в Ray Data вызывает всплески памяти, если не оптимизировать размеры блоков вручную, а обходные пути добавляют свои штрафы сериализации.
Стратегия насыщения ресурсов: Daft выполняет весь поток обработки внутри одного рабочего Swordfish с единым управлением ресурсами. Загрузки, предварительная обработка CPU, GPU-инференс и выгрузка результатов проходят через один и тот же контекст выполнения, постоянно насыщая CPU, GPU и сеть. Ray Data по умолчанию резервирует отдельные ядра CPU для операций с интенсивным вводом-выводом, оставляя ядра недоиспользованными для вычислений. Для достижения оптимального распределения ресурсов требуется ручная настройка дробных CPU.
Важна надежность и предсказуемость производительности без накладных расходов на настройку
Строите сложные преобразования данных с соединениями, фильтрами и агрегациями
Команды привыкли к DataFrame/SQL-операциям
Ray Data остается ценным, когда:
Необходима глубокая интеграция с экосистемой Ray (Ray Train для распределенного обучения, Ray Serve для сервиса моделей)
Требуется тонкая настройка CPU/GPU для каждой операции, оправдывающая сложность
Валидация в производстве
Масштабное тестирование AI Scale: Тим Романски и его команда классифицировали 23.6 миллиарда веб-документов из Common Crawl (24 триллионов токенов) с помощью Daft, достигая 32 000 запросов в секунду на VM. Его вывод: «Мы протестировали Daft на пределе, и он прошел проверку. Если бы мы пытались сделать это в Spark, потребовалась бы настройка JVM, управление путями классов и обширные отладочные работы. Время выполнения в Daft было значительно короче, а масштабирование от локальной разработки до кластеров — минимальным по архитектуре».
Реконструкция инфраструктуры CloudKitchens: Эта команда перестроила всю свою ML-платформу вокруг «DREAM стека» (Daft, Ray, poetry, Argo, Metaflow). Их инфраструктурная команда выявила ограничения Ray Data при оценке: неполное покрытие DataFrame/ETL и низкая производительность. Они выбрали Daft для дополнения вычислительного слоя Ray, отметив: «Daft заполняет пробелы Ray Data, предоставляя полноценные API DataFrame» и «обеспечил более быстрое выполнение при меньших ресурсных затратах в наших тестах».
Масштабная проверка ByteDance: При оценке классификации изображений на 1.28 миллионах образцов ImageNet инженеры ByteDance отметили, что Daft обеспечивает примерно на 20% более высокую пропускную способность, чем Ray Data. Их технический анализ подчеркнул: «Отличная производительность выполнения и эффективность ресурсов», а также «бесшовная потоковая обработка массивных наборов изображений».
Взгляд в будущее
Ландшафт обработки данных переживает структурные изменения. Мультимодальные нагрузки выявляют архитектурные решения, которые работали для традиционной аналитики, но проваливаются под гетерогенной нагрузкой. Философия дизайна Daft — непрерывный поток, нативные мультимодальные операции, адаптивное управление ресурсами и единая кластерная реализация — это не просто постепенная оптимизация, а новый уровень категории. Организации, обрабатывающие изображения, аудио, документы и видео в масштабах, обнаруживают, что переосмысление архитектуры по этим принципам дает 2–7-кратное повышение производительности без ущерба для надежности и без необходимости глубоких инфраструктурных знаний.
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
Как Daft переосмысливает конвейер данных для мультимодальных нагрузок: Полная архитектура и анализ производительности
Взрыв мультимодальных AI-приложений выявил критические пробелы в традиционной инфраструктуре обработки данных. Когда Spark и Ray Data занимаются декодированием изображений, транскрипцией аудио и извлечением кадров видео, их жесткие архитектуры рушатся. Память непредсказуемо раздувается, циклы GPU простаивают во время I/O-узких мест, а кластеры накапливают огромные неэффективности. Daft представляет собой фундаментальное переосмысление того, как распределенные системы обработки данных должны справляться с гетерогенными вычислительными требованиями.
Чем отличается мультимодальная обработка данных?
Традиционные движки обработки данных создавались для SQL-агрегаций и соединений таблиц. Мультимодальные нагрузки работают в совершенно другом измерении:
Раздувание памяти: JPEG-файл увеличивается в 20 раз после распаковки. Одно 2-часовое видео декодируется в тысячи отдельных кадров, каждый из которых занимает мегабайты. Параллельная обработка должна предусматривать эти взрывы и управлять ими динамически.
Фрагментированные требования к вычислениям: Цепочки обработки требуют одновременного насыщения CPU, GPU и сети. Одна задача включает загрузку, декодирование, ресемплирование, извлечение признаков, нормализацию, инференс и классификацию — операции, нагружающие разные аппаратные компоненты на разных этапах.
Требования к масштабированию: Недавние производственные нагрузки достигли ошеломляющих масштабов: Common Voice 17 содержит 113 800 аудиофайлов; Common Crawl — 10 000 PDF-файлов; ImageNet — 803 580 изображений; Hollywood2 — 1 000 видео. Инфраструктура обработки данных должна масштабироваться по всем этим направлениям без сбоев.
Архитектура потоковой обработки Daft: разрушая узкое место
Daft кардинально перестраивает поток данных через распределенную систему. Его движок потокового выполнения Swordfish рассматривает данные как постоянно движущиеся, а не статические пакеты, лежащие в памяти.
Модель непрерывного потока: Для раздела, содержащего 100 000 изображений, первые 1 000 сразу же передаются в GPU-инференс, в то время как следующий пакет загружается или декодируется. Ни одна промежуточная точка материализации не блокирует конвейер. Система поддерживает постоянное движение на всех этапах обработки.
Интеллектуальное обратное давление: Когда GPU-инференс становится узким местом, операции на входе автоматически замедляются. Такой подход с ограниченной памятью предотвращает runaway-потребление памяти, характерное для конкурирующих систем.
Адаптивное разбиение: Операции с интенсивным использованием памяти, такие как url_download и image_decode, автоматически регулируют размеры пакетов в реальном времени. Система жертвует гранулярным параллелизмом ради предсказуемых накладных расходов по памяти и стабильной пропускной способности.
Распределенная координация через Flotilla: Каждый узел кластера запускает одного рабочего Swordfish, что позволяет масштабировать потоковую модель горизонтально без архитектурных компромиссов. Те же принципы эффективности применимы как при обработке терабайт данных локально, так и при работе с петабайтами по всему кластеру.
Дополнительно, Daft предлагает нативные возможности специально для мультимодальных операций: примитивы кодирования/декодирования/обрезки/изменения размера изображений, слои встраивания текста и изображений, интеграции с LLM, токенизация, операции косинусного сходства, обработка URL и преобразование видео в кадры — все это реализовано как первоклассные выражения, а не внешние функции Python.
Подход Ray Data: компромиссы в универсальности
Ray Data строится на распределенной Python-экосистеме Ray, предоставляя низкоуровневые абстракции. Пользователи составляют операции через map_batches, применяемые к пакетам PyArrow или DataFrame pandas.
В последовательных операциях Ray Data объединяет их в одну задачу — оптимизация, которая плохо работает при мультимодальных нагрузках. Без аккуратной ручной настройки размеров блоков потребление памяти непредсказуемо растет. Пользователи могут материализовать промежуточные результаты в объектном хранилище Ray, обернув логику в классы, но это влечет за собой накладные расходы сериализации и копирования памяти. Поскольку по умолчанию Ray выделяет только 30% доступной системной памяти, становится неизбежным активное использование spilling на диск.
Гибкость обработки данных достигается за счет потерь в предсказуемости и эффективности.
Реальные показатели: цифры
Бенчмарки на одинаковой инфраструктуре (8 экземпляров AWS g6.xlarge, каждый с NVIDIA L4 GPU, 4 vCPU, 16 ГБ памяти, 100 ГБ EBS) показывают яркие различия:
Daft выполняет аудиопайплайны в 4.6–29 раз быстрее альтернатив. Обработка документов — в 4.2–7.6 раз быстрее. Классификация изображений показывает улучшения в 5.4–10.3 раза. Видеонагрузки демонстрируют наиболее яркую разницу: Daft завершает за 11м 46с, тогда как Spark — за 3ч 36м — разница в 18.4 раза.
Почему такая разница в производительности?
Нативные мультимодальные операции против внешних UDF: Daft реализует декодирование изображений, встраивание признаков и извлечение кадров видео как оптимизированные внутренние выражения. Ray Data вынуждает пользователей писать UDF на Python с вызовами Pillow, NumPy, Hugging Face и других библиотек. Каждая библиотека использует свой формат данных, создавая лишние перемещения данных и накладные расходы сериализации.
Модель потоковой памяти против материализации: Daft асинхронно передает данные из облачного хранилища через CPU в память GPU и обратно в вывод. Ни одно разделение не материализуется полностью во временный буфер. В то время как слияние операций в Ray Data вызывает всплески памяти, если не оптимизировать размеры блоков вручную, а обходные пути добавляют свои штрафы сериализации.
Стратегия насыщения ресурсов: Daft выполняет весь поток обработки внутри одного рабочего Swordfish с единым управлением ресурсами. Загрузки, предварительная обработка CPU, GPU-инференс и выгрузка результатов проходят через один и тот же контекст выполнения, постоянно насыщая CPU, GPU и сеть. Ray Data по умолчанию резервирует отдельные ядра CPU для операций с интенсивным вводом-выводом, оставляя ядра недоиспользованными для вычислений. Для достижения оптимального распределения ресурсов требуется ручная настройка дробных CPU.
Какую систему выбрать для какого сценария?
Daft идеально подходит, когда:
Ray Data остается ценным, когда:
Валидация в производстве
Масштабное тестирование AI Scale: Тим Романски и его команда классифицировали 23.6 миллиарда веб-документов из Common Crawl (24 триллионов токенов) с помощью Daft, достигая 32 000 запросов в секунду на VM. Его вывод: «Мы протестировали Daft на пределе, и он прошел проверку. Если бы мы пытались сделать это в Spark, потребовалась бы настройка JVM, управление путями классов и обширные отладочные работы. Время выполнения в Daft было значительно короче, а масштабирование от локальной разработки до кластеров — минимальным по архитектуре».
Реконструкция инфраструктуры CloudKitchens: Эта команда перестроила всю свою ML-платформу вокруг «DREAM стека» (Daft, Ray, poetry, Argo, Metaflow). Их инфраструктурная команда выявила ограничения Ray Data при оценке: неполное покрытие DataFrame/ETL и низкая производительность. Они выбрали Daft для дополнения вычислительного слоя Ray, отметив: «Daft заполняет пробелы Ray Data, предоставляя полноценные API DataFrame» и «обеспечил более быстрое выполнение при меньших ресурсных затратах в наших тестах».
Масштабная проверка ByteDance: При оценке классификации изображений на 1.28 миллионах образцов ImageNet инженеры ByteDance отметили, что Daft обеспечивает примерно на 20% более высокую пропускную способность, чем Ray Data. Их технический анализ подчеркнул: «Отличная производительность выполнения и эффективность ресурсов», а также «бесшовная потоковая обработка массивных наборов изображений».
Взгляд в будущее
Ландшафт обработки данных переживает структурные изменения. Мультимодальные нагрузки выявляют архитектурные решения, которые работали для традиционной аналитики, но проваливаются под гетерогенной нагрузкой. Философия дизайна Daft — непрерывный поток, нативные мультимодальные операции, адаптивное управление ресурсами и единая кластерная реализация — это не просто постепенная оптимизация, а новый уровень категории. Организации, обрабатывающие изображения, аудио, документы и видео в масштабах, обнаруживают, что переосмысление архитектуры по этим принципам дает 2–7-кратное повышение производительности без ущерба для надежности и без необходимости глубоких инфраструктурных знаний.