Python Gateway rakenduses InterSystems IRIS

See artikkel räägib Python Gatewayst, avatud lähtekoodiga kogukonnaprojektist InterSystems IRIS andmeplatvormi jaoks. See projekt võimaldab teil korraldada mis tahes Pythonis (paljude andmeteadlaste põhikeskkond) loodud masinõppe algoritme, kasutada arvukaid valmis teeke, et kiiresti InterSystems IRIS platvormil luua adaptiivseid robotipõhiseid AI / ML lahendusi. Selles artiklis näitan, kuidas InterSystems IRIS saab Pythonis protsesse korraldada, tõhusalt kahesuunalisi andmeid edastada ja intelligentseid äriprotsesse luua.

kava

  1. Sissejuhatus
  2. Tööriistad.
  3. Paigaldamine.
  4. API.
  5. Koostalitlusvõime.
  6. Jupyteri märkmik.
  7. Järeldused.
  8. Lingid.
  9. MLT-tööriistakomplekt.

Sissejuhatus

Python on kõrgetasemeline üldotstarbeline programmeerimiskeel, mille eesmärk on parandada arendaja tootlikkust ja koodi loetavust. Käesolevas artiklite sarjas käsitlen Pythoni kasutamise võimalusi InterSystems IRIS platvormil, kusjuures selle artikli põhifookuses on Pythoni kasutamine masinõppemudelite loomise ja käitamise keelena.

Masinaõpe (ML) on tehisintellekti meetodite klass, mille iseloomulikuks tunnuseks ei ole probleemi otsene lahendamine, vaid õppimine paljude sarnaste probleemide lahendamise protsessis.

Masinõppe algoritmid ja mudelid muutuvad üha tavalisemaks. Sellel on palju põhjuseid, kuid see kõik taandub juurdepääsetavusele, lihtsusele ja praktiliste tulemuste saavutamisele. Kas klasterdamine või isegi närvivõrgu modelleerimine on uus tehnoloogia?

Muidugi mitte, aga tänapäeval pole ühe mudeli käitamiseks vaja kirjutada sadu tuhandeid koodiridu ning mudelite loomise ja kasutamise kulud jäävad järjest väiksemaks.

Tööriistad arenevad – kuigi meil pole täielikult GUI-keskseid AI/ML-i tööriistu, on edusammud, mida oleme näinud paljude teiste infosüsteemide klasside puhul, nagu BI (koodi kirjutamisest kuni raamistike ja GUI-kesksete konfigureeritavate lahendusteni). täheldatud ka AI/ML loomise tööriistades. Oleme koodi kirjutamise etapi juba läbinud ja täna kasutame mudelite ehitamiseks ja koolitamiseks raamistikke.

Masinõppega alustamist hõlbustavad ka muud täiustused, näiteks võimalus levitada eelkoolitatud mudelit, kus lõppkasutaja peab lihtsalt lõpetama mudeli väljaõppe oma konkreetsete andmete põhjal. Need edusammud muudavad masinõppe õppimise palju lihtsamaks nii spetsialistide kui ka ettevõtete jaoks üldiselt.

Teisest küljest kogume järjest rohkem andmeid. Ühtse andmeplatvormiga, nagu InterSystems IRIS, saab kogu selle teabe kohe ette valmistada ja kasutada masinõppemudelite sisendina.

Pilvele üleminekuga muutub AI/ML projektide käivitamine lihtsamaks kui kunagi varem. Saame tarbida ainult neid ressursse, mida vajame. Lisaks saame tänu pilveplatvormide pakutavale paralleelsusele säästa aega.

Aga kuidas on lood tulemustega? Siin lähevad asjad keerulisemaks. Mudelite ehitamiseks on palju tööriistu, millest ma järgmisena räägin. Hea mudeli ehitamine pole lihtne, aga mis edasi? Ärimudeli kasutamisest kasumi teenimine on samuti mittetriviaalne ülesanne. Probleemi juur on analüütiliste ja tehingute töökoormuse ning andmemudelite eraldamine. Kui koolitame mudelit, teeme seda tavaliselt ajalooliste andmete põhjal. Kuid konstrueeritud mudeli koht on tehinguandmete töötlemisel. Mis kasu on parimast petturlike tehingute tuvastamise mudelist, kui käivitame selle kord päevas? Petturid on rahaga ammu lahkunud. Peame koolitama mudelit ajalooliste andmete põhjal, kuid peame seda ka reaalajas rakendama uutele sissetulevatele andmetele, et meie äriprotsessid saaksid mudeli ennustustele tugineda.

ML Toolkit on tööriistakomplekt, mille eesmärk on just see: ühtlustada mudeleid ja tehingukeskkonda, et ehitatud mudeleid saaks hõlpsasti otse teie äriprotsessides kasutada. Python Gateway on osa ML Toolkitist ja pakub integratsiooni Pythoni keelega (sarnaselt sellele, kuidas R Gateway, olles ML Toolkiti osa, pakub integratsiooni R-keelega).

Toolkit

Enne jätkamist tahaksin kirjeldada mõnda Pythoni tööriista ja teeki, mida hiljem kasutame.

Tehnoloogia

  • Python on tõlgendatav kõrgetasemeline üldotstarbeline programmeerimiskeel. Keele peamine eelis on suur matemaatika-, ML- ja AI-teekide raamatukogu. Nagu ObjectScript, on see objektorienteeritud keel, kuid kõik on määratletud pigem dünaamiliselt kui staatiliselt. Ka kõik on objekt. Hilisemates artiklites eeldatakse keele mööduvat tundmist. Kui soovite alustada õppimist, soovitan alustada dokumentatsioon.
  • Meie järgmiste harjutuste jaoks seadke Python 3.6.7 64-bitine.
  • IDE: Ma kasutan Pügarm, aga üldiselt nad много. Kui kasutate Atelieri, on Pythoni arendajatele olemas Eclipse'i pistikprogramm. Kui kasutate VS-koodi, on Pythoni jaoks olemas laiendus.
  • Märkmik: IDE asemel saate kirjutada ja jagada oma skripte veebimärkmikutes. Kõige populaarsem neist on jupyter.

Raamatukogud

Siin on (mittetäielik) masinõppe teekide loend:

  • Nuhklik — põhipakett täpsete arvutuste tegemiseks.
  • Pandad — suure jõudlusega andmestruktuurid ja andmeanalüüsi tööriistad.
  • matplotlib — graafikute koostamine.
  • Merine — matplotlib-il põhinev andmete visualiseerimine.
  • Sklearn — masinõppe meetodid.
  • XGBoost — masinõppe algoritmid gradiendi võimendamise metoodika raames.
  • Gensim - NLP.
  • Keras - närvivõrgud.
  • Tensorivoog — platvorm masinõppemudelite loomiseks.
  • PyTorch on Pythonile keskendunud masinõppemudelite loomise platvorm.
  • Nyoka - PMML erinevatest mudelitest.

AI/ML tehnoloogiad muudavad äri tõhusamaks ja kohanemisvõimelisemaks. Lisaks on tänapäeval neid tehnoloogiaid üha lihtsam arendada ja rakendada. Alustage õppimist AI/ML-tehnoloogiate ja selle kohta, kuidas need võivad teie organisatsioonil kasvada.

Paigaldamine

Python Gateway installimiseks ja kasutamiseks on mitu võimalust:

  • ОС
    • Windows
    • Linux
    • moon
  • laevalaadija
    • Kasutage DockerHubi pilti
    • Looge oma välimus

Olenemata installimeetodist vajate lähtekoodi. Ainus koht koodi allalaadimiseks on väljaannete leht. See sisaldab testitud stabiilseid väljalaseid, võtke lihtsalt uusim. Hetkel on 0.8 aga aja jooksul tuleb uusi juurde. Ärge kloonige/laadige alla hoidlat, laadige alla uusim versioon.

ОС

Kui installite Python Gateway operatsioonisüsteemi, peate esmalt (olenemata operatsioonisüsteemist) installima Python. Selle jaoks:

  1. Installige Python 3.6.7 64-bitine. Soovitatav on installida Python vaikekataloogi.
  2. Paigaldage moodul dill: pip install dill.
  3. Laadige alla ObjectScripti kood (st. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) mis tahes piirkonda, kus on tooteid. Kui soovite, et olemasolev piirkond toetaks tooteid, käivitage: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Koht viiktekst DLL/SO/DYLIB kausta bin teie InterSystems IRIS-i eksemplar. Teegi fail peab olema tagastatud teel saadaval write ##class(isc.py.Callout).GetLib().

Windows

  1. Veenduge, et keskkonna muutuja PYTHONHOME osutab Pythoni versioonile 3.6.7.
  2. Veenduge, et süsteemi keskkonnamuutuja on PATH sisaldab muutujat PYTHONHOME (või kataloog, millele see viitab).

Linux (Debian/Ubuntu)

  1. Kontrollige, kas keskkonnamuutuja on PATH sisaldab /usr/lib и /usr/lib/x86_64-linux-gnu. Kasuta faili /etc/environment keskkonnamuutujate määramiseks.
  2. Vigade korral undefined symbol: _Py_TrueStruct seadke seadistus PythonLib. ka sisse readme seal on jaotis Veaotsing.

moon

  1. Praegu toetatakse ainult Python 3.6.7 python.org. Kontrollige muutujat PATH.

Kui muutsite keskkonnamuutujaid, taaskäivitage InterSystemsi toode.

laevalaadija

Konteinerite kasutamisel on mitmeid eeliseid:

  • Teisaldatavus
  • Efektiivsus
  • Isolatsioon
  • Kergus
  • Muutumatus

Vaadake seda artiklite sari lisateabe saamiseks Dockeri kasutamise kohta InterSystemsi toodetega.

Kõik Python Gateway järgud on praegu konteineripõhised 2019.4.

Valmis pilt

Jookse: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestPython Gateway allalaadimiseks ja käitamiseks koos InterSystems IRIS Community Editioniga. See on kõik.

Looge oma välimus

Dockeri kujutise loomiseks käivitage hoidla juurtes: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Vaikimisi on pilt üles ehitatud pildi põhjal store/intersystems/iris-community:2019.4.0.383.0, aga saate seda muuta, määrates muutuja IMAGE.
InterSystems IRIS-ist ehitamiseks käivitage: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest ".

Pärast seda saate käivitada dokkeri pildi:

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

Kui kasutate InterSystems IRIS Community Editionil põhinevat pilti, võite võtme välja jätta.

Kommentaarid

  • Testimisprotsess isc.py.test.Process salvestab hulga pilte ajutisse kataloogi. Võib-olla soovite seda teed ühendatud kataloogi muuta. Selleks muutke seadet WorkingDir ühendatud kataloogi täpsustamine.
  • Terminali käivitamiseks juurdepääsemiseks tehke järgmist. docker exec -it irispy sh.
  • Juurdepääs süsteemihaldusportaalile sisselogimisega SuperUser/SYS.
  • Konteineri peatamiseks käivitage: docker stop irispy && docker rm --force irispy.

Installimise kontrollimine

Kui olete Python Gateway installinud, tasub kontrollida, kas see töötab. Käivitage see kood InterSystems IRIS terminalis:

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

Tulemus peaks olema: HELLO — Pythoni muutuja väärtus x. Kui tagastamise olek sc on viga või var tühi, kontrolli Readme – tõrkeotsingu jaotis.

API

Python Gateway on installitud ja olete veendunud, et see töötab. On aeg seda kasutama hakata!
Pythoni peamine liides on isc.py.Main. See pakub järgmisi meetodite rühmi (kõik tagastavad %Status):

  • Koodi täitmine
  • Andmeedastus
  • Abistav

Koodi täitmine

Need meetodid võimaldavad teil käivitada suvalise Pythoni koodi.

Lihtne string

SimpleString - see on peamine meetod. Selleks on vaja 4 valikulist argumenti:

  • code - käivitatav koodirida. Reavahetuse märk: $c(10).
  • returnVariable — tagastatava muutuja nimi.
  • serialization - kuidas seriaaliseerida returnVariable. 0 — string (vaikimisi), 1 — kordus.
  • result — ByRef viide muutujale, millesse väärtus on kirjutatud returnVariable.

Eespool tegime:

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

Selles näites määrame Pythoni muutujale x väärtus Hello ja soovite tagastada Pythoni muutuja väärtuse x ObjectScripti muutujale var.

ExecuteCode

ExecuteCode on turvalisem ja vähem piirav alternatiiv SimpleString.
InterSystems IRIS platvormi ridade pikkus on piiratud 3 641 144 tähemärgiga ja kui soovite käivitada pikemat koodiosa, peate kasutama lõime.
Aktsepteeritakse kahte argumenti:

  • code — käivitatav Pythoni koodi rida või voog.
  • variable — (valikuline) määrab täitmise tulemuse code see Pythoni muutuja.

Näide kasutamiseks:

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

Selles näites korrutame 2 3-ga ja kirjutame tulemuse Pythoni muutujasse y.

Andmeedastus

Andmete edastamine Pythoni ja sealt edasi.

Python -> InterSystems IRIS

Pythoni muutuja väärtuse saamiseks InterSystems IRIS-is on 4 võimalust, olenevalt vajatavast serialiseerimisest:

  • String lihtsate andmetüüpide ja silumise jaoks.
  • Repr lihtsate objektide salvestamiseks ja silumiseks.
  • JSON andmete hõlpsaks manipuleerimiseks InterSystems IRIS-i poolel.
  • Pickle objektide salvestamiseks.

Need meetodid võimaldavad teil Pythonist muutujaid stringina või voogudena hankida.

  • GetVariable(variable, serialization, .stream, useString) - saada serialization muutuja variable в stream. Kui useString on 1 ja serialiseerimine asetatakse stringile, siis tagastatakse string, mitte voog.
  • GetVariableJson(variable, .stream, useString) — hankige muutuja JSON-serialiseerimine.
  • GetVariablePickle(variable, .stream, useString, useDill) -saab muutuja Pickle (või Dill) serialiseerimise.

Proovime saada oma muutuja y.

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

InterSystems IRIS -> Python

Andmete laadimine InterSystems IRIS-ist Pythoni.

  • ExecuteQuery(query, variable, type, namespace) - loob andmestiku (pandas dataframe või list) sql-päringust ja määrab selle Pythoni muutujaks variable. Kilekott isc.py peab olema piirkonnas saadaval namespace — taotlus täidetakse seal.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - laadib globaalseid andmeid global alaindeksist start kuni end Pythonis tüübimuutujana type: listvõi pandad dataframe. Valikuliste argumentide kirjeldus mask ja labels saadaval klassi dokumentatsioonis ja hoidlas Andmeedastusdokumendid.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - laadib klassi andmed class alates id start kuni end Pythonis tüübimuutujana type: listvõi pandad dataframe. properties — loetelu (komaga eraldatud) klassi omadustest, mis tuleb andmekogumisse laadida. Toetatud maskid * и ?. Vaikimisi – * (kõik omadused). Kinnisvara %%CLASSNAME ignoreeritud.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - laadib tabeliandmed table alates id start kuni end Pythonis.

ExecuteQuery — universaalne (iga õige SQL-päring edastatakse Pythonile). Kuid, ExecuteGlobal ja selle ümbrised ExecuteClass и ExecuteTable töötada mitmete piirangutega. Need on palju kiiremad (3–5 korda kiiremad kui ODBC draiver ja 20 korda kiiremad ExecuteQuery). Rohkem infot aadressil Andmeedastusdokumendid.
Kõik need meetodid toetavad andmeedastust mis tahes piirkonnast. Kilekott isc.py peab olema sihtpiirkonnas saadaval.

Käivitage päring

ExecuteQuery(request, variable, type, namespace) — mis tahes õige SQL-päringu tulemuste edastamine Pythoni. See on kõige aeglasem andmeedastusviis. Kasutage seda, kui ExecuteGlobal ja selle ümbrised pole saadaval.

Argumendid:

  • query - sql päring.
  • variable — Pythoni muutuja nimi, millesse andmed kirjutatakse.
  • type - list või Pandad dataframe.
  • namespace — piirkond, kus taotlus täidetakse.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - globaalse läbimine Pythonis.

Argumendid:

  • global - globaalne nimi ilma ^
  • variable — Pythoni muutuja nimi, millesse andmed kirjutatakse.
  • type - list või Pandad dataframe.
  • start — globaalse esimene indeks. Tingimata %Integer.
  • end — maailma viimane indeks. Tingimata %Integer.
  • mask — globaalse väärtuse mask. Mask võib olla lühem kui globaalses väljade arv (sel juhul jäetakse lõpus olevad väljad vahele). Maski vormindamine:
    • + edastage väärtus sellisena, nagu see on.
    • - jäta väärtus vahele.
    • b — Boole'i ​​tüüp (0 - False, kõik ülejäänud - True).
    • d — Kuupäev (alates $horolog, Windowsis aastast 1970, Linuxis alates 1900. aastast).
    • t — Kellaaeg ($horolog, sekundit pärast südaööd).
    • m — ajatempel (vormingustring AASTA-KUUD-PÄEV TUND:MINUTE:TEINE).
  • labels — %Veerunimede loend. Esimene element on alaindeksi nimi.
  • namespace — piirkond, kus taotlus täidetakse.

ExecuteClass

Mähi üle ExecuteGlobal. Klassi määratluse põhjal valmistab ette kõne ExecuteGlobal ja helistab talle.

ExecuteClass(class, variable, type, start, end, properties, namespace) - klassiandmete edastamine Pythonis.

Argumendid:

  • class - klassi nimi
  • variable — Pythoni muutuja nimi, millesse andmed kirjutatakse.
  • type - list või Pandad dataframe.
  • start - stardi ID.
  • end — lõplik ID
  • properties — loetelu (komaga eraldatud) klassi omadustest, mis tuleb andmekogumisse laadida. Toetatud maskid * и ?. Vaikimisi – * (kõik omadused). Kinnisvara %%CLASSNAME ignoreeritud.
  • namespace — piirkond, kus taotlus täidetakse.

Kõik omadused edastatakse sellisel kujul, välja arvatud tüübiomadused %Date, %Time, %Boolean и %TimeStamp - need teisendatakse vastavateks Pythoni klassideks.

Käivita tabel

Mähi üle ExecuteClass. Tõlgib tabeli nime klassinimeks ja kutsub ExecuteClass. Allkiri:

ExecuteTable(table, variable, type, start, end, properties, namespace) - tabeliandmete edastamine Pythonile.

Argumendid:

  • table - tabeli nimi.
    Kõik muud argumendid võetakse vastu nii nagu on ExecuteClass.

Märkused

  • ExecuteGlobal, ExecuteClass и ExecuteTable töötavad sama kiiresti.
  • ExecuteGlobal 20 korda kiiremini kui ExecuteQuery suurtel andmekogudel (edastusaeg >0.01 sekundit).
  • ExecuteGlobal, ExecuteClass и ExecuteTable töötage selle struktuuriga globaalsete objektide kallal: ^global(key) = $lb(prop1, prop2, ..., propN) kus key — täisarv.
  • eest ExecuteGlobal, ExecuteClass и ExecuteTable toetatud väärtuste vahemik %Date vastab vahemikule mktime ja oleneb OS-ist (aknad: 1970-01-01, Linux 1900-01-01, mac). Kasuta %TimeStampandmete edastamiseks väljaspool seda vahemikku või pandade andmeraami kasutamiseks, sest see on ainult loendi piirang.
  • eest ExecuteGlobal, ExecuteClass и ExecuteTable kõik argumendid peale andmeallika (globaalne, klass või tabel) ja muutuja on valikulised.

näited

Testklass isc.py.test.Person sisaldab meetodit, mis näitab kõiki andmeedastusvõimalusi:

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)

Kutsuge meetod do ##class(isc.py.test.Person).Test() et näha, kuidas kõik andmeedastusmeetodid töötavad.

Abistamismeetodid

  • GetVariableInfo(variable, serialization, .defined, .type, .length) — saada teavet muutuja kohta: kas see on defineeritud, selle klass ja serialiseerimise pikkus.
  • GetVariableDefined(variable, .defined) — kas muutuja on määratletud.
  • GetVariableType(variable, .type) — saada muutuja klass.
  • GetStatus() - hankige ja eemaldage viimane erand Pythoni poolel.
  • GetModuleInfo(module, .imported, .alias) — hankige mooduli muutuja ja impordi olek.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) — saada teavet funktsiooni kohta.

Koostalitlusvõime

Olete õppinud, kuidas Python Gatewayle terminalist helistada, nüüd hakkame seda tootmises kasutama. Selles režiimis Pythoniga suhtlemise alus on isc.py.ens.Operation. See võimaldab meil:

  • Käivitage kood Pythonis
  • Salvesta/taasta Pythoni kontekst
  • Andmete laadimine ja vastuvõtmine Pythonist

Põhimõtteliselt on Pythoni toiming ümbris isc.py.Main. Operatsioon isc.py.ens.Operation annab võimaluse suhelda InterSystems IRIS toodete Pythoni protsessiga. Toetatud on viis päringut:

  • isc.py.msg.ExecutionRequest Pythoni koodi käivitamiseks. Tagastab isc.py.msg.ExecutionResponse koos täitmistulemuse ja taotletud muutujate väärtustega.
  • isc.py.msg.StreamExecutionRequest Pythoni koodi käivitamiseks. Tagastab isc.py.msg.StreamExecutionResponse täitmise tulemus ja nõutud muutujate väärtused. Analoog isc.py.msg.ExecutionRequest, kuid aktsepteerib ja tagastab stringide asemel vooge.
  • isc.py.msg.QueryRequest SQL-päringu täitmise tulemuse edastamiseks. Tagastab Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest globaalsete/klassi/tabeliandmete edastamiseks. Tagastab Ens.Response.
  • isc.py.msg.SaveRequest Pythoni konteksti salvestamiseks. Tagastab Ens.StringResponse konteksti ID-ga.
  • isc.py.msg.RestoreRequest Pythoni konteksti taastamiseks.

    Lisaks isc.py.ens.Operation on kaks seadet:

    • Initializer — liidest rakendava klassi valimine isc.py.init.Abstract. Seda saab kasutada funktsioonide, moodulite, klasside jms laadimiseks. See käivitatakse üks kord, kui protsess algab.
    • PythonLib - (Ainult Linux), kui näete laadimisel tõrkeid, määrake selle väärtuseks libpython3.6m.so või isegi Pythoni teegi täielikul teel.

Äriprotsesside loomine

Saadaval on kaks klassi, mis hõlbustavad äriprotsesside arendamist:

  • isc.py.ens.ProcessUtils võimaldab välja võtta annotatsioone muutuva asendusega tegevustest.
  • isc.py.util.BPEmulator muudab Pythoniga äriprotsesside testimise lihtsaks. See võib praeguses protsessis käivitada äriprotsessi (Pythoni osad).

Muutuja asendus

Kõik äriprotsessid on päritud isc.py.ens.ProcessUtils, saab meetodit kasutada GetAnnotation(name) et saada tegevuse annotatsiooni väärtus selle nime järgi. Tegevuse annotatsioon võib sisaldada muutujaid, mis arvutatakse InterSystems IRIS-i poolel enne Pythoni edastamist. Siin on muutuja asendamise süntaks:

  • ${class:method:arg1:...:argN} - meetodi kutse
  • #{expr} — käivitada kood ObjectScript keeles.

Näide on saadaval testäriprotsessis isc.py.test.Processnäiteks tegevuses Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Selles näites:

  • #{process.WorkDirectory} tagastab objekti WorkDirectory atribuudi process, mis on klassi eksemplar isc.py.test.Process need. praegune äriprotsess.
  • ${%PopulateUtils:Integer:1:100} kutsub meetodit Integer klass %PopulateUtils, argumendid 1 и 100, tagastab vahemikus juhusliku täisarvu 1...100.

Testige äriprotsessi

Testtooted ja äriprotsesside testimine on Python Gateway osana vaikimisi saadaval. Nende kasutamiseks toimige järgmiselt.

  1. Käivitage OS-i terminalis: pip install pandas matplotlib seaborn.
  2. InterSystems IRIS terminalis käivitage: do ##class(isc.py.test.CannibalizationData).Import() testiandmete täitmiseks.
  3. Toodete turuletoomine isc.py.test.Production.
  4. Saada päringu tüüp Ens.Request в isc.py.test.Process.

Vaatame, kuidas see kõik koos toimib. Avatud isc.py.test.Process BPL-i redaktoris:

Python Gateway rakenduses InterSystems IRIS

Koodi täitmine

Kõige olulisem väljakutse on Pythoni koodi käivitamine:

Python Gateway rakenduses InterSystems IRIS

Päring kasutatud isc.py.msg.ExecutionRequest, siin on selle omadused:

  • Code - Pythoni kood.
  • SeparateLines — kas jagada kood täitmiseks ridadeks. $c(10) (n) kasutatakse stringide eraldamiseks. Pange tähele, et kogu sõnumit EI OLE soovitatav korraga töödelda, see funktsioon on mõeldud ainult töötlemiseks def ja sarnased mitmerealised avaldised. Vaikimisi 0.
  • Variables — vastusele lisatavate muutujate komadega eraldatud loend.
  • Serialization — Kuidas järjestada muutujaid, mida tahame tagastada. Valikud: Str, Repr, JSON, Pickle и Dill, vaikimisi Str.

Meie puhul määrame ainult vara Code, seega kasutavad kõik muud atribuudid vaikeväärtusi. Panime selle paika helistades process.GetAnnotation("Import pandas"), mis käitusajal tagastab annotatsiooni pärast muutuja asendamist. Lõppude lõpuks, kood import pandas as pd edastatakse Pythonile. GetAnnotation võib olla kasulik mitmerealiste Pythoni skriptide hankimiseks, kuid sellel koodi hankimise meetodil pole piiranguid. Saate määrata vara Code mis tahes teile sobival viisil.

Muutujate hankimine

Veel üks huvitav väljakutse kasutades isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway rakenduses InterSystems IRIS

See arvutab Pythoni poolel korrelatsioonimaatriksi ja ekstraheerib muutuja corrmat tagasi JSON-vormingus InterSystems IRIS-i, määrates päringu atribuudid:

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

Näeme tulemusi Visual Trace'is:

Python Gateway rakenduses InterSystems IRIS

Ja kui vajame seda väärtust BP-s, saame selle järgmiselt: callresponse.Variables.GetAt("corrmat").

Andmeedastus

Järgmisena räägime andmete ülekandmisest InterSystems IRIS-ist Pythoni; kõik andmeedastustaotlused rakendavad liidest isc.py.msg.DataRequestmis pakub järgmisi omadusi:

  • Variable — Pythoni muutuja, millesse andmed kirjutatakse.
  • Type — muutuv tüüp: dataframe (panda andmeraam) või list.
  • Namespace — piirkond, kust me andmeid saame. Kilekott isc.py peaks olema selles piirkonnas saadaval. See võib olla ala, kus tootetugi pole.

Selle liidese põhjal rakendatakse 4 päringuklassi:

  • isc.py.msg.QueryRequest - määrata vara Query SQL-päringu saatmiseks.
  • isc.py.msg.ClassRequest - määrata vara Class klassi andmete edastamiseks.
  • isc.py.msg.TableRequest - määrata vara Table tabeliandmete edastamiseks.
  • isc.py.msg.GlobalRequest - määrata vara Global globaalseks andmeedastuseks.

Katseprotsessis vaadake tegevust RAWKus isc.py.msg.QueryRequest näidatud tegevuses.

Python Gateway rakenduses InterSystems IRIS

Pythoni konteksti salvestamine/taastamine

Lõpuks saame Pythoni konteksti salvestada InterSystems IRIS-is, selleks saadame isc.py.msg.SaveRequest argumentidega:

  • Mask — Salvestatakse ainult need muutujad, mis vastavad maskile. Toetatud * и ?... Näide: "Data*, Figure?"... Vaikimisi *.
  • MaxLength — salvestatud muutuja maksimaalne pikkus. Kui muutuja serialiseerimine on pikem, siis seda ignoreeritakse. Mis tahes pikkusega muutujate saamiseks määrake väärtuseks 0. Vaikimisi $$$MaxStringLength.
  • Name — Konteksti nimi (valikuline).
  • Description — Konteksti kirjeldus (valikuline).

Tagastab Ens.StringResponse с Id salvestatud kontekst. Katseprotsessis vaadake tegevust Save Context.

Seotud taotlus isc.py.msg.RestoreRequest laadib konteksti InterSystems IRIS-ist Pythoni:

  • ContextId — konteksti identifikaator.
  • Clear — tühjendage kontekst enne taastamist.

Jupyteri sülearvuti

Jupyteri sülearvuti on avatud lähtekoodiga veebirakendus, mis võimaldab luua ja avaldada märkmikke, mis sisaldavad koodi, visualiseeringuid ja teksti. Python Gateway võimaldab teil vaadata ja redigeerida BPL-protsesse Jupyteri sülearvuti kujul. Pange tähele, et praegu kasutatakse tavalist Python 3 täiturit.

See laiend eeldab, et märkused sisaldavad Pythoni koodi ja kasutab eelnevate pealkirjadena tegevuste nimesid. Nüüd on võimalik PythonGateway äriprotsesse arendada Jupyteri sülearvutis. Siin on, mis on võimalik.

  • Looge uusi äriprotsesse
  • Kustutage äriprotsessid
  • Loo uusi tegevusi
  • Muutke tegevusi
  • Kustuta tegevused

siin on demo video. Ja mõned ekraanipildid:

Protsessiuurija

Python Gateway rakenduses InterSystems IRIS

Protsessi redaktor

Python Gateway rakenduses InterSystems IRIS

Paigaldamine

  1. Teil on vaja InterSystems IRIS 2019.2+.
  2. Installige PythonGateway v0.8+ (nõutav ainult isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Värskendage hoidlast ObjectScripti koodi.
  4. Käivita do ##class(isc.py.util.Jupyter).Install() ja järgige juhiseid.

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

Järeldused

MLToolkit on tööriistade komplekt, mille eesmärk on kombineerida mudeleid ja tehingukeskkonda, et ehitatud mudeleid saaks hõlpsasti otse oma äriprotsessides kasutada. Python Gateway on osa MLToolkitist ja pakub integratsiooni Pythoni keelega, võimaldades teil orkestreerida mis tahes Pythonis (paljude andmeteadlaste põhikeskkond) loodud masinõppe algoritme, kasutada arvukalt valmis teeke, et kiiresti luua adaptiivne, robot-analüütiline AI / ML lahendused InterSystemsi platvormil IRIS.

Viited

MLT-tööriistakomplekt

MLToolkiti kasutajarühm on privaatne GitHubi hoidla, mis on loodud InterSystemsi ettevõtte GitHubi organisatsiooni osana. See on mõeldud välistele kasutajatele, kes installivad, õpivad või juba kasutavad MLToolkiti komponente, sealhulgas Python Gateway. Grupil on mitmeid juurutatud juhtumeid (koos lähtekoodi ja testandmetega) turunduse, tootmise, meditsiini ja paljudes teistes tööstusharudes. ML Toolkiti kasutajarühmaga liitumiseks saatke lühike e-kiri järgmisele aadressile: [meiliga kaitstud] ja lisage oma kirjale järgmine teave:

  • GitHubi kasutajanimi
  • Organisatsioon (töötate või õpite)
  • Ametikoht (teie tegelik positsioon teie organisatsioonis, kas "õpilane" või "sõltumatu").
  • Riik

Neile, kes on artiklit lugenud ja tunnevad huvi InterSystems IRIS kui tehisintellekti ja masinõppemootorite arendamise või majutamise platvormi võimaluste vastu, kutsume teid üles arutama võimalikke stsenaariume, mis teie ettevõttele huvi pakuvad. Analüüsime hea meelega Teie ettevõtte vajadusi ja koostame ühiselt tegevusplaani; Meie tehisintellekti/ML-i eksperttiimi kontakte-posti aadress – [meiliga kaitstud].

Allikas: www.habr.com

Lisa kommentaar