Návrh: Owl Scientific Computing - Draft:Owl Scientific Computing

Owl Scientific Computing
Sova sci lib logo.svg
Původní autořiLiang Wang
VývojářiKomunitní projekt
První vydání2016 (2016)
Stabilní uvolnění
1.0.0 / 11. listopadu 2020; Před 22 dny (2020-11-11)..[1]
NapsánoOCaml, C
Operační systémCross-platform
TypNumerická analýza
LicenceMIT

Owl Scientific Computing je softwarový systém pro vědecké a technické výpočty vyvinutý v Katedra informatiky a technologie, University of Cambridge.[2] Skupina System Research Group (SRG) v oddělení uznává Owl jako jeden z reprezentativních systémů vyvinutých v SRG v roce 2010.[3]Zdrojový kód je licencován pod licencí Licence MIT a lze k nim přistupovat z úložiště Github.[4]

Knihovna je většinou navržena a vyvinuta ve funkčním programovacím jazyce OCaml. Jako jedinečný funkční programovací jazyk nabízí OCaml runtime efektivitu, flexibilní modulový systém, statickou kontrolu typu, inteligentní garbage collector a výkonný odvození typu. Owl zdědí tyto funkce přímo z OCaml. S Owl mohou uživatelé psát stručné typově bezpečné numerické aplikace ve stručném funkčním jazyce bez obětování výkonu. Urychluje životní cyklus vývoje a snižuje náklady od prototypu po použití ve výrobě. Systém slouží jako de-facto nástroj pro výpočet náročných úkolů v OCaml.[5]

Dějiny

Sova byla vyvinuta, když Dr. Liang Wang pracoval jako postdoktor v laboratořích OCaml.[6]Sova vznikla z výzkumného projektu, který studoval návrh synchronních paralelních strojů pro rozsáhlé distribuované výpočty v červenci 2016. V té době byly knihovny pro numerické výpočty v ekosystému OCaml velmi omezené a nástroje byly v té době fragmentované. Aby bylo možné otestovat různé analytické aplikace, je třeba implementovat řadu numerických funkcí, od algebry a generátorů náhodných čísel na velmi nízké úrovni až po algoritmy vysoké diferenciace a hluboké neuronové sítě. Tyto fragmenty kódu se začaly hromadit. Tyto funkce byly později vyjmuty a zabaleny do samostatné knihovny s názvem Owl.

Owlova architektura na začátku provedla nejméně tucet iterací a některé architektonické změny jsou celkem drastické. Po ročním intenzivním vývoji byl Owl schopen provádět mnoho složitých numerických úkolů. např. klasifikace obrazu. Dr. Liang Wang uspořádal kurz na CUFP 2017, aby předvedl datovou vědu v OCaml.[7]V roce 2018 hovořil Dr. Richard Mortier o Sově v Alan Turing Institute.[8]Pro další propagaci OCaml a funkčního programování v oblasti vědy o datech poskytuje Owl bohaté výukové materiály ve formě podrobného manuálu.[9]

Design a funkce

Owl implementovala mnoho pokročilých numerických funkcí na vrcholu své implementace n-dimenzionálních polí. Ve srovnání s jinými numerickými knihovnami je Owl v mnoha ohledech jedinečný, např. algoritmická diferenciace a distribuované výpočty byly zahrnuty jako nedílné součásti základního systému, aby se maximalizovala produktivita vývojářů. Obrázek níže poskytuje ptačí pohled na systémovou architekturu Owl. Subsystém v levé části je Owl's Numerical system. Moduly obsažené v tomto subsystému spadají do tří kategorií.

Architektura numerické knihovny Owl.

První je základní moduly obsahující základní datové struktury, tj. N-dimenzionální pole (Ndarray) v husté i řídké formě. Modul Ndarray podporuje různé typy čísel: float32, float64, complex32, complex64, int16, int32 atd. Také základní modul poskytuje rozhraní cizích funkcí do jiných nízkoúrovňových numerických knihoven, jako jsou CBLAS a LAPACK. Tyto knihovny jsou plně propojeny s modulem lineární algebry.

Druhou kategorií jsou klasické analytické moduly. Tato část obsahuje základní matematické a statistické funkce, lineární algebra, regrese, optimalizace, vykreslování atd. Pokročilé matematické a statistické funkce, jako je statistické testování hypotéz a Markovský řetězec Monte Carlo jsou také zahrnuty. Jako základní funkce poskytuje Owl algoritmická diferenciace (nebo automatická diferenciace) a moduly grafu dynamického výpočtu.

Nejvyšší úroveň v architektuře Owl zahrnuje moduly pokročilejší numerické aplikace jako např nervová síť, zpracování přirozeného jazyka, zpracování dat atd. Systém Zoo se používá pro efektivní skriptování a sdílení kódu. Moduly ve druhé kategorii, zejména algoritmická diferenciace, činí kód na této úrovni velmi stručným.

Subsystém vpravo se nazývá Actor Subsystem, který rozšiřuje schopnost Owl na paralelní a distribuované výpočty. Základní myšlenkou je transformovat uživatelskou aplikaci z režimu sekvenčního provádění do režimu paralelního (pomocí různých výpočetních modulů) s minimálním úsilím. Metodou je sestavit dva subsystémy společně s funktory generovat paralelní verzi modulu definovaného v numerickém subsystému.

Kromě toho, co bylo uvedeno na tomto obrázku, má Owl několik dalších funkcí. Například JavaScript a unikernel backend, integrace s jinými rámci, jako např TensorFlow a PyTorch, využití GPU a dalších frameworků akcelerátoru prostřednictvím symbolického grafu atd.

Výzkum

Projekt Owl je zaměřen na výzkum a podporuje výzkum numerických výpočtů v několika souvisejících tématech. Některá z jeho výzkumných témat jsou uvedena níže.

  • Návrh synchronního paralelního distribuovaného strojového učení. Owl je první, kdo navrhuje použití vzorkování k synchronizaci uzlů v iterativních algoritmech. Práce publikovaná na serveru arxiv přichází s pevným matematickým důkazem.[10] Tato myšlenka se ukazuje jako pokročilá a byla později navržena na špičkových konferencích o strojovém učení.[11]
  • Jedním z faktorů, které přispívají k malé kódové základně Owl, je to, že kolem ní vytváří pokročilé analytické funkce algoritmická diferenciace. Tato myšlenka se také ukázala být populární a vyvinula se do paradigmatu Diferencovatelné programování. Nyní se používá v populárních numerických balíčcích, jako je JuliaDiff.[12]
  • Myšlenka složení a obsluhy na úrovni služeb byla zkoumána v subsystému Zoo Owl. Prototyp předvádí racionalizaci různých fází vývoje kódu, včetně složení, testu, distribuce, ověření a nasazení. Je to velmi podobné tomu pozdějšímu MLOps koncepty. Toto téma v poslední době přitahuje pozornost na špičkových systémových konferencích, jako je OSDI.[13]

Na základě výzkumu, který se řídil částí těchto směrů, Owl produkuje několik publikací. V roce 2018 je na ACM přijat dokument s názvem Data Analytics Service Composition and Deployment on Edge Devices SIGCOMM 2018 Workshop o analýze velkých dat a strojovém učení pro datové komunikační sítě.[14] Dvě přednášky jsou přijímány také v OCaml Workshopu Mezinárodní konference o funkčním programování 2019, k tématům řešení numerických obyčejných diferenciálních rovnic,[15] a provádění výpočtu Owl na GPU.[16]Stáž v OCaml Labs zkoumá téma segmentace obrazu a související optimalizace paměti v Owl.[17]

Viz také

Reference

  1. ^ "Vydání - owlbarn / sova". Citováno 2020-11-11 - přes GitHub.
  2. ^ „Owl, Scientific Computing for OCaml“. Citováno 2020-11-11.
  3. ^ „System Research Group“. Citováno 2020-11-11.
  4. ^ Úložiště Owlbarn GitHub, https://github.com/owlbarn/owl. Citováno 2020-11-01.
  5. ^ „OCamlverse: Machine Learning, Scientific Computing and Data Science“. Citováno 2020-11-05.
  6. ^ „OCaml Labs“. Citováno 2020-11-01.
  7. ^ „Owl: Data Science in OCaml“. Výukové programy CUFP. 2017. Citováno 2020-11-01.
  8. ^ „Návrh funkčního numerického softwaru“. Alan Turing Institute. 2018. Citováno 2020-11-05.
  9. ^ „OCaml Scientific Computing: Functional Programming Meets Data Science“. Tým sovy. 2020. Citováno 2020-11-18.
  10. ^ "Pravděpodobnostní synchronní paralelní". arxiv. 2017. Citováno 2020-11-18.
  11. ^ „Distribuované učení přes nespolehlivé sítě“. Sborník z výzkumu strojového učení. 2019. Citováno 2020-11-18.
  12. ^ „JuliaDiff“. Julie. 2019. Citováno 2020-11-18.
  13. ^ „Poskytování DNN jako Clockwork: Předvídatelnost výkonu zdola nahoru“. Usenix. 2020. Citováno 2020-11-18.
  14. ^ „Program workshopu BIG-DAMA 2018“. ACM. 2018. Citováno 2020-11-05.
  15. ^ „OwlDE: vytváření ODE prvotřídními občany Owl“. Workshop OCaml, ICFP 2019. 2019. Citováno 2020-11-11.
  16. ^ „Provádění výpočtu sov na GPU a TPU“. Workshop OCaml, ICFP 2019. 2019. Citováno 2020-11-11.
  17. ^ „Osobní web, Pierre Vandenhove“. 2018. Citováno 2020-11-05.