Python Gateway ve společnosti InterSystems IRIS

Tento článek je o Python Gateway, open source komunitním projektu pro datovou platformu InterSystems IRIS. Tento projekt vám umožňuje organizovat jakékoli algoritmy strojového učení vytvořené v Pythonu (hlavní prostředí pro mnoho Data Scientists), používat četné hotové knihovny k rychlému vytváření adaptivních, robotických analytických řešení AI / ML na platformě InterSystems IRIS. V tomto článku vám ukážu, jak může InterSystems IRIS organizovat procesy Pythonu, provádět efektivní obousměrný přenos dat a vytvářet inteligentní obchodní procesy.

Plán

  1. Úvod
  2. Nástroje.
  3. Instalace.
  4. API.
  5. Interoperabilita.
  6. Notebook Jupyter.
  7. Závěry.
  8. Reference
  9. M.L. Toolkit.

úvod

Python je univerzální programovací jazyk na vysoké úrovni zaměřený na zlepšení produktivity vývojářů a čitelnosti kódu. V této sérii článků budu hovořit o možnostech využití jazyka Python na platformě InterSystems IRIS, přičemž hlavní náplní tohoto článku je využití Pythonu jako jazyka pro tvorbu a aplikaci modelů strojového učení.

Strojové učení (ML) je třída metod umělé inteligence, jejichž charakteristickým rysem není přímé řešení problému, ale učení v procesu řešení mnoha podobných problémů.

Algoritmy a modely strojového učení jsou stále běžnější. Existuje pro to mnoho důvodů, ale vše závisí na dostupnosti, jednoduchosti a dosahování praktických výsledků. Je shlukování nebo dokonce modelování neuronové sítě novou technologií?

To samozřejmě ne, ale v dnešní době není potřeba psát statisíce řádků kódu pro provoz jednoho modelu a náklady na tvorbu a používání modelů jsou stále menší.

Nástroje se vyvíjejí – i když nemáme nástroje AI/ML plně orientované na GUI, je také vidět pokrok, který jsme viděli u mnoha jiných tříd informačních systémů, jako je BI (od psaní kódu po používání rámců a konfigurovatelných řešení orientovaných na GUI). v nástrojích pro tvorbu AI/ML. Už jsme prošli fází psaní kódu a dnes používáme frameworky pro vytváření a trénink modelů.

Další vylepšení, jako je schopnost propagovat předem trénovaný model, kdy koncový uživatel musí jednoduše dokončit trénování modelu na svých konkrétních datech, také usnadňují zahájení aplikace strojového učení. Díky těmto pokrokům je mnohem snazší naučit se strojové učení, a to jak pro profesionály, tak pro společnosti jako celek.

Na druhou stranu sbíráme stále více dat. Díky jednotné datové platformě, jako je InterSystems IRIS, lze všechny tyto informace okamžitě připravit a použít jako vstup pro modely strojového učení.

S přechodem na cloud je spouštění projektů AI/ML snazší než kdy dříve. Můžeme spotřebovávat pouze zdroje, které potřebujeme. Navíc díky paralelizaci nabízené cloudovými platformami můžeme ušetřit promarněný čas.

Ale co výsledky? Tady se věci zkomplikují. Existuje mnoho nástrojů pro stavbu modelů, kterým se budu věnovat dále. Sestavit dobrý model není snadné, ale co dál? Netriviální úkol je také profitovat z používání modelu v podniku. Kořenem problému je oddělení analytické a transakční zátěže a datových modelů. Když trénujeme model, obvykle to děláme na historických datech. Místo pro konstruovaný model je ale v transakčním zpracování dat. K čemu je nejlepší model detekce podvodných transakcí, když jej spouštíme jednou denně? Podvodníci už s penězi odešli. Potřebujeme model trénovat na historických datech, ale také jej musíme aplikovat v reálném čase na nová příchozí data, aby naše obchodní procesy mohly fungovat podle předpovědí vytvořených modelem.

ML Toolkit je sada nástrojů, která dělá právě to: spojuje modely dohromady a transakční prostředí, takže modely, které vytvoříte, lze snadno použít přímo ve vašich obchodních procesech. Python Gateway je součástí sady ML Toolkit a poskytuje integraci s jazykem Python (podobně jako R Gateway, součástí sady ML Toolkit je integrace s jazykem R).

Sada nástrojů

Než budeme pokračovat, rád bych popsal několik nástrojů a knihoven Pythonu, které budeme používat později.

Technologie

  • Python je interpretovaný univerzální programovací jazyk na vysoké úrovni. Hlavní výhodou jazyka je velká knihovna matematických, ML a AI knihoven. Stejně jako ObjectScript je to objektově orientovaný jazyk, ale vše je definováno dynamicky, nikoli staticky. Všechno je také objekt. Pozdější články předpokládají průběžnou znalost jazyka. Pokud se chcete začít učit, doporučuji začít s dokumentace.
  • Pro naše další cvičení nastavte Python 3.6.7 64bit.
  • IDE: Používám PyCharm, ale obecně много. Pokud používáte Atelier, existuje plugin Eclipse pro vývojáře Pythonu. Pokud používáte VS Code, pak existuje rozšíření pro Python.
  • Notebook: Místo IDE můžete psát a sdílet své skripty v online poznámkových blokech. Nejoblíbenější z nich je jupyter.

knihovny

Zde je (částečný) seznam knihoven strojového učení:

  • nemotorný — základní balíček pro přesné výpočty.
  • Pandy — vysoce výkonné datové struktury a nástroje pro analýzu dat.
  • matplotlib - Tvorba grafů.
  • mořský - vizualizace dat založená na matplotlib.
  • Sklearn — metody strojového učení.
  • XGBoost — Algoritmy strojového učení v rámci metodologie Gradient Boosting.
  • Gensim — NLP.
  • Keras - neuronové sítě.
  • tenzorový tok je platforma pro vytváření modelů strojového učení.
  • PyTorch je platforma pro tvorbu modelů strojového učení zaměřená na Python.
  • Nyoka - PMML z různých modelů.

Technologie AI/ML činí podnikání efektivnější a přizpůsobivější. Navíc se dnes tyto technologie vyvíjejí a zavádějí snadněji. Začněte se učit o technologiích AI/ML a o tom, jak mohou pomoci vaší organizaci růst.

Instalace

Existuje několik způsobů, jak nainstalovat a používat Python Gateway:

  • OS
    • Windows
    • Linux
    • Mac
  • přístavní dělník
    • Použijte obrázek z DockerHubu
    • Vytvořte si vlastní obrázek

Bez ohledu na způsob instalace budete potřebovat zdrojový kód. Jediným místem pro stažení kódu je stránka vydání. Obsahuje testované stabilní verze, stačí si vzít to nejnovější. Momentálně je to 0.8, ale časem přibudou nové. Neklonujte/nestahujte úložiště, stáhněte si nejnovější verzi.

OS

Pokud instalujete Python Gateway na operační systém, pak nejprve (bez ohledu na operační systém) budete muset nainstalovat Python. Pro tohle:

  1. Nainstalujte Python 3.6.7 64bit. Doporučuje se nainstalovat Python do výchozího adresáře.
  2. Nainstalujte modul dill: pip install dill.
  3. Stáhněte si kód ObjectScript (tj. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) do jakékoli oblasti s produkty. V případě, že chcete, aby existující oblast podporovala produkty, spusťte: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Místo popis DLL/SO/DYLIB do složky bin vaší instanci InterSystems IRIS. Soubor knihovny musí být dostupný v cestě, kterou vrací write ##class(isc.py.Callout).GetLib().

Windows

  1. Ujistěte se, že proměnná prostředí je PYTHONHOME odkazuje na Python 3.6.7.
  2. Ujistěte se, že je proměnná prostředí systému PATH obsahuje proměnnou PYTHONHOME (nebo adresář, na který odkazuje).

Linux (Debian/Ubuntu)

  1. Zkontrolujte, zda je proměnná prostředí PATH obsahuje /usr/lib и /usr/lib/x86_64-linux-gnu. Použijte soubor /etc/environment k nastavení proměnných prostředí.
  2. V případě chyb undefined symbol: _Py_TrueStruct nastavte nastavení PythonLib... také v readme je zde sekce Odstraňování problémů.

Mac

  1. V současné době je podporován pouze python 3.6.7 python.org. Zkontrolujte proměnnou PATH.

Pokud jste změnili proměnné prostředí, restartujte produkt InterSystems.

přístavní dělník

Používání kontejnerů má řadu výhod:

  • Přenosnost
  • Účinnost
  • Izolace
  • světlost
  • Neměnnost

Podívejte se na toto sérii článků Další informace o používání Dockeru s produkty InterSystems.

Všechna sestavení Python Gateway jsou aktuálně založena na kontejnerech. 2019.4.

Připravený obrázek

Běh: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:lateststáhnout a spustit Python Gateway s InterSystems IRIS Community Edition. To je vše.

Vytvořte si vlastní obrázek

Chcete-li vytvořit bitovou kopii dockeru, spusťte v kořenovém adresáři úložiště: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Ve výchozím nastavení je obrázek vytvořen na základě obrázku store/intersystems/iris-community:2019.4.0.383.0, můžete to však změnit nastavením proměnné IMAGE.
Chcete-li sestavit z InterSystems IRIS, spusťte: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest'.

Poté můžete spustit obraz dockeru:

docker run -d 
  -p 52773:52773 
  -v /<HOST-DIR-WITH-iris.key>/:/mount 
  --name irispy 
  intersystemscommunity/irispy:latest 
  --key /mount/iris.key

Pokud používáte obraz založený na InterSystems IRIS Community Edition, nemusíte zadávat klíč.

Komentáře

  • Testovací proces isc.py.test.Process uloží určitý počet obrázků do dočasného adresáře. Možná budete chtít změnit tuto cestu na připojený adresář. Chcete-li to provést, upravte nastavení WorkingDir určení připojeného adresáře.
  • Pro přístup k terminálu spusťte: docker exec -it irispy sh.
  • Přístup k portálu správy systému přihlášením SuperUser/SYS.
  • Chcete-li zastavit kontejner, spusťte: docker stop irispy && docker rm --force irispy.

Kontrola instalace

Jakmile nainstalujete Python Gateway, vyplatí se zkontrolovat, zda funguje. Spusťte tento kód v terminálu InterSystems IRIS:

set sc = ##class(isc.py.Callout).Setup() 
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
write var

Výsledek by měl být HELLO - hodnota proměnné Pythonu x. Pokud je stav návratu sc je chyba resp var prázdný, zkontrolovat Readme – část Odstraňování problémů.

API

Python Gateway je nainstalována a ověřili jste, že funguje. Je čas to začít používat!
Hlavním rozhraním Pythonu je isc.py.Main. Nabízí následující skupiny metod (všechny návrat %Status):

  • Spuštění kódu
  • Přenos dat
  • Pomocný

Spuštění kódu

Tyto metody umožňují spouštět libovolný kód Pythonu.

SimpleString

SimpleString je hlavní metodou. Vyžaduje 4 volitelné argumenty:

  • code je řádek kódu, který se má provést. Znak odřádkování: $c(10).
  • returnVariable je název proměnné, která se má vrátit.
  • serialization - jak serializovat returnVariable. 0 - řetězec (výchozí), 1 - repr.
  • result - ByRef odkaz na proměnnou, do které je zapsána hodnota returnVariable.

Výše jsme provedli:

set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).

V tomto příkladu přiřazujeme proměnné Pythonu x hodnota Hello a chcete vrátit hodnotu proměnné Pythonu x do proměnné ObjectScript var.

ExecuteCode

ExecuteCode je bezpečnější a méně omezující alternativa SimpleString.
Řádky v platformě InterSystems IRIS jsou omezeny na 3 641 144 znaků, a pokud chcete spustit delší část kódu, musíte použít streamy.
Chce to dva argumenty:

  • code — řetězec nebo proud kódu Python, který se má provést.
  • variable - (nepovinné) přiřadí výsledek provedení code tuto proměnnou Pythonu.

Doporučit použití:

set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").

V tomto příkladu vynásobíme 2 x 3 a výsledek uložíme do proměnné Pythonu y.

Přenos dat

Předávat data do az Pythonu.

Python -> InterSystems IRIS

Existují 4 způsoby, jak získat hodnotu proměnné Pythonu v InterSystems IRIS, v závislosti na serializaci, kterou potřebujete:

  • String pro jednoduché datové typy a ladění.
  • Repr pro ukládání jednoduchých objektů a ladění.
  • JSON pro snadnou manipulaci s daty na straně InterSystems IRIS.
  • Pickle zachránit předměty.

Tyto metody vám umožňují přijímat proměnné z Pythonu jako řetězec nebo jako proudy.

  • GetVariable(variable, serialization, .stream, useString) - dostat serialization proměnná variable в stream. Pokud useString je 1 a serializace je umístěna do řetězce, pak je vrácen řetězec, nikoli proud.
  • GetVariableJson(variable, .stream, useString) — získat serializaci proměnné JSON.
  • GetVariablePickle(variable, .stream, useString, useDill) -Získejte serializaci proměnné Pickle (nebo Dill).

Zkusme získat naši proměnnou y.

set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6

InterSystems IRIS -> Python

Načítání dat z InterSystems IRIS do Pythonu.

  • ExecuteQuery(query, variable, type, namespace) - vytvoří datovou sadu (pandy dataframe nebo list) z dotazu sql a nastavte jej na proměnnou python variable. Igelitová taška isc.py by měly být dostupné v oblasti namespace - tam bude požadavek vyřízen.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - načte globální data global z dolního indexu start na end v Pythonu jako typová proměnná type: list, nebo pandy dataframe. Popis volitelných argumentů mask a labels k dispozici v dokumentaci třídy a úložišti Dokumenty k přenosu dat.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - načte data třídy class z id start na end v Pythonu jako typová proměnná type: list, nebo pandy dataframe. properties — seznam (oddělený čárkou) vlastností třídy, které mají být načteny do datové sady. Masky podporovány * и ?. Výchozí – * (všechny vlastnosti). Vlastnictví %%CLASSNAME je ignorován.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - načte data tabulky table z id start na end v pythonu.

ExecuteQuery - univerzální (všechny platné SQL dotazy budou předány Pythonu). Nicméně, ExecuteGlobal a jeho zábaly ExecuteClass и ExecuteTable pracovat s řadou omezení. Jsou mnohem rychlejší (3-5krát rychlejší než ovladač ODBC a 20krát rychlejší než ExecuteQuery). Více informací v Dokumenty k přenosu dat.
Všechny tyto metody podporují přenos dat z libovolné oblasti. Igelitová taška isc.py musí být k dispozici v cílové oblasti.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - předání výsledků jakéhokoli platného SQL dotazu do Pythonu. Toto je nejpomalejší způsob přenosu dat. Použijte jej, pokud ExecuteGlobal a jeho obaly nejsou k dispozici.

Argumenty:

  • query - sql dotaz.
  • variable - název proměnné Pythonu, do které se zapisují data.
  • type - list nebo pandy dataframe.
  • namespace - oblast, ve které bude požadavek vyřízen.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - předání globální do Pythonu.

Argumenty:

  • global je jméno globálního bez ^
  • variable - název proměnné Pythonu, do které se zapisují data.
  • type - list nebo pandy dataframe.
  • start — první dolní index globální. Nezbytně %Integer.
  • end je poslední dolní index globální. Nezbytně %Integer.
  • mask — maska ​​globálních hodnot. Maska může být kratší než celkový počet polí (v takovém případě budou pole na konci přeskočena). Jak naformátovat masku:
    • + předat hodnotu tak, jak je.
    • - přeskočit hodnotu.
    • b — booleovský typ (0 - False, všechen zbytek - True).
    • d — Datum (od $horolog, na Windows od roku 1970, na Linuxu od roku 1900).
    • t - Čas ($horolog, sekundy po půlnoci).
    • m — Časové razítko (formátový řetězec ROK-MĚSÍC-DEN HOUR:MINUTE:SECOND).
  • labels - %Seznam názvů sloupců. Prvním prvkem je název dolního indexu.
  • namespace - oblast, ve které bude požadavek vyřízen.

ExecuteClass

zabalit se ExecuteGlobal. Připraví volání na základě definice třídy ExecuteGlobal a volá ho.

ExecuteClass(class, variable, type, start, end, properties, namespace) - předávání dat třídy do Pythonu.

Argumenty:

  • class - jméno třídy
  • variable - název proměnné Pythonu, do které se zapisují data.
  • type - list nebo pandy dataframe.
  • start — počáteční Id.
  • end - konečné id
  • properties — seznam (oddělený čárkou) vlastností třídy, které mají být načteny do datové sady. Masky podporovány * и ?. Výchozí – * (všechny vlastnosti). Vlastnictví %%CLASSNAME je ignorován.
  • namespace - oblast, ve které bude požadavek vyřízen.

Všechny vlastnosti jsou předány tak, jak jsou, kromě vlastností typu %Date, %Time, %Boolean и %TimeStamp - jsou převedeny na odpovídající třídy Pythonu.

ExecuteTable

zabalit se ExecuteClass. Přeloží název tabulky na název třídy a zavolá ExecuteClass. Podpis:

ExecuteTable(table, variable, type, start, end, properties, namespace) - předávání dat tabulky do Pythonu.

Argumenty:

  • table - název tabulky.
    Všechny ostatní argumenty jsou předány tak, jak jsou. ExecuteClass.

Poznámky

  • ExecuteGlobal, ExecuteClass и ExecuteTable pracovat stejně rychle.
  • ExecuteGlobal 20krát rychlejší než ExecuteQuery na velkých souborech dat (doba přenosu >0.01 sekundy).
  • ExecuteGlobal, ExecuteClass и ExecuteTable práce na globalech s touto strukturou: ^global(key) = $lb(prop1, prop2, ..., propN) kde key je celé číslo.
  • pro ExecuteGlobal, ExecuteClass и ExecuteTable podporovaný rozsah hodnot %Date odpovídá rozsahu mktime a záleží na OSokna: 1970-01-01, linux 1900 01--01, gumák). Použití %TimeStamppředávat data mimo tento rozsah nebo použít datový rámec pandas jako toto omezení je pouze pro seznam.
  • pro ExecuteGlobal, ExecuteClass и ExecuteTable všechny argumenty kromě zdroje dat (globálního, třídy nebo tabulky) a proměnné jsou volitelné.

Příklady

zkušební třída isc.py.test.Person obsahuje metodu, která demonstruje všechny možnosti přenosu dat:

set global = "isc.py.test.PersonD"
set class = "isc.py.test.Person"
set table = "isc_py_test.Person"
set query = "SELECT * FROM isc_py_test.Person"

// Общие аргументы
set variable = "df"
set type = "dataframe"
set start = 1
set end = $g(^isc.py.test.PersonD, start)

// Способ 0: ExecuteGlobal без аргументов
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 0, type)

// Способ 1: ExecuteGlobal с аргументами    
// При передаче глобала названия полей задаются вручную
// globalKey - название сабсткрипта 
set labels = $lb("globalKey", "Name", "DOB", "TS", "RandomTime", "AgeYears", "AgeDecimal", "AgeDouble", "Bool")

// mask содержит на 1 элемент меньше чем labels потому что "globalKey" - название сабскипта
// Пропускаем %%CLASSNAME
set mask = "-+dmt+++b"

set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 1, type, start, end, mask, labels)

// Способ 2: ExecuteClass
set sc = ##class(isc.py.Main).ExecuteClass(class, variable _ 2, type, start, end)

// Способ 3: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteTable(table, variable _ 3, type, start, end)

// Способ 4: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteQuery(query, variable _ 4, type)

metoda volání do ##class(isc.py.test.Person).Test() abyste viděli, jak fungují všechny metody přenosu dat.

Pomocné metody

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - získat informace o proměnné: zda je definována, třída a délka serializace.
  • GetVariableDefined(variable, .defined) - zda je proměnná definována.
  • GetVariableType(variable, .type) - získat třídu proměnné.
  • GetStatus() - získat a odstranit poslední výjimku na straně Pythonu.
  • GetModuleInfo(module, .imported, .alias) — získat proměnnou modulu a stav importu.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - získat informace o funkci.

Interoperabilita

Naučili jste se volat Python Gateway z terminálu, nyní ji začněme používat v produkci. Základem pro interakci s Pythonem v tomto režimu je isc.py.ens.Operation. Umožňuje nám:

  • Spusťte kód Python
  • Uložit/obnovit kontext Pythonu
  • Načítání a přijímání dat z Pythonu

Operace v Pyhtonu je v zásadě obalem isc.py.Main. Úkon isc.py.ens.Operation umožňuje interakci s procesem Python z produktů InterSystems IRIS. Je podporováno pět požadavků:

  • isc.py.msg.ExecutionRequest pro spuštění kódu Pythonu. se vrací isc.py.msg.ExecutionResponse s výsledkem provedení a hodnotami požadovaných proměnných.
  • isc.py.msg.StreamExecutionRequest pro spuštění kódu Pythonu. se vrací isc.py.msg.StreamExecutionResponse výsledek provedení a hodnoty požadovaných proměnných. Analogový isc.py.msg.ExecutionRequest, ale místo řetězců přijímá a vrací proudy.
  • isc.py.msg.QueryRequest k přenosu výsledku provedení SQL dotazu. se vrací Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest k předání globálních/třídních/tabulkových dat. se vrací Ens.Response.
  • isc.py.msg.SaveRequest pro uložení kontextu Pythonu. se vrací Ens.StringResponse s ID kontextu.
  • isc.py.msg.RestoreRequest k obnovení kontextu Pythonu.

    Kromě toho, isc.py.ens.Operation má dvě nastavení:

    • Initializer - výběr třídy, která implementuje rozhraní isc.py.init.Abstract. Lze jej použít k načtení funkcí, modulů, tříd a podobně. Provede se jednou při spuštění procesu.
    • PythonLib - (Pouze Linux), pokud vidíte chyby při zavádění, nastavte jeho hodnotu na libpython3.6m.so nebo dokonce v úplné cestě ke knihovně Python.

Tvorba podnikových procesů

K dispozici jsou dvě třídy, které usnadňují vývoj obchodních procesů:

  • isc.py.ens.ProcessUtils umožňuje extrahovat anotace z aktivit s proměnnou substitucí.
  • isc.py.util.BPEmulator usnadňuje testování obchodních procesů pomocí Pythonu. Může spustit obchodní proces (části Pythonu) v aktuálním procesu.

Variabilní substituce

Všechny obchodní procesy zděděné z isc.py.ens.ProcessUtils, může použít metodu GetAnnotation(name) získat hodnotu anotace aktivity podle jejího názvu. Anotace aktivity může obsahovat proměnné, které budou vyhodnoceny na straně InterSystems IRIS před předáním do Pythonu. Zde je syntaxe pro substituci proměnné:

  • ${class:method:arg1:...:argN} - volání metody
  • #{expr} - spustit kód v jazyce ObjectScript.

Příklad je k dispozici v testovacím obchodním procesu isc.py.test.Process, například v činnosti Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). V tomto příkladu:

  • #{process.WorkDirectory} vrátí vlastnost WorkDirectory objektu process, což je instance třídy isc.py.test.Process těch. aktuální obchodní proces.
  • ${%PopulateUtils:Integer:1:100} volá metodu Integer třída %PopulateUtils, předávání argumentů 1 и 100, vrací náhodné celé číslo v rozsahu 1...100.

Otestujte obchodní proces

Testovací produkce a testovací obchodní proces jsou standardně dostupné jako součást Python Gateway. Chcete-li je použít:

  1. V terminálu OS spusťte: pip install pandas matplotlib seaborn.
  2. V terminálu InterSystems IRIS spusťte: do ##class(isc.py.test.CannibalizationData).Import() k naplnění testovacích dat.
  3. Spustit produkty isc.py.test.Production.
  4. Odeslat typ požadavku Ens.Request в isc.py.test.Process.

Pojďme se společně podívat, jak to všechno funguje. OTEVŘENO isc.py.test.Process v editoru BPL:

Python Gateway ve společnosti InterSystems IRIS

Spuštění kódu

Nejdůležitějším voláním je provedení kódu Pythonu:

Python Gateway ve společnosti InterSystems IRIS

Použitá žádost isc.py.msg.ExecutionRequest, zde jsou jeho vlastnosti:

  • Code — Python kód.
  • SeparateLines - zda rozdělit kód do řádků pro provedení. $c(10) (n) se používá k oddělení řetězců. Všimněte si, že NEDOPORUČUJEME zpracovávat celou zprávu najednou, tato funkce je pouze pro zpracování def a podobné víceřádkové výrazy. Výchozí 0.
  • Variables je čárkami oddělený seznam proměnných, které budou přidány do odpovědi.
  • Serialization - Jak serializovat proměnné, které chceme vrátit. Možnosti: Str, Repr, JSON, Pickle и Dill, výchozí Str.

V našem případě nastavujeme pouze vlastnost Code, takže všechny ostatní vlastnosti používají své výchozí hodnoty. Zavolali jsme to process.GetAnnotation("Import pandas"), který za běhu vrací anotaci po provedení substituce proměnné. Konečně kód import pandas as pd budou předány Pythonu. GetAnnotation může být užitečné pro získávání víceřádkových skriptů Pythonu, ale pro tento způsob získávání kódu neexistují žádná omezení. Můžete nastavit vlastnost Code jakýmkoli způsobem, který je pro vás pohodlný.

Získávání proměnných

Další zajímavá výzva k použití isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway ve společnosti InterSystems IRIS

Vypočítá korelační matici na straně Pythonu a extrahuje proměnnou corrmat zpět na InterSystems IRIS ve formátu JSON nastavením vlastností požadavku:

  • Variables: "corrmat"
  • Serialization: "JSON"

Výsledky můžeme vidět ve Visual Trace:

Python Gateway ve společnosti InterSystems IRIS

A pokud potřebujeme tuto hodnotu v BP, lze ji získat takto: callresponse.Variables.GetAt("corrmat").

Přenos dat

Dále si promluvme o přenosu dat z InterSystems IRIS do Pythonu, všechny požadavky na přenos dat implementují rozhraní isc.py.msg.DataRequest, který poskytuje následující vlastnosti:

  • Variable je proměnná Pythonu, do které se zapisují data.
  • Type - typ proměnné: dataframe (dataframe pandy) popř list.
  • Namespace - oblast, ze které přijímáme data. Igelitová taška isc.py by měl být v této oblasti dostupný. Může se jednat o oblast bez podpory produktu.

Na základě tohoto rozhraní jsou implementovány 4 třídy požadavků:

  • isc.py.msg.QueryRequest - nastavená vlastnost Query k odeslání SQL dotazu.
  • isc.py.msg.ClassRequest - nastavená vlastnost Class předat data třídy.
  • isc.py.msg.TableRequest - nastavená vlastnost Table předat data tabulky.
  • isc.py.msg.GlobalRequest - nastavená vlastnost Global pro globální přenos dat.

V procesu testování se podívejte na aktivitu RAWKde isc.py.msg.QueryRequest ukázáno v akci.

Python Gateway ve společnosti InterSystems IRIS

Uložení/obnovení kontextu Pythonu

Nakonec můžeme uložit kontext Pythonu v InterSystems IRIS, abychom to udělali, odešleme isc.py.msg.SaveRequest s argumenty:

  • Mask — Uloží se pouze proměnné, které vyhovují masce. Podporováno * и ?. Příklad: "Data*, Figure?"... Výchozí *.
  • MaxLength — Maximální délka uložené proměnné. Pokud je serializace proměnné delší, bude ignorována. Nastavením na 0 získáte proměnné libovolné délky. Výchozí $$$MaxStringLength.
  • Name — Název kontextu (nepovinné).
  • Description — Popis kontextu (nepovinné).

Vrací se Ens.StringResponse с Id uložený kontext. V procesu testování se podívejte na aktivitu Save Context.

Související požadavek isc.py.msg.RestoreRequest načte kontext z InterSystems IRIS do Pythonu:

  • ContextId je kontextový identifikátor.
  • Clear — před obnovením vyčistěte kontext.

Jupyter Notebook

Jupyter Notebook je webová aplikace s otevřeným zdrojovým kódem, která umožňuje vytvářet a publikovat poznámkové bloky obsahující kód, vizualizace a text. Python Gateway vám umožňuje prohlížet a upravovat BPL procesy jako Jupyter Notebook. Všimněte si, že se aktuálně používá běžný spouštěč Pythonu 3.

Toto rozšíření předpokládá, že anotace obsahují kód Pythonu a používají názvy aktivit jako předchozí názvy. Nyní je možné vyvíjet obchodní procesy PythonGateway v Jupyter Notebooku. Zde je to, co je možné:

  • Vytvářejte nové obchodní procesy
  • Odstraňte obchodní procesy
  • Vytvářejte nové aktivity
  • Změňte aktivity
  • Smazat aktivity

zde je demo video. A nějaké screenshoty:

Process Explorer

Python Gateway ve společnosti InterSystems IRIS

Procesní editor

Python Gateway ve společnosti InterSystems IRIS

Instalace

  1. Budete potřebovat InterSystems IRIS 2019.2+.
  2. Nainstalujte PythonGateway v0.8+ (vyžaduje pouze isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Aktualizujte kód ObjectScript z úložiště.
  4. Běh do ##class(isc.py.util.Jupyter).Install() a postupujte podle pokynů.

Документация.

Závěry

MLToolkit je sada nástrojů, jejichž cílem je kombinovat modely a transakční prostředí tak, aby bylo možné vytvořené modely snadno používat přímo ve vašich obchodních procesech. Python Gateway je součástí MLToolkit a poskytuje integraci s jazykem Python, což vám umožňuje organizovat jakékoli algoritmy strojového učení vytvořené v Pythonu (hlavním prostředí pro mnoho Data Scientists), používat četné hotové knihovny k rychlému vytváření adaptivní, robotické analytické AI / ML řešení na platformě InterSystems IRIS.

reference

MLToolkit

Uživatelská skupina MLToolkit je soukromé úložiště GitHub vytvořené jako součást podnikové organizace GitHub společnosti InterSystems. Je určena externím uživatelům, kteří instalují, učí se nebo již používají komponenty MLToolkit, včetně Python Gateway. Skupina má za sebou řadu implementovaných případů (se zdrojovým kódem a testovacími daty) v oblasti marketingu, výroby, medicíny a mnoha dalších odvětví. Chcete-li se připojit k uživatelské skupině ML Toolkit, zašlete prosím krátký e-mail na následující adresu: [chráněno e-mailem] a ve svém dopise uveďte následující informace:

  • Uživatelské jméno GitHub
  • Organizace (pracujete nebo studujete)
  • Pozice (vaše skutečná pozice ve vaší organizaci, buď „Student“ nebo „Nezávislý“).
  • Země

Pro ty, kteří si přečetli článek a zajímají se o InterSystems IRIS jako platformu pro vývoj nebo hostování mechanismů umělé inteligence a strojového učení, vás zveme k diskuzi o možných scénářích, které zajímají váš podnik. Pohotově analyzujeme potřeby vašeho podniku a společně stanovíme akční plán; kontaktní e-mailová adresa naší expertní skupiny AI/ML – [chráněno e-mailem].

Zdroj: www.habr.com

Přidat komentář