피드로 돌아가기
Databricks ❤️ Hugging Face: up to 40% faster training and tuning of Large Language Models
Hugging Face BlogHugging Face Blog
AI/ML

Databricks가 Hugging Face Datasets에 from_spark() 함수를 추가해 Spark 데이터프레임을 직접 변환, 16GB 데이터셋 처리 시간 22분에서 12분으로 45% 단축

Databricks ❤️ Hugging Face: up to 40% faster training and tuning of Large Language Models

2023년 4월 26일6intermediate

Context

Spark 데이터프레임의 데이터를 Hugging Face 모델 학습에 사용하려면 먼저 Parquet 파일로 디스크에 기록한 후 다시 로드해야 했다. 이 과정에서 데이터가 중복 저장되고 재실체화되어 불필요한 I/O와 메모리 오버헤드가 발생했다.

Technical Solution

  • Hugging Face Datasets에 Dataset.from_spark() 메서드 구현: Spark 데이터프레임을 직접 Hugging Face Dataset 객체로 변환
  • Parquet 파일 중간 저장 단계 제거: Spark → Hugging Face 간 메모리 기반 직접 매핑
  • Spark의 비용 효율성과 Hugging Face의 메모리 매핑·스마트 캐싱 최적화 기법 조합
  • Delta 테이블 지원: Spark로 로드한 Delta 테이블도 동일하게 변환 가능
  • 향후 스트리밍 지원 계획: Spark 스트리밍을 통한 추가 성능 개선 예정

Impact

  • 16GB 데이터셋 처리 시간: 22분 → 12분 (약 45% 단축)
  • 기존 방식(Parquet 경유): 처리 시간 22분
  • 신규 방식(from_spark 직접 변환): 처리 시간 12분

Key Takeaway

대규모 데이터 변환이 필요한 머신러닝 파이프라인에서 전문화된 분산 처리 엔진(Spark)을 도메인별 모델 라이브러리(Hugging Face)와 직접 통합하면 중간 저장 오버헤드를 제거해 처리 시간과 비용을 동시에 절감할 수 있다.


Apache Spark로 데이터 전처리를 수행하는 머신러닝 팀에서 Dataset.from_spark()를 사용하면 Parquet 저장 및 재로드 단계를 건너뛸 수 있어 처리 시간을 40% 이상 단축할 수 있다.

원문 읽기