Apache SystemDS - Apache SystemDS
Vývojáři | Apache Software Foundation , IBM |
---|---|
První vydání | 2. listopadu 2015 |
Stabilní uvolnění | 2.0.0 / 22. října 2020
|
Úložiště | Repozitář SystemDS |
Napsáno | Java , Python , deskriptivní strojové učení, C. |
Operační systém | Linux , macOS , Windows |
Typ | Strojové učení , hluboké učení , datová věda |
Licence | Licence Apache 2.0 |
webová stránka | systemds |
Apache SystemDS (dříve Apache SystemML) je flexibilní systém strojového učení, který se automaticky přizpůsobuje klastrům Spark a Hadoop . Rozlišovací vlastnosti SystemDS jsou:
- Přizpůsobitelnost algoritmu prostřednictvím jazyků podobných R a Pythonu.
- Několik režimů provádění, včetně samostatných, Spark Batch, Spark MLContext, Hadoop Batch a JMLC.
- Automatická optimalizace založená na datech a charakteristikách klastrů k zajištění účinnosti a škálovatelnosti
Dějiny
SystemML byl vytvořen v roce 2010 vědci z IBM Almaden Research Center pod vedením IBM Fellow Shivakumar Vaithyanathan. Bylo zjištěno, že vědci v oblasti dat budou pro malá data psát algoritmy strojového učení v jazycích, jako jsou R a Python . Když nastal čas škálovat na velká data, byl by potřebný systémový programátor pro škálování algoritmu v jazyce, jako je Scala . Tento proces obvykle zahrnoval dny nebo týdny na iteraci a došlo by k chybám při překládání algoritmů tak, aby fungovaly na velkých datech. SystemML se snaží tento proces zjednodušit. Primárním cílem SystemML je automatické škálování algoritmu napsaného v jazyce podobném R nebo Pythonu tak, aby fungoval na velkých datech, generování stejné odpovědi bez přístupu s více iterativními překlady náchylnými k chybám.
15. června 2015 na konferenci Spark Summit v San Francisku Beth Smith, generální ředitel IBM Analytics, oznámila, že IBM získává SystemML v rámci hlavního závazku IBM k projektům Apache Spark a Spark. SystemML se stal veřejně dostupným na GitHubu 27. srpna 2015 a projektem Apache Incubator se stal 2. listopadu 2015. Dne 17. května 2017 schválila správní rada Apache Software Foundation absolvování programu Apache SystemML jako projekt nejvyšší úrovně Apache.
Klíčové technologie
Následují některé z technologií zabudovaných do motoru SystemDS.
- Komprimovaná lineární algebra pro strojové učení ve velkém měřítku
- Deklarativní jazyk strojového učení
Příklady
Následující fragment kódu provádí analýzu hlavní komponenty vstupní matice , která vrací a .
# PCA.dml
# Refer: https://github.com/apache/systemds/blob/master/scripts/algorithms/PCA.dml#L61
N = nrow(A);
D = ncol(A);
# perform z-scoring (centering and scaling)
A = scale(A, center==1, scale==1);
# co-variance matrix
mu = colSums(A)/N;
C = (t(A) %*% A)/(N-1) - (N/(N-1))*t(mu) %*% mu;
# compute eigen vectors and values
[evalues, evectors] = eigen(C);
Vyvolávací skript
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
Vylepšení
SystemDS 2.0.0 je první hlavní vydání pod novým názvem. Toto vydání obsahuje hlavní refaktoring, několik hlavních funkcí, velké množství vylepšení a oprav a některé experimentální funkce pro lepší podporu životního cyklu end-to-end datové vědy. Kromě toho toto vydání také odstraňuje několik funkcí, které nejsou aktuální a zastaralé.
- Nový mechanismus pro funkce s DML (na úrovni skriptu)
builtin
a množství nových vestavěných funkcí pro předzpracování dat, včetně čištění dat, technik augmentace a inženýrství funkcí, nových algoritmů ML a ladění modelů. - Bylo implementováno několik metod čištění dat, včetně vícenásobných imputací s vícenásobnou imputací řetězovými rovnicemi (MICE) a dalších technik, SMOTE, technika převzorkování pro nevyváženost tříd, dopředné a zpětné plnění NA, čištění pomocí schématu a informací o délce, podpora detekce odlehlých hodnot pomocí směrodatné odchylky a mezikvartilového rozsahu a zjišťování funkční závislosti.
- Kompletní rámec pro sledování a opětovné použití linie včetně podpory deduplikace smyčky, úplného a částečného opětovného použití, opětovného použití za pomoci kompilátoru, několika nových přepisů pro usnadnění opětovného použití.
- Nový federalizovaný runtime backend včetně podpory federované matric a rámy, Federální
builtin
s (transform-encode
,decode
atd.). - Balíček komprimace refaktorů a přidání funkcí včetně kvantování pro ztrátovou kompresi, operace binárních buněk, násobení levé matice. [experimentální]
- Nové vazby pythonu s podporou několika
builtin
s, maticových operací, federovaných tenzorů a stopových linií. - Implementace Cuda kumulativních kameniva operátorů (
cumsum
,cumprod
atd.) - Nová technika ladění modelů s vyhledávačem řezů.
- Nový tenzorový datový model (základní tenzory různých hodnotových typů, datové tenzory se schématem) [experimentální]
- Skripty pro cloudové nasazení pro AWS a skripty pro nastavení a spuštění federovaných operací.
- Zlepšení výkonu s
parallel sort
,gpu cum agg
,append cbind
atd. - Různá vylepšení kompilátoru a běhového prostředí, včetně nových a vylepšených přepisů, omezeného vytváření kontextu Spark, nového
eval
rámce, operací se seznamy, aktualizovaných knihoven nativního jádra, abychom jmenovali alespoň některé. - Nová čtečka / zapisovač dat pro
json
rámce a podporasql
jako zdroj dat. - Různá vylepšení: vylepšená dokumentace, lepší testování, skripty běhu / vydání, vylepšené balení, Docker kontejner pro systemds, podpora výrazů lambda, opravy chyb.
- Odebraný kompilátor MapReduce a běhový backend,
pydml
analyzátor, framework Java-UDF, debugger na úrovni skriptu. - Zastaralé
./scripts/algorithms
, protože tyto algoritmy budou postupně součástí SystemDSbuiltin
.
Příspěvky
SystemDS vítá příspěvky v podobě kódu, otázek a odpovědí, budování komunity nebo šíření informací. Průvodce pro přispěvatele je k dispozici na adrese https://github.com/apache/systemds/blob/master/CONTRIBUTING.md
Viz také
Reference
externí odkazy
- Web Apache SystemML
- IBM Research - SystemML
- Otázky a odpovědi se Shivem Vaithyanathanem, tvůrcem SystemML a IBM Fellow
- Univerzální překladač pro velká data a strojové učení
- SystemML: Deklarativní strojové učení v měřítku, prezentace Freda Reissa
- SystemML: Deklarativní strojové učení na MapReduce
- Strategie hybridní paralelizace pro strojové učení ve velkém měřítku v SystemML
- Optimalizátor SystemML: Generování plánu pro programy strojového učení ve velkém měřítku
- Systém IBM SystemML pro strojové učení se stal projektem Apache Incubator
- IBM daruje technologii strojového učení otevřené komunitě Apache Spark
- IBM SystemML jde vpřed jako projekt Apache inkubátoru