Python Gateway v InterSystems IRIS

Tento článok je o Python Gateway, komunitnom projekte s otvoreným zdrojom pre dátovú platformu InterSystems IRIS. Tento projekt vám umožňuje organizovať akékoľvek algoritmy strojového učenia vytvorené v Pythone (hlavné prostredie pre mnohých Data Scientists), používať početné hotové knižnice na rýchle vytváranie adaptívnych, robotických analytických riešení AI / ML na platforme InterSystems IRIS. V tomto článku vám ukážem, ako môže InterSystems IRIS organizovať procesy Pythonu, vykonávať efektívny obojsmerný prenos údajov a vytvárať inteligentné obchodné procesy.

Plán

  1. Úvod do problematiky.
  2. Nástroje.
  3. Inštalácia.
  4. API.
  5. Interoperabilita.
  6. Zápisník Jupyter.
  7. Závery.
  8. Odkazy.
  9. M.L. Toolkit.

Úvod

Python je univerzálny programovací jazyk na vysokej úrovni zameraný na zlepšenie produktivity vývojárov a čitateľnosti kódu. V tejto sérii článkov budem hovoriť o možnostiach využitia jazyka Python na platforme InterSystems IRIS, pričom hlavnou témou tohto článku je využitie Pythonu ako jazyka na vytváranie a aplikáciu modelov strojového učenia.

Strojové učenie (ML) je trieda metód umelej inteligencie, ktorej charakteristickým znakom nie je priame riešenie problému, ale učenie sa v procese riešenia mnohých podobných problémov.

Algoritmy a modely strojového učenia sú čoraz bežnejšie. Existuje na to veľa dôvodov, ale všetko závisí od dostupnosti, jednoduchosti a dosahovania praktických výsledkov. Je klastrovanie alebo dokonca modelovanie neurónových sietí novou technológiou?

Samozrejme, že nie, ale v dnešnej dobe nie je potrebné písať státisíce riadkov kódu na spustenie jedného modelu a náklady na vytváranie a používanie modelov sú čoraz menšie.

Nástroje sa vyvíjajú – zatiaľ čo nemáme nástroje AI/ML plne orientované na grafické používateľské rozhranie, pokrok, ktorý sme zaznamenali pri mnohých iných triedach informačných systémov, ako je BI (od písania kódu po používanie rámcov a konfigurovateľných riešení orientovaných na grafické používateľské rozhranie), je tiež viditeľný. v nástrojoch na vytváranie AI/ML. Prešli sme už fázou písania kódu a dnes používame frameworky na vytváranie a trénovanie modelov.

Ďalšie vylepšenia, ako napríklad schopnosť propagovať vopred trénovaný model, kde koncový používateľ musí jednoducho dokončiť trénovanie modelu na svojich špecifických údajoch, tiež uľahčujú začatie aplikácie strojového učenia. Vďaka týmto pokrokom je učenie sa strojového učenia oveľa jednoduchšie, a to ako pre profesionálov, tak aj pre spoločnosti ako celok.

Na druhej strane zbierame stále viac údajov. Vďaka jednotnej dátovej platforme, akou je InterSystems IRIS, môžu byť všetky tieto informácie okamžite pripravené a použité ako vstup pre modely strojového učenia.

S prechodom na cloud je spúšťanie projektov AI/ML jednoduchšie ako kedykoľvek predtým. Môžeme spotrebovať len zdroje, ktoré potrebujeme. Navyše vďaka paralelizácii, ktorú ponúkajú cloudové platformy, môžeme ušetriť stratený čas.

Ale čo výsledky? Tu sa veci komplikujú. Existuje veľa nástrojov na stavbu modelov, o ktorých budem diskutovať ďalej. Postaviť dobrý model nie je jednoduché, ale čo ďalej? Profitovať z používania modelu v podniku je tiež netriviálna úloha. Koreňom problému je oddelenie analytickej a transakčnej pracovnej záťaže a dátových modelov. Keď trénujeme model, zvyčajne to robíme na historických údajoch. Ale miesto pre skonštruovaný model je v transakčnom spracovaní dát. Načo je najlepší model detekcie podvodných transakcií, ak ho spúšťame raz denne? Podvodníci už dávno odišli s peniazmi. Musíme trénovať model na historických údajoch, ale musíme ho tiež aplikovať v reálnom čase na nové prichádzajúce údaje, aby naše obchodné procesy mohli fungovať podľa predpovedí, ktoré model robí.

ML Toolkit je súprava nástrojov, ktorá robí presne toto: spája modely a transakčné prostredie, takže modely, ktoré vytvoríte, možno jednoducho použiť priamo vo vašich obchodných procesoch. Python Gateway je súčasťou ML Toolkit a poskytuje integráciu s jazykom Python (podobne ako R Gateway, súčasťou ML Toolkit je integrácia s jazykom R).

náradie

Než budeme pokračovať, rád by som opísal niekoľko nástrojov a knižníc Pythonu, ktoré budeme používať neskôr.

Technológia

  • Python je interpretovaný univerzálny programovací jazyk na vysokej úrovni. Hlavnou výhodou jazyka je veľká knižnica matematických, ML a AI knižníc. Podobne ako ObjectScript je to objektovo orientovaný jazyk, ale všetko je definované dynamicky, nie staticky. Všetko je tiež objekt. Neskoršie články predpokladajú prechodnú znalosť jazyka. Ak sa chcete začať učiť, odporúčam začať od dokumentáciu.
  • Pre naše ďalšie cvičenia nastavte Python 3.6.7 64bit.
  • IDE: Používam PyCharm, ale všeobecne много. Ak používate Atelier, existuje doplnok Eclipse pre vývojárov Pythonu. Ak používate kód VS, potom existuje rozšírenie pre Python.
  • Notebook: Namiesto IDE môžete písať a zdieľať svoje skripty v online notebookoch. Najpopulárnejší z nich je jupyter.

knižnice

Tu je (čiastočný) zoznam knižníc strojového učenia:

  • numpy — základný balík pre presné výpočty.
  • pandy — vysokovýkonné dátové štruktúry a nástroje na analýzu dát.
  • matplotlib - Tvorba grafov.
  • morský - vizualizácia dát založená na matplotlib.
  • Sklearn — metódy strojového učenia.
  • XGBoost — Algoritmy strojového učenia v rámci metodológie Gradient Boosting.
  • Gensim - NLP.
  • KERAS - neurálne siete.
  • tenzorový tok je platforma na vytváranie modelov strojového učenia.
  • PyTorch je platforma na vytváranie modelov strojového učenia zameraná na Python.
  • Nyoka - PMML z rôznych modelov.

Vďaka technológiám AI/ML je podnikanie efektívnejšie a prispôsobivejšie. Okrem toho sa dnes tieto technológie čoraz ľahšie vyvíjajú a implementujú. Začnite sa učiť o technológiách AI/ML a o tom, ako môžu pomôcť vašej organizácii rásť.

Inštalácia

Existuje niekoľko spôsobov, ako nainštalovať a používať Python Gateway:

  • operačný systém
    • Windows
    • Linux
    • Mac
  • prístavný robotník
    • Použite obrázok z DockerHub
    • Vytvorte si vlastný obrázok

Bez ohľadu na spôsob inštalácie budete potrebovať zdrojový kód. Jediným miestom na stiahnutie kódu je stránka vydania. Obsahuje testované stabilné vydania, stačí si vziať to najnovšie. Momentálne je to 0.8, ale časom pribudnú nové. Neklonujte/nesťahujte úložisko, stiahnite si najnovšiu verziu.

operačný systém

Ak inštalujete Python Gateway na operačný systém, musíte najprv (bez ohľadu na operačný systém) nainštalovať Python. Pre to:

  1. Nainštalujte Python 3.6.7 64 bit. Odporúča sa nainštalovať Python do predvoleného adresára.
  2. Nainštalujte modul dill: pip install dill.
  3. Stiahnite si kód ObjectScript (t.j. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) do akejkoľvek oblasti s produktmi. V prípade, že chcete, aby existujúca oblasť podporovala produkty, spustite: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Miesto popis DLL/SO/DYLIB do priečinka bin vaša inštancia InterSystems IRIS. Súbor knižnice musí byť dostupný v ceste, ktorú vracia write ##class(isc.py.Callout).GetLib().

Windows

  1. Uistite sa, že premenná prostredia je PYTHONHOME odkazuje na Python 3.6.7.
  2. Uistite sa, že systémová premenná prostredia je PATH obsahuje premennú PYTHONHOME (alebo adresár, na ktorý ukazuje).

Linux (Debian/Ubuntu)

  1. Skontrolujte, či je premenná prostredia PATH obsahuje /usr/lib и /usr/lib/x86_64-linux-gnu. Použiť súbor /etc/environment na nastavenie premenných prostredia.
  2. V prípade chýb undefined symbol: _Py_TrueStruct nastavte nastavenie PythonLib. aj v readme je tu časť Riešenie problémov.

Mac

  1. V súčasnosti je podporovaný iba python 3.6.7 python.org. Skontrolujte premennú PATH.

Ak ste zmenili premenné prostredia, reštartujte produkt InterSystems.

prístavný robotník

Používanie kontajnerov má niekoľko výhod:

  • Prenosnosť
  • účinnosť
  • Izolácie
  • ľahkosť
  • Nemennosť

Pozrite si toto sériu článkov pre viac informácií o používaní Docker s produktmi InterSystems.

Všetky zostavy Python Gateway sú momentálne založené na kontajneroch. 2019.4.

Pripravený obrázok

Spustiť: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:lateststiahnuť a spustiť Python Gateway s InterSystems IRIS Community Edition. To je všetko.

Vytvorte si vlastný obrázok

Ak chcete vytvoriť docker image, spustite v koreňovom adresári úložiska: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
V predvolenom nastavení je obrázok vytvorený na základe obrázka store/intersystems/iris-community:2019.4.0.383.0, môžete to však zmeniť nastavením premennej IMAGE.
Ak chcete zostaviť z InterSystems IRIS, spustite: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest'.

Potom môžete spustiť obrázok docker:

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

Ak používate obrázok založený na InterSystems IRIS Community Edition, nemusíte špecifikovať kľúč.

Komentáre

  • Testovací proces isc.py.test.Process uloží množstvo obrázkov do dočasného adresára. Možno budete chcieť zmeniť túto cestu na pripojený adresár. Ak to chcete urobiť, upravte nastavenie WorkingDir určenie pripojeného adresára.
  • Ak chcete získať prístup k terminálu, spustite: docker exec -it irispy sh.
  • Prístup k portálu správy systému prihlásením SuperUser/SYS.
  • Ak chcete zastaviť kontajner, spustite: docker stop irispy && docker rm --force irispy.

Kontrola inštalácie

Po nainštalovaní Python Gateway sa oplatí skontrolovať, či funguje. Spustite tento kód v termináli InterSystems IRIS:

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

Výsledok by mal byť HELLO - hodnota premennej Pythonu x. Ak je stav návratu sc je chyba resp var prázdne, skontrolujte Readme – časť Riešenie problémov.

API

Python Gateway je nainštalovaný a overili ste, že funguje. Je čas ho začať používať!
Hlavným rozhraním Pythonu je isc.py.Main. Ponúka nasledujúce skupiny metód (všetky návrat %Status):

  • Spustenie kódu
  • Prenos údajov
  • dcérska spoločnosť

Spustenie kódu

Tieto metódy vám umožňujú spustiť ľubovoľný kód Pythonu.

SimpleString

SimpleString je hlavná metóda. Vyžaduje 4 voliteľné argumenty:

  • code je riadok kódu, ktorý sa má vykonať. Riadkový znak: $c(10).
  • returnVariable je názov premennej, ktorá sa má vrátiť.
  • serialization - ako serializovať returnVariable. 0 - reťazec (predvolené), 1 - repr.
  • result - ByRef odkaz na premennú, do ktorej je zapísaná hodnota returnVariable.

Vyššie sme urobili:

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

V tomto príklade priraďujeme premennú Pythonu x hodnota Hello a chcete vrátiť hodnotu premennej Pythonu x do premennej ObjectScript var.

ExecuteCode

ExecuteCode je bezpečnejšia a menej obmedzujúca alternatíva SimpleString.
Riadky v platforme InterSystems IRIS sú obmedzené na 3 641 144 znakov a ak chcete spustiť dlhší kus kódu, musíte použiť streamy.
Chce to dva argumenty:

  • code — reťazec alebo prúd kódu Python, ktorý sa má vykonať.
  • variable - (voliteľné) priradí výsledok vykonania code túto premennú Pythonu.

Odporúča sa použiť:

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

V tomto príklade vynásobíme 2 x 3 a výsledok uložíme do premennej Pythonu y.

Prenos údajov

Posielajte údaje do az Pythonu.

Python -> InterSystems IRIS

Existujú 4 spôsoby, ako získať hodnotu premennej Pythonu v InterSystems IRIS, v závislosti od serializácie, ktorú potrebujete:

  • String pre jednoduché dátové typy a ladenie.
  • Repr na ukladanie jednoduchých objektov a ladenie.
  • JSON pre jednoduchú manipuláciu s údajmi na strane InterSystems IRIS.
  • Pickle uložiť predmety.

Tieto metódy vám umožňujú prijímať premenné z Pythonu ako reťazce alebo ako prúdy.

  • GetVariable(variable, serialization, .stream, useString) - dostať serialization premenná variable в stream, ak useString je 1 a serializácia sa umiestni do reťazca, potom sa vráti reťazec, nie prúd.
  • GetVariableJson(variable, .stream, useString) — získajte serializáciu premennej JSON.
  • GetVariablePickle(variable, .stream, useString, useDill) - Získajte Pickle (alebo Dill) serializáciu premennej.

Skúsme získať našu premennú y.

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

InterSystems IRIS -> Python

Načítavanie údajov z InterSystems IRIS do Pythonu.

  • ExecuteQuery(query, variable, type, namespace) - vytvorí súbor údajov (pandy dataframe alebo list) z dotazu sql a nastavte ho na premennú python variable. Plastový sáčok isc.py by mali byť dostupné v danej oblasti namespace - tam sa vykoná požiadavka.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - načíta globálne dáta global z dolného indexu start na end v Pythone ako premenná typu type: list, alebo pandy dataframe. Popis voliteľných argumentov mask a labels dostupné v triednej dokumentácii a úložisku Dokumenty o prenose údajov.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - načíta údaje o triede class z id start na end v Pythone ako premenná typu type: list, alebo pandy dataframe. properties — zoznam (oddelený čiarkou) vlastností triedy, ktoré sa majú načítať do súboru údajov. Podporované masky * и ?. Predvolené - * (všetky vlastnosti). Nehnuteľnosť %%CLASSNAME ignoroval.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - načíta údaje tabuľky table z id start na end v pytóne.

ExecuteQuery - univerzálny (akýkoľvek platný SQL dotaz bude odovzdaný Pythonu). však ExecuteGlobal a jeho zábaly ExecuteClass и ExecuteTable pracovať s množstvom obmedzení. Sú oveľa rýchlejšie (3-5 krát rýchlejšie ako ovládač ODBC a 20 krát rýchlejšie ako ExecuteQuery). Viac informácií v Dokumenty o prenose údajov.
Všetky tieto metódy podporujú prenos dát z akejkoľvek oblasti. Plastový sáčok isc.py musia byť dostupné v cieľovej oblasti.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - odovzdanie výsledkov akéhokoľvek platného SQL dotazu do Pythonu. Toto je najpomalší spôsob prenosu údajov. Použite ho, ak ExecuteGlobal a jeho obaly nie sú k dispozícii.

argumenty:

  • query - sql dotaz.
  • variable - názov premennej Pythonu, do ktorej sa zapisujú údaje.
  • type - list alebo pandy dataframe.
  • namespace - oblasť, v ktorej sa žiadosť vykoná.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - odovzdanie globalu do Pythonu.

argumenty:

  • global je názov globálneho bez ^
  • variable - názov premennej Pythonu, do ktorej sa zapisujú údaje.
  • type - list alebo pandy dataframe.
  • start — prvý dolný index globálneho. Nevyhnutne %Integer.
  • end je posledný dolný index globálneho. Nevyhnutne %Integer.
  • mask — maska ​​globálnych hodnôt. Maska môže byť kratšia ako počet polí v globále (v takom prípade budú polia na konci preskočené). Ako naformátovať masku:
    • + odovzdať hodnotu tak, ako je.
    • - preskočiť hodnotu.
    • b — booleovský typ (0 - False, všetko ostatné - True).
    • d — Dátum (od $horolog, v systéme Windows od roku 1970, v systéme Linux od roku 1900).
    • t - Čas ($horolog, sekundy po polnoci).
    • m — Časová pečiatka (formátový reťazec ROK-MESIAC-DEŇ HODINA:MINUTA:SECOND).
  • labels - %Zoznam názvov stĺpcov. Prvým prvkom je názov dolného indexu.
  • namespace - oblasť, v ktorej sa žiadosť vykoná.

ExecuteClass

zabaliť ExecuteGlobal. Pripraví volanie na základe definície triedy ExecuteGlobal a zavolá mu.

ExecuteClass(class, variable, type, start, end, properties, namespace) - odovzdávanie údajov triedy do Pythonu.

argumenty:

  • class - názov triedy
  • variable - názov premennej Pythonu, do ktorej sa zapisujú údaje.
  • type - list alebo pandy dataframe.
  • start — počiatočné Id.
  • end - konečné Id
  • properties — zoznam (oddelený čiarkou) vlastností triedy, ktoré sa majú načítať do súboru údajov. Podporované masky * и ?. Predvolené - * (všetky vlastnosti). Nehnuteľnosť %%CLASSNAME ignoroval.
  • namespace - oblasť, v ktorej sa žiadosť vykoná.

Všetky vlastnosti sa odovzdávajú tak, ako sú, okrem vlastností typu %Date, %Time, %Boolean и %TimeStamp - sú konvertované na zodpovedajúce triedy Pythonu.

ExecuteTable

zabaliť ExecuteClass. Preloží názov tabuľky na názov triedy a zavolá ExecuteClass. Podpis:

ExecuteTable(table, variable, type, start, end, properties, namespace) - odovzdávanie údajov tabuľky do Pythonu.

argumenty:

  • table - názov tabuľky.
    Všetky ostatné argumenty sa odovzdávajú tak, ako sú. ExecuteClass.

Poznámky

  • ExecuteGlobal, ExecuteClass и ExecuteTable pracovať rovnako rýchlo.
  • ExecuteGlobal 20-krát rýchlejšie ako ExecuteQuery na veľkých súboroch údajov (čas prenosu > 0.01 sekundy).
  • ExecuteGlobal, ExecuteClass и ExecuteTable pracujte na globáloch s touto štruktúrou: ^global(key) = $lb(prop1, prop2, ..., propN) kde key je celé číslo.
  • pre ExecuteGlobal, ExecuteClass и ExecuteTable podporovaný rozsah hodnôt %Date zodpovedá rozsahu mktime a závisí od OSokná: 1970-01-01, linux 1900-01-01, gumák). Použite %TimeStampodovzdať údaje mimo tohto rozsahu alebo použiť dátový rámec pandas ako toto obmedzenie je len pre zoznam.
  • pre ExecuteGlobal, ExecuteClass и ExecuteTable všetky argumenty okrem zdroja údajov (globálneho, triedy alebo tabuľky) a premennej sú voliteľné.

príklady

skúšobná trieda isc.py.test.Person obsahuje metódu, ktorá demonštruje všetky možnosti prenosu údajov:

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)

metóda hovoru do ##class(isc.py.test.Person).Test() aby ste videli, ako fungujú všetky metódy prenosu údajov.

Pomocné metódy

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - získať informácie o premennej: či je definovaná, trieda a dĺžka serializácie.
  • GetVariableDefined(variable, .defined) - či je premenná definovaná.
  • GetVariableType(variable, .type) - získajte triedu premennej.
  • GetStatus() - získať a odstrániť poslednú výnimku na strane Pythonu.
  • GetModuleInfo(module, .imported, .alias) — získať premennú modulu a stav importu.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - získať informácie o funkcii.

Interoperabilita

Naučili ste sa volať Python Gateway z terminálu, teraz ho začnime používať vo výrobe. Základom pre interakciu s Pythonom v tomto režime je isc.py.ens.Operation. Umožňuje nám:

  • Spustite kód Python
  • Uložiť/obnoviť kontext Pythonu
  • Načítajte a prijímajte údaje z Pythonu

Operácia Pyhton je v podstate obálka isc.py.Main. Prevádzka isc.py.ens.Operation umožňuje interakciu s procesom Python z produktov InterSystems IRIS. Podporuje sa päť žiadostí:

  • isc.py.msg.ExecutionRequest na spustenie kódu Python. sa vracia isc.py.msg.ExecutionResponse s výsledkom vykonania a hodnotami požadovaných premenných.
  • isc.py.msg.StreamExecutionRequest na spustenie kódu Python. sa vracia isc.py.msg.StreamExecutionResponse výsledok vykonania a hodnoty požadovaných premenných. Analógové isc.py.msg.ExecutionRequest, ale namiesto reťazcov prijíma a vracia prúdy.
  • isc.py.msg.QueryRequest na prenos výsledku vykonania SQL dotazu. sa vracia Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest na odovzdanie globálnych/triednych/tabuľkových údajov. sa vracia Ens.Response.
  • isc.py.msg.SaveRequest na uloženie kontextu Pythonu. sa vracia Ens.StringResponse s ID kontextu.
  • isc.py.msg.RestoreRequest na obnovenie kontextu Pythonu.

    Okrem toho, isc.py.ens.Operation má dve nastavenia:

    • Initializer - výber triedy, ktorá implementuje rozhranie isc.py.init.Abstract. Dá sa použiť na načítanie funkcií, modulov, tried a podobne. Vykoná sa raz, keď sa proces spustí.
    • PythonLib - (Len Linux), ak vidíte chyby pri zavádzaní, nastavte jej hodnotu na libpython3.6m.so alebo dokonca v úplnej ceste ku knižnici Python.

Tvorba obchodných procesov

K dispozícii sú dve triedy, ktoré uľahčujú vývoj obchodných procesov:

  • isc.py.ens.ProcessUtils umožňuje extrahovať anotácie z aktivít s variabilnou substitúciou.
  • isc.py.util.BPEmulator uľahčuje testovanie obchodných procesov pomocou Pythonu. Môže vykonávať obchodný proces (časti Pythonu) v aktuálnom procese.

Variabilná substitúcia

Všetky obchodné procesy zdedené z isc.py.ens.ProcessUtils, môže použiť metódu GetAnnotation(name) získať hodnotu anotácie aktivity podľa jej názvu. Anotácia aktivity môže obsahovať premenné, ktoré sa pred odovzdaním do Pythonu vyhodnotia na strane InterSystems IRIS. Tu je syntax pre substitúciu premenných:

  • ${class:method:arg1:...:argN} - volanie metódy
  • #{expr} - spustiť kód v jazyku ObjectScript.

Príklad je dostupný v testovacom obchodnom procese isc.py.test.Process, napríklad v činnosti Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). V tomto príklade:

  • #{process.WorkDirectory} vráti vlastnosť WorkDirectory objektu process, čo je inštancia triedy isc.py.test.Process tie. aktuálny obchodný proces.
  • ${%PopulateUtils:Integer:1:100} volá metódu Integer trieda %PopulateUtils, odovzdávanie argumentov 1 и 100, vracia náhodné celé číslo v rozsahu 1...100.

Otestujte obchodný proces

Testovacia produkcia a testovací obchodný proces sú štandardne dostupné ako súčasť Python Gateway. Ak ich chcete použiť:

  1. V termináli OS spustite: pip install pandas matplotlib seaborn.
  2. V termináli InterSystems IRIS spustite: do ##class(isc.py.test.CannibalizationData).Import() na vyplnenie testovacích údajov.
  3. Uvedenie produktov na trh isc.py.test.Production.
  4. Odoslať typ žiadosti Ens.Request в isc.py.test.Process.

Poďme sa spolu pozrieť, ako to celé funguje. OTVORENÉ isc.py.test.Process v editore BPL:

Python Gateway v InterSystems IRIS

Spustenie kódu

Najdôležitejším volaním je spustenie kódu Python:

Python Gateway v InterSystems IRIS

Použitá požiadavka isc.py.msg.ExecutionRequest, tu sú jeho vlastnosti:

  • Code — Python kód.
  • SeparateLines - či rozdeliť kód na riadky na vykonanie. $c(10) (n) sa používa na oddelenie reťazcov. Upozorňujeme, že NEODPORUČUJEME spracovať celú správu naraz, táto funkcia slúži len na spracovanie def a podobné viacriadkové výrazy. Predvolené 0.
  • Variables je čiarkami oddelený zoznam premenných, ktoré budú pridané do odpovede.
  • Serialization - Ako serializovať premenné, ktoré chceme vrátiť. Možnosti: Str, Repr, JSON, Pickle и Dill, predvolená Str.

V našom prípade nastavujeme len vlastnosť Code, aby všetky ostatné vlastnosti používali svoje predvolené hodnoty. Nastavili sme to telefonátom process.GetAnnotation("Import pandas"), ktorý za behu vráti anotáciu po vykonaní substitúcie premennej. Konečne kód import pandas as pd budú odovzdané do Pythonu. GetAnnotation môže byť užitočné na získanie viacriadkových skriptov Python, ale na tento spôsob získavania kódu neexistujú žiadne obmedzenia. Môžete nastaviť vlastnosť Code akýmkoľvek spôsobom, ktorý vám vyhovuje.

Získavanie premenných

Ďalšia zaujímavá výzva na použitie isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway v InterSystems IRIS

Vypočíta korelačnú maticu na strane Pythonu a extrahuje premennú corrmat späť na InterSystems IRIS vo formáte JSON nastavením vlastností požiadavky:

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

Výsledky môžeme vidieť vo Visual Trace:

Python Gateway v InterSystems IRIS

A ak potrebujeme túto hodnotu v BP, môžeme ju získať takto: callresponse.Variables.GetAt("corrmat").

Prenos údajov

Ďalej si povedzme o prenose údajov z InterSystems IRIS do Pythonu, všetky požiadavky na prenos údajov implementujú rozhranie isc.py.msg.DataRequest, ktorý poskytuje nasledujúce vlastnosti:

  • Variable je premenná Pythonu, do ktorej sa zapisujú dáta.
  • Type - typ premennej: dataframe (dataframe pandy) príp list.
  • Namespace - oblasť, z ktorej prijímame údaje. Plastový sáčok isc.py by mali byť dostupné v tejto oblasti. Môže to byť oblasť bez podpory produktu.

Na základe tohto rozhrania sú implementované 4 triedy požiadaviek:

  • isc.py.msg.QueryRequest - stanovený majetok Query na odoslanie dotazu SQL.
  • isc.py.msg.ClassRequest - stanovený majetok Class odovzdať údaje o triede.
  • isc.py.msg.TableRequest - stanovený majetok Table odovzdať údaje tabuľky.
  • isc.py.msg.GlobalRequest - stanovený majetok Global na prenos údajov globálne.

V procese testovania sa pozrite na aktivitu RAWKde isc.py.msg.QueryRequest zobrazené v akcii.

Python Gateway v InterSystems IRIS

Uloženie/obnovenie kontextu Pythonu

Nakoniec môžeme uložiť kontext Pythonu v InterSystems IRIS, aby ste to urobili, odošlite isc.py.msg.SaveRequest s argumentmi:

  • Mask — Uložia sa len premenné, ktoré vyhovujú maske. Podporované * и ?... Príklad: "Data*, Figure?"... Predvolené *.
  • MaxLength — Maximálna dĺžka uloženej premennej. Ak je serializácia premennej dlhšia, bude sa ignorovať. Nastavte na 0, aby ste získali premenné ľubovoľnej dĺžky. Predvolené $$$MaxStringLength.
  • Name — Názov kontextu (voliteľné).
  • Description — Opis kontextu (voliteľné).

Vráti sa Ens.StringResponse с Id uložený kontext. V procese testovania sa pozrite na aktivitu Save Context.

Súvisiaca žiadosť isc.py.msg.RestoreRequest načíta kontext z InterSystems IRIS do Pythonu:

  • ContextId je kontextový identifikátor.
  • Clear — pred obnovením vyjasnite kontext.

Jupyter Notebook

Jupyter Notebook je webová aplikácia s otvoreným zdrojovým kódom, ktorá vám umožňuje vytvárať a publikovať poznámkové bloky obsahujúce kód, vizualizácie a text. Python Gateway vám umožňuje prezerať a upravovať procesy BPL ako Jupyter Notebook. Všimnite si, že v súčasnosti sa používa bežný spúšťač Pythonu 3.

Toto rozšírenie predpokladá, že anotácie obsahujú kód Python a používajú názvy aktivít ako predchádzajúce názvy. Teraz je možné rozvíjať obchodné procesy PythonGateway v Jupyter Notebook. Tu je to, čo je možné:

  • Vytvorte nové obchodné procesy
  • Odstráňte obchodné procesy
  • Vytvárajte nové aktivity
  • Zmeňte aktivity
  • Odstrániť aktivity

Tu demo video. A nejaké screenshoty:

Process Explorer

Python Gateway v InterSystems IRIS

Procesný editor

Python Gateway v InterSystems IRIS

Inštalácia

  1. Budete potrebovať InterSystems IRIS 2019.2+.
  2. Nainštalujte PythonGateway v0.8+ (vyžaduje len isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Aktualizujte kód ObjectScript z úložiska.
  4. popraviť do ##class(isc.py.util.Jupyter).Install() a postupujte podľa pokynov.

Záznamy.

Závery

MLToolkit je sada nástrojov, ktorých cieľom je spojiť modely a transakčné prostredie tak, aby sa vytvorené modely dali jednoducho použiť priamo vo vašich obchodných procesoch. Python Gateway je súčasťou MLToolkit a poskytuje integráciu s jazykom Python, čo vám umožňuje organizovať akékoľvek algoritmy strojového učenia vytvorené v Pythone (hlavné prostredie pre mnohých Data Scientists), používať množstvo hotových knižníc na rýchle vytváranie adaptívnej, robotickej analytickej AI / ML riešenia na platforme InterSystems IRIS.

referencie

MLToolkit

Používateľská skupina MLToolkit je súkromné ​​úložisko GitHub vytvorené ako súčasť podnikovej organizácie GitHub spoločnosti InterSystems. Je určený externým používateľom, ktorí inštalujú, učia sa alebo už používajú komponenty MLToolkit vrátane Python Gateway. Skupina má na konte množstvo implementovaných prípadov (so zdrojovým kódom a testovacími dátami) v oblasti marketingu, výroby, medicíny a mnohých ďalších odvetví. Ak sa chcete pripojiť k skupine používateľov súpravy nástrojov ML, pošlite krátky e-mail na nasledujúcu adresu: [chránené e-mailom] a vo svojom liste uveďte tieto informácie:

  • Používateľské meno GitHub
  • Organizácia (pracujete alebo študujete)
  • Pozícia (vaša skutočná pozícia vo vašej organizácii, buď "Študent" alebo "Nezávislý").
  • Krajiny

Pre tých, ktorí si prečítali článok a zaujíma ich InterSystems IRIS ako platforma na vývoj alebo hosťovanie mechanizmov umelej inteligencie a strojového učenia, pozývame vás, aby ste prediskutovali možné scenáre zaujímavé pre váš podnik. Pohotovo analyzujeme potreby vášho podniku a spoločne stanovíme akčný plán; kontaktná e-mailová adresa našej expertnej skupiny AI/ML – [chránené e-mailom].

Zdroj: hab.com

Pridať komentár