Apache SystemDS - Apache SystemDS

Apache SystemDS
Logo Apache SystemML
Vývojáři Apache Software Foundation , IBM
První vydání 2. listopadu 2015 ; před 5 lety ( 02.11.2015 )
Stabilní uvolnění
2.0.0 / 22. října 2020 ; Před 8 měsíci ( 2020-10-22 )
Ú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 .org

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:

  1. Přizpůsobitelnost algoritmu prostřednictvím jazyků podobných R a Pythonu.
  2. Několik režimů provádění, včetně samostatných, Spark Batch, Spark MLContext, Hadoop Batch a JMLC.
  3. 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.

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) builtina 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í builtins ( transform-encode, decodeatd.).
  • 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 builtins, maticových operací, federovaných tenzorů a stopových linií.
  • Implementace Cuda kumulativních kameniva operátorů ( cumsum, cumprodatd.)
  • 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 cbindatd.
  • 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 evalrámce, operací se seznamy, aktualizovaných knihoven nativního jádra, abychom jmenovali alespoň některé.
  • Nová čtečka / zapisovač dat pro jsonrámce a podpora sqljako 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, pydmlanalyzátor, framework Java-UDF, debugger na úrovni skriptu.
  • Zastaralé ./scripts/algorithms, protože tyto algoritmy budou postupně součástí SystemDS builtin.

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