본문 바로가기
  • CobsLab upgrades your company value by AI technology
pandas

10분만에 알아보는 RAPIDS cuDF의 pandas 가속기 모드(cudf.pandas)

by 콥스랩 2025. 3. 26.

pandas 코드 한 줄만 바꾸면 데이터 분석이 최대 10배 빨라진다면 믿어지시나요? 오늘은 NVIDIA가 만든 GPU 기반 데이터 분석 라이브러리인 RAPIDS cuDF의 놀라운 새 기능인 cudf.pandas를 소개합니다.

전체 코드 : https://colab.research.google.com/drive/1X3IHAy3qIcZAaFi5j1hV5Za1eCHUBqzt?usp=sharing

 

Google Colab Notebook

Run, share, and edit Python notebooks

colab.research.google.com

 

cuDF는 Apache Arrow 기반의 GPU DataFrame 라이브러리로, pandas와 거의 동일한 인터페이스를 제공하면서 GPU를 이용한 데이터 분석 속도를 크게 높일 수 있는 도구입니다. 특히 기존 pandas 코드를 변경하지 않고 그대로 GPU에서 실행할 수 있는 pandas 가속기 모드(cudf.pandas)가 추가되었습니다.

이 포스팅에서는 cuDF의 pandas 가속기 모드를 직접 활용하여 간단한 데이터 분석을 수행하는 과정을 소개합니다.


✅ NVIDIA GPU 환경 확인하기

먼저, 본인의 환경에서 GPU가 제대로 인식되고 있는지 확인합니다. 다음 명령어를 통해 NVIDIA GPU가 잘 작동하는지 확인할 수 있습니다.

# 현재 환경에서 GPU의 상태와 메모리 사용량 등을 확인하는 명령어입니다.
!nvidia-smi

이 명령어의 실행 결과에 GPU 정보가 정상적으로 표시되면 GPU 설정이 성공적으로 완료된 것입니다.


📥 데이터 다운로드

예제로 사용할 데이터는 뉴욕시의 주차 위반 데이터를 사용하겠습니다. 원본 데이터는 NYC 오픈 데이터 포털에서 제공되지만, 편의상 NVIDIA에서 제공하는 데이터를 사용합니다.

!wget https://data.rapids.ai/datasets/nyc_parking/nyc_parking_violations_2022.parquet -O /tmp/nyc_parking_violations_2022.parquet

파일 크기가 크기 때문에 다운로드가 완료될 때까지 잠시 기다려 주세요. 이후의 GPU 가속을 통해 데이터를 빠르게 처리할 수 있으니 조금만 인내해 주세요!

 


🐼 pandas로 데이터 분석하기

먼저 표준 pandas 라이브러리를 이용해 데이터의 일부를 불러오겠습니다.

import pandas as pd

# 일부 열만 선택적으로 불러오기
df = pd.read_parquet(
    "/tmp/nyc_parking_violations_2022.parquet",
    columns=["Registration State", "Violation Description", "Vehicle Body Type", "Issue Date", "Summons Number"]
)

# 데이터 샘플 확인하기
df.sample(10)

이렇게 데이터를 불러온 후에는 간단한 분석을 수행하여 데이터를 탐색할 수 있습니다.

🔍 분석 예시: 미국 각 주별 가장 흔한 주차 위반

각 주에서 가장 흔하게 발생하는 주차 위반 유형을 확인하는 방법입니다.

# 각 주별 위반유형의 발생 빈도 계산
violation_counts = df.groupby('Registration State')['Violation Description'].value_counts().groupby(level=0).head(1)
violation_counts

이를 통해 각 주별로 가장 빈번하게 발생하는 주차 위반 유형을 확인할 수 있습니다.


🚀 cudf.pandas로 GPU 가속 적용하기

이제 본격적으로 cuDF의 pandas 가속기 모드를 통해 GPU를 사용하여 더욱 빠르게 데이터를 분석하는 방법을 살펴보겠습니다.

📦 cudf.pandas 설치하기

cuDF를 Colab 환경에서 설치하는 방법은 간단합니다. 다음 명령어를 실행하여 설치할 수 있습니다.

!pip install cudf-cu12 dask-cudf-cu12 --extra-index-url=https://pypi.ngc.nvidia.com

설치 후에는 cuDF와 pandas를 거의 동일한 방식으로 사용할 수 있습니다.

⚡ GPU 가속 모드로 데이터 분석 수행하기

기존 pandas 코드의 한 글자도 바꾸지 않고, 단지 라이브러리 임포트 부분만 변경하여 GPU 환경에서 최대 수십 배 빠르게 데이터 분석을 할 수 있습니다.

import cudf.pandas as pd

# GPU 가속 pandas 사용하기
gpu_df = pd.read_parquet(
    "/tmp/nyc_parking_violations_2022.parquet",
    columns=["Registration State", "Violation Description", "Vehicle Body Type", "Issue Date", "Summons Number"]
)

# GPU에서 동일한 분석 수행하기
gpu_violation_counts = gpu_df.groupby('Registration State')['Violation Description'].value_counts().groupby(level=0).head(1)
gpu_violation_counts

위와 같이 기존 pandas 코드에서 변경 없이 GPU 기반 데이터 분석이 가능합니다.

⏱️ 성능 비교: pandas vs cudf.pandas

GPU 환경에서의 성능 향상을 체감하기 위해, 데이터 처리에 소요되는 시간을 측정하여 비교해보는 것이 좋습니다. 다음 코드를 통해 pandas와 cudf.pandas의 성능을 직접 비교해 볼 수 있습니다.

import time

# pandas 성능 측정
start_time = time.time()
df.groupby('Registration State')['Violation Description'].value_counts().groupby(level=0).head(1)
print("pandas 처리 시간:", time.time() - start_time, "초")

# cudf.pandas 성능 측정
start_gpu_time = time.time()
gpu_df.groupby('Registration State')['Violation Description'].value_counts().groupby(level=0).head(1)
print("cudf.pandas 처리 시간:", time.time() - start_gpu_time, "초")
여러분이 실제 데이터 분석 환경에서 겪는 속도나 성능 이슈가 있다면 댓글로 공유해 주세요. 앞으로 더욱 다양한 GPU 활용법으로 실질적인 문제 해결을 도와드리겠습니다!

🎯 결론 및 활용 팁

이번 포스팅에서는 RAPIDS cuDF의 pandas 가속기 모드를 이용해 GPU 기반 데이터 분석을 쉽게 구현하는 방법을 소개했습니다. pandas 코드를 변경하지 않고 GPU를 이용해 성능을 극대화할 수 있는 cudf.pandas는 데이터 분석가에게 큰 도움이 될 것입니다.

실무에서 빠른 데이터 분석이 필요하거나 큰 규모의 데이터로 인해 처리 속도가 문제될 때는 cudf.pandas를 적극적으로 활용하여 효율성을 높여 보시기 바랍니다.

앞으로 더 다양한 데이터 분석 방법과 팁을 지속적으로 공유하겠습니다. 많은 관심과 피드백 부탁드립니다!

댓글