Tento článok je venovaný Python Gateway — komunitnému projektu s otvoreným zdrojovým kódom pre dátovú platformu InterSystems IRIS. Tento projekt umožňuje orchestráciu akýchkoľvek algoritmov strojového učenia vytvorených v jazyku Python (hlavné prostredie pre mnohých odborníkov na dáta), využívať množstvo hotových knižníc na rýchle vytváranie adaptívnych, robotizovaných analytických AI/ML riešení na platforme InterSystems IRIS. V tomto článku ukážem, ako môže InterSystems IRIS orchestráciou procesov v jazyku Python efektívne vykonávať obojsmerný prenos dát a vytvárať inteligentné biznis procesy.
Plán
- Úvod.
- Nástroje.
- Inštalácia.
- API.
- Interoperabilita.
- Jupyter Notebook.
- Záver.
- Odkazy.
- MLToolkit.
Úvod
Python je vysokoúrovňový programovací jazyk všeobecného zamerania, zameraný na zvýš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 hlavným zameraním 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, ktorou je charakteristické nie priame riešenie úlohy, ale učenie sa v procese riešenia množstva podobných úloh.
Algoritmy a modely strojového učenia sa stávajú čoraz rozšírenejšími. Dôvodov je mnoho, ale všetko sa znižuje na prístupnosť, jednoduchosť a dosahovanie praktických výsledkov. Je klasifikácia alebo dokonca modelovanie neurónov novou technológiou?
Samozrejme, že nie, avšak v súčasnosti nie je potrebné písať stovky tisíc riadkov kódu na spustenie jedného modelu, a náklady na vytváranie a aplikovanie modelov sa neustále znižujú.
Nástroje sa vyvíjajú — aj keď nemáme úplne GUI orientované AI/ML nástroje, progres, ktorý sme pozorovali u mnohých ďalších tried informačných systémov, ako je BI (od písania kódu po používanie rámcov a GUI orientovaných konfigurovateľných riešení), sa prejavuje aj v nástrojoch na vytváranie AI/ML. Už sme prešli fázou písania kódu a dnes používame rámce na budovanie a školenie modelov.
Iné vylepšenia, ako napríklad možnosť rozšírenia predtrénovanej modelu, kedy koncový používateľ musí len dokončiť učenie modelu na svojich špecifických dátach, tiež uľahčujú začiatok použitia strojového učenia. Tieto pokroky výrazne zjednodušujú učenie strojového učenia ako pre odborníkov, tak aj pre firmy ako celok.
Na druhej strane zbierame čoraz viac dát. Vďaka jednotnej dátovej platforme, ako je InterSystems IRIS, môžu byť všetky tieto informácie okamžite spracované a použité ako vstupné dáta pre modely strojového učenia.
S prechodom do cloudu je spúšťanie projektov AI/ML jednoduchšie ako kedykoľvek predtým. Môžeme spotrebovávať len tie zdroje, ktoré potrebujeme. Navyše, vďaka paralelizácii, ktorú ponúkajú cloudové platformy, môžeme ušetriť čas.
Ale čo výsledky? Tu sa to komplikuje. Existuje množstvo nástrojov na modelovanie, o ktorých sa budem ďalej zmieňovať. Vytvoriť dobrý model nie je jednoduché, ale čo ďalej? Získanie zisku z využívania modelu firmou je tiež netriviálna úloha. Jadro problému spočíva v oddelení analytických a transakčných záťaží a modelov dát. Keď trénujeme model, zvyčajne to robíme na historických dátach. Ale miesto pre vytvorený model je v transakčnom spracovaní dát. Čo je dobré na najlepšom modeli na detekciu podvodných transakcií, ak ho spúšťame raz za deň? Podvodníci už dávno odišli s peniazmi. Musíme trénovať model na historických dátach, ale musíme ho tiež aplikovať v reálnom čase na nových prichádzajúcich dátach, aby naše obchodné procesy mohli fungovať v súlade s predpokladmi, ktoré model vytvoril.
ML Toolkit je súbor nástrojov, ktorého cieľom je práve to: spojiť modely a transakčné prostredie, aby sa vytvorené modely mohli ľahko používať priamo vo vašich obchodných procesoch. Python Gateway je súčasťou ML Toolkit a zabezpečuje integráciu s jazykom Python (podobne ako R Gateway, ktorá je súčasťou ML Toolkit a zabezpečuje integráciu s jazykom R).
Nástroj
Predtým, ako budeme pokračovať, chcel by som opísať niekoľko nástrojov a knižníc pre Python, ktoré budeme neskôr používať.
Technológie
- Python je interpretovaný, vysokohodnotový programovací jazyk všeobecného použitia. Hlavnou výhodou jazyka je veľká knižnica matematických, ML- a AI-knižníc. Rovnako ako ObjectScript, je to objektovo orientovaný jazyk, ale všetko je definované dynamicky, nie staticky. Všetko je tiež objektom. Neskoršie články predpokladajú krátke zoznámenie s jazykom. Ak chcete začať s učením, odporúčam začať s .
- Pre naše nasledujúce cvičenia nainštalujte .
- IDE: Používam , ale všeobecne ich . Ak používate Atelier, existuje Eclipse plugin pre vývojárov na Python. Ak používate VS Code, 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 .
Knižnice
Tu je (neúplný) zoznam knižníc pre strojové učenie:
- — základný balík pre presné výpočty.
- — vysoko výkonné dátové štruktúry a nástroje analýzy dát.
- — tvorba grafov.
- — vizualizácia dát založená na matplotlib.
- — metódy strojového učenia.
- — algoritmy strojového učenia v rámci metodológie gradientného boostingu (Gradient Boosting).
- — NLP.
- — neurónové siete.
- — platforma na vytváranie modelov strojového učenia.
- — platforma na vytváranie modelov strojového učenia zameraná na Python.
- — PMML z rôznych modelov.
Technológie AI/ML umožňujú zvýšiť efektívnosť a prispôsobivosť podnikania. Navyše, dnes sa tieto technológie stávajú jednoduchšími na vývoj a implementáciu. Začnite sa učiť technológie AI/ML a 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:
- OS
- Windows
- Linux
- Mac
- Docker
- Použite obraz z DockerHub
- Vytvorte si svoj vlastný obraz
Bez ohľadu na spôsob inštalácie budete potrebovať zdrojový kód. Jediné miesto na stiahnutie kódu je . Obsahuje testované stabilné verzie, jednoducho si vezmite poslednú. V súčasnosti je to 0.8, ale časom budú aj nové. Neklonujte/nahrávajte repozitár, stiahnite posledné vydanie.
OS
Ak inštalujete Python Gateway do operačného systému, najprv (bez ohľadu na operačný systém) musíte nainštalovať Python. Na to:
- . Odporúča sa nainštalovať Python do predvoleného adresára.
- Nainštalujte modul
dill:pip install dill. - Stiahnite 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, vykonajte:write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1). - Umístite do složky
binvašej inštancie InterSystems IRIS. Súbor knižnice by mal byť dostupný na ceste, ktorá sa vraciawrite ##class(isc.py.Callout).GetLib().
Windows
- Uistite sa, že premenná prostredia
PYTHONHOMEukazuje na Python 3.6.7. - Uistite sa, že systémová premenná prostredia
PATHsúvisí s premennouPYTHONHOME(alebo adresárom, na ktorý ukazuje).
Linux (Debian/Ubuntu)
- Skontrolujte, či premenná prostredia
PATHobsahuje/usr/liba/usr/lib/x86_64-linux-gnu. Použite súbor/etc/environmentna nastavenie premenných prostredia. - V prípade chýb
undefined symbol: _Py_TrueStructnastavte konfiguračnú hodnotuPythonLib. Rovnako v je sekcia Troubleshooting.
Mac
- V aktuálnom čase je podporovaný len Python 3.6.7 z Skontrolujte premennú
PATH.
Ak ste menili premenné prostredia, reštartujte váš produkt InterSystems.
Docker
Použitie kontajnerov má niekoľko výhod:
- Prenosnosť
- Efektivita
- Izolácia
- Ľahkosť
- Immutabilita
Prečítajte si tento pre podrobnejšie informácie o používaní Dockeru s produktmi InterSystems.
Všetky zostavy Python Gateway sú v súčasnosti založené na kontajneroch. 2019.4.
Hotový obraz
Vykonajte: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latest, aby ste načítali a spustili Python Gateway s InterSystems IRIS Community Edition. To je všetko.
Vytvorte si svoj vlastný obraz
Na zostavenie docker obrazu vykonajte v koreňovom adresári repozitára: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Predvolene sa obraz zostavuje na základe obrazu store/intersystems/iris-community:2019.4.0.383.0, ale môžete to zmeniť nastavením premennej IMAGE..
Na zostavenie z InterSystems IRIS vykonajte: `docker build —build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 —force-rm —tag intersystemscommunity/irispy:latest.
Potom môžete spustiť docker obraz:
docker run -d
-p 52773:52773
-v //:/mount
--name irispy
intersystemscommunity/irispy:latest
--key /mount/iris.keyAk používate obraz založený na InterSystems IRIS Community Edition, nemusíte uvádzať kľúč.
Komentáre
- Testovací proces
isc.py.test.Processuchováva množstvo obrázkov v dočasnom adresári. Možno budete chcieť zmeniť túto cestu na pripojený adresár. Na to upravte nastaveniaWorkingDirstanovením pripojenej adresárovej štruktúry. - Na prístup k terminálu zadajte:
docker exec -it irispy sh. - Prístup k Portálu Správy Systému je cez používateľské meno
SuperUser/SYS. - Ak chcete zastaviť kontajner, zadajte:
docker stop irispy && docker rm --force irispy.
Kontrola inštalácie
Po tom, čo ste nainštalovali Python Gateway, je dobré skontrolovať, že 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 varV dôsledku toho by sa malo zobraziť HELLO — hodnota Python premennej x. Ak je vrátený status sc je chyba alebo var prázdny, skontrolujte .
API
Python Gateway je nainštalovaný a overili ste, že funguje. Je čas začať ho používať!
Hlavné rozhranie k Pythonu je isc.py.Main. Ponúka nasledujúce skupiny metód (všetky vracajú %Status):
- Spustenie kódu
- Prenos dát
- Pomocné
Spustenie kódu
Tieto metódy umožňujú vykonávať ľubovoľný Python kód.
SimpleString
SimpleString — to je základná metóda. Akceptuje 4 voliteľné argumenty:
code— reťazec kódu na vykonanie. Symbol prechodu do nového riadku:$c(10).returnVariable— názov premennej pre návrat.serialization— ako serializovaťreturnVariable. 0 — reťazec (predvolené), 1 — repr.result— ByRef odkaz na premennú, do ktorej sa ukladá hodnotareturnVariable.
Hore sme vykonali:
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).V tomto príklade priraďujeme premennú Python x hodnota Ahoj a chceme vrátiť hodnotu Python premennej x do ObjectScript premennej var.
ExecuteCode
ExecuteCode je bezpečnejšia a menej obmedzená alternatíva SimpleString.
Reťazce v platforme InterSystems IRIS sú obmedzené na 3 641 144 znakov, a ak chcete vykonávať dlhší kód, musíte použiť prúdy.
Prijíma dva argumenty:
code— reťazec alebo prúd Python kódu na vykonanie.variable— (voliteľne) priraďuje výsledok vykonaniacodetejto Python premennej.
Príklad použitia:
set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").V tomto príklade násobíme 2 krát 3 a uložíme výsledok do Python premennej y.
Prenos dát
Odovzdajte údaje do Python a späť.
Python -> InterSystems IRIS
Existujú 4 spôsoby, ako získať hodnotu Python premennej v InterSystems IRIS, v závislosti od potrebnej serializácie:
Stringpre jednoduché dátové typy a ladenie.Reprna ukladanie jednoduchých objektov a ladenie.JSONna jednoduché manipulovanie s údajmi na strane InterSystems IRIS.Picklena uchovanie objektov.
Tieto metódy umožňujú získanie premenných z Pythonu vo forme reťazca alebo prúdov.
GetVariable(variable, serialization, .stream, useString)— získaťserializationpremennávariablevstream. AkuseStringrovná 1 a serializácia je vložená do reťazca, takže sa vráti reťazec a nie prúd.GetVariableJson(variable, .stream, useString)— získať JSON serializáciu premennej.GetVariablePickle(variable, .stream, useString, useDill)-získať 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
>6InterSystems IRIS -> Python
Načítavame údaje z InterSystems IRIS do Pythonu.
ExecuteQuery(query, variable, type, namespace)— vytvára súbor údajov (pandasdataframealebolist) z sql dopytu a nastavuje ho na Python premennúvariable. Balíkisc.pymusí byť dostupný v oblastinamespace— tam sa vykoná dopyt.ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace)— načítava údaje globáluglobalod subskriptustartdoenddo Pythonu ako premennú typutype:list, alebo pandasdataframe. Popis voliteľných argumentovmaskovaťalabelsje dostupný v dokumentácii triedy a repozitáriu .ExecuteClass(class, variable, type, start, end, properties, namespace)— načítava údaje triedyclassod idstartdoenddo Pythonu ako premennú typutype:list, alebo pandasdataframe.properties— zoznam (oddeľovač — čiarka) vlastností triedy, ktoré sa majú načítať do súboru údajov. Masky sú podporované.*a?. Predvolená hodnota —*(všetky vlastnosti). Vlastnosť%%CLASSNAMEsa ignoruje.ExecuteTable(table, variable, type, start, end, properties, namespace)— načítava údaje tabuľkytableod idstartdoenddo Pythonu.
ExecuteQuery — je univerzálny (akýkoľvek platný SQL dopyt bude odoslaný do Pythonu). Avšak, ExecuteGlobal a jeho obálky ExecuteClass a ExecuteTable majú určité obmedzenia. Sú oveľa rýchlejšie (3-5 krát rýchlejšie ako ODBC ovládač a 20 krát rýchlejšie ExecuteQuery). Ďalšie informácie v .
Všetky tieto metódy podporujú prenos údajov z akejkoľvek oblasti. Balík isc.py musí byť v cieľovej oblasti dostupný.
ExecuteQuery
ExecuteQuery(request, variable, type, namespace) — prenos výsledkov akéhokoľvek platného SQL dopytu na Python. Toto je najpomalšia metóda prenosu údajov. Použite ju, ak ExecuteGlobal a jeho obálky nie sú dostupné.
Argumenty:
query— sql dopyt.variable— názov Python premennej, do ktorej sa zapisujú údaje.type—listalebo Pandasdataframe.namespace— oblasť, v ktorej sa bude vykonávať dopyt.
ExecuteGlobal
ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) — prenos globálu do Pythonu.
Argumenty:
global— názov globálu bez^variable— názov Python premennej, do ktorej sa zapisujú údaje.type—listalebo Pandasdataframe.start— prvý subskript globálu. Povinne%Integer.end— posledný subskript globálu. Povinne%Integer.maskovať— maska hodnôt globálnej premennej. Maska môže byť kratšia ako počet polí v globále (v tomto prípade budú posledné polia preskočené). Ako formátovať masku:+predať hodnotu tak, ako je.-preskočiť hodnotu.b— Logický typ (0—False, všetko ostatné —Pravda).d— Dátum (od $horolog, na Windows od 1970, na Linux od 1900).t— Čas ($horolog, sekundy po polnoci).m— Časová pečiatka (reťazec vo formáte ROK-MESECI-DEN HODINA:MINÚTA:SEKUNDA).
labels— %Zoznam názvov stĺpcov. Prvým prvkom je názov subskriptu.namespace— oblasť, v ktorej sa bude vykonávať dopyt.
ExecuteClass
Obal na ExecuteGlobal. Na základe definície triedy pripravuje volanie ExecuteGlobal a volá ho.
ExecuteClass(class, variable, type, start, end, properties, namespace) — odovzdávanie dát triedy v Pythone.
Argumenty:
class— meno triedyvariable— názov Python premennej, do ktorej sa zapisujú údaje.type—listalebo Pandasdataframe.start— počiatočný Id.end— konečný Idproperties— zoznam (oddeľovač — čiarka) vlastností triedy, ktoré sa majú načítať do súboru údajov. Masky sú podporované.*a?. Predvolená hodnota —*(všetky vlastnosti). Vlastnosť%%CLASSNAMEsa ignoruje.namespace— oblasť, v ktorej sa bude vykonávať dopyt.
Všetky vlastnosti sa odovzdávajú tak, ako sú, okrem vlastností typov te, %Čas, %Logická hodnota a %Časová pečiatka — sú konvertované do zodpovedajúcich tried Pythonu.
ExecuteTable
Obal na ExecuteClass. Prevodí názov tabuľky na názov triedy a volá ExecuteClass. Podpis:
ExecuteTable(table, variable, type, start, end, properties, namespace) — odovzdávanie dát tabuľky v Pythone.
Argumenty:
table— názov tabuľky.
Všetky ostatné argumenty sa odovzdávajú tak, ako sú, doExecuteClass.
Poznámky
ExecuteGlobal,ExecuteClassaExecuteTablepracujú rovnako rýchlo.ExecuteGlobal20-krát rýchlejšie akoExecuteQueryna veľkých množstvách dát (čas prenosu viac ako >0.01 sekundy).ExecuteGlobal,ExecuteClassaExecuteTablepracujú na globáloch s touto štruktúrou:^global(kľúč) = $lb(prop1, prop2, ..., propN)kdekľúč— celé číslo.- Pre
ExecuteGlobal,ExecuteClassaExecuteTablepodporovaný rozsah hodnôttezodpovedá rozsahumktimea závisí od OS (: 1970-01-01, 1900-01-01, ). Použite%Časová pečiatkana odovzdanie dát mimo tohto rozsahu alebo použite pandas dataframe, pretože toto obmedzenie platí len pre zoznam. - Pre
ExecuteGlobal,ExecuteClassaExecuteTablevšetky argumenty okrem zdroja dát (globály, triedy alebo tabuľky) a premenná sú voliteľné.
Príklady
Testovacia trieda obsahuje metódu, ktorá demonštruje všetky možnosti odovzdávania dát:
nastavte global = "isc.py.test.PersonD"
nastavte triedu = "isc.py.test.Person"
nastavte tabuľku = "isc_py_test.Person"
nastavte dotaz = "SELECT * FROM isc_py_test.Person"
// Spoločné argumenty
nastavte premennú = "df"
nastavte typ = "dataframe"
nastavte začiatok = 1
nastavte koniec = $g(^isc.py.test.PersonD, začiatok)
// Spôsob 0: ExecuteGlobal bez argumentov
nastavte sc = ##class(isc.py.Main).ExecuteGlobal(global, premenná _ 0, typ)
// Spôsob 1: ExecuteGlobal s argumentmi
// Pri prenose globálnej premennej sa názvy polí zadávajú ručne
// globalKey - názov subscriptu
nastavte popisky = $lb("globalKey", "Názov", "DOB", "TS", "RandomTime", "AgeYears", "AgeDecimal", "AgeDouble", "Bool")
// mask obsahuje o 1 prvok menej ako popisky, pretože "globalKey" - názov subskryptu
// Vynechávame %%CLASSNAME
nastavte maska = "-+dmt+++b"
nastavte sc = ##class(isc.py.Main).ExecuteGlobal(global, premenná _ 1, typ, začiatok, koniec, maska, popisky)
// Spôsob 2: ExecuteClass
nastavte sc = ##class(isc.py.Main).ExecuteClass(trieda, premenná _ 2, typ, začiatok, koniec)
// Spôsob 3: ExecuteTable
nastavte sc = ##class(isc.py.Main).ExecuteTable(tabuľka, premenná _ 3, typ, začiatok, koniec)
// Spôsob 4: ExecuteTable
nastavte sc = ##class(isc.py.Main).ExecuteQuery(dotaz, premenná _ 4, typ)Zavolajte metódu do ##class(isc.py.test.Person).Test() aby ste videli, ako fungujú všetky metódy prenosu dát.
Pomocné metódy
GetVariableInfo(premenná, serializácia, .definovaná, .typ, .dĺžka)— získať informácie o premennej: či je definovaná, trieda a dĺžka serializácie.GetVariableDefined(premenná, .definovaná)— či je premenná definovaná.GetVariableType(premenná, .typ)— získať triedu premennej.GetStatus()— získať a odstrániť poslednú výnimku na strane Pythonu.GetModuleInfo(modul, .importovaný, .alias)— získať premennú modulu a stav importu.GetFunctionInfo(funkcia, .definovaná, .typ, .dokumentácia, .podpis, .argumenty)— získať informácie o funkcii.
Interoperabilita
Naučili ste sa volať Python Gateway z terminálu, teraz začneme používať ho v produkcii. Základ interakcie s Python v tomto režime je isc.py.ens.Operation. Umožňuje nám:
- Spúšťať kód na Pythone
- Ukladať/Obnovovať kontext Pythonu
- Načítať a získať údaje z Pythonu
V podstate, operácia Python je obal nad isc.py.Main. Operácia isc.py.ens.Operation umožňuje interakciu s procesom Python z produktov InterSystems IRIS. Podporuje päť typov požiadaviek:
isc.py.msg.ExecutionRequestna vykonanie Python kódu. Vrátiisc.py.msg.ExecutionResponses výsledkom vykonania a hodnotami požadovaných premenných.isc.py.msg.StreamExecutionRequestna vykonanie Python kódu. Vrátiisc.py.msg.StreamExecutionResponses výsledkom vykonania a hodnotami požadovaných premenných. Analógisc.py.msg.ExecutionRequest, ale prijíma a vracia prúdy namiesto reťazcov.isc.py.msg.QueryRequestna prenos výsledku vykonania SQL dotazu. VrátiEns.Response.isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequestna prenášanie dát globálneho/kontrolného/záznamového. VrátiEns.Response.isc.py.msg.SaveRequestna uloženie kontextu Pythonu. VrátiEns.StringResponses identifikátorom kontextu.isc.py.msg.RestoreRequestna obnovenie kontextu Pythonu.Okrem toho,
isc.py.ens.Operationmá dva nastavenia:Initializer— výber triedy implementujúcej rozhranieisc.py.init.Abstract. Môže byť použitý na načítanie funkcií, modulov, tried a podobne. Vykonáva sa iba raz pri spustení procesu.PythonLib— (iba pre Linux) ak vidíte chyby pri načítaní, nastavte jeho hodnotu nalibpython3.6m.soalebo dokonca na úplnú cestu k knižnici Python.
Vytváranie obchodných procesov
Existujú dve triedy, ktoré uľahčujú vývoj obchodných procesov:
isc.py.ens.ProcessUtilsumožňuje extrahovať anotácie z aktivít so substitúciou premenných.isc.py.util.BPEmulatorumožňuje jednoducho testovať obchodné procesy s Python. Môže vykonávať obchodný proces (časti v jazyku Python) v aktuálnom procese.
Zamieňanie premenných
Všetky obchodné procesy, ktoré dedí od isc.py.ens.ProcessUtils, môžu používať metódu GetAnnotation(name) na získanie hodnoty anotácie aktivity podľa jej názvu. Anotácia aktivity môže obsahovať premenné, ktoré budú vypočítané na strane InterSystems IRIS pred odoslaním do Python. Tu je syntax substitúcie premenných:
${class:method:arg1:...:argN}— volanie metódy#{expr}— vykonať kód v ObjectScript.
Príklad je k dispozícii v testovacom obchodnom procese isc.py.test.Process, napríklad v aktivite Maticová korelácia: Graf: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). V tomto príklade:
#{process.WorkDirectory}vracia vlastnosť WorkDirectory objektuprocess, ktorý je inštanciou triedyisc.py.test.Processt.j. aktuálneho obchodného procesu.${%PopulateUtils:Integer:1:100}vyvoláva metóduIntegertriedy%PopulateUtils, posielajúc argumenty1a100, vracia náhodné celé číslo v rozsahu1...100.
Testovací obchodný proces
Testový produkt a testovací obchodný proces sú k dispozícii predvolene ako súčasť Python Gateway. Na ich použitie:
- V termináli OS vykonajte:
pip install pandas matplotlib seaborn. - V termináli InterSystems IRIS vykonajte:
do ##class(isc.py.test.CannibalizationData).Import()na naplnenie testovacích údajov. - Spustite produkt
isc.py.test.Production. - Odoslať požiadavku typu
Ens.Requestvisc.py.test.Process.
Pozrime sa, ako to všetko funguje dohromady. Otvorte isc.py.test.Process v editore BPL:

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

Používa sa požiadavka isc.py.msg.ExecutionRequest, tu sú jej vlastnosti:
Kód— kód Python.SeparateLines— rozdeľovať kód na riadky na vykonanie.$c(10)(n) slúži na rozdelenie riadkov. Upozorňujeme, že NIE je odporúčané spracovávať správu celú naraz, táto funkcia je určená iba na spracovaniedefa podobných viacerých výrazov. Predvolene0.Premenné— zoznam premenných oddelených čiarkami, ktoré budú pridané do odpovede.Serialization— Ako serializovať premenné, ktoré chceme vrátiť. Možnosti:Str,Repr,JSON,PickleaDill, predvoleneStr.
V našom prípade len nastavujeme vlastnosť Kód, takže všetky ostatné vlastnosti používajú predvolené hodnoty. Nastavujeme ju volaním process.GetAnnotation("Import pandas"), ktorá pri behu vracia anotáciu po vykonaní substitúcie premenných. Nakoniec bude kód import pandas as pd odovzdaný do Pythonu. GetAnnotation môže byť užitočná na získanie viacerých riadkových skriptov Python, ale neexistujú žiadne obmedzenia na tento spôsob získania kódu. Môžete nastaviť vlastnosť Kód akýmkoľvek spôsobom, ktorý vám vyhovuje.
Získavanie premenných
Ďalší zaujímavý výzvou s použitím isc.py.msg.ExecutionRequest — Correlation Matrix: Tabular:

Vypočítava Matricu Korelácie na strane Python a extrahuje premennú corrmat späť do InterSystems IRIS vo formáte JSON, prostredníctvom nastavenia vlastností požiadavky:
Premenné:"corrmat"Serialization:"JSON"
Môžeme vidieť výsledky v Visual Trace:

A ak potrebujeme túto hodnotu v BP, môžeme ju získať takto: callresponse.Variables.GetAt("corrmat").
Prenos dát
Ďalej sa budeme rozprávať o prenose údajov z InterSystems IRIS do Python, všetky požiadavky na prenos údajov realizujú rozhranie isc.py.msg.DataRequest, ktoré poskytuje nasledujúce vlastnosti:
Variable— Python premenná, do ktorej sa zapisujú dáta.Typ— typ premennej:dataframe(pandas dataframe) alebolist.Namespace— oblasť, z ktorej získavame dáta. Balíkisc.pymusí byť dostupný v tejto oblasti. Môže to byť oblasť bez podpory produktov.
Na základe tohto rozhrania sú implementované 4 triedy požiadaviek:
isc.py.msg.QueryRequest— nastavte vlastnosťQueryna prenos SQL požiadavky.isc.py.msg.ClassRequest— nastavte vlastnosťClassna prenos údajov triedy.isc.py.msg.TableRequest— nastaviť vlastnosťTablena prenos údajov tabuľky.isc.py.msg.GlobalRequest— nastaviť vlastnosťGlobalna prenos údajov globálnej premennej.
V teste sledujte aktivitu RAW, kde isc.py.msg.QueryRequest zobrazenú v akcii.

Uloženie/obnovenie kontextu Python
Napokon môžeme uložiť kontext Python v InterSystems IRIS, aby sme to urobili, pošleme isc.py.msg.SaveRequest s argumentmi:
Mask— Ukladajú sa len premenné, ktoré vyhovujú maske. Podporujú sa*a?. Príklad:"Data*, Figure?". Ako predvolené*.MaxLength— Maximálna dĺžka uchovávanej premennej. Ak je serializácia premennej dlhšia, bude ignorovaná. Nastavte 0, aby ste získali premenné akejkoľvek dĺžky. Predvolene$$$MaxStringLength.Názov— Názov kontextu (voliteľné).Description— Popis kontextu (voliteľné).
Vracia Ens.StringResponse s Id uloženého kontextu. V testovacom procese sledujte aktivitu Uložiť kontext.
Príslušný požiadavok isc.py.msg.RestoreRequest na načítanie kontextu z InterSystems IRIS do Pythonu:
ContextId— identifikátor kontextu.Vymazať— vyčistiť kontext pred obnovením.
Jupyter Notebook
— je to webová aplikácia s otvoreným zdrojovým kódom, ktorá umožňuje vytvárať notebooky obsahujúce kód, vizualizácie a text a publikovať ich. Python Gateway umožňuje zobraziť a upravovať BPL procesy vo forme Jupyter Notebook. Všimnite si, že sa v súčasnosti používa bežný vykonávateľ Python 3.
Toto rozšírenie predpokladá, že anotácie obsahujú kód Python a používajú názvy aktivít ako predchádzajúce nadpisy. Teraz je možné vyvíjať obchodné procesy PythonGateway v Jupyter Notebook. Tu je, čo je možné:
- Vytvárať nové obchodné procesy
- Odstraňovať obchodné procesy
- Vytvárať nové aktivity
- Upravovať aktivity
- Odstraňovať aktivity
Tu sú . A niekoľko snímok obrazovky:
Sprievodca procesmi

Editor procesu

Inštalácia
- Budete potrebovať InterSystems IRIS 2019.2+.
- Nainštalujte PythonGateway v0.8+ (vyžaduje iba
isc.py.util.Jupyter,isc.py.util.JupyterCheckpointsaisc.py.ens.ProcessUtils). - Aktualizujte kód ObjectScript z repozitára.
- Vykonajte
do ##class(isc.py.util.Jupyter).Install()a riaďte sa pokynmi.
.
Zhrnutie
MLToolkit je súbor nástrojov, ktorého cieľom je kombinovať modely a transakčné prostredie, aby boli vytvorené modely ľahko použiteľné priamo vo vašich obchodných procesoch. Python Gateway je súčasťou MLToolkit a zabezpečuje integráciu s jazykom Python, čo umožňuje orchestráciu akýchkoľvek algoritmov strojového učenia vytvorených v jazyku Python (hlavné prostredie pre mnohých odborníkov na dáta) a využívať množstvo pripravených knižníc na rýchle vytváranie adaptabilných, robotických analytických AI/ML riešení na platforme InterSystems IRIS.
Odkazy
MLToolkit
Skupina používateľov MLToolkit je súkromný GitHub repozitár, ktorý bol vytvorený ako súčasť firemnej GitHub organizácie InterSystems. Je určený externým používateľom, ktorí inštalujú, študujú alebo už používajú komponenty MLToolkit, vrátane Python Gateway. V skupine je k dispozícii množstvo implementovaných prípadových štúdií (so zdrojovým kódom a testovacími údajmi) v oblastiach marketingu, výroby, medicíny a mnohých ďalších odvetviach. Ak sa chcete pripojiť k skupine používateľov ML Toolkit, prosím, pošlite krátku správu na e-mailovú adresu: a vo svojom e-maile uveďte nasledujúce údaje:
- Používateľské meno GitHub
- Organizácia (v ktorej pracujete alebo študujete)
- Pozícia (vaša skutočná funkcia vo vašej organizácii, alebo "Študent", alebo "Nezávislý").
- Krajina
Tým, ktorí prečítali článok a majú záujem o možnosti InterSystems IRIS ako platformy na vývoj alebo hosting mechanizmov umelej inteligencie a strojového učenia, ponúkame diskusiu o možných scenároch, ktoré sú pre vašu firmu zaujímavé. Radi preskúmame potreby vašej firmy a spoločne určíme plán akcií; kontaktná e-mailová adresa našej expertné skupiny AI/ML je: .
Zdroj: habr.com
