See artikkel tutvustab Python Gateway't â kogukonna avatud lĂ€htekoodiga projekti InterSystems IRIS andmeplatvormil. See projekt vĂ”imaldab orkestreerida kĂ”iki masinĂ”ppe algoritme, mis on loodudPython'i keeles (peamine keskkond paljude andme teadlaste jaoks), ja kasutada mitmeid valmis raamatukogusid, et kiiresti luua kohandatud, robotiseeritud analĂŒĂŒtilisi AI/ML lahendusi InterSystems IRIS platvormil. Selles artiklis nĂ€itan, kuidas InterSystems IRIS suudab orkestreerida protsesse Python'is, tĂ”husalt teostada kahepoolselt andmeedastust ja luua intelligentseid Ă€riprotsesse.
Plaani
- Sissejuhatus.
- Tööriistakast.
- Installimine.
- API.
- Interoperatiivsuse.
- Jupyter Notebook.
- JĂ€reldused.
- Lingid.
- MLToolkit.
Sissejuhatus
Python on kĂ”rgtasemeline ĂŒldine programmeerimiskeel, mille eesmĂ€rk on suurendada arendaja tootlikkust ja koodi loetavust. Selles artiklite sarjas rÀÀgin Python'i keele rakendusvĂ”imalustest InterSystems IRIS platvormil, keskendudes selle artikli pĂ”hifookusele, mis on Python'i kasutamine masinĂ”ppemudelite loomiseks ja rakendamiseks.
MasinÔpe (ML) on kunstliku intelligentsuse meetodite klass, mille iseloomulikuks jooniks on mitte probleemi otsene lahendamine, vaid Ôppimine sarnaste probleemide lahendamise protsessis.
MasinĂ”ppe algoritmid ja mudelid muutuvad ĂŒha levinumaks. PĂ”hjuseid on mitmeid, kuid kĂ”ik taandub kĂ€ttesaadavusele, lihtsusele ja praktiliste tulemuste saavutamisele. Kas klasterdamine vĂ”i isegi nĂ€rvivĂ”rkude modelleerimine on uus tehnoloogia?
Kindlasti mitte, kuid praegu pole enam vajalik kirjutada sadu tuhandeid koodiridu, et kĂ€ivitada ĂŒks mudel, ning mudelite loomise ja rakendamise kulud vĂ€henevad jĂ€rjest enam.
Tööriistad arenevad â kuigi meil pole tĂ€iesti GUI-suunitlusega AI/ML tööriistu, toimub see areng, mida oleme kogenud paljude teiste infosĂŒsteemide klasside, nĂ€iteks BI (koodikirjutamisest GUI-seadistuslahenduste kasutamiseni) osas, ka AI/ML tööriistades. Oleme juba ĂŒletanud koodikirjutamisfaasi ja tĂ€na kasutame mudelite loomise ja Ă”petamise jaoks raamistikke.
Teised tÀiustused, nagu eelÔpetatud mudeli levitamise vÔimalus, kus lÔppkasutaja peab lihtsalt lÔpetama mudeli koolituse oma spetsiifiliste andmete pÔhjal, muudavad masinÔppe rakendamise alguse lihtsamaks. Need saavutused muudavad masinÔppe Ôppimise kergemaks nii spetsialistide kui ka ettevÔtete jaoks tervikuna.
Teisest kĂŒljest kogume ĂŒha rohkem andmeid. TĂ€nu sellisele ĂŒhtsele andmeplatvormile nagu InterSystems IRIS saab kogu see teave kohe ette valmistada ja kasutada masinĂ”ppe mudelite algandmetena.
Pilve ĂŒleminekuga on AI/ML projektide kĂ€ivitamine lihtsam kui kunagi varem. Me saame tarbida ainult neid ressursse, mida vajame. Veelgi enam, tĂ€nu pilveplatvormide pakutavale paralleelsusele saame sÀÀsta aega.
Aga mis on tulemused? Siin muutuvad asjad keerulisemaks. On palju tööriistu mudelite loomiseks, millest ma rÀÀgin edasi. Hea mudeli loomine ei ole lihtne, kuid mis edasi? Mudeli Ă€rikasutamine on samuti keeruline ĂŒlesanne. Probleemi juured peituvad analĂŒĂŒtiliste ja tehingukoormuste ning andmemudelite eristamises. Kui me koolitame mudelit, teeme seda tavaliselt ajalooliste andmete pĂ”hjal. Kuid mudeli koht on tehingute andmete töötlemises. Mis kasu on parimast petuskeemide avastamise mudelist, kui me kĂ€ivitame selle ainult ĂŒks kord pĂ€evas? Petturid on juba kaua enne seda raha endale saanud. Peame mudelit koolitama ajalooliste andmete peal, kuid peame seda rakendama ka reaalajas uutelt andmetelt, et meie Ă€ri protsessid saaksid toimida mudeli tehtud prognooside kohaselt.
ML Toolkit â tööriistade komplekt, mille eesmĂ€rk on just see: mudelite ja tehingukeskkonna ĂŒhendamine, et loodud mudeleid saaks hĂ”lpsasti kasutada otse teie Ă€ri protsessides. Python Gateway on osa ML Toolkitist ja tagab integreerimise Pythoniga (sarnaselt R Gatewayâle, mis samuti ML Toolkitâi osa, tagab integreerimise R keelele).
Tööriistade komplekt
Enne kui jĂ€tkame, sooviksin tutvustada mĂ”ningaid Pythonâi tööriistu ja raamatukogusid, mida me hiljem kasutame.
Tehnoloogiad
- Python on tĂ”lgendatav, kĂ”rgtasemeline ĂŒldotstarbeline programmeerimiskeel. KeelenĂ€itajaks on suur matemaatiliste, masinĂ”ppe ja AI raamatukogude kogum. Nagu ka ObjectScript, on see objektorienteeritud keel, kuid kĂ”ik mÀÀratakse dĂŒnaamiliselt, mitte staatiliselt. KĂ”ik on samuti objekt. Edasised artiklid eeldavad, et olete keelest hetkeks tuttav. Kui soovite alustada Ă”ppimist, soovitan alustada .
- Meie edasiste harjutuste jaoks installige .
- IDE: Kasutan , kuid ĂŒldiselt nende . Kui kasutate Atelierit, on olemas Eclipse'i plugin Pythoni arendamiseks. Kui kasutate VS Code'i, on olemas Pythonile mĂ”eldud laiendus.
- MÀrkmik: IDE asemel saate oma skripte kirjutada ja nendega jagada veebimÀrkmikes. KÔige populaarsem neist on .
Raamatukogud
Siin on (mittetÀielik) nimekiri masinÔppe raamatukogudest:
- â tĂ€psete arvutuste pĂ”hipakett.
- â kĂ”rge jĂ”udlusega andmestruktuurid ja andmeanalĂŒĂŒsi tööriistad.
- â diagrammide loomine.
- â andmete visualiseerimine, mis pĂ”hineb matplotlibil.
- â masinĂ”ppe meetodid.
- â masinĂ”ppe algoritmid, mis toetuvad gradientide tĂ”usule (Gradient Boosting).
- â NLP.
- â nĂ€rvivĂ”rgud.
- â masinĂ”ppe mudelite loomise platvorm.
- â masinĂ”ppe mudelite loomise platvorm, mis on suunatud Pythonile.
- â PMML erinevatest mudelitest.
AI/ML tehnoloogiad aitavad muuta Àri tÔhusamaks ja paindlikumaks. Veelgi enam, tÀnapÀeval muutuvad need tehnoloogiad arendamisel ja rakendamisel lihtsamaks. Alustage AI/ML-tehnoloogiate uurimist ja Ôppige, kuidas need vÔivad aidata teie organisatsioonil kasvada.
Installeerimine
On mitmeid viise Python Gateway'i installimiseks ja kasutamiseks:
- OÈ
- Windows
- Linux
- Mac
- Docker
- Kasutage DockerHubi pilti
- Looge oma oma pilt
SĂ”ltumata installimisviisist vajate allika koodi. Ainult koht, kust koodi alla laadida, on . Seal on testitud stabiilsed vĂ€ljalasked, lihtsalt vĂ”tke viimane. Hetkel on see 0.8, kuid aja jooksul tuleb uusi versioone. Ărge kloonige/ĂŒles laadige hoidlat, laadige alla viimane vĂ€ljalase.
OÈ
Kui installite Python Gateway'i operatsioonisĂŒsteemi, peate esmalt (sĂ”ltumata operatsioonisĂŒsteemist) Python'i installima. Selleks:
- . Soovitatav on installida Python vaikekausta.
- Installige moodul
dill:pip install dill. - Laadige alla ObjectScript kood (st.
do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) igasse piirkonda, kus on tooted. Kui soovite, et olemasolev piirkond toetaks tooteid, suhelge:write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1). - Paigutage kausta
binteie InterSystems IRIS instantsist. Raamatukogufail peab olema saadaval teel, mida tagastataksewrite ##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 parameeterPythonLib. Samuti on jaotises TÔrkeotsing.
Mac
- Praegu toetatakse ainult Python 3.6.7 versiooni aadressilt . Kontrollige muutujat
PATH.
Kui olete muutnud keskkonnamuutujate vÀÀrtusi, kÀivitage oma InterSystems toode uuesti.
Docker
Konteinerite kasutamine pakub mitmeid eeliseid:
- Ăksus
- TÔhusus
- Isolatsioon
- Kerged
- Muuda
Tutvuge selle detaile saamiseks Docker'i kasutamisest InterSystems toodetega.
KÔik Python Gateway ehitused pÔhinevad praegu konteineritel. 2019.4.
Valmis pilt
KÀitage: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latest, et laadida ja kÀivitada Python Gateway InterSystems IRIS Community Editioni koosseisus. Nii ongi.
Looge oma oma pilt
Docker pildi ehitamiseks kÀivitage juurkataloogis: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Vaikimisi koostis luuakse pildi pÔhjal store/intersystems/iris-community:2019.4.0.383.0, kuid saate seda muuta, seadistades muutuja IMAGE.
InterSystems IRIS-ist koostamiseks kasutage: `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 Docker-pildi:
docker run -d
-p 52773:52773
-v //:/mount
--name irispy
intersystemscommunity/irispy:latest
--key /mount/iris.keyKui kasutate InterSystems IRIS Community Edition'i pÔhjal loodud pilti, ei pruugi te vÔtit mÀÀrata.
Kommentaarid
- Testimisprotsess
isc.py.test.Processsalvestab mitmeid pilte ajutisse katalooge. VÔib-olla soovite muuta selle tee monteeritud kataloogiks. Selleks muutke seadeWorkingDirnÀidates monteeritud katalooge. - Terminali juurde pÀÀsemiseks kasutage:
docker exec -it irispy sh. - JuurdepÀÀs SĂŒsteemi Halduse Portaalile logi kaudu
SuperUser/SYS. - Konteinri peatamiseks kasutage:
docker stop irispy && docker rm --force irispy.
Installatsiooni kontroll
PÀrast Python Gateway installimist on mÔistlik kontrollida, et 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 varTulemus peab olema vĂ€ljundis Tere â Pythoni muutuja vÀÀrtus x. Kui tagastatud staatuse sc on viga vĂ”i var on tĂŒhi, kontrollige .
API
Python Gateway on paigaldatud ja teil on kinnituseks, et see töötab. On aeg alustamiseks!
Peamine liides Pythonile on isc.py.Main. See pakub jÀrgmisi meetodigruppide (kÔik tagastavad %Status):
- Koodi tÀitmine
- Andmete edastamine
- Abiprogrammid
Koodi tÀitmine
Need meetodid vÔimaldavad tÀita suvalist Python koodi.
SimpleString
SimpleString â see on pĂ”hi meetod. See vĂ”tab 4 valikulist argumenti:
codeâ tĂ€idetav koodirida. Rida vahetusmĂ€rk:$c(10).returnVariableâ muutuja nimi, mis tagastatakse.serialiseerimiseâ kuidas serialiseeridareturnVariable. 0 â string (vaikimisi), 1 â repr.tulemusâ ByRef viide muutuja, kuhu vÀÀrtus salvestataksereturnVariable.
Ălal me tĂ€itsime:
set sc = ##class(isc.py.Main).SimpleString("x='Tere'", "x", , .var).Selles nÀites mÀÀrame Pythoni muutuja x vÀÀrtus Tere ja soovime tagastada Python'i muutuja x ObjectScript muutuja var.
ExecuteCode
ExecuteCode on turvalisem ja vÀhem piiratud alternatiiv SimpleString.
InterSystems IRIS platvormil on stringid piiratud 3 641 144 mÀrgiga, ning kui soovite kÀivitada pikema koodi, peate kasutama vooge.
VÔetakse vastu kaks argumenti:
codeâ string vĂ”i Python koodivoog tĂ€itmiseks.variableâ (valikuline) mÀÀrab tulemusecodeselle Python muutuja.
Kasutamine:
set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").Selles nÀites korrutame 2 ja 3 ning salvestame tulemuse Python muutuja. y.
Andmete edastamine
Edastage andmeid Pythonisse ja tagasi.
Python -> InterSystems IRIS
InterSystems IRIS-is on 4 viisi, kuidas saada Python muutuja vÀÀrtus, olenevalt vajatust serialiseerimisest:
Stringlihtsate andmetĂŒĂŒpide ja silumise jaoks.Reprlihtsate objektide hoidmiseks ja silumise jaoks.JSONandmete lihtsaks kĂ€sitlemiseks InterSystems IRIS pool.Pickleobjektide salvestamiseks.
Need meetodid vÔimaldavad saada muutujaid Pythonist stringidena vÔi voogudena.
GetVariable(variable, serialization, .stream, useString)â saadaserialiseerimisemuutujavariableĂŒhesstream. KuiuseStringkui 1 ja serialiseerimine asetatakse stringi, siis tagastatakse string, mitte voog.GetVariableJson(variable, .stream, useString)â saada muutuja JSON serialiseerimine.GetVariablePickle(variable, .stream, useString, useDill)â saada Pickle (vĂ”i Dill) serialiseerimine muutuja.
PĂŒĂŒame saada meie muutuja y.
set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6InterSystems IRIS -> Python
Laadime andmeid InterSystems IRIS-ist Pythonisse.
ExecuteQuery(query, variable, type, namespace)â loob andmeseti (pandasdataframevĂ”iloend) SQL pĂ€ringu pĂ”hjal ja seob selle Python muutuja kĂŒlgevariable. Pakettisc.pypeab olema ulatusesnamespaceâ seal kĂ€ivitatakse pĂ€ring.ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace)â laadib globaalset andmestikkuglobaalnealates alamskriptistartkunilĂ”ppPythonisse muutuja tĂŒĂŒbinatype:loend, vĂ”i pandasdataframe. Valikargumendide kirjeldusmaskjalabelson saadaval klassi dokumentatsioonis ja repos .ExecuteClass(class, variable, type, start, end, properties, namespace)â laadib klassi andmeidclassID-ltstartkunilĂ”ppPythonisse muutuja tĂŒĂŒbinatype:loend, vĂ”i pandasdataframe.propertiesâ omaduste loend (eraldaja â koma), mis tuleb laadida andmesetti. Toetatakse maske*ja?. Vaikimisi â*(kĂ”ik omadused). Omadust%%CLASSNAMEei arvestata.ExecuteTable(table, variable, type, start, end, properties, namespace)â laadib tabeli andmedtabelID-ltstartkunilĂ”ppPythonisse.
ExecuteQuery â universaalne (igal kehtival SQL-pĂ€ringul on lubatud edastada Pythonisse). Kuid ExecuteGlobal ja selle ĂŒmbrikud ExecuteClass ja ExecuteTable töötavad teatud piirangutega. Need on palju kiirem (3-5 korda kiirem ODBC draiveritest ja 20 korda kiirem ExecuteQuery). TĂ€iendav teave on .
KÔik need meetodid toetavad andmete edastamist mis tahes piirkonnast. Pakett isc.py peab olema sihtpiirkonnas kÀttesaadav.
ExecuteQuery
ExecuteQuery(request, variable, type, namespace) â edastamine tulemusi mis tahes regulaarse SQL-pĂ€ringu puhul Pythonis. See on aeglasim andmete edastamise meetod. Kasutage seda, kui ExecuteGlobal ja selle mĂ€hiseid pole saadaval.
Argumentide loetelu:
queryâ sql pĂ€ring.variableâ Python muutuja nimi, kuhu andmed kirjutatakse.typeâloendvĂ”i Pandasdataframe.namespaceâ piirkond, milles pĂ€ringut tĂ€idetakse.
ExecuteGlobal
ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) â globaali edastamine Pythonis.
Argumentide loetelu:
globaalneâ globaali nimi ilma^variableâ Python muutuja nimi, kuhu andmed kirjutatakse.typeâloendvĂ”i Pandasdataframe.startâ globaalide esimene alam-skript. Kohustuslik%Integer.lĂ”ppâ globaalide viimane alam-skript. Kohustuslik%Integer.maskâ globaalide vÀÀrtuste mask. Mask vĂ”ib olla lĂŒhem kui globaalide vĂ€ljade arv (sellisel juhul jĂ€tetakse lĂ”pu pooled vĂ€lja). Kuidas maski vormindada:+edasta vÀÀrtus nii nagu see on.-jĂ€ta vÀÀrtus vahele.bâ Loogiline tĂŒĂŒp (0âFalse, kĂ”ik muu âTrue).dâ KuupĂ€ev (alates $horolog, Windowsis alates 1970, Linuxis alates 1900).tâ Aeg ($horolog, sekundid pĂ€rast keskööd).mâ Aja temp (aasta-kuud-pĂ€ev tund:minut:sekund formaadi string).
labelsâ %Loend veergude nimed. Esimene element â alam-skripti nimi.namespaceâ piirkond, milles pĂ€ringut tĂ€idetakse.
ExecuteClass
MĂ€his ĂŒle ExecuteGlobal. Valiku klassi mÀÀratlemisel valmistab ette vĂ€ljakutse ExecuteGlobal ja kutsub selle vĂ€lja.
ExecuteClass(class, variable, type, start, end, properties, namespace) â klassi andmete edastamine Pythonis.
Argumentide loetelu:
classâ klassi nimivariableâ Python muutuja nimi, kuhu andmed kirjutatakse.typeâloendvĂ”i Pandasdataframe.startâ algne Id.lĂ”ppâ lĂ”pp Idpropertiesâ omaduste loend (eraldaja â koma), mis tuleb laadida andmesetti. Toetatakse maske*ja?. Vaikimisi â*(kĂ”ik omadused). Omadust%%CLASSNAMEei arvestata.namespaceâ piirkond, milles pĂ€ringut tĂ€idetakse.
KĂ”ik atribuudi vÀÀrtused edastatakse sellistena nagu nad on, vĂ€lja arvatud tĂŒĂŒbid %Date, %Time, %Boolean ja %TimeStamp â need konverteeritakse vastavatesse Python klassidesse.
ExecuteTable
MĂ€his ĂŒle ExecuteClass. TĂ”lgib tabeli nime klassi nimeks ja kutsub selle vĂ€lja ExecuteClass. Signatuur:
ExecuteTable(table, variable, type, start, end, properties, namespace) â tabeli andmete edastamine Pythonis.
Argumentide loetelu:
tabelâ tabeli nimi.
KÔik muud argumendid edastatakse sellistena nagu nad onExecuteClass.
MĂ€rkmed
ExecuteGlobal,ExecuteClassjaExecuteTabletöötab sama kiiresti.ExecuteGlobal20 korda kiiremini kuiExecuteQuerysuurtel andmekogudel (edastusaeg > 0.01 sekundit).ExecuteGlobal,ExecuteClassjaExecuteTabletöötavad globaalide puhul, millel on jĂ€rgmine struktuur:^global(key) = $lb(prop1, prop2, ..., propN)kuskeyâ tĂ€isarv.- Kuna
ExecuteGlobal,ExecuteClassjaExecuteTabletoetatud vÀÀrtuste vahemik%Datevastab vahemikulemktimeja sÔltub OS-ist (: 1970-01-01, 1900-01-01, ). Kasutage%TimeStampselle vahemiku vÀljaspool andmete edastamiseks vÔi kasutage pandas dataframe'i, kuna see piirang kehtib ainult nimekirja kohta. - Kuna
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 globaalne muutuja edastatakse, mÀÀratakse vÀljade nimed kÀsitsi
// globalKey - subscripte nimi
set labels = $lb("globalKey", "Name", "DOB", "TS", "RandomTime", "AgeYears", "AgeDecimal", "AgeDouble", "Bool")
// mask sisaldab 1 elementi vÀhem kui labels, kuna "globalKey" - subscripte nimi
// JÀtame %%CLASSNAME vÀlja
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)Kutsuge meetod do ##class(isc.py.test.Person).Test() nÀha, kuidas kÔik andmeedastusmeetodid töötavad.
Abimeetodid
GetVariableInfo(variable, serialization, .defined, .type, .length)â saada teavet muutujast: kas see on mÀÀratletud, klass ja serialiseerimise pikkus.GetVariableDefined(variable, .defined)â kas muutuja on mÀÀratletud.GetVariableType(variable, .type)â saada muutujaklass.GetStatus()â saada ja eemaldada viimane erand Pythonis.GetModuleInfo(module, .imported, .alias)â saada mooduli muutujat ja impordi staatust.GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments)â saada funktsiooni teavet.
Interoperatiivsuse
Olete Ă”ppinud kutsuma Python Gateway'd terminalist, nĂŒĂŒd alustame selle kasutamist tootmises. Koostoime Pythoniga sellises reĆŸiimis pĂ”hineb isc.py.ens.Operation. See vĂ”imaldab meil:
- TĂ€itma koodi Pythonis
- Salvestama/taastama Python konteksti
- Laadida ja saada andmeid Pythonist
PÔhimÔtteliselt on Python operatsioon see, mis katab isc.py.Main. Operatsioon isc.py.ens.Operation annab vÔimaluse suhelda Python protsessiga InterSystems IRISi tootmisest. 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. Analoogisc.py.msg.ExecutionRequest, kuid vĂ”tab ja tagastab vooge stringide asemel.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 globaalsetele / klassidele / tabelitele. TagastabEns.Response.isc.py.msg.SaveRequestPython konteksti salvestamiseks. TagastabEns.StringResponsekoos konteksti tuvastajaga.isc.py.msg.RestoreRequestPython konteksti taastamiseks.Lisaks toetab
isc.py.ens.Operationon kaks seadistust:Initializerâ klassi valik, mis realiseerib liidestisc.py.init.Abstract. Seda saab kasutada funktsioonide, moodulite, klasside jne laadimiseks. Seda tĂ€idetakse vaid ĂŒks kord protsessi kĂ€ivitamisel.PythonLibâ (ainult Linuxi jaoks) kui nĂ€ete laadimise ajal vigu, seadke selle vÀÀrtuslibpython3.6m.sovĂ”i isegi Python teegile tĂ€is tee.
Ăriprosesside loomine
On olemas kaks klassi, mis lihtsustavad Àriprotsesside arendamist:
isc.py.ens.ProcessUtilsvÔimaldab vÀlja tÔmmata annotatsioone tegevustest muutuja asendamisega.isc.py.util.BPEmulatorvÔimaldab hÔlpsasti testida Àriprotsesse Pythoniga. See suudab kÀivitada Àriprotsessi (osad Python keeles) kÀimasolevas protsessis.
Muudatuste asendamine
KĂ”ik Ă€riprotsessid, mis pĂ€rinevad isc.py.ens.ProcessUtils, saavad kasutada meetodit GetAnnotation(name) aktiivsuse annotatsiooni vÀÀrtuse saamiseks tema nimetuse jĂ€rgi. Aktiivsuse annotatsioon vĂ”ib sisaldada muutujaid, mis arvutatakse InterSystems IRIS'i pool enne edastamist Pythonisse. Siin on muutuja asendamise sĂŒntaks:
${class:method:arg1:...:argN}â meetodi vĂ€ljakutse#{expr}â koodi tĂ€itmine ObjectScripti keeles.
NÀidis on saadaval testimisprotsessis isc.py.test.Process, nÀiteks aktiivsuses Korrelatsioonimatrix: Graaf: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Selles nÀites:
#{process.WorkDirectory}tagastab objekti WorkDirectory omaduseprocessnÀiteks praeguse Àriprotsessi.isc.py.test.Process${%PopulateUtils:Integer:1:100}${%PopulateUtils:Integer:1:100}kutsub vÀlja meetodiIntegerklass%PopulateUtils, edastades argumendid1ja100, tagastades juhusliku tÀisarvu vahemikus1...100.
Testimisprotsess
Testtooted ja testimisprotsess on vaikimisi saadaval Python Gateway'i osana. Nende kasutamiseks:
- KĂ€ivitage terminalis:
pip install pandas matplotlib seaborn. - InterSystems IRIS terminalis kÀivitage:
do ##class(isc.py.test.CannibalizationData).Import()testandmete tÀitmiseks. - KÀivitage toode
isc.py.test.Production. - Saada pĂ€ringutĂŒĂŒpi
Ens.RequestĂŒhesisc.py.test.Process.
Vaadake, kuidas see kÔik koos töötab. Avage isc.py.test.Process BPL redigeerijas:

Koodi tÀitmine
KĂ”ige olulisem vĂ€ljakutse â Python koodi tĂ€itmine:

Kasutatakse pÀringut isc.py.msg.ExecutionRequest, siin on selle omadused:
Koodâ Pythoni kood.SeparateLinesâ kas jagada kood ridadeks tĂ€itmiseks.$c(10)(n) kasutatakse ridade eraldamiseks. Pange tĂ€hele, et EI SOOVITATA tegeleda sĂ”numiga korraga, see funktsioon on mĂ”eldud ainult töötlemiseksdefja sarnaste mitmerealiste vĂ€ljendite jaoks. Vaikimisi0.Muutujadâ komadega eraldatud muutujate loend, mis lisatakse vastusele.Serializationâ Kuidas serialiseerida muutujad, mille soovime tagasi anda. Valikud:Str,Repr,JSON,PicklejaDill, vaikimisiStr.
Meie juhul mÀÀrame ainult omaduse Kood, seega kasutavad kĂ”ik teised omadused vaikeseadeid. MÀÀrame selle kutsumisega process.GetAnnotation("Import pandas"), mis jooksutamise ajal tagastab annotatsiooni pĂ€rast muutujate asendamist. LĂ”puks, kood import pandas as pd edastatakse Pythonile. GetAnnotation vĂ”ib olla kasulik mitmerealiste Python skriptide saamiseks, kuid ei ole mingeid piiranguid selle meetodi kohta koodi saamisel. VĂ”ite mÀÀrata omaduse Kood igaĂŒhel, kes teile sobib.
Muutujate saamine
Veel ĂŒks huvitav vĂ€ljakutse kasutades isc.py.msg.ExecutionRequest â Correlation Matrix: Tabular:

See on Pythonis korrelatsioonimatriitsi arvutamine ja muutuja vÀlja tÔmbamine corrmat InterSystems IRIS-i tagasi formatiseeritud JSON-i kujul, seadistades pÀringu omadused:
Muutujad:"corrmat"Serialization:"JSON"
Me saame tulemusi nÀha Visual Trace'is:

Ja kui me seda vÀÀrtust vajame, saame selle kÀtte nii: callresponse.Variables.GetAt("corrmat").
Andmete edastamine
JÀrgnevalt rÀÀgime andmete edastamisest InterSystems IRIS-ist Pythonisse, kÔik andmete edastamise pÀringud rakendavad liidest isc.py.msg.DataRequest, mis pakub jÀrgmisi omadusi:
Variableâ Python muutuja, kuhu kirjutatakse andmed.TĂŒĂŒpâ muutuja tĂŒĂŒp:dataframe(pandas dataframe) vĂ”iloend.Namespacesâ ala, kust andmed saadakse. Pakettisc.pypeab olema sellel alal kergesti ligipÀÀsetav. See vĂ”ib olla ala, mis ei toeta tooteid.
Selle liidese alusel on ellu viidud 4 pÀringu klassi:
isc.py.msg.QueryRequestâ seadke omadusPĂ€ringSQL pĂ€ringu edastamiseks.isc.py.msg.ClassRequestâ seadke omadusClassandmete klassi edastamiseks.isc.py.msg.TableRequestâ seadke omadusTabelatabeli andmete edastamiseks.isc.py.msg.GlobalRequestâ seadke omadusGlobalglobaalsete andmete edastamiseks.
Testimise protsessi kÀigus vaadake aktiivsust RAW, kus isc.py.msg.QueryRequest nÀidatud tegevuses.

Python konteksti salvestamine / taastamine
LÔpuks saame salvestada Python konteksti InterSystems IRIS-s, et seda teha, saadame isc.py.msg.SaveRequest argumendid:
Maskâ Salvestatakse ainult mustrile vastavad muutujad. Toetatud on*ja?. NĂ€ide:"Data*, Figure?". Vaikimisi*.MaxLengthâ Salvestatava muutuja maksimaalne pikkus. Kui muutuja serialiseerimine ĂŒletab seda, jĂ€etakse see tĂ€helepanuta. Seadke 0, et lubada muutujaid mis tahes pikkuses. Vaikimisi$$$MaxStringLength.Nimiâ Konteksti nimi (valikuline).Kirjeldusâ Konteksti kirjeldus (valikuline).
Tagastab Ens.StringResponse koos Id salvestatud konteksti. Testimisprotsessi kÀigus vaadake aktiivsust Salvesta kontekst.
Sobilik pÀring isc.py.msg.RestoreRequest laadib konteksti InterSystems IRIS-st Pythonisse:
ContextIdâ konteksti identifikaator.Puhastaâ puhastada kontekst enne taastamist.
Jupyter Notebook
â see on avatud lĂ€htekoodiga veebirakendus, mis vĂ”imaldab luua mĂ€rkmikke, mis sisaldavad koodi, visualiseerimisi ja teksti ning neid avaldada. Python Gateway vĂ”imaldab vaadata ja redigeerida BPL-protsesse Jupyter Notebook'i kujul. Pange tĂ€hele, et hetkel kasutatakse tavapĂ€rast Python 3 executorit.
See laiendus eeldab, et annotatsioonid sisaldavad Python koodi ja kasutavad aktiivsuste nimesid eelnevate pealkirjadena. NĂŒĂŒd on vĂ”imalik arendada Ă€ri-protsesse PythonGateway Jupyter Notebookis. Siin on, mis on vĂ”imalik:
- Luua uusi Àri protsesse
- Kustutada Àri protsesse
- Luua uusi tegevusi
- Muuta tegevusi
- Kustutada tegevusi
Siin on . Ja mÔned ekraanipildid:
Protsesside juhend

Protsessi redaktor

Installeerimine
- Teil on vaja InterSystems IRIS 2019.2+.
- Installige PythonGateway v0.8+ (nÔutav ainult
isc.py.util.Jupyter,isc.py.util.JupyterCheckpointsjaisc.py.ens.ProcessUtils). - Uuendage ObjectScript koodi hoidlast.
- Sooritage
do ##class(isc.py.util.Jupyter).Install()ja jÀrgige juhiseid.
.
JĂ€reldused
MLToolkit on tööriistade komplekt, mille eesmĂ€rk on ĂŒhendada mudelid ja tehingute keskkond, et loodud mudeleid oleks lihtne kasutada otse teie Ă€riprotsessides. Python Gateway on osa MLToolkit'ist ja pakub integreerimist Python'i keelega, vĂ”imaldades orkestreerida mis tahes masinĂ”ppe algoritme, mis on loodud Python'i keeles (peamine keskkond paljude andeteadlaste jaoks), kasutades mitmeid valmis raamatukogusid kiireks kohandatud, automatiseeritud analĂŒĂŒtiliste AI/ML lahenduste loomiseks InterSystems IRIS platvormil.
Lingid
MLToolkit
MLToolkit kasutajagrupp on privaatne GitHub-i reposteitor, mis on loodud osana InterSystems'i ettevĂ”tte GitHub-organisatsioonist. See on suunatud vĂ€listele kasutajatele, kes installivad, uurivad vĂ”i juba kasutavad MLToolkit'i komponente, sealhulgas Python Gateway'd. Grupis on saadaval mitmeid rakendatud juhtumeid (koos lĂ€htekoodi ja testandmetega) turunduse, tootmise, meditsiini ja paljude teiste valdkondade jaoks. ML Toolkit kasutajagruppi liitumiseks saatke palun lĂŒhike e-kiri jĂ€rgmistel andmetel: ja mĂ€rkige oma kirjas jĂ€rgmised andmed:
- GitHubi kasutajanimi
- Organisatsioon (kus te töötate vÔi Ôpite)
- Ametikoht (teie tegelik ametikoht teie organisatsioonis, vĂ”i "ĂliĂ”pilane", vĂ”i "Iseseisev").
- Riik
Neile, kes lugesid artiklit ja on huvitatud InterSystems IRISi vĂ”imalustest tehisintellekti ja masinĂ”ppe mehhanismide arendamise vĂ”i majutamise platvormina, pakume vĂ€lja vĂ”imalused arutada teie ettevĂ”ttele huvi pakkuvaid stsenaariume. Oleme valmis analĂŒĂŒsima teie ettevĂ”tte vajadusi ja ĂŒhiselt mÀÀrama tegevusplaani; meie AI/ML ekspertgrupi kontaktmeiliaadress on .
Allikas: habr.com
