Apache SystemDS

Apache SystemDS
개발자아파치 소프트웨어 재단, IBM
발표일2015년 11월 2일(10년 전)(2015-11-02)
안정화 버전
3.0.0 / 2022년 7월 5일(4년 전)(2022-07-05)
저장소SystemDS 저장소
프로그래밍 언어자바, 파이썬, DML, C
운영 체제리눅스, macOS, 윈도우
종류머신 러닝, 딥러닝, 데이터 과학
라이선스아파치 라이선스 2.0
웹사이트systemds.apache.org

Apache SystemDS는 엔드투엔드 데이터 과학 생명 주기를 위한 오픈 소스 머신 러닝 시스템이다.

SystemDS의 주요 특징은 다음과 같다.

  1. R 및 파이썬과 유사한 언어를 통한 알고리즘 사용자 정의
  2. 독립 실행형(Standalone), 스파크 배치, 스파크 MLContext, 하둡 배치, JMLC를 포함한 다중 실행 모드
  3. 데이터 및 클러스터 특성에 기반한 자동 최적화를 통해 효율성과 확장성 보장

역사

SystemML은 2010년 IBM 펠로우인 시바쿠마르 바이티야나탄(Shivakumar Vaithyanathan)이 이끄는 IBM 알마덴 연구소의 연구원들에 의해 만들어졌다. 당시 데이터 과학자들은 소규모 데이터를 위해 R이나 파이썬 같은 언어로 머신 러닝 알고리즘을 작성하곤 했다. 하지만 빅데이터 규모로 확장해야 할 때는 알고리즘을 스칼라와 같은 언어로 확장하기 위해 시스템 프로그래머가 필요했다. 이 과정은 일반적으로 반복당 며칠에서 몇 주가 소요되었으며, 빅데이터 환경에서 알고리즘을 실행하기 위해 변환하는 과정에서 오류가 발생하곤 했다. SystemML은 이러한 과정을 단순화하고자 한다. SystemML의 주요 목표는 R이나 파이썬과 유사한 언어로 작성된 알고리즘을 자동으로 확장하여 빅데이터에서 작동하게 함으로써, 오류가 발생하기 쉬운 다중 반복 변환 방식 없이 동일한 결과를 생성하는 것이다.

2015년 6월 15일, 샌프란시스코에서 열린 스파크 서밋(Spark Summit)에서 IBM 애널리틱스의 제너럴 매니저인 베스 스미스(Beth Smith)는 아파치 스파크 및 관련 프로젝트에 대한 IBM의 주요 공헌의 일환으로 SystemML을 오픈 소스로 공개한다고 발표했다. SystemML은 2015년 8월 27일 깃허브에 공개되었으며, 2015년 11월 2일 아파치 인큐베이터 프로젝트가 되었다. 2017년 5월 17일, 아파치 소프트웨어 재단 이사회는 Apache SystemML을 아파치 최상위 프로젝트로 승격하는 것을 승인했다.

핵심 기술

다음은 SystemDS 엔진에 내장된 몇 가지 기술이다.

예제

주성분 분석

다음 코드 조각은 입력 행렬 의 주성분 분석을 수행하며, 고유 벡터(eigen vectors)와 고유 값(eigen values)을 반환한다.

# PCA.dml
# 참조: https://github.com/apache/systemds/blob/master/scripts/algorithms/PCA.dml#L61

N = nrow(A);
D = ncol(A);

# z-점수 수행 (중심화 및 스케일링)
A = scale(A, center==1, scale==1);

# 공분산 행렬
mu = colSums(A)/N;
C = (t(A) %*% A)/(N-1) - (N/(N-1))*t(mu) %*% mu;

# 고유 벡터 및 고유 값 계산
[evalues, evectors] = eigen(C);

실행 스크립트

spark-submit SystemDS.jar -f PCA.dml -nvargs INPUT=INPUT_DIR/pca-1000x1000 \
  OUTPUT=OUTPUT_DIR/pca-1000x1000-model PROJDATA=1 CENTER=1 SCALE=1

데이터베이스 함수

유클리드 거리를 사용한 DBSCAN 클러스터링 알고리즘 예시이다.

X = rand(rows=1780, cols=180, min=1, max=20)
[indices, model] = dbscan(X = X, eps = 2.5, minPts = 360)

개선 사항

SystemDS 2.0.0은 새로운 이름으로 출시된 첫 번째 메이저 릴리스이다. 이 릴리스에는 대대적인 리팩토링, 몇 가지 주요 기능, 다수의 개선 사항 및 수정 사항, 그리고 엔드투엔드 데이터 과학 생명 주기를 더 잘 지원하기 위한 몇 가지 실험적 기능이 포함되어 있다. 또한, 이 릴리스에서는 더 이상 사용되지 않거나 구식이 된 여러 기능이 제거되었다.

기여

Apache SystemDS는 코드 기여, 질문 및 답변, 커뮤니티 구축 또는 홍보 활동을 환영한다. 기여자 가이드는 https://github.com/apache/systemds/blob/main/CONTRIBUTING.md 에서 확인할 수 있다.

같이 보기

각주

  1. ↑ 《Apache SystemDS》, 아파치 소프트웨어 재단, 2022년 2월 24일, 2022년 3월 6일에 확인함
  2. ↑ SystemDS, Apache. “SystemML 1.2.0 Release Notes” (영어). 《systemds.apache.org》. 2021년 2월 26일에 확인함.

외부 링크