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
- Sissejuhatus.
- Tööriistakomplekt.
- Paigaldamine.
- API.
- Interoperatiivsusus.
- Jupyter Notebook.
- JĂ€reldused.
- Lingid.
- 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 .
- Meie jÀrgmiste harjutuste jaoks installige .
- IDE: kasutan , aga neid on . 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 .
Raamatukogud
Siin on (puudulik) nimekiri masinÔppe raamatukogudest:
- â tĂ€psete arvutuste aluspakk.
- â kĂ”rge jĂ”udlusega andmestruktuurid ja andmeanalĂŒĂŒsi tööriistad.
- â joonistamine.
- â andmete visualiseerimine, mis pĂ”hineb matplotlib'il.
- â masinĂ”ppe meetodid.
- â masinĂ”ppe algoritmid, mis pĂ”hinevad gradientide tĂ”ukamise metoodikal.
- â NLP.
- â nĂ€rvivĂ”rgud.
- â platvorm masinĂ”ppemudelite loomiseks.
- â platvorm masinĂ”ppemudelite loomiseks, mis on suunatud Python'ile.
- â PMML erinevatest mudelitest.
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 . 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:
- . Soovitav on installida Python vaikekausta.
- Installige moodul
dill:pip install dill. - 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). - Asetage kausta
binteie InterSystems IRIS instantsis. Raamatukogu fail peab olema kÀtte saadav teelt, mille tagastabwrite ##class(isc.py.Callout).GetLib().
Windows
- Veenduge, et keskkonnamuutuja
PYTHONHOMEosutab Python 3.6.7-le. - Veenduge, et sĂŒsteemi keskkonnamuutuja
PATHsisaldab muutujatPYTHONHOME(vÔi katalooge, millele see osutab).
Linux (Debian/Ubuntu)
- Kontrollige, et keskkonnamuutuja
PATHsisaldab/usr/libja/usr/lib/x86_64-linux-gnu. Kasutage faili/etc/environmentkeskkonnamuutujate seadistamiseks. - Vigade korral
undefined symbol: _Py_TrueStructseadke konfiguratsioonPythonLib. Samuti on osa tÔrkeotsingust.
Mac
- Praegu toetatakse ainult Python 3.6.7 versiooni lehelt 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 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.keyKui kasutate pilti, mis pÔhineb InterSystems IRIS Community Edition'il, ei pruugi te vÔtit mÀÀrata.
Kommentaarid
- Testimisprotsess
isc.py.test.Processsalvestab rea pilte ajutisse kataloogi. VÔib-olla soovite seda teed muuta monteeritud kataloogi. Selleks muutke seadistustWorkingDirnÀ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 varTulemusena peaks olema vĂ€ljund HELLO â Python-muutuja vÀÀrtus x. Kui tagastatud olek sc on viga vĂ”i var tĂŒhi, kontrollige .
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.codeKasutamise nĂ€ide:
set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").
KÀesolevas nÀites korrutame 2 ja 3 ning salvestame tulemuse Python-muutujaEdastage 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
Stringlihtsate andmete tĂŒĂŒpide ja silumise jaoks.Reprlihtsate objektide salvestamiseks ja silumise jaoks.JSONandmete lihtsaks manipuleerimiseks InterSystems IRIS-i kĂŒljel.Pickleobjektide salvestamiseks.
Need meetodid vÔimaldavad saada muutujaid Pythonis stringi vÔi voogena.
GetVariable(variable, serialization, .stream, useString)â saadaserializationmuutujavariablejastream. KuiuseStringon 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
>6InterSystems IRIS -> Python
Laeme andmeid InterSystems IRIS-st Pythonisse.
ExecuteQuery(query, variable, type, namespace)â loob andmekogumi (pandasdataframevĂ”iloend) sql pĂ€ringu pĂ”hjal ja mÀÀrab selle Python muutuja.variable. Pakettisc.pypeab olema saadaval alalnamespaceâ seal hakatakse pĂ€ringut tĂ€itma.ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace)â laadib globaali andmedglobalalamskriptistartkunilĂ”petaPythonis muutuja tĂŒĂŒpitype:loend, vĂ”i pandasdataframe. Valikute argumentide kirjeldusmaskjalabelson saadaval klassi dokumentatsioonis ja hoidlas .ExecuteClass(class, variable, type, start, end, properties, namespace)â laadib klassi andmedclassid-ststartkunilĂ”petaPythonis muutuja tĂŒĂŒpitype:loend, vĂ”i pandasdataframe.propertiesâ omaduste loetelu (eraldaja - koma), mida tuleb andmekogusse laadida. Toetatakse maske*ja?. Vaikimisi â*(kĂ”ik omadused). Omadus%%CLASSNAMEignored.ExecuteTable(table, variable, type, start, end, properties, namespace)â laadib tabeli andmedtableid-ststartkunilĂ”petaPythonisse.
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 .
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âloendvĂ”i Pandasdataframe.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âloendvĂ”i Pandasdataframe.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 nimivariableâ Python muutuja nimi, kuhu andmed salvestatakse.typeâloendvĂ”i Pandasdataframe.startâ algne Id.lĂ”petaâ lĂ”pp Idpropertiesâ omaduste loetelu (eraldaja - koma), mida tuleb andmekogusse laadida. Toetatakse maske*ja?. Vaikimisi â*(kĂ”ik omadused). Omadus%%CLASSNAMEignored.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 onExecuteClass.
MĂ€rkused
ExecuteGlobal,ExecuteClassjaExecuteTabletöötavad sama kiiresti.ExecuteGlobal20 korda kiiremini kuiExecuteQuerysuurte andmekogude korral (andmete edastamise aeg >0.01 sekundit).ExecuteGlobal,ExecuteClassjaExecuteTabletöötavad globaalidega, millel on antud struktuur:^global(key) = $lb(prop1, prop2, ..., propN)kuskeyâ tĂ€isarv.- Tooge
ExecuteGlobal,ExecuteClassjaExecuteTabletoetatud vÀÀrtuste vahemiktevastab vahemikulemktimeja sĂ”ltub opsĂŒsteemist (: 1970-01-01, 1900-01-01, ). Kasutage%AjaMĂ€rkandmete edastamiseks sellest vahemikust vĂ€ljapoole vĂ”i kasutage pandas dataframe'i, kuna see piirang kehtib ainult loendi kohta. - Tooge
ExecuteGlobal,ExecuteClassjaExecuteTablekÔik argumendid vÀlja arvatud andmeallikas (globaal, klass vÔi tabel) ja muutuja on valikulised.
NĂ€ited
Testklass 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.ExecutionRequestPython koodi tĂ€itmiseks. Tagastabisc.py.msg.ExecutionResponsetĂ€itmise tulemuse ja kĂŒsitud muutujate vÀÀrtused.isc.py.msg.StreamExecutionRequestPython koodi tĂ€itmiseks. Tagastabisc.py.msg.StreamExecutionResponsetĂ€itmise tulemuse ja kĂŒsitud muutujate vÀÀrtused. Sarnaneisc.py.msg.ExecutionRequest, kuid vĂ”tab ja tagastab vooge jĂ”ude asemel stringe.isc.py.msg.QueryRequestSQL pĂ€ringu tĂ€itmise tulemuse edastamiseks. TagastabEns.Response.isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequestandmete edastamiseks globaalsete /klasside /tabelite jaoks. TagastabEns.Response.isc.py.msg.SaveRequestPython konteksti salvestamiseks. TagastabEns.StringResponsekonteksti identifikaatoriga.isc.py.msg.RestoreRequestPython konteksti taastamiseks.Lisaks,
isc.py.ens.Operationon kaks seadistust:Initializerâ klassi valik, mis rakendab liidestisc.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ÀÀrtuslibpython3.6m.sovĂ”i isegi tĂ€ielik tee Python teeki.
Ăriprocesside loomine
Kaks klassi on saadaval, et lihtsustada Àriprotsesside arendamist:
isc.py.ens.ProcessUtilsvÔimaldab saada tÔlgendusi tegevustest, asendades muutujaid.isc.py.util.BPEmulatorvÔ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 omaduseprocess, mis on klassi eksemplarisc.py.test.Processst. kÀesolev Àriprotsess.${%PopulateUtils:Integer:1:100}kutsib meetodiIntegerklassist%PopulateUtils, edastades argumendid1ja100, tagastades juhusliku tÀisarvu vahemikus1...100.
Testimisprotsess
Testtooted ja testimisprotsess on vaikimisi saadaval osana Python Gateway'st. Kasutamiseks:
- KĂ€ivitage OS terminalis:
pip install pandas matplotlib seaborn. - KĂ€ivitage InterSystems IRIS terminalis:
do ##class(isc.py.test.CannibalizationData).Import()testandmete tÀitmiseks. - KÀivitage toode
isc.py.test.Production. - Saada nĂ”ue tĂŒĂŒpi
Ens.Requestjaisc.py.test.Process.
Vaadake, kuidas kÔik see koos toimib. Avage isc.py.test.Process BPL redaktoris:

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

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öötlemiseksdefja sarnaste mitmerealiste avalduste jaoks. Vaikimisi0.Variablesâ koma eraldatud muutuja nimekiri, mis lisatakse vastusesse.Serialiseerimineâ Kuidas serialiseerida muutujaid, mida me soovime tagasi saata. Valikud:Str,Repr,JSON,PicklejaDill, vaikimisiStr.
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:

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:

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Ă”iloend.Namespaceâ ala, kust andmeid saadakse. Pakettisc.pypeab 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 omadusQuerySQL pĂ€ringu edastamiseks.isc.py.msg.ClassRequestâ seadistage omadusClassklassi andmete edastamiseks.isc.py.msg.TableRequestâ seadistage omadusTabletabeli andmete edastamiseks.isc.py.msg.GlobalRequestâ seadistage omadusGlobalglobaalsete andmete edastamiseks.
Testimisprotsessi kÀigus vaadake aktiivsust RAW, kus isc.py.msg.QueryRequest nÀidatakse tegevuses.

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
â 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 . Ja mÔned ekraanipildid:
Protsesside sirvija

Protsessi redaktor

Paigaldamine
- Vajate InterSystems IRIS 2019.2+.
- Installige PythonGateway v0.8+ (vajalik ainult
isc.py.util.Jupyter,isc.py.util.JupyterCheckpointsjaisc.py.ens.ProcessUtils). - Uuendage ObjectScript'i koodi hoidlast.
- KĂ€ivitage
do ##class(isc.py.util.Jupyter).Install()ja jÀrgige juhiseid.
.
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: 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 .
Allikas: habr.com
