| 개발자 | 아파치 소프트웨어 재단, IBM |
|---|---|
| 발표일 | 2015년 11월 2일 |
| 안정화 버전 | 3.0.0
/ 2022년 7월 5일 |
| 저장소 | SystemDS 저장소 |
| 프로그래밍 언어 | 자바, 파이썬, DML, C |
| 운영 체제 | 리눅스, macOS, 윈도우 |
| 종류 | 머신 러닝, 딥러닝, 데이터 과학 |
| 라이선스 | 아파치 라이선스 2.0 |
| 웹사이트 | systemds |
Apache SystemDS는 엔드투엔드 데이터 과학 생명 주기를 위한 오픈 소스 머신 러닝 시스템이다.
SystemDS의 주요 특징은 다음과 같다.
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은 새로운 이름으로 출시된 첫 번째 메이저 릴리스이다. 이 릴리스에는 대대적인 리팩토링, 몇 가지 주요 기능, 다수의 개선 사항 및 수정 사항, 그리고 엔드투엔드 데이터 과학 생명 주기를 더 잘 지원하기 위한 몇 가지 실험적 기능이 포함되어 있다. 또한, 이 릴리스에서는 더 이상 사용되지 않거나 구식이 된 여러 기능이 제거되었다.
builtin 함수를 위한 새로운 메커니즘, 데이터 클리닝, 증강 및 특성 공학 기술, 새로운 머신 러닝 알고리즘, 모델 디버깅을 포함한 데이터 전처리를 위한 풍부한 새로운 내장 함수 추가.builtin(transform-encode, decode 등)을 포함한 새로운 연합 런타임 백엔드.builtin, 행렬 연산, 연합 텐서 및 계보 추적을 지원하는 새로운 파이썬 바인딩.cumsum, cumprod 등)의 Cuda 구현.parallel sort, gpu cum agg, append cbind 등을 통한 성능 향상.eval 프레임워크, 리스트 연산, 업데이트된 네이티브 커널 라이브러리 등을 포함한 다양한 컴파일러 및 런타임 개선.json 프레임을 위한 새로운 데이터 읽기/쓰기 도구 및 데이터 소스로서의 sql 지원.pydml 파서, Java-UDF 프레임워크, 스크립트 수준 디버거 제거../scripts/algorithms는 점진적으로 SystemDS builtin의 일부가 될 예정이므로 사용 중단(Deprecated).Apache SystemDS는 코드 기여, 질문 및 답변, 커뮤니티 구축 또는 홍보 활동을 환영한다. 기여자 가이드는 https://github.com/apache/systemds/blob/main/CONTRIBUTING.md 에서 확인할 수 있다.