Data Science

코드 변경 없이 pandas를 150배 가까이 가속화하는 RAPIDS cuDF

Reading Time: 3 minutes

이제 950만 명의 pandas 사용자에게 코드를 변경 없이도 RAPIDS cuDF로 GPU 가속을 제공할 수 있게 되었다는 소식이 NVIDIA GTC 2024에서 발표되었습니다.

신규 업데이트: 이제 Google Colab에서 코드 변경 없이도 pandas를 즉시 가속할 수 있는 RAPIDS cuDF를 사용할 수 있습니다. 지금 바로 Colab 노트북에서 튜토리얼을 사용해 보세요.

유연하고 강력한 Python용 데이터 분석 및 조작 라이브러리인 pandas는 사용하기 쉬운 API로 인해 데이터 과학자들에게 최고의 선택입니다. 하지만 데이터 세트의 크기가 커지면서 CPU 전용 시스템에서는 처리 속도와 효율성에 어려움을 겪었습니다.

RAPIDS는 데이터 과학 및 분석 파이프라인을 개선하기 위해 설계된 GPU 가속 Python 라이브러리의 오픈 소스 제품군입니다. RAPIDS cuDF는 데이터 로드, 필터링, 조작을 위한 pandas와 유사한 API를 제공하는 GPU DataFrame 라이브러리입니다. 이전 버전의 cuDF는 GPU 전용 개발 워크플로우를 대상으로 제공되었습니다.

지난 가을, RAPIDS는 오픈 베타 버전에서 통합된 CPU/GPU 사용자 경험을 바탕으로 코드 변경 없이 pandas 워크플로우에 가속화된 컴퓨팅을 제공하는 cuDF 버전을 출시했습니다. GTC 2024에서 NVIDIA는 이제 최신 RAPIDS v24.02 릴리스에서 pandas의 cuDF 가속화를 정식으로 사용할 수 있다고 발표했습니다. 이 기능은 봄에 출시될 NVIDIA AI Enterprise 5.0에서 지원될 예정입니다.

비디오 1. RAPIDS cuDF로 pandas를 150배 가까이 가속화하세요.

이 비디오에서는 Jupyter 노트북에서 나란히 실행되는 동일한 pandas 워크플로우를 보여줍니다. 하나는 CPU 전용으로 pandas를 사용하고, 다른 하나는 cudf.pandas 확장 프로그램을 로드하여 RAPIDS cuDF로 pandas를 가속화하는 방식입니다.

pandas 워크플로우에 통합된 CPU/GPU 경험 제공

cuDF는 항상 pandas와 유사한 API를 사용해 사용자에게 최고의 DataFrame 라이브러리 성능을 제공해 왔습니다. 하지만 cuDF를 채택하는 과정에서 때때로 추가적인 일처리가 필요했습니다:

  • cuDF에서 아직 구현되지 않았거나 지원되지 않는 pandas 기능의 우회 작업.
  • 이기종 하드웨어에서 실행해야 하는 코드베이스에서 CPU와 GPU 실행을 위한 별도의 코드 경로 설계.
  • 다른 PyData 라이브러리 또는 pandas용으로 설계된 조직별 도구와 상호 작용할 때 cuDF와 pandas 간에 수동으로 전환.

24.02 릴리스에서는 기존의 GPU 전용 환경과 더불어 코드 변경 없이도 이러한 문제를 해결하기 위해 cuDF가 pandas를 가속화할 수 있습니다.

이 기능은 데이터 크기가 기가바이트로 커지고 성능이 느려지는 상황에서도 pandas를 계속 사용하고자 하는 데이터 과학자를 위해 만들어졌습니다. cuDF가 pandas를 가속화할 때, 작업은 가능하다면 GPU에서 실행되고 그렇지 않은 경우 CPU(pandas 사용)에서 실행됩니다. cuDF는 필요에 따라 GPU와 CPU를 내부적으로 동기화합니다. 이를 통해 통합된 CPU/GPU 환경을 구현하여 동급 최강의 성능을 pandas 워크플로우에 제공할 수 있습니다.

GA 릴리스에서 cuDF는 다음과 같은 기능을 제공합니다:

  • 제로 코드 변경 가속화: cuDF Jupyter Notebook 확장 프로그램을 로드하거나 cuDF Python 모듈 옵션을 사용하기만 하면 됩니다.
  • 타사 라이브러리 호환성: pandas 가속기 모드는 pandas 객체에서 작동하는 대부분의 타사 라이브러리와 호환됩니다. 심지어 이러한 라이브러리 내에서 pandas 작업을 가속화할 수도 있습니다.
  • 통합 CPU/GPU 워크플로우: 하드웨어에 관계없이 단일 코드 경로로 개발, 테스트, 프로덕션 환경에서 실행할 수 있습니다.

Jupyter 노트북의 pandas 워크플로우에 GPU 가속을 도입하려면 cudf.pandas 확장 프로그램을 불러옵니다:

%load_ext cudf.pandasimportpandas as pd

Python 스크립트를 실행할 때 이 모듈에 액세스하려면 cudf.pandas 모듈 옵션을 사용합니다:

python -m cudf.pandas script.py

pandas 워크플로우에 최고의 성능 구현하기

데이터 크기가 기가바이트 단위로 확장됨에 따라, 성능 저하로 인해 pandas 사용이 어려워져 일부 데이터 과학자들은 선호하는 pandas API를 포기하는 경우가 종종 있습니다. 새로운 RAPIDS cuDF를 사용하면 pandas를 기본 도구로 계속 사용하면서 최고의 성능을 이용할 수 있습니다.

H2o.ai에서 개발한 대표적인 데이터베이스형 운영 벤치마크인 DuckDB의 pandas 부분을 실행해 보면 실제로 이를 확인할 수 있습니다. DuckDB의 벤치마크 설정은 데이터 조인 또는 그룹별 통계 측정값 계산과 같은 일련의 일반적인 분석 작업에서 널리 사용되는 CPU 기반 DataFrame 및 SQL 엔진을 비교합니다.

5GB의 데이터를 사용하면, 일련의 조인 및 고급 그룹별 작업을 수행하는 데 몇 분이 걸리는 등 pandas 성능이 크롤링 수준으로 느려집니다.

이전에는 이 벤치마크를 pandas가 아닌 cuDF로 실행하려면 코드를 변경하고 누락된 기능을 해결해야 했습니다. cuDF의 새로운 pandas 가속기 모드를 사용하면 더 이상 문제가 되지 않습니다. pandas 벤치마크 코드를 변경하지 않고 실행할 수 있으며, 대부분의 작업에는 GPU를 사용하고 일부 작업에는 CPU를 사용하여 워크플로우가 성공적으로 수행되도록 하여 상당한 속도 향상을 달성할 수 있습니다.

결과는 탁월했습니다. cuDF 통합 CPU/GPU 환경에서는 코드 변경 없이 몇 분 걸리던 처리가 단 1~2초로 단축됩니다(그림 1).

그림 1. 표준 DuckDB 데이터 벤치마크(5GB) 성능 비교(cuDF.pandas와 기존 pandas v2.2)

HW: NVIDIA Grace Hopper, CPU: Intel Xeon Platinum 8480C | SW: pandas v2.2, RAPIDS cuDF 23.10

이 벤치마크 결과와 재현 방법에 대한 자세한 내용은 cuDF 문서를 참조하세요.

결론

pandas는 Python 생태계에서 가장 널리 사용되는 DataFrame 라이브러리이지만, CPU에서 데이터 크기가 커지면 속도가 느려집니다.

단일 명령으로 cuDF를 사용하면 코드를 변경하지 않고도 pandas 워크플로우에 가속화된 컴퓨팅을 도입할 수 있습니다. 5GB 데이터 세트를 처리하는 분석 벤치마크에 따르면, 150배 빠른 처리 시간을 달성할 수 있습니다.

Google Colab의 무료 GPU 지원 환경에서 이 자세한 안내서를 통해 cuDF 가속화의 pandas를 테스트해 보세요.

자세한 내용은 RAPIDS 웹사이트의 cuDF pandas 페이지를 참조하세요.

관련 리소스

Discuss (0)

Tags