Перейти к содержанию
Публикация AiManual

Интеграция Databricks и Hugging Face: ускорение обучения LLM на 40%

Databricks и Hugging Face запустили официальную интеграцию: from_spark создаёт датасеты напрямую из Spark DataFrame. Обработка 16 ГБ ускорилась с 22 до 12 минут

Коротко

Что будет в материале

  1. 01

    Что изменилось: интеграция Databricks и Hugging Face

  2. 02

    Практическая выгода: цифры ускорения и снижение затрат

  3. 03

    Как это работает: технические детали интеграции

  4. 04

    Ограничения и планы развития

В апреле 2026 года Databricks и Hugging Face анонсировали первую официальную интеграцию. Ключевое изменение - функция from_spark, которая позволяет создавать датасеты Hugging Face напрямую из Spark DataFrame. Промежуточная запись в Parquet больше не нужна. Для датасета на 16 ГБ время обработки сократилось с 22 до 12 минут, ускорение превышает 40%.

Для ML-инженеров и data scientist это означает упрощение пайплайна и снижение затрат на подготовку данных. Spark продолжает отвечать за распределённую обработку, Hugging Face - за эффективное хранение и доступ через memory-mapping и кэширование. Связка закрывает разрыв между инженерией данных и обучением моделей.

Что изменилось: интеграция Databricks и Hugging Face

Раньше перенос данных из Spark в Hugging Face требовал двух шагов: записать DataFrame в Parquet на диск, затем загрузить файлы в Dataset. Это двойная работа с диском, лишние задержки и дополнительное место для промежуточных файлов. Новая функция from_spark убирает промежуточный слой. Spark DataFrame конвертируется в Hugging Face Dataset напрямую.

Технически это означает: данные обрабатываются распределённо в Spark, после чего передаются в формате, который Hugging Face умеет читать без полной загрузки в память. Для больших датасетов это критично. Пайплайн становится короче, а вероятность ошибок при передаче файлов снижается.

Интеграция официальная, а не сторонний хак. Обе компании встроили поддержку на уровне библиотек, что гарантирует совместимость и дальнейшее развитие. Это шаг к бесшовной работе между экосистемами Databricks и Hugging Face.

Практическая выгода: цифры ускорения и снижение затрат

Главный бенчмарк из анонса: датасет на 16 ГБ. С промежуточной записью в Parquet обработка занимала 22 минуты. С from_spark - 12 минут. Разница 10 минут, ускорение более 40%. Для единичной задачи это может показаться небольшим выигрышем, но в регулярных пайплайнах с терабайтами данных экономия накапливается.

Снижение затрат происходит за счёт трёх факторов. Первое: меньше операций ввода-вывода, значит меньше времени занимает подготовка данных. Второе: не нужно хранить промежуточные Parquet-файлы, что экономит дисковое пространство. Третье: оптимизации Hugging Face, memory-mapping и кэширование, ускоряют повторные обращения к датасету.

Сравнение подходов: Parquet vs from_spark

Промежуточная запись в Parquet создаёт узкое место. Spark записывает данные на диск, Hugging Face читает их обратно. Это двойное чтение и запись. Для 16 ГБ это 22 минуты. from_spark передаёт данные напрямую, без лишнего цикла записи-чтения.

Memory-mapping позволяет Hugging Face обращаться к данным на диске так, как будто они в памяти. Не нужно загружать весь датасет целиком. Кэширование ускоряет повторные обращения к одним и тем же фрагментам. В сумме это даёт прирост скорости и снижает требования к RAM.

Как это работает: технические детали интеграции

Spark DataFrame обрабатывается распределённо на кластере. Затем from_spark конвертирует результат в формат Hugging Face Dataset. На этом этапе данные могут быть сохранены в формате Arrow, который поддерживает memory-mapping. Это позволяет Hugging Face читать данные напрямую с диска без полной загрузки в память.

Кэширование в Hugging Face работает на уровне файлов и фрагментов. Если датасет используется повторно, повторные обращения идут быстрее. Для обучения LLM с несколькими эпохами это особенно полезно: данные загружаются один раз, затем переиспользуются.

Пример кода: создание датасета из Spark DataFrame

Минимальный сценарий выглядит так:

from pyspark.sql import SparkSession
from datasets import Dataset

spark = SparkSession.builder.getOrCreate()

# Создаём Spark DataFrame
df = spark.read.parquet("s3://bucket/raw_data")

# Конвертируем напрямую в Hugging Face Dataset
dataset = Dataset.from_spark(df)

print(dataset)

Функция from_spark принимает Spark DataFrame и возвращает Hugging Face Dataset. Параметры позволяют управлять разбиением на части и форматом хранения. Нюанс: для очень больших датасетов стоит проверить, как данные распределяются по узлам, чтобы избежать перекосов.

Ограничения и планы развития

На момент анонса интеграция поддерживает пакетную обработку. Потоковая передача данных через Spark Structured Streaming пока не реализована. Это ограничение для сценариев, где данные поступают непрерывно и требуют инкрементального обновления датасета.

В планах - поддержка потоковой передачи. Это откроет сценарии онлайн-обучения и обновления датасетов в реальном времени. Также возможно расширение на другие форматы данных и более глубокая интеграция с каталогами метаданных, включая Databricks Unity Catalog.

Влияние на экосистему открытого ИИ

Databricks и Hugging Face усиливают позиции в открытом ИИ. Databricks получает прямой мост к крупнейшему хабу моделей и датасетов. Hugging Face - доступ к корпоративным данным, которые хранятся в Spark-кластерах. Это снижает барьеры для компаний, которые хотят обучать собственные модели на своих данных.

Для сообщества это означает меньше кода для склейки инструментов и больше времени на саму работу с моделями. Подобные интеграции уже показывали эффект: Databricks вырос до $188 млрд за полтора года, доказывая, что открытые весовые модели конкурентоспособны при меньших затратах. Hugging Face, в свою очередь, ускоряет разработку ML-решений через свои программы и библиотеки.

Связка Spark и Hugging Face закрывает важный этап MLOps - подготовку данных. Раньше этот этап часто был ручным и медленным. Теперь он автоматизируется, что ускоряет цикл от сырых данных до обученной модели.

Заключение: что это значит для вас

Если вы работаете с большими данными и LLM, попробуйте from_spark в своих пайплайнах. Начните с тестового датасета, сравните время обработки с текущим подходом. Для датасетов от 10 ГБ выигрыш будет заметен.

Следите за обновлениями: поддержка потоковой передачи расширит возможности. А пока интеграция уже готова для пакетной обработки. Это практичный инструмент, который сокращает время подготовки данных и упрощает код.

Подписаться на канал