분산 머신러닝을 사용하면 데이터 과학자와 ML 엔지니어가 단일 머신의 메모리 및 컴퓨팅 한계를 넘어 머신러닝(ML) 모델 학습을 확장할 수 있습니다. 워커 노드 클러스터 전반에서 데이터 파티션을 분산하고 워크로드를 병렬화하면 대규모 데이터 세트에서 복잡한 모델을 훨씬 더 빠르게 학습시킬 수 있습니다.
Apache Spark는 분산 데이터 처리의 업계 표준입니다. 기본 머신러닝 라이브러리인 MLlib는 분류, 회귀, 클러스터링, 협업 필터링을 위한 분산 알고리즘을 제공하여 단일 통합 환경 내에서 데이터 수집부터 모델 배포까지 진행할 수 있도록 지원합니다.
Spark ML 파이프라인은 여러 머신러닝 워크플로를 하나의 일관된 파이프라인으로 결합하는 데 도움이 되도록 설계된 고수준 API입니다. 이를 통해 구조화된 선언적 워크플로 내에서 다양한 데이터 변환(예: 특성 추출 및 확장)과 머신러닝 알고리즘(예: 모델 학습)을 함께 연결할 수 있습니다.
파이프라인을 사용하면 모델 학습과 예측 모두에서 동일한 데이터 전처리 단계 시퀀스가 일관되게 적용되므로 데이터 유출을 방지하고 재현 가능한 결과를 보장하는 데 매우 중요합니다. Spark ML 파이프라인의 주요 구성요소는 변환기와 추정기입니다.
하드웨어 가속을 적용하기 위해 ML 워크로드를 확장하면 복잡한 Spark GPU 종속 항목을 관리해야 하는 문제가 발생하는 경우가 많습니다. VM 인스턴스를 프로비저닝하고, 올바른 NVIDIA 드라이버를 설치하고, CUDA 및 cuDNN 버전이 PyTorch 또는 TensorFlow 라이브러리와 일치하는지 확인하는 작업은 개발자의 생산성을 며칠 동안 중단시킬 수 있습니다.
Google Cloud는 사전 패키징된 머신러닝 런타임을 제공하는 Managed Service for Apache Spark를 통해 이 문제를 해결합니다. 안정적인 Ubuntu 기반 이미지(버전 2.3부터)를 기반으로 빌드된 이러한 런타임은 워크로드에 필요한 정확한 GPU 드라이버(CUDA, cuDNN, NCCL) 및 업계 표준 ML 프레임워크(PyTorch, XGBoost, 토크나이저, 변환기)와 함께 사전 설치 및 사전 구성되어 제공됩니다. 이러한 설정 없는 환경 덕분에 팀은 인프라 구성이 아닌 코드 작성에 집중할 수 있습니다.
Spark MLlib에서 변환기는 하나의 DataFrame을 다른 DataFrame으로 변환하는 알고리즘입니다(예: 텍스트를 숫자 벡터로 변환). 추정기는 DataFrame에 맞춰 변환기를 생성할 수 있는 알고리즘입니다(예: 학습 데이터에 로지스틱 회귀 알고리즘을 맞춰 학습된 모델 생성).
Spark ML 파이프라인을 사용하면 데이터 준비 로직이 모델과 엄격하게 결합됩니다. 이렇게 하면 테스트 또는 추론 데이터가 학습 데이터와 동일하게 처리됩니다.
Managed Service for Apache Spark의 Google Cloud ML 런타임을 사용하면 종속 항목 관리가 오프로드됩니다. 커스텀 Ubuntu 기반 이미지는 Google에서 지속적으로 업데이트하며, 기본적으로 호환되는 올바른 버전의 NVIDIA 드라이버, CUDA 툴킷, 분산 ML 프레임워크가 사전 패키징되어 있습니다.
Spark MLlib와 Google Cloud 데이터 도구의 구성요소를 이해하는 것은 대규모 분산 ML을 실행하는 데 필수적입니다.
구성요소 | 설명 | 기본 사용 사례 | 가격 책정 고려사항 |
Spark MLlib | 일반적인 학습 알고리즘, 특성화 도구, 파이프라인 유틸리티가 포함된 Apache Spark의 확장 가능한 머신러닝 라이브러리입니다. | 단일 노드 라이브러리에 의존하지 않고 분산 클러스터 전반에서 대규모 ML 모델 학습을 실행합니다. | 비용은 Apache Spark를 실행하는 데 사용되는 기본 Google Cloud 서비스, 주로 Managed Service for Apache Spark를 통해 발생합니다. 가격은 프로비저닝된 Compute Engine 리소스(vCPU, 메모리, GPU, 디스크)와 작업이 실행되는 기간에 따라 달라집니다. |
벡터 어셈블러 | Spark MLlib의 핵심 특성 변환기로, 여러 열(연속 숫자, 원-핫 인코딩된 카테고리 등)을 단일 벡터 열로 병합합니다. | 원시 테이블 형식 데이터를 Spark MLlib 머신러닝 알고리즘에서 예상하는 특정 밀집 또는 희소 벡터 형식으로 준비합니다. | Spark MLlib 내의 구성요소로서, 이 실행은 Managed Service for Apache Spark에서 Spark 워크로드를 실행하는 데 드는 전체 컴퓨팅 비용에 기여합니다. |
Spark ML 파이프라인 | DataFrame을 기반으로 빌드된 고수준 API로, 사용자가 여러 특성 추출 단계와 모델을 함께 연결할 수 있도록 지원합니다. | 변환기와 추정기를 통합 파이프라인으로 그룹화하여 학습 및 추론 중에 동일한 데이터 처리를 보장합니다. | 다른 Spark MLlib 구성요소와 마찬가지로 비용은 Managed Service for Apache Spark의 실행 요금에 포함됩니다. |
BigQuery ML | 표준 SQL 쿼리를 사용하여 BigQuery에서 머신러닝 모델을 만들고 실행할 수 있는 서비스입니다. | 복잡한 반복 분산 작업을 Spark로 이동하기 전에 데이터가 있는 곳에서 직접 모델을 학습시킵니다. | BigQuery ML에는 자체 가격 책정 모델이 있습니다. 다음 항목에 대한 요금이 청구됩니다.
|
구성요소
설명
기본 사용 사례
가격 책정 고려사항
Spark MLlib
일반적인 학습 알고리즘, 특성화 도구, 파이프라인 유틸리티가 포함된 Apache Spark의 확장 가능한 머신러닝 라이브러리입니다.
단일 노드 라이브러리에 의존하지 않고 분산 클러스터 전반에서 대규모 ML 모델 학습을 실행합니다.
비용은 Apache Spark를 실행하는 데 사용되는 기본 Google Cloud 서비스, 주로 Managed Service for Apache Spark를 통해 발생합니다. 가격은 프로비저닝된 Compute Engine 리소스(vCPU, 메모리, GPU, 디스크)와 작업이 실행되는 기간에 따라 달라집니다.
벡터 어셈블러
Spark MLlib의 핵심 특성 변환기로, 여러 열(연속 숫자, 원-핫 인코딩된 카테고리 등)을 단일 벡터 열로 병합합니다.
원시 테이블 형식 데이터를 Spark MLlib 머신러닝 알고리즘에서 예상하는 특정 밀집 또는 희소 벡터 형식으로 준비합니다.
Spark MLlib 내의 구성요소로서, 이 실행은 Managed Service for Apache Spark에서 Spark 워크로드를 실행하는 데 드는 전체 컴퓨팅 비용에 기여합니다.
Spark ML 파이프라인
DataFrame을 기반으로 빌드된 고수준 API로, 사용자가 여러 특성 추출 단계와 모델을 함께 연결할 수 있도록 지원합니다.
변환기와 추정기를 통합 파이프라인으로 그룹화하여 학습 및 추론 중에 동일한 데이터 처리를 보장합니다.
다른 Spark MLlib 구성요소와 마찬가지로 비용은 Managed Service for Apache Spark의 실행 요금에 포함됩니다.
BigQuery ML
표준 SQL 쿼리를 사용하여 BigQuery에서 머신러닝 모델을 만들고 실행할 수 있는 서비스입니다.
복잡한 반복 분산 작업을 Spark로 이동하기 전에 데이터가 있는 곳에서 직접 모델을 학습시킵니다.
BigQuery ML에는 자체 가격 책정 모델이 있습니다. 다음 항목에 대한 요금이 청구됩니다.
Google Cloud의 Managed Service for Apache Spark는 인프라의 복잡성을 추상화하여 서버리스 환경 또는 맞춤설정 가능한 관리형 클러스터를 사용해 대규모 모델 학습을 위한 Spark ML 파이프라인을 실행할 수 있도록 지원합니다.
이 서비스는 까다로운 Spark GPU 종속 항목을 제거하기 위해 기본적으로 호환되는 NVIDIA 드라이버, CUDA 툴킷, 분산 프레임워크가 완벽하게 갖춰진 사전 패키징된 ML 런타임을 활용하여 하드웨어 가속 워크로드를 배포할 수 있는 설정 없는 경로를 제공합니다.
변환기를 사용하여 데이터를 추출하고 확장하는 방법과 추정기를 사용하여 알고리즘을 학습시키는 방법을 알아봅니다.
기본 인프라를 관리할 필요 없이 GPU 가속 Spark 클러스터를 실행하세요. Google Cloud의 ML 런타임은 사전 구성되어 제공되므로 복잡한 Spark GPU 종속 항목을 우회할 수 있습니다.