Snowflake, NVIDIA CUDA-X로 scikit-learn 및 pandas 머신러닝 가속화

고객 이탈 예측, 트랜잭션 데이터의 이상 탐지, AI 임베딩에서의 클러스터링 패턴 탐색 등 다양한 작업에서 기업들은 생성형 AI와 ML 모델을 활용해 그 어느 때보다 큰 데이터 세트를 처리하고 있습니다. 데이터 세트가 커질수록 GPU 가속은 점점 더 중요해지고 있습니다. ML 알고리즘의 실행이 몇 시간 또는 며칠씩 걸리면 생산성이 크게 저하될 뿐 아니라 비용도 증가할 수 있기 때문입니다.
계속해서 커지는 데이터 세트에 대한 요구를 충족하기 위해 Snowflake ML은 지난 몇 년간 GPU 지원 워크플로우에 적극적으로 투자해 왔습니다. 오늘 Snowflake는 Snowflake ML에 NVIDIA의 cuML과 cuDF 라이브러리가 사전 설치되어, 인기 있는 ML 알고리즘을 GPU로 가속화할 수 있게 되었음을 발표하게 되어 매우 기쁩니다. 이번 네이티브 통합으로 Snowflake 고객은 scikit-learn, pandas, UMAP, HDBSCAN의 모델 개발 주기를 코드 변경 없이 손쉽게 가속화할 수 있게 되었습니다. NVIDIA 벤치마크 결과에 따르면 NVIDIA A10 GPU는 CPU 대비 랜덤 포레스트(Random Forest)에서 최대 5배, HDBSCAN에서는 최대 200배의 속도 향상을 보여줍니다.
이 블로그 게시물에서는 토픽 모델링과 유전체학 사례를 살펴봅니다. 이를 통해 새롭게 통합된 라이브러리가 Snowflake ML에서 최첨단 차원 축소와 클러스터링 기술을 사용해 대규모 데이터 세트를 빠르고 원활하게 탐색할 수 있도록 어떻게 지원하는지 설명합니다.
데이터 사이언스를 위한 NVIDIA CUDA-X 라이브러리
데이터 세트가 수백만 행 규모에 이르고, 차원이 수백에서 수천 개까지 늘어나면 기존의 CPU 기반 처리 도구만으로는 한계가 생기며, 대안이 필요해집니다. cuML과 cuDF 라이브러리는 NVIDIA CUDA-X Data Science(CUDA-X DS) 생태계의 일부로, 데이터 처리 파이프라인을 고속화하도록 설계된 GPU 가속 오픈소스 라이브러리 모음입니다. GPU는 더 빠르고 확장 가능하며 효율적인 데이터 워크플로우를 위한 병렬 처리 성능을 제공합니다.

자료 1: CUDA-X Data Science는 인기 있는 데이터 사이언스 라이브러리와 플랫폼을 가속하는 오픈소스 라이브러리 모음입니다.
CUDA-X DS 라이브러리는 데이터 분석, 머신러닝, 그래프 분석을 위해 친숙한 Python API에 GPU 성능을 결합해, 팀이 코드를 다시 작성할 필요 없이 큰 속도 향상을 제공합니다. CUDA-X DS를 사용하면 모델 훈련과 반복 최적화 주기를 GPU로 가속할 수 있으며, 단일 GPU로 수억 개의 행을 가진 데이터 세트를 처리할 수 있습니다. A10 GPU에서 cuML은 CPU 전용 컴퓨팅 대비 TSNE를 최대 72배, UMAP을 최대 25배, HDBSCAN을 최대 200배까지 가속할 수 있으며, 처리 시간을 며칠에서 몇 분으로 줄일 수 있습니다.
Snowflake ML에서 GPU 가속 모델 개발 시작하기

자료 2: Snowflake ML은 거버넌스로 관리되는 데이터와 동일한 플랫폼에서 강력한 모델 개발, 운영, 추론 기능을 모두 제공합니다.
Snowflake ML은 단일 플랫폼에서 데이터와 직접 통합된 엔드투엔드 ML 개발 및 추론 기능 세트입니다. NVIDIA의 cuML 및 cuDF 라이브러리와의 통합 기능은 대규모 머신러닝 개발을 위한 사전 구축된 환경인 Container Runtime을 통해 사용할 수 있습니다. Snowflake 고객은 완전 관리형 GPU에서 scikit-learn과 pandas 등의 ML 알고리즘을 가속하기 위해 Snowflake Notebooks에서 직접 데이터 사이언스 스크립트를 실행하거나, 어떤 IDE에서든 ML Jobs가 지원하는 원격 푸시다운(함수 또는 파일 디스패치)을 통해 스크립트를 실행할 수 있습니다. 이를 통해 다음과 같은 여러 가지 이점을 얻을 수 있습니다.
간소화된 개발자 경험: GPU 전용 런타임 이미지를 사용하면 ML 개발을 지원하는 최신 인기 라이브러리와 프레임워크(PyTorch, XGBoost, LightGBM, scikit-learn 등)에 이미 접근할 수 있습니다. 최신 업데이트에서 cuML과 cuDF가 기본 GPU 환경에 완전히 통합되어, 이제 pandas, scikit-learn, UMAP, HDBSCAN을 직접 GPU로 가속할 수 있습니다.
GPU 인스턴스에 대한 손쉬운 접근: 간단한 노트북 실행이나 원격 실행 구성을 통해, 워크로드에 적합한 컴퓨팅 풀에서 인스턴스를 선택할 수 있습니다. GPU 노드를 선택하면 단일 노드에서 하나 이상의 GPU를 사용할 수 있을 뿐 아니라, 사용 사례의 복잡도에 맞는 다양한 유형의 GPU도 선택하여 활용할 수 있습니다.

자료 3: NVIDIA CUDA-X 라이브러리와의 직접 통합을 통해 Snowflake Notebooks에서 인기 있는 ML 알고리즘을 GPU로 손쉽게 가속화할 수 있습니다.
Snowflake의 NVIDIA 라이브러리 통합은 토픽 모델링과 유전체학과 같이 GPU 가속이 필요한 대규모 데이터 세트로 인한 산업적 과제를 해결하는 강력한 솔루션입니다.
대규모 토픽 모델링 구현
토픽 모델링과 같은 대규모 텍스트 분석을 수행할 때는 계산 효율성이 무엇보다도 중요한 요소로 떠오릅니다. 많은 데이터 사이언스 워크플로우가 반복적이고 탐색적인 특성을 갖기 때문에, 더 높은 성능에 대한 요구는 더욱 절실해집니다. 반복할 때마다 몇 시간을 기다리는 것은 현실적으로 불가능합니다.
Snowflake의 NVIDIA CUDA-X 라이브러리 통합은 기존 CPU 기반 Python 코드를 거의 또는 전혀 수정을 하지 않아도, 데이터 사이언스 및 머신러닝 작업에서 상당한 속도 향상을 제공할 수 있습니다. 십만에서 수백만 개에 이르는 제품 리뷰를 가공 전 텍스트에서 잘 정의된 토픽 클러스터로 변환하는 작업도 GPU에서는 단 몇 분 만에 완료될 수 있습니다.
이 Quickstart는 Snowflake의 가속 컴퓨팅을 활용하여, 인기 있는 토픽 모델링 라이브러리인 BERTopic으로 50만 건의 도서 리뷰를 GPU_NV_S 인스턴스에서 몇 분 이내에 처리하는 방법을 보여줍니다. 동일한 작업이 CPU_X64_L 인스턴스에서는 8시간 이상 걸리는 것과 대비됩니다.
BERTopic 기반 토픽 모델링 워크플로우는 일반적으로 다음 단계를 따릅니다.
데이터 읽기: pandas와 같은 라이브러리를 사용하여 텍스트 데이터를 메모리로 불러옵니다.
임베딩 생성: SentenceTransformers 라이브러리를 사용하여 가공 전 텍스트를 수치 표현(임베딩)으로 변환합니다.
차원 축소: umap-learn 라이브러리를 사용하여 중요한 정보를 유지한 채 고차원 임베딩을 저차원 공간으로 압축합니다.
클러스터: HDBSCAN 라이브러리를 사용하여 차원 축소된 임베딩을 클러스터링하고 핵심 토픽을 식별합니다.
이제 노트북에서 이 네 가지 단계를 모두 가속화할 수 있습니다. SentenceTransformers는 자동으로 CUDA 지원 PyTorch를 사용합니다. 그리고 코드 변경 없이 pandas, umap-learn, HDBSCAN 코드를 가속하려면, cuML과 cuDF를 임포트하고 그대로 ‘스위치를 켜기’만 하면 됩니다.
import cudf.pandas; cudf.pandas.install()
import cuml; cuml.accel.install()
import pandas as pd
from bertopic import BERTopic
from sentence_transformers import SentenceTransformer
data = pd.read_json(data_path, lines=True) # GPU-accelerated
docs = data["text"].tolist()
sentence_model = SentenceTransformer("all-MiniLM-L6-v2")
embeddings = sentence_model.encode(docs, batch_size=128, show_progress_bar=True) # GPU-accelerated
topic_model = BERTopic()
topics, probs = topic_model.fit_transform(docs, embeddings) # GPU-accelerated이로써 전체 토픽 모델링 워크플로우가 가속화되며, 노트북이 작업을 완료하기를 몇 시간씩 기다리지 않아도 됩니다.
가속화된 유전체학 워크플로우를 통한 혁신 실현
가속화된 컴퓨팅은 헬스케어와 디지털 생물학을 변화시키고 있으며, 과학자와 연구자들이 차세대 의료 기기에서 생성되는 점점 더 방대한 데이터 세트를 활용하고, 복잡한 문제 해결을 위해 AI를 실제 운영에 적용할 수 있도록 지원하고 있습니다.
Snowflake 사용자는 이제 cuDF, cuML 등 NVIDIA CUDA-X DS 라이브러리의 ‘제로 코드 변경’ 기능을 활용하여 DNA 시퀀스 데이터 분석을 가속화할 수 있습니다. 고차원 생물학적 시퀀스를 처리할 때 cuML과 cuDF는 다음과 같은 영역에서 큰 가속 효과를 제공합니다.
더 빠른 시퀀스 분석: 원시 DNA 시퀀스를 특성 벡터로 변환하면 연구자들은 유전자 계통 예측과 같은 분류 작업을 대규모로 수행할 수 있습니다.
원활한 워크플로우 통합: GPU에서 pandas와 scikit-learn 코드를 직접 실행하면 데이터 로드, 전처리, 앙상블 모델 훈련 속도가 획기적으로 빨라집니다.
제로 코드 변경 가속화: 기존 워크플로우에 코드 변경 없이 GPU 가속을 적용할 수 있게 되면, 연구자들은 저수준 GPU 프로그래밍이 아니라 생물학적 인사이트와 모델 설계에 집중할 수 있습니다.
Snowflake Quickstart에서는 scikit-learn과 XGBoost를 사용해 DNA 시퀀스의 유전자 계통을 예측하는 머신러닝 모델을 훈련하는 과정을 시연합니다. 훈련을 GPU로 가속하려면 scikit-learn용 cuML 가속기를 로드하고, XGBoost 모델의 device 값을 "cuda"로 설정하기만 하면 됩니다.
import cuml; cuml.accel.install()
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
import xgboost as xgb
...
X_train, X_test, y_train, y_test = train_test_split(
dna_embeddings,
y,
test_size = 0.20,
random_state=42
)
classifier = RandomForestClassifier(
n_estimators=200,
max_depth=20,
max_features=1.0,
n_jobs=-1
)
classifier.fit(X_train, y_train) # GPU-accelerated
clf = xgb.XGBClassifier(device="cuda", n_estimators=200)
clf.fit(X_train, y_train, eval_set=[(X_test, y_test)]) # GPU-accelerated모든 데이터 사이언티스트가 아는 바와 같이, 처음 훈련하는 모델이 최고의 모델인 경우는 거의 없습니다. 안타깝게도, 강력한 피처 엔지니어링과 모델 튜닝에는 수 시간에서 수 일까지 걸릴 수 있으며, 수백 개에서 많게는 수천 개의 서로 다른 파이프라인을 테스트해야 할 수도 있습니다.
Snowflake ML을 사용하면 모델 훈련에 걸리는 시간을 몇 분으로 단축할 수 있습니다. 또한 GPU용으로 코드를 다시 작성할 걱정 없이 유전체학 워크플로우에 집중할 수 있습니다.
지금 바로 시작하기
Snowflake ML은 NVIDIA의 cuML 및 cuDF 라이브러리와 사전 통합되어, Snowflake 데이터 기반 대규모 머신러닝의 운영 효율성과 확장성을 향상합니다. 이 확장된 기능은 높은 연산 성능을 요구하는 분야에서 반복적인 개발 및 탐색 주기를 크게 향상시키며, GPU 인프라와 환경 관리에 내재된 복잡성을 추상화합니다.
시작할 준비가 되셨나요? Snowflake의 Container Runtime에서 NVIDIA의 라이브러리를 사용해 보려면, Quickstart 및 설명서를 참고하여 ML 워크플로우를 GPU에서 손쉽게 가속화할 수 있습니다.

