Python Gateway InterSystems IRIS-s

See artikkel on pĂŒhendatud Python Gateway'ile — avatud lĂ€htekoodiga kogukonnaprojektile InterSystems IRIS andmeplatvormile. See projekt vĂ”imaldab orkestreerida mis tahes masinĂ”ppe algoritme, mis on loodud Pythonis (peamine keskkond paljude andmeteadlaste jaoks), kasutades arvukalt valmis teeke paindlike, robotiseeritud analĂŒĂŒtiliste AI/ML lahenduste kiireks loomiseks InterSystems IRIS platvormil. Selles artiklis nĂ€itan, kuidas InterSystems IRIS saab orkestreerida protsesse Pythoni keeles, efektiivselt korraldada andmete kahepoolset edastamist ja luua intelligentseid Ă€riprotsesse.

Plaani

  1. Sissejuhatus.
  2. Tööriistakomplekt.
  3. Paigaldamine.
  4. API.
  5. Interoperatiivsusus.
  6. Jupyter Notebook.
  7. JĂ€reldused.
  8. Lingid.
  9. MLToolkit.

Sissejuhatus

Python on kĂ”rgema taseme ĂŒldotstarbeline programmeerimiskeel, mis on suunatud arendaja tootlikkuse ja koodi loetavuse parandamisele. Selles artiklite sarjas rÀÀgin Python'i rakendamise vĂ”imalustest InterSystems IRIS platvormil, keskendudes peamiselt Python'i kasutamisele masinĂ”ppe mudelite loomisel ja rakendamisel.

MasinĂ”pe (ML) on tehisintellekti meetodite klass, mille iseloomulikuks tunnuseks on ĂŒlesande otsese lahendamise vĂ”imaluse asemel sarnaste ĂŒlesannete lahendamine Ă”ppimise kaudu.

MasinĂ”ppe algoritmid ja mudelid saavad ĂŒha enam levinud. Selle pĂ”hjuseid on palju, kuid kĂ”ik taandub kergusele, lihtsusele ja praktilise tulemuse saavutamisele. Kas klasterdamine vĂ”i isegi nĂ€rvivĂ”rgu modelleerimine on uus tehnoloogia?

Muidugi mitte, kuid praegu pole enam vaja kirjutada sadu tuhandeid ridu koodi, et kĂ€ivitada ĂŒks mudel, ja mudelite loomise ja rakendamise kulud vĂ€henevad jĂ€rjest enam.

Tööriistad arenevad — kuigi meil pole tĂ€ielikult GUI-orienteeritud AI/ML tööriistu, siis areng, mida oleme tĂ€heldanud paljude teiste infosĂŒsteemide klassidega, nĂ€iteks BI (koodikirjutamisest raamistike ja GUI-orienteeritud konfigureeritavate lahenduste kasutamiseni), toimub samuti AI/ML loomise tööriistades. Oleme juba ĂŒletanud koodikirjutamise etapi ja tĂ€na kasutame mudelite loomise ja Ă”petamise raamistikke.

Teised tÀiustused, nagu eelÔppemudeli levitamise vÔimalus, kus lÔppkasutaja peab lihtsalt lÔpetama mudeli treenimise oma spetsiifiliste andmete peal, lihtsustavad masinÔppe rakenduse alustamist. Need saavutused muudavad masinÔppe Ôppimise oluliselt lihtsamaks nii spetsialistide kui ka ettevÔtete jaoks tervikuna.

Teisest kĂŒljest kogume jĂ€rjest rohkem andmeid. Ühtse andmeplatvormi, nagu InterSystems IRIS, abil saab kogu see teave koheselt ette valmistada ja kasutada masinĂ”ppe mudelite lĂ€htedata.

Pilve ĂŒlemineku tĂ”ttu on AI/ML-projektide kĂ€ivitamine lihtsam kui kunagi varem. Saame kasutada ainult neid ressursse, mis meile vajalikud on. Veelgi enam, tĂ€nu pilveplatvormide pakutavale paralleelsusele suudame sÀÀsta kulutatud aega.

Aga kuidas on tulemustega? Siin lĂ€heb kĂ”ik keeruliseks. On palju tööriistu mudelite ehitamiseks, millest ma rÀÀgin hiljem. Hea mudeli ehitamine pole lihtne, aga mis edasi? Tulu saamine mudeli kasutamisest Ă€ris on samuti keeruline ĂŒlesanne. Probleemi juured peituvad analĂŒĂŒtiliste ja tehingute koormate ning andmemudelite lahendamises. Kui treenime mudelit, teeme seda tavaliselt ajalooliste andmete peal. Ent ehitatud mudeli koht on tehinguandmete töötlemises. Mis kasu on parimast petukaupade tuvastamise mudelist, kui kĂ€ivitame seda ainult kord pĂ€evas? Petised on raha juba ammu kaasa vĂ”tnud. Me peame treenima mudelit ajalooliste andmete peal, aga me peame seda rakendama ka reaalajas uute saabuvate andmete peal, et meie Ă€ri protsessid saaksid toimida vastavalt mudeli tehtud prognoosidele.

ML Toolkit on tööriistade komplekt, mille eesmĂ€rk on just see: mudelite ja tehingu keskkonna ĂŒhendamine, et ehitatud mudeleid saaks hĂ”lpsasti teie Ă€riprotsessides kasutada. Python Gateway on osa ML Toolkit-st ja tagab integreerimise Pythoniga (sarnaselt R Gateway-ga, mis koos ML Toolkit-iga tagab integreerimise R-iga).

Tööriistakomplekt

Enne kui jÀtkame, tahaksin tutvustada mÔningaid Python'i tööriistu ja raamatukogusid, mida me hiljem kasutame.

Tehnoloogiad

  • Python on tĂ”lgendatav, kĂ”rgema taseme ĂŒldotstarbeline programmeerimiskeel. Keele peamine eelis on suur matemaatika, ML ja AI raamatukogu. Nagu ObjectScript, on see objektorienteeritud keel, kuid kĂ”ik mÀÀratakse dĂŒnaamiliselt, mitte staatiliselt. Samuti on kĂ”ik objekt. Hilisemad artiklid eeldavad, et teil on keele kohta pinnapealne tutvustus. Kui soovite alustada Ă”ppimist, soovitan alustada dokumentatsioon.
  • Meie jĂ€rgmiste harjutuste jaoks installige Python 3.6.7 64 bit.
  • IDE: kasutan PyCharm, aga neid on palju. Kui kasutate Atelier'i, siis on olemas Eclipse'i plugin Python'i arendajatele. Kui kasutate VS Code'i, siis on olemas Python'i laiendus.
  • Notebook: IDE asemel saate oma skripte kirjutada ja jagada veebipĂ”histes mĂ€rkmikes. KĂ”ige populaarsem neist on Jupyter.

Raamatukogud

Siin on (puudulik) nimekiri masinÔppe raamatukogudest:

AI/ML tehnoloogiad vÔimaldavad teha Àri tÔhusamaks ja kohanemisvÔimelisemaks. Rohkemgi veel, need tehnoloogiad muutuvad tÀna arendamiseks ja rakendamiseks lihtsamaks. Alustage AI/ML tehnoloogiate Ôppimist ja sellega, kuidas need vÔivad aidata teie organisatsioonil kasvada.

Paigaldamine

On mitmeid viise Python Gateway'i installimiseks ja kasutamiseks:

  • on teil alati kĂ”ige uuemad tarkvaralahendused.
    • Windows
    • Linux
    • Mac
  • Docker
    • Kasutage DockerHub'i kujutist
    • Looge oma enda kujutis

ÜkskĂ”ik, kuidas te installite, vajate lĂ€htekoodi. Ains koht koodi allalaadimiseks on vabastamise leht. See sisaldab testitud stabiilseid versioone, vĂ”tke lihtsalt viimane. Hetkel on see 0.8, kuid ajaga tuleb uusi. Ärge kloonige/laadige alla reposiit, laadige alla viimane versioon.

on teil alati kÔige uuemad tarkvaralahendused.

Kui installite Python Gateway operatsioonisĂŒsteemi, peate esmalt (ĂŒkskĂ”ik millisest operatsioonisĂŒsteemist) installima Python. Selleks:

  1. Installige Python 3.6.7 64 bit. Soovitav on installida Python vaikekausta.
  2. Installige moodul dill: pip install dill.
  3. Laadige ObjectScript kood (st. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) ĂŒkskĂ”ik millises valdkonnas tooteid. Kui soovite, et olemasolev valdkond toetaks tooteid, tehke jĂ€rgmist: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Asetage callout DLL/SO/DYLIB kausta bin teie InterSystems IRIS instantsis. Raamatukogu fail peab olema kÀtte saadav teelt, mille tagastab write ##class(isc.py.Callout).GetLib().

Windows

  1. Veenduge, et keskkonnamuutuja PYTHONHOME osutab Python 3.6.7-le.
  2. Veenduge, et sĂŒsteemi keskkonnamuutuja PATH sisaldab muutujat PYTHONHOME (vĂ”i katalooge, millele see osutab).

Linux (Debian/Ubuntu)

  1. Kontrollige, et keskkonnamuutuja PATH sisaldab /usr/lib ja /usr/lib/x86_64-linux-gnu. Kasutage faili /etc/environment keskkonnamuutujate seadistamiseks.
  2. Vigade korral undefined symbol: _Py_TrueStruct seadke konfiguratsioon PythonLib. Samuti on Readme-s osa tÔrkeotsingust.

Mac

  1. Praegu toetatakse ainult Python 3.6.7 versiooni lehelt Python.org.Kontrollige muutujaid PATH.

Kui olete keskkonnamuutujaid muutnud, taaskÀivitage oma InterSystems toode.

Docker

Konteinerite kasutamisel on mitmeid eeliseid:

  • Kantavus
  • TĂ”husus
  • Isolatsioon
  • Kergus
  • Muudetavus

Tutvuge selle artiklite sarjaga rohkema teabe saamiseks Docker'i kasutamisest InterSystems toodetega.

KÔik Python Gateway kogud pÔhinevad praegu konteineritel 2019.4.

Valmis pilt

KÀivitage: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latest, et laadida ja kÀivitada Python Gateway InterSystems IRIS Community Edition'iga. Nii lihtne see on.

Looge oma enda kujutis

Dokker-pildi koostamiseks kÀivitage reposi juuris: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Vaikimisi koostatakse pilt pildi pÔhjal store/intersystems/iris-community:2019.4.0.383.0, kuid saate seda muuta, seadistades muutuja IMAGE.
InterSystems IRIS'est koostamiseks kĂ€ivitage: `docker build —build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 —force-rm —tag intersystemscommunity/irispy:latest`.

PÀrast seda vÔite kÀivitada dokker-pildi:

docker run -d 
  -p 52773:52773 
  -v //:/mount 
  --name irispy 
  intersystemscommunity/irispy:latest 
  --key /mount/iris.key

Kui kasutate pilti, mis pÔhineb InterSystems IRIS Community Edition'il, ei pruugi te vÔtit mÀÀrata.

Kommentaarid

  • Testimisprotsess isc.py.test.Process salvestab rea pilte ajutisse kataloogi. VĂ”ib-olla soovite seda teed muuta monteeritud kataloogi. Selleks muutke seadistust WorkingDir nĂ€idates monteeritud katalooge.
  • Terminali juurdepÀÀsuks kĂ€ivitage: docker exec -it irispy sh.
  • SĂŒsteemi Halduse Portaalile juurdepÀÀs logi kaudu SuperUser/SYS.
  • Konteineri peatamiseks kĂ€ivitage: docker stop irispy && docker rm --force irispy.

Installatsiooni kontrollimine

PÀrast Python Gatewayi installimist 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

Tulemusena peaks olema vĂ€ljund HELLO — Python-muutuja vÀÀrtus x. Kui tagastatud olek sc on viga vĂ”i var tĂŒhi, kontrollige Readme — TĂ”rkeotsingu jaotist.

API

Python Gateway on installitud ja olete kinnitanud, et see töötab. On aeg hakata seda kasutama!
Peamine liides Pythoniga on isc.py.Main. See pakub jÀrgmisi meetodigruppe (kÔik tagastavad %Status):

  • Koodi tĂ€itmine
  • Andmete edastamine
  • Abimeetodid

Koodi tÀitmine

Need meetodid vÔimaldavad tÀita tegevusi mis tahes Python-koodiga.

SimpleString

SimpleString on peamine meetod. See vÔtab vastu 4 valikulist argumenti:

  • code — tĂ€idetav koodijoon. ReavahetusmĂ€rk: $c(10).
  • returnVariable — tagastatava muutuja nimi.
  • serialization — kuidas serialiseerida. returnVariable. 0 — string (vaikimisi), 1 — repr.
  • result — ByRef viide muutujale, kuhu salvestatakse vÀÀrtus. returnVariable.

Eelnevalt tÀitsime:

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

KÀesolevas nÀites mÀÀrame Pythonis olevale muutuja x vÀÀrtuse Tere ja soovime tagastada Python-muutuja vÀÀrtuse x ObjectScript muutuja var.

ExecuteCode

ExecuteCode on turvalisem ja vÀhem piiratud alternatiiv. SimpleString.
InterSystems IRIS platvormil on stringide pikkus piiratud 3 641 144 mÀrgiga, ja kui soovite tÀita pikemat koodiklippi, peate kasutama vooge.
VÔetakse vastu kaks argumenti:

  • code — string vĂ”i voog Python-koodist, mida tĂ€ita.
  • variable — (valikuline) mÀÀrab selle Python-muutuja tĂ€itmise tulemuse. code Kasutamise nĂ€ide:

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

KÀesolevas nÀites korrutame 2 ja 3 ning salvestame tulemuse Python-muutuja

Edastage andmeid Pythonisse ja tagasi. y.

Andmete edastamine

Python -> InterSystems IRIS

On 4 viisi, kuidas saada Python-muutuja vÀÀrtus InterSystems IRISis, sĂ”ltuvalt vajaliku serialiseerimise tĂŒĂŒbist:

te

  • String lihtsate andmete tĂŒĂŒpide ja silumise jaoks.
  • Repr lihtsate objektide salvestamiseks ja silumise jaoks.
  • JSON andmete lihtsaks manipuleerimiseks InterSystems IRIS-i kĂŒljel.
  • Pickle objektide salvestamiseks.

Need meetodid vÔimaldavad saada muutujaid Pythonis stringi vÔi voogena.

  • GetVariable(variable, serialization, .stream, useString) — saada serialization muutuja variable ja stream. Kui useString on 1 ja serialiseerimine pannakse stringi, tagastatakse string, mitte voog.
  • GetVariableJson(variable, .stream, useString) — saada JSON serialiseerimise muutuja.
  • GetVariablePickle(variable, .stream, useString, useDill) — saada Pickle (vĂ”i Dill) serialiseerimise muutuja.

Proovime saada meie muutuja y.

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

InterSystems IRIS -> Python

Laeme andmeid InterSystems IRIS-st Pythonisse.

  • ExecuteQuery(query, variable, type, namespace) — loob andmekogumi (pandas dataframe vĂ”i loend) sql pĂ€ringu pĂ”hjal ja mÀÀrab selle Python muutuja. variable. Pakett isc.py peab olema saadaval alal namespace — seal hakatakse pĂ€ringut tĂ€itma.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) — laadib globaali andmed global alamskripti start kuni lĂ”peta Pythonis muutuja tĂŒĂŒpi type: loend, vĂ”i pandas dataframe. Valikute argumentide kirjeldus mask ja labels on saadaval klassi dokumentatsioonis ja hoidlas AndmeĂŒlekande dokumendid.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) — laadib klassi andmed class id-st start kuni lĂ”peta Pythonis muutuja tĂŒĂŒpi type: loend, vĂ”i pandas dataframe. properties — omaduste loetelu (eraldaja - koma), mida tuleb andmekogusse laadida. Toetatakse maske * ja ?. Vaikimisi — * (kĂ”ik omadused). Omadus %%CLASSNAME ignored.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) — laadib tabeli andmed table id-st start kuni lĂ”peta Pythonisse.

ExecuteQuery — universaalne (iga korrektne SQL-pĂ€ring edastatakse Pythonisse). Siiski, ExecuteGlobal ja selle ĂŒmbrised ExecuteClass ja ExecuteTable töötavad mitmete piirangutega. Need on palju kiirem (3-5 korda kiiremini ODBC-draiverist ja 20 korda kiiremini ExecuteQuery). TĂ€iendav teave AndmeĂŒlekande dokumendid.
KÔik need meetodid toetavad andmete edastamist igast piirkonnast. Pakett isc.py peab olema saadaval sihtpiirkonnas.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) — edastab iga korrektse SQL-pĂ€ringu tulemused Pythonisse. See on andmete edastamise kĂ”ige aeglasem meetod. Kasutage seda, kui ExecuteGlobal ja selle ĂŒmbrised pole saadaval.

Argumentid:

  • query — sql pĂ€ring.
  • variable — Python muutuja nimi, kuhu andmed salvestatakse.
  • type — loend vĂ”i Pandas dataframe.
  • namespace — piirkond, kus pĂ€ring tĂ€idetakse.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) — globaali edastamine Pythonisse.

Argumentid:

  • global — globaali nimi ilma ^
  • variable — Python muutuja nimi, kuhu andmed salvestatakse.
  • type — loend vĂ”i Pandas dataframe.
  • start — esimene globaalne alamskript. Kohustuslik %Integer.
  • lĂ”peta — viimane globaalne alamskript. Kohustuslik %Integer.
  • mask — globaalsete vÀÀrtuste mask. Mask vĂ”ib olla lĂŒhem kui globaalsete vĂ€ljade arv (sellisel juhul jĂ€etakse lĂ”pus vĂ€ljad vahele). Kuidas maski vormindada:
    • + edasta vÀÀrtus sellisena, nagu see on.
    • - jĂ€ta vÀÀrtus vahele.
    • b — Loogiline tĂŒĂŒp (0 — Vale, kĂ”ik muu — TĂ”si).
    • d — KuupĂ€ev ($horolog, Windowsis alates 1970, Linuxis alates 1900).
    • t — Aeg ($horolog, sekundid keskööst).
    • m — Aja mĂ€rge (aasta-kuu-pĂ€ev tund:minuut:sekund formaadis).
  • labels — %Loend veergude nimedest. Esimene element — alamskripti nimi.
  • namespace — piirkond, kus pĂ€ring tĂ€idetakse.

ExecuteClass

Kapseldus ExecuteGlobal. Klassi mÀÀratluse pÔhjal valmistab ette kutse ExecuteGlobal ja kutsub selle esile.

ExecuteClass(class, variable, type, start, end, properties, namespace) — Klasside andmete edastamine Pythonis.

Argumentid:

  • class — klassi nimi
  • variable — Python muutuja nimi, kuhu andmed salvestatakse.
  • type — loend vĂ”i Pandas dataframe.
  • start — algne Id.
  • lĂ”peta — lĂ”pp Id
  • properties — omaduste loetelu (eraldaja - koma), mida tuleb andmekogusse laadida. Toetatakse maske * ja ?. Vaikimisi — * (kĂ”ik omadused). Omadus %%CLASSNAME ignored.
  • namespace — piirkond, kus pĂ€ring tĂ€idetakse.

KĂ”ik omadused edastatakse sellisena, nagu need on, vĂ€lja arvatud tĂŒĂŒbi omadused te, g, %Loogiline ja %AjaMĂ€rk — need konverteeritakse vastavatesse Python klassidesse.

ExecuteTable

Kapseldus ExecuteClass. Edastab tabeli nime klassi nime ja kutsub selle esile ExecuteClass. Allkiri:

ExecuteTable(table, variable, type, start, end, properties, namespace) — tabeli andmete edastamine Pythonis.

Argumentid:

  • table — tabeli nimi.
    KÔik teised argumendid edastatakse sellisena, nagu need on ExecuteClass.

MĂ€rkused

  • ExecuteGlobal, ExecuteClass ja ExecuteTable töötavad sama kiiresti.
  • ExecuteGlobal 20 korda kiiremini kui ExecuteQuery suurte andmekogude korral (andmete edastamise aeg >0.01 sekundit).
  • ExecuteGlobal, ExecuteClass ja ExecuteTable töötavad globaalidega, millel on antud struktuur: ^global(key) = $lb(prop1, prop2, ..., propN) kus key — tĂ€isarv.
  • Tooge ExecuteGlobal, ExecuteClass ja ExecuteTable toetatud vÀÀrtuste vahemik te vastab vahemikule mktime ja sĂ”ltub opsĂŒsteemist (windows: 1970-01-01, linux 1900-01-01, mac). Kasutage %AjaMĂ€rkandmete edastamiseks sellest vahemikust vĂ€ljapoole vĂ”i kasutage pandas dataframe'i, kuna see piirang kehtib ainult loendi kohta.
  • Tooge ExecuteGlobal, ExecuteClass ja ExecuteTable kĂ”ik argumendid vĂ€lja arvatud andmeallikas (globaal, klass vĂ”i tabel) ja muutuja on valikulised.

NĂ€ited

Testklass isc.py.test.Person sisaldab meetodit, mis demonstreerib kÔiki andmete edastamise variante:

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"

// Üldised argumendid
set variable = "df"
set type = "dataframe"
set start = 1
set end = $g(^isc.py.test.PersonD, start)

// Meetod 0: ExecuteGlobal ilma argumentideta
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 0, type)

// Meetod 1: ExecuteGlobal argumentidega    
// Kui edastate globaalset, mÀÀratakse vÀljade nimetused kÀsitsi
// globalKey - subskripti nimi 
set labels = $lb("globalKey", "Name", "DOB", "TS", "RandomTime", "AgeYears", "AgeDecimal", "AgeDouble", "Bool")

// mask sisaldab ĂŒhe elemendi vĂ€hem kui labels, kuna "globalKey" - subskripti nimi
// JĂ€tame vahele %%CLASSNAME
set mask = "-+dmt+++b"

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

// Meetod 2: ExecuteClass
set sc = ##class(isc.py.Main).ExecuteClass(class, variable _ 2, type, start, end)

// Meetod 3: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteTable(table, variable _ 3, type, start, end)

// Meetod 4: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteQuery(query, variable _ 4, type)

KÀivitage meetod do ##class(isc.py.test.Person).Test() et nÀha, kuidas töötab kÔik andmete edastamise meetodid.

Abimeetodid

  • GetVariableInfo(variable, serialization, .defined, .type, .length) — saada teavet muutuja kohta: kas see on mÀÀratud, klass ja serialiseerimise pikkus.
  • GetVariableDefined(variable, .defined) — kas muutuja on mÀÀratud.
  • GetVariableType(variable, .type) — saada muutuja klassi.
  • GetStatus() — saada ja eemaldada viimane erand Python'i poolel.
  • GetModuleInfo(module, .imported, .alias) — saada mooduli muutuja ja importimise staatus.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) — saada teavet funktsiooni kohta.

Ühenduvus

Olete Ă”ppinud, kuidas kutsuda Python Gateway'i terminalist, nĂŒĂŒd alustame selle kasutamist toodetes. Python'i integreerimise aluseks sellises reĆŸiimis on isc.py.ens.Operation. See vĂ”imaldab meil:

  • KĂ€ivitada koodi Python'is
  • Salvestada/taastada Python konteksti
  • Laadida ja saada andmeid Python'ist

PĂ”himĂ”tteliselt on Python'i operatsioon ĂŒmberringi kapseldamine isc.py.Main. Operatsioon isc.py.ens.Operation vĂ”imaldab interakteeruda Python'i protsessiga InterSystems IRIS toodetest. Toetatakse viit pĂ€ringut:

  • isc.py.msg.ExecutionRequest Python koodi tĂ€itmiseks. Tagastab isc.py.msg.ExecutionResponse tĂ€itmise tulemuse ja kĂŒsitud muutujate vÀÀrtused.
  • isc.py.msg.StreamExecutionRequest Python koodi tĂ€itmiseks. Tagastab isc.py.msg.StreamExecutionResponse tĂ€itmise tulemuse ja kĂŒsitud muutujate vÀÀrtused. Sarnane isc.py.msg.ExecutionRequest, kuid vĂ”tab ja tagastab vooge jĂ”ude asemel stringe.
  • 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 andmete edastamiseks globaalsete /klasside /tabelite jaoks. Tagastab Ens.Response.
  • isc.py.msg.SaveRequest Python konteksti salvestamiseks. Tagastab Ens.StringResponse konteksti identifikaatoriga.
  • isc.py.msg.RestoreRequest Python konteksti taastamiseks.

    Lisaks, isc.py.ens.Operation on kaks seadistust:

    • Initializer — klassi valik, mis rakendab liidest isc.py.init.Abstract. Seda saab kasutada funktsioonide, moodulite, klasside jne laadimiseks. See tĂ€idetakse ĂŒks kord protsessi kĂ€ivitamisel.
    • PythonLib — (ainult Linuxi jaoks) kui nĂ€ete laadimisel vigu, seadke selle vÀÀrtus libpython3.6m.so vĂ”i isegi tĂ€ielik tee Python teeki.

Äriprocesside loomine

Kaks klassi on saadaval, et lihtsustada Àriprotsesside arendamist:

  • isc.py.ens.ProcessUtils vĂ”imaldab saada tĂ”lgendusi tegevustest, asendades muutujaid.
  • isc.py.util.BPEmulator vĂ”imaldab hĂ”lpsasti testida Ă€riprotsesse Pythonis. See suudab tĂ€ita Ă€riprotsessi (Python keeles osasid) jooksval protsessil.

Muutujate asendamine

KĂ”ik Ă€riprotsessid, mis pĂ€rivad isc.py.ens.ProcessUtils, saavad kasutada meetodit GetAnnotation(name) aktiivsuse tĂ”lgenduse vÀÀrtuse saamiseks selle nime jĂ€rgi. Tegevuse tĂ”lgendus vĂ”ib sisaldada muutujaid, mis arvutatakse InterSystems IRIS'i kĂŒljel enne Pythonisse saatmist. Siin on muutuja asendamise sĂŒntaks:

  • ${class:method:arg1:...:argN} — meetodi kutsumine
  • #{expr} — koodi tĂ€itmine ObjectScript keeles.

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

  • #{process.WorkDirectory} tagastab objekti WorkDirectory omaduse process, mis on klassi eksemplar isc.py.test.Process st. kĂ€esolev Ă€riprotsess.
  • ${%PopulateUtils:Integer:1:100} kutsib meetodi Integer klassist %PopulateUtils, edastades argumendid 1 ja 100, tagastades juhusliku tĂ€isarvu vahemikus 1...100.

Testimisprotsess

Testtooted ja testimisprotsess on vaikimisi saadaval osana Python Gateway'st. Kasutamiseks:

  1. KĂ€ivitage OS terminalis: pip install pandas matplotlib seaborn.
  2. KÀivitage InterSystems IRIS terminalis: do ##class(isc.py.test.CannibalizationData).Import() testandmete tÀitmiseks.
  3. KĂ€ivitage toode isc.py.test.Production.
  4. Saada nĂ”ue tĂŒĂŒpi Ens.Request ja isc.py.test.Process.

Vaadake, kuidas kÔik see koos toimib. Avage isc.py.test.Process BPL redaktoris:

Python Gateway InterSystems IRIS-s

Koodi tÀitmine

KÔige olulisem kutse - Python koodi tÀitmine:

Python Gateway InterSystems IRIS-s

Kasutatakse nÔuet isc.py.msg.ExecutionRequest, siin on selle omadused:

  • Kood — Python kood.
  • SeparateLines — kas jagada kood readeks tĂ€itmiseks. $c(10) (n) kasutatakse ridade eraldamiseks. Pange tĂ€hele, et kogu sĂ”numit korraga töödelda ei soovitata, see funktsioon on mĂ”eldud ainult töötlemiseks def ja sarnaste mitmerealiste avalduste jaoks. Vaikimisi 0.
  • Variables — koma eraldatud muutuja nimekiri, mis lisatakse vastusesse.
  • Serialiseerimine — Kuidas serialiseerida muutujaid, mida me soovime tagasi saata. Valikud: Str, Repr, JSON, Pickle ja Dill, vaikimisi Str.

Meie puhul seadistame ainult omaduse Kood, nii et kÔik teised omadused kasutavad vaikimisi vÀÀrtusi. Seadistame selle, kutsudes process.GetAnnotation("Import pandas"), mis tagastab kÀitamise ajal annotatsiooni pÀrast muutuja asendusi. LÔpuks import pandas as pd edastatakse Pythonile. GetAnnotation vÔib olla kasulik mitmerealiste Python skriptide saamiseks, kuid selle koodi saamise meetodil ei ole mingit piirangut. Saate seada omaduse Kood igati mugaval viisil.

Muutujate saamine

Veel ĂŒks huvitav vĂ€ljakutse, kasutades isc.py.msg.ExecutionRequest — Korrelatsioonide Maatriks: Tabel:

Python Gateway InterSystems IRIS-s

See arvutab Korrelatsioonide Maatriksi Pythonis ja ekstraktib muutuja corrmat tagasi InterSystems IRIS-s JSON formaadis, seades pÀringu omadused:

  • Variables: "corrmat"
  • Serialiseerimine: "JSON"

Saame tulemusi Visual Trace'is nÀha:

Python Gateway InterSystems IRIS-s

Ja kui see vÀÀrtus on meile BP-s vajalik, saame selle kÀtte nii: callresponse.Variables.GetAt("corrmat").

Andmete edastamine

JÀrgmisena rÀÀgime andmete edastamisest InterSystems IRIS-st Pythonisse, kÔik andmete edastamise pÀringud rakendavad liidest isc.py.msg.DataRequest, mis pakub jÀrgmisi omadusi:

  • Variable — Python muutuja, kuhu andmed salvestatakse.
  • TĂŒĂŒp — muutuja tĂŒĂŒp: dataframe (pandas dataframe) vĂ”i loend.
  • Namespace — ala, kust andmeid saadakse. Pakett isc.py peab olema selles vĂ€ljas saadaval. See vĂ”ib olla ala, mis ei toeta tootmisi.

Selle liidese alusel on rakendatud 4 pÀringute klassi:

  • isc.py.msg.QueryRequest — seadistage omadus Query SQL pĂ€ringu edastamiseks.
  • isc.py.msg.ClassRequest — seadistage omadus Class klassi andmete edastamiseks.
  • isc.py.msg.TableRequest — seadistage omadus Table tabeli andmete edastamiseks.
  • isc.py.msg.GlobalRequest — seadistage omadus Global globaalsete andmete edastamiseks.

Testimisprotsessi kÀigus vaadake aktiivsust RAW, kus isc.py.msg.QueryRequest nÀidatakse tegevuses.

Python Gateway InterSystems IRIS-s

Python konteksti salvestamine / taastamine

LÔpuks saame salvestada Python konteksti InterSystems IRIS-s, et seda teha, saadame isc.py.msg.SaveRequest argumendina:

  • Mask — Salvestatakse ainult need muutujad, mis vastavad maskile. Toetatakse * ja ?. NĂ€idis: "Data*, Figure?". Vaikimisi *.
  • MaxLength — Muutmise maksimaalne pikkus. Kui muutuja seerumine on pikem, jĂ€etakse see tĂ€helepanuta. Seadke vÀÀrtuseks 0, et lubada muutujate mistahes pikkust. Vaikimisi $$$MaxStringLength.
  • Nimi — Konteksti nimi (valikuline).
  • Kirjeldus — Konteksti kirjeldus (valikuline).

Tagastab Ens.StringResponse jot Id salvestatud konteksti. Testimisprotsessi ajal vaadake aktiivsuseid Salvesta kontekst.

Vastav pÀring isc.py.msg.RestoreRequest laeb konteksti InterSystems IRIS-elt Pythonisse:

  • KontekstiId — konteksti identifikaator.
  • Kustuta — puhasta konteksti enne taastamist.

Jupyter Notebook

Jupyter Notebook — avatud lĂ€htekoodiga veebirakendus, mis vĂ”imaldab luua kĂ”vakettakujulisi faile, mis sisaldavad koodi, visualiseerimist ja teksti ning neid avaldada. Python Gateway vĂ”imaldab vaadata ja redigeerida BPL-protsesse Jupyter Notebooki vormis. Pange tĂ€hele, et hetkel kasutatakse tavalist Python 3 executor'i.

See laiend arvab, et annotatsioonid sisaldavad Python'i koodi ja kasutavad tegevuste nimesid eelpealkirjadena. NĂŒĂŒd on vĂ”imalik arendada PythonGateway Ă€riprotsesse Jupyter Notebookis. Siin on, mida on vĂ”imalik:

  • Luua uusi Ă€riprotsesse
  • Kustutada Ă€riprotsesse
  • Luua uusi tegevusi
  • Muuta tegevusi
  • Kustutada tegevusi

Siin demo-video. Ja mÔned ekraanipildid:

Protsesside sirvija

Python Gateway InterSystems IRIS-s

Protsessi redaktor

Python Gateway InterSystems IRIS-s

Paigaldamine

  1. Vajate InterSystems IRIS 2019.2+.
  2. Installige PythonGateway v0.8+ (vajalik ainult isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints ja isc.py.ens.ProcessUtils).
  3. Uuendage ObjectScript'i koodi hoidlast.
  4. KÀivitage do ##class(isc.py.util.Jupyter).Install() ja jÀrgige juhiseid.

Dokumentatsioon.

JĂ€reldused

MLToolkit on tööriistade komplekt, mille eesmĂ€rk on liita mudelid ja tehingute keskkond, et loodud mudeleid saaks hĂ”lpsasti kasutada otse teie Ă€riprotsessides. Python Gateway on osa MLToolkit'ist ja tagab integreerimise Python'i keelega, vĂ”imaldades orkestreerida kĂ”iki masinĂ”ppe algoritme, mis on loodud Python'is (paljude andeteadlaste pĂ”hiline keskkond), kasutades arvukalt valmis teeke kiireks muudetavate ja automatiseeritud analĂŒĂŒsivĂ”ime AI/ML lahenduste loomiseks InterSystems IRIS platvormil.

Viidatud lingid

MLToolkit

MLToolkit'i kasutajate grupp on privaatne GitHubi hoidla, mis on loodud osana InterSystems'i ettevĂ”tte GitHubi organisatsioonist. See on suunatud vĂ€listele kasutajatele, kes installivad, uurivad vĂ”i juba kasutavad MLToolkit komponente, sealhulgas Python Gateway'd. Grupis on saadaval mitmeid rakendatud juhtumeid (koos lĂ€htekoodi ja testandmetega) turunduse, tootmise, meditsiini ja paljude teiste valdkondade alal. Et liituda ML Toolkit'i kasutajate grupiga, palun saatke lĂŒhike meil aadressile: MLToolkit@intersystems.com ja mĂ€rkige oma kirjas jĂ€rgmised andmed:

  • GitHubi kasutajanimi
  • Organisatsioon (koht, kus töötate vĂ”i Ă”pite)
  • Amet (teie tegelik amet teie organisatsioonis, vĂ”i "ÜliĂ”pilane", vĂ”i "Iseseisev").
  • Riik

Neile, kes on artikli lĂ€bi lugenud ja huvitatud InterSystems IRIS'i vĂ”imalustest kunstliku intellekti ja masinĂ”ppe mehhanismide arendamiseks vĂ”i majutamiseks, pakume vĂ”imalust arutada teie ettevĂ”ttele huvi pakkuvaid stsenaariume. Oleme valmis analĂŒĂŒsima teie ettevĂ”tte vajadusi ja ĂŒhiselt mÀÀrama tegevuskava; meie AI/ML ekspertgrupi kontaktmeiliaadress on MLToolkit@intersystems.com.

Allikas: habr.com

Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster