[논문 리뷰] tf.data: A Machine Learning Data Processing Framework
tf.data는 선언적이고 조합 가능한 연산자와 자동 성능 튜닝을 통해 효율적이고 확장 가능한 입력 파이프라인 구축을 가능하게 하는 머신러닝 데이터 처리 프레임워크입니다. 병렬 처리, 파이프라인 처리, 캐싱 및 정적 최적화를 적용하여 ImageNet에서 ResNet50의 학습 수렴 속도를 최대 10.4배 빠르게 하며, 수동 튜닝 없이도 전문가가 최적화한 파이프라인과 동등한 성능을 달성합니다.
Training machine learning models requires feeding input data for models to ingest. Input pipelines for machine learning jobs are often challenging to implement efficiently as they require reading large volumes of data, applying complex transformations, and transferring data to hardware accelerators while overlapping computation and communication to achieve optimal performance. We present tf.data, a framework for building and executing efficient input pipelines for machine learning jobs. The tf.data API provides operators which can be parameterized with user-defined computation, composed, and reused across different machine learning domains. These abstractions allow users to focus on the application logic of data processing, while tf.data's runtime ensures that pipelines run efficiently. We demonstrate that input pipeline performance is critical to the end-to-end training time of state-of-the-art machine learning models. tf.data delivers the high performance required, while avoiding the need for manual tuning of performance knobs. We show that tf.data features, such as parallelism, caching, static optimizations, and non-deterministic execution are essential for high performance. Finally, we characterize machine learning input pipelines for millions of jobs that ran in Google's fleet, showing that input data processing is highly diverse and consumes a significant fraction of job resources. Our analysis motivates future research directions, such as sharing computation across jobs and pushing data projection to the storage layer.
연구 동기 및 목표
- 머신러닝 워크로드에서 비효율적인 데이터 입력 파이프라인으로 인한 성능 저하 문제를 해결합니다.
- 병렬 처리 및 프리패치 버퍼 크기와 같은 성능 중심 파rameter의 수동 튜닝 부담을 줄입니다.
- 비전, NLP 및 강화학습을 포함한 다양한 머신러닝 워크로드에서 고성능 데이터 처리를 가능하게 합니다.
- 다양한 워크로드와 데이터 모odal리티에서 실세계 데이터 파이프라인 행동을 규명하여 향후 최적화 방향을 제시합니다.
- 기존의 머신러닝 프레임워크인 Tensorflow와 PyTorch와 원활하게 통합되는 재사용 가능하고 조합 가능한 API를 제공합니다.
제안 방법
- 상태 없는 데이터셋과 상태 있는 반복자로 구성된 선언적 API를 노출하여 데이터 처리 파이프라인을 정의합니다.
- 파이프라인을 데이터 플로우 그래프로 표현하고, 그래프 재작성 기반 정적 최적화를 적용하여 효율성을 향상시킵니다.
- 성능 예측을 사용하여 내부 파rameter(예: 병렬 처리 수준, 프리패치 버퍼 크기)를 자동으로 튜닝합니다.
- 소프트웨어 파이프라인 처리, 캐싱, 연산자 융합과 같은 핵심 최적화를 지원하여 계산과 데이터 로딩을 겹치게 합니다.
- CPU에 데이터 전처리를 오프로드하고 I/O를 계산과 겹치게 하여 하드웨어 가속기(예: GPU, TPU)와 통합합니다.
- 가벼운 인스트루멘테이션을 사용해 처리 시간과 메모리 사용량을 모니터링하고, 동적 스케일링 결정을 가능하게 합니다.
실험 결과
연구 질문
- RQ1현대 머신러닝 워크로드에서 입력 파이프라인 성능은 종단 간 학습 시간에 어떤 영향을 미치는가?
- RQ2병렬 처리, 프리패치 크기와 같은 파이프라인 파rameter의 자동 튜닝은 전문가가 최적화한 구성과 얼마나 유사한 성능을 달성할 수 있는가?
- RQ3다양한 워크로드와 데이터 모달리티에서 실세계 머신러닝 데이터 파이프라인의 주요 성능 저하 요인은 무엇인가?
- RQ4중복 계산과 자원 사용을 최소화하면서 스케일링된 데이터 처리 워크로드를 어떻게 최적화할 수 있는가?
- RQ5머신러닝 데이터 파이프라인에서 고처리량과 저지연을 달성하기 위해 가장 효과적인 시스템 수준의 추상화와 최적화는 무엇인가?
주요 결과
- 공개 벤치마크에서 입력 파이프라인은 학습 시간의 최대 65%를 차지하며, Google 플릿 전역에서 전체 컴퓨팅 시간의 30%가 데이터 인gest에 소요됩니다.
- tf.data는 병렬 처리와 소프트웨어 파이프라인 처리만으로도 ResNet50의 학습 수렴 시간을 10.4배 단축시킵니다.
- 캐싱 및 정적 그래프 재작성 최적화를 추가로 적용하면 학습 속도가 추가로 2배 향상됩니다.
- tf.data의 자동 튜닝은 수동 구성 없이도 전문가가 최적화한 파이프라인과 동등한 성능을 달성합니다.
- 수백만 개의 실세계 머신러닝 작업은 데이터 처리 패턴에 큰 다양성을 보이며, 유사한 파이프라인 간에 상당한 중복 계산이 발생합니다.
- 이 분석은 향후 연구를 위해 작업 간 계산 공유 및 저장 계층으로 데이터 프로젝션을 이동하여 사전 처리 오버헤드를 줄이는 데 기여합니다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.