NVIDIA는 데이터 과학자들이 까다로운 워크로드에서 텍스트가 많은 대용량 데이터 세트로 작업할 때 pandas를 계속 사용할 수 있도록 지원하는 통합 메모리 및 텍스트 데이터 처리 기능인 RAPIDS cuDF를 출시했습니다. 이제 데이터 과학자들은 이러한 워크로드를 최대 30배까지 가속화할 수 있습니다.
RAPIDS는 오픈 소스 GPU 가속 데이터 과학 및 AI 라이브러리 모음입니다. cuDF는 데이터 로드, 조인, 집계 및 필터링을 위한 Python GPU DataFrame 라이브러리입니다.
데이터 과학자를 위한 최고의 데이터 처리 라이브러리인 pandas는 유연하고 강력한 Python용 데이터 분석 및 조작 라이브러리이며 지난 한 달 동안 2억 회 이상 다운로드되었습니다. 그러나 데이터 세트의 크기가 커짐에 따라 pandas는 CPU 전용 시스템에서 처리 속도와 효율성에 어려움을 겪고 있습니다. 이로 인해 데이터 사이언티스트는 느린 실행 시간과 다른 도구 사용으로 인한 전환 비용 사이에서 선택해야 했습니다.
NVIDIA는 GTC 2024에서 RAPIDS cuDF가 코드 변경 없이 거의 150배 가까이 pandas를 가속화를 발표했습니다. 그 후 Google은 Google I/O에서 Colab에서 RAPIDS cuDF를 기본으로 제공한다고 발표하여 pandas 코드 가속화에 대한 접근성이 그 어느 때보다 높아졌습니다.
이러한 모멘텀은 매우 고무적이지만, 사용자 피드백은 RAPIDS cuDF pandas 가속을 사용할 수 있는 워크로드의 크기와 유형에 대한 제한에 대한 문제를 강조했습니다. 좀 더 구체적으로 설명하자면:
- 가속을 극대화하려면 데이터 세트가 워크로드의 메모리 요구 사항을 급증시키는 그룹별 및 조인 작업을 위한 충분한 공간과 함께 GPU 메모리 내에 맞아야 합니다. 이러한 요구 사항으로 인해 특히 저메모리 GPU에서 사용자가 가속을 적용할 수 있는 데이터의 양과 pandas 코드의 운영 복잡성이 크게 제한되었습니다.
- 또한 한 열에 최대 21억 개의 문자를 지원하던 cuDF의 초기 릴리스에서는 텍스트가 많은 데이터 세트로 인해 사용자가 처리 제약에 빠르게 직면하게 되었습니다. 표준 고객 로그, 제품 리뷰, 위치 밀도가 높은 데이터 세트의 경우 이 한계에 쉽게 도달할 수 있습니다. 이로 인해 LLM 및 이와 유사한 생성형 AI 사용 사례에서 큰 문자열을 전처리할 때 한계가 발생했습니다.
이러한 피드백을 해결하기 위해 최신 릴리스에는 RAPIDS cuDF pandas 가속기 모드가 포함하였습니다:
- CPU+GPU 시스템의 메모리 활용을 최적화하여 대규모 데이터 세트와 복잡한 워크로드의 속도를 최대 30배까지 높일 수 있는 최적화된 CUDA 통합 메모리 기능이 내장되어 있습니다.
- 열의 21억 문자에서 21억 행의 표 형식 텍스트 데이터로 확장된 문자열 지원으로 LLM 및 기타 까다로운 사용 사례에서 사용되는 텍스트가 많은 데이터의 전처리를 지원합니다.
이번 릴리스를 통해 GPU에서 대용량 데이터 세트와 텍스트가 많은 사용 사례를 효율적으로 가속화할 수 있어 다양하고 까다로운 워크플로우에 더욱 적합한 cuDF를 사용할 수 있습니다.
통합 메모리로 데이터 처리 가속화
코드 변경이 필요 없는 가속화와 원활한 환경을 구현하기 위해 cuDF는 CPU 폴백을 사용합니다. 워크플로우의 메모리 요구 사항이 GPU 메모리를 초과하면 cuDF는 데이터를 CPU 메모리로 전송하고 pandas를 사용하여 데이터를 처리합니다.
조인 및 그룹별 집계와 같은 일반적인 작업은 입력 데이터의 크기보다 메모리를 더 많이 차지하므로, 대규모 데이터 집합을 처리할 때 CPU 폴백을 피하려면 입력 데이터가 GPU 메모리에 상당한 공간을 남겨두어야 합니다.
이 문제를 해결하기 위해 cuDF는 이제 CUDA 통합 메모리를 사용하여 GPU 메모리를 넘어선 pandas 워크로드를 확장할 수 있습니다. 통합 메모리는 시스템의 CPU와 GPU를 아우르는 단일 주소 공간을 제공하고, 사용 가능한 GPU 메모리보다 큰 가상 메모리 할당(오버서브)을 가능하게 하며, 필요에 따라 데이터를 GPU 메모리 안팎으로 마이그레이션(페이징)합니다.
그러나 통합 메모리를 사용하면 데이터가 필요하지만 GPU에 없는 경우 페이지 오류가 반복적으로 발생하여 성능이 저하될 수 있습니다. 성능을 극대화하기 위해 cuDF에는 CUDA 커널이 데이터를 필요로 하기 전에 GPU에 데이터가 상주하도록 하는 최적화가 포함되어 있습니다. 이를 통해 전체 시스템 메모리를 활용하여 GPU 메모리 이상으로 확장하고 가속화된 컴퓨팅의 이점을 계속 활용할 수 있습니다. 최고 가속을 달성하려면 데이터 세트의 크기가 여전히 GPU 메모리에 완전히 맞아야 합니다.
GPU 메모리 외부에서 가속화된 pandas에 대한 벤치마크(그림 1)에서 볼 수 있듯이, 10GB 데이터세트로 데이터 처리 워크로드를 실행할 때 cuDF를 사용하면 CPU 전용 pandas에 비해 16GB 메모리 GPU에서 데이터 조인 속도가 최대 30배까지 빨라졌습니다. 이전에는 4GB보다 큰 데이터세트를 처리할 경우 GPU 메모리 제약으로 인해 성능이 느려졌습니다. 참고: 워크로드가 실행하는 동안 사용하는 최대 GPU 메모리는 입력 데이터 세트 크기를 초과할 수 있습니다.
HW: NVIDIA T4, CPU: 인텔 제온 골드 6130 CPU; SW: pandas v2.2.2, RAPIDS cuDF 24.08
이 벤치마크 결과와 재현 방법에 대한 자세한 내용은 cuDF 벤치마크 가이드를 참조하세요. 이전 DuckDB 벤치마크는 0.5GB 및 5GB에서 실행되었으므로 10GB 벤치마크를 생성하려면 데이터 생성 스크립트 및 데이터 처리 스크립트를 변경해야 합니다.
RAPIDS cuDF로 대규모 표 형식 텍스트 데이터 처리하기
이전 버전에서 cuDF는 텍스트 데이터 열에서 최대 21억 개의 문자를 지원했는데, 이는 일반적인 대규모 데이터 세트에서 결과를 쉽게 초과하는 수준입니다. 제품 리뷰 데이터, 고객 서비스 채팅 로그 또는 상당한 위치 또는 사용자 ID 데이터가 포함된 대규모 데이터 세트를 처리하는 것이 이러한 제한을 쉽게 충족할 수 있는 일반적입니다.
문자열은 CPU 전용 pandas를 사용하면 실행 속도가 느리기 때문에 표 형식의 텍스트 데이터를 대규모로 처리하기 위해 pandas 코드를 사용하는 것은 불가능합니다. 원래 cuDF의 설계상 제한적이지만, 사용자 피드백에 따르면 텍스트가 많은 데이터 세트의 큰 문자열은 가속을 통해 이점을 얻을 수 있습니다.
이제 cuDF는 문자열에서 지원되는 문자 수를 크게 늘림으로써 GPU에서 pandas 코드를 사용해 최대 21억 행의 표 형식 텍스트 데이터를 처리할 수 있습니다. 그 결과로 생성형 AI 파이프라인에서 데이터 준비를 위한 실용적인 도구인 pandas를 사용할 수 있습니다.
시작하기
이 모든 기능은 RAPIDS 24.08에서 사용할 수 있으며, RAPIDS 설치 가이드에서 다운로드할 수 있습니다. 통합 메모리 기능은 Linux 기반 시스템에서만 작동합니다.
- 통합 메모리를 체험하려면 확장된 메모리 기능의 작동 방식을 자세히 설명하는 통합 메모리 데모 노트북을 사용해 보세요.
- 대규모 문자열 전처리 워크플로우를 테스트하려면 작업 게시 데모 노트북을 확인하세요.
관련 리소스
- DLI 강좌: RAPIDS cuDF로 데이터프레임 작업 속도 향상하기
- DLI 과정: 엔드투엔드 데이터 과학 워크플로우 가속화하기
- GTC 세션: RAPIDS cuDF를 사용하여 코드 변경 없이 pandas 가속화하기
- GTC 세션: 클라우드에서 데이터 과학 워크로드 비용 절감하기
- SDK: RAPIDS
- SDK: DGL 컨테이너