Hugging Face와 Dask를 활용한 AI 데이터 처리 확장
Hugging Face와 Dask는 로컬 메모리 한계를 초과하는 방대한 AI 데이터셋을 처리하기 위한 확장 가능한 프레임워크를 제공합니다. Dask의 분산 컴퓨팅 기능과 Hugging Face의 transformers 및 datasets를 결합하면, 모델 추론 및 데이터 필터링과 같은 AI 작업을 노트북의 몇 개 행에서부터 멀티‑GPU 클라우드 클러스터의 수억 행에 이르기까지 확장할 수 있습니다.
Dask를 이용한 분산 데이터 처리
Dask는 아웃‑오브‑코어 컴퓨팅을 지원하여 시스템 메모리에 들어가지 않는 대규모 데이터셋을 관리 가능한 청크로 나누어 처리할 수 있게 합니다. pandas에 익숙한 사용자라면 Dask DataFrame이 유사한 API를 제공하므로 로컬 프로토타이핑에서 대규모 프로덕션으로 전환이 쉬워집니다.
Dask를 AI 데이터 처리에 활용할 때의 주요 장점은 다음과 같습니다:
- 효율적인 로딩: Dask는 Hugging Face 데이터셋의 기본 포맷인 Parquet과 네이티브하게 연동되어 컬럼 기반 필터링 및 압축을 효율적으로 수행합니다.
- 병렬 실행:
map_partitions함수는 사용자가 커스텀 함수(예: 모델 추론)를 더 큰 Dask DataFrame 내 각 pandas DataFrame 파티션에 병렬로 적용할 수 있게 해줍니다. - 분산 쓰기: Dask는 결과를 Parquet 포맷으로 병렬 저장하는 기능을 제공하며, 이는 Hugging Face 데이터셋 레포지토리와 연계할 수 있습니다.
모델 추론 확장: Pandas에서 Dask로
확장성을 보여주기 위해 Hugging Face는 15조 토큰에 달하는 영어 웹 데이터인 FineWeb 데이터셋과 고교육 가치 웹 페이지를 식별하는 FineWeb‑Edu 분류기를 사용했습니다.
Pandas를 이용한 로컬 프로토타이핑
소규모(예: 100행)에서는 pandas를 사용해 FineWeb‑Edu 분류기를 실행할 수 있습니다. GPU가 장착된 M1 Mac에서는 이 과정이 약 10초 정도 소요됩니다. 워크플로는 Hugging Face pipeline을 이용한 텍스트 분류를 포함하며, 하드웨어 디바이스(CUDA, MPS, CPU)는 함수 내부에서 동적으로 선택되어 이후 코드가 분산될 때 호환성을 보장합니다.
2억 1천만 행으로 확장
2억 1천만 행(디스크에 저장된 432 GB 크롤 데이터의 일부) 규모로 확장하면 순차 처리 속도가 급격히 느려집니다. Dask DataFrame으로 전환하고 Hugging Face에서 데이터를 지연 로딩하면 작업이 병렬화됩니다.
이 확장된 워크플로에서는 compute_scores 함수를 map_partitions를 통해 적용합니다. 성능 최적화를 위해 Hugging Face pipeline의 batch_size를 (예: 768) 크게 설정해 GPU 하드웨어를 보다 효율적으로 활용합니다.
클라우드에서 멀티‑GPU 병렬 추론
최대 처리량을 위해 Dask는 클라우드 인프라에 배포될 수 있습니다. 예시에서는 Coiled를 사용해 AWS g5.xlarge 인스턴스(NVIDIA A10 Tensor Core GPU) 100개의 워커 클러스터를 프로비저닝했습니다.
인프라 자동화
Coiled는 여러 핵심 배포 단계를 자동화합니다:
- VM 프로비저닝: GPU가 탑재된 클라우드 VM을 자동으로 생성합니다.
- 환경 설정: NVIDIA 드라이버와 CUDA 런타임 설치를 처리합니다.
- 패키지 동기화: 로컬 Python 패키지와 파일을 클라우드 워커에 동기화해 환경 일관성을 유지합니다.
성능 및 활용도
2억 1천만 행을 처리하는 데 약 5시간이 소요되었습니다. 모니터링 결과 하드웨어가 효율적으로 활용되었으며, GPU 평균 활용도는 100%, 평균 메모리 사용량은 24 GB 중 21.5 GB에 달했습니다.
잠재적인 AI 활용 사례
이 분산 처리 패턴은 텍스트 분류를 넘어 다양한 대규모 AI 작업에 적용될 수 있습니다:
- 유전체 데이터 필터링: 방대한 유전체 데이터셋에서 관심 있는 특정 유전자를 선택합니다.
- 구조화 데이터 추출: LLM을 활용해 비정형 텍스트를 구조화된 데이터셋으로 변환합니다.
- 웹 데이터 정제: Common Crawl에서 수집한 대규모 스크랩 데이터를 정제·필터링합니다.
- 멀티모달 추론: 멀티모달 모델을 사용해 대규모 오디오, 이미지, 비디오 데이터셋을 분석합니다.