MLlib 가이드

MLlib 가이드

MLlib는 Spark의 머신러닝(ML) 라이브러리예요. 목표는 실용적인 머신러닝을 확장 가능하면서도 쉽게 만드는 거죠. 크게 보면 다음과 같은 도구들을 제공해요.

  • ML 알고리즘: 분류, 회귀, 클러스터링, 협업 필터링 같은 흔한 학습 알고리즘
  • 피처 변환(Featurization): 피처 추출, 변환, 차원 축소, 선택
  • 파이프라인(Pipelines): ML 파이프라인을 구성하고 평가하고 튜닝하는 도구
  • 영속화(Persistence): 알고리즘, 모델, 파이프라인 저장과 불러오기
  • 유틸리티: 선형대수, 통계, 데이터 처리 등

출처: MLlib: Main Guide

본문

공지: DataFrame 기반 API가 주 API가 됐어요

MLlib의 RDD 기반 API는 이제 유지보수(maintenance) 모드예요.

Spark 2.0부터 spark.mllib 패키지의 RDD 기반 API는 유지보수 모드로 들어갔어요. Spark의 주 머신러닝 API는 이제 spark.ml 패키지의 DataFrame 기반 API가 됐어요.

무슨 뜻일까요?

  • MLlib은 spark.mllib의 RDD 기반 API를 버그 수정과 함께 계속 지원해요.
  • MLlib은 RDD 기반 API에 새로운 기능을 추가하지 않아요.
  • Spark 2.x 릴리스에서 MLlib은 DataFrame 기반 API에 기능을 추가해 RDD 기반 API와 기능 동등(feature parity) 수준에 도달하게 해요.

왜 DataFrame 기반 API로 전환하나요?

  • DataFrame은 RDD보다 더 사용자 친화적인 API를 제공해요. DataFrame의 많은 장점에는 Spark 데이터소스, SQL/DataFrame 쿼리, Tungsten과 Catalyst 최적화, 언어 간의 통일된 API가 포함돼요.
  • MLlib의 DataFrame 기반 API는 ML 알고리즘 간, 그리고 여러 언어 간에 통일된 API를 제공해요.
  • DataFrame은 실용적인 ML 파이프라인, 특히 피처 변환을 쉽게 만들어 줘요. 자세한 내용은 Pipelines 가이드를 참고하세요.

"Spark ML"이 뭔가요?

  • "Spark ML"은 공식 이름은 아니지만 MLlib의 DataFrame 기반 API를 가리킬 때 가끔 쓰여요. 주로 DataFrame 기반 API가 쓰는 org.apache.spark.ml 스칼라 패키지 이름과, 파이프라인 개념을 강조하려고 처음 사용했던 "Spark ML Pipelines"라는 용어 때문이에요.

MLlib이 더 이상 사용되지 않나요(deprecated)?

  • 아니요. MLlib은 RDD 기반 API와 DataFrame 기반 API를 모두 포함해요. RDD 기반 API가 지금 유지보수 모드인 것뿐이에요. 어느 API도, 그리고 MLlib 전체도 더 이상 사용되지 않지는 않아요.

의존성(Dependencies)

MLlib은 최적화된 수치 처리를 위해 선형대수 패키지 Breezedev.ludovic.netlib을 사용해요¹. 이 패키지들은 시스템 라이브러리나 런타임 라이브러리 경로에 있으면 Intel MKL이나 OpenBLAS 같은 네이티브 가속 라이브러리를 호출할 수 있어요.

하지만 네이티브 가속 라이브러리는 Spark와 함께 배포할 수 없어요. 가속된 선형대수 처리를 켜는 방법은 MLlib Linear Algebra Acceleration Guide를 보세요. 가속 네이티브 라이브러리를 켜지 않으면 아래 같은 경고 메시지가 보이고 순수 JVM 구현을 대신 사용해요.

WARNING: Failed to load implementation from:dev.ludovic.netlib.blas.JNIBLAS

Python에서 MLlib을 쓰려면 NumPy 1.21 이상이 필요해요.

3.0의 주요 변화

아래 목록은 Spark 3.0 릴리스에서 MLlib에 추가된 새 기능과 개선 사항 중 일부를 보여줘요.

마이그레이션 가이드

마이그레이션 가이드는 이제 이 페이지에 보관돼 있어요.

¹ 시스템 최적화 네이티브의 이점과 배경을 더 알고 싶다면, Sam Halliday의 ScalaX 강연 High Performance Linear Algebra in Scala를 보는 걸 추천해요. ↩

더 알아보기 (Learn more)