Ta stran je namenjena Python Gateway — skupnostnemu projektu z odprtokodnim programjem za podatkovno platformo InterSystems IRIS. Ta projekt omogoča orkestracijo vseh algoritmov strojnega učenja, ustvarjenih v jeziku Python (glavno okolje za številne podatkovne znanstvenike), in uporabo številnih že pripravljenih knjižnic za hitro ustvarjanje prilagodljivih, robotiziranih analitičnih AI/ML rešitev na platformi InterSystems IRIS. V tem članku bom pokazal, kako lahko InterSystems IRIS orkestrira procese v jeziku Python, učinkovito izvede dvosmerni prenos podatkov in ustvari pametne poslovne procese.
Načrt
- Uvod.
- Orodja.
- Namestitev.
- API.
- Interoperabilnost.
- Jupyter Notebook.
- Zaključci.
- Povezave.
- MLToolkit.
Uvod
Python je visokonavzni programski jezik splošne rabe, usmerjen v povečanje produktivnosti razvijalca in berljivosti kode. V tej seriji člankov bom predstavil možnosti uporabe jezika Python na platformi InterSystems IRIS, pri čemer je glavni poudarek tega članka uporaba Pythona kot jezika za ustvarjanje in izvajanje modelov strojnega učenja.
Strojno učenje (ML) je razred metod umetne inteligence, ki se odlikujejo po tem, da ne rešujejo naloge neposredno, temveč se učijo v procesu reševanja številnih podobnih nalog.
Algoritmi in modeli strojnega učenja postajajo vse bolj razširjeni. Razlogov je mnogo, toda vsi se nanašajo na dostopnost, preprostost in dosego praktičnih rezultatov. Je klastirizacija ali celo nevralno mrežno modeliranje nova tehnologija?
Seveda ne, vendar trenutno ni potrebno napisati stotine tisoč vrstic kode, da bi zagnali en model, stroški za ustvarjanje in uporabo modelov pa postajajo vse manjši.
Orodja se razvijajo — medtem ko nimamo popolnoma GUI usmerjenih AI/ML orodij, napredek, ki smo mu priča pri mnogih drugih razredih informacijskih sistemov, na primer BI (od pisanja kode do uporabe okvirov in GUI usmerjenih rešitev), se kaže tudi v orodjih za ustvarjanje AI/ML. Že smo presegli fazo pisanja kode in danes uporabljamo okvire za gradnjo in usposabljanje modelov.
Druge izboljšave, kot je možnost širjenja predizobražene modela, ko končni uporabnik preprosto dopolni usposabljanje modela s svojimi specifičnimi podatki, prav tako poenostavljajo začetek uporabe strojnega učenja. Te dosežke znatno olajšajo učenje strojnega učenja, tako za strokovnjake kot za podjetja na splošno.
Po drugi strani pa zbiramo vse več podatkov. Hvala enotni podatkovni platformi, kot je InterSystems IRIS, se lahko vse te informacije takoj pripravijo in uporabijo kot izhodni podatki za modele strojnega učenja.
Z prehodom na oblak je zagon AI/ML projektov lažji kot kdajkoli. Porabimo lahko le tiste vire, ki jih potrebujemo. Poleg tega, zahvaljujoč paralelizaciji, ki jo ponujajo oblaki, lahko prihranimo čas.
Ampak kakšni so rezultati? Tukaj postane vse bolj zapleteno. Obstaja veliko orodij za gradnjo modelov, o katerih bom govoril naprej. Zgraditi dober model ni preprosto, toda kaj potem? Pridobitev koristi od uporabe modela v podjetju je prav tako nenavadna naloga. Koren težave je v razdelitvi analitičnih in transakcijskih obremenitev ter modelov podatkov. Ko učimo model, to običajno počnemo na zgodovinskih podatkih. Toda prostor za zgrajen model je v transakcijskem obdelovanju podatkov. Kakšna korist je od najboljšega modela za odkritje goljufivih transakcij, če ga izvajamo enkrat na dan? Goljufije so že zdavnaj pobegnile z denarjem. Potrebujemo, da model usposobimo na zgodovinskih podatkih, vendar ga moramo tudi uporabljati v realnem času na novih podatkih, da naši poslovni procesi delujejo v skladu s napovedmi, ki jih model pripravi.
ML Toolkit je nabor orodij, ki je zasnovan prav za to: združiti modele in transakcijsko okolje, da se zgrajeni modeli lahko enostavno uporabljajo neposredno v vaših poslovnih procesih. Python Gateway je del ML Toolkit in omogoča integracijo z jezikom Python (podobno kot R Gateway, ki je del ML Toolkit in omogoča integracijo z jezikom R).
Orodja
Preden nadaljujemo, bi želel opisati nekaj orodij in knjižnic za Python, ki jih bomo uporabili kasneje.
Tehnologije
- Python je interpretiran, visoko nivojski jezik za splošno rabo. Glavna prednost jezika je obsežna knjižnica matematičnih, ML- in AI-knjižnic. Tako kot ObjectScript je to objektno orientiran jezik, a vse se določi dinamično, ne statično. Vse je tudi predmet. Kasnejši članki predlagajo površno seznanitev z jezikom. Če želite začeti z učenjem, priporočam, da začnete s .
- Za naše naslednje vaje namestite .
- IDE: Uporabljam , vendar so na voljo tudi druga orodja. . Če uporabljate Atelier, obstaja Eclipse vtičnik za razvijalce v Pythonu. Če uporabljate VS Code, obstaja razširitev za Python.
- Zvezek: namesto IDE lahko pišete in delite svoje skripte v spletnih zvezkih. Najbolj priljubljen med njimi je .
Knjižnice
Tukaj je (nepopoln) seznam knjižnic za strojno učenje:
- — temeljni paket za natančne izračune.
- — visoko zmogljive podatkovne strukture in orodja za analizo podatkov.
- — ustvarjanje grafikonov.
- — vizualizacija podatkov, ki temelji na matplotlib.
- — metode strojnega učenja.
- — algoritmi strojnega učenja v okviru metodologije gradientnega boostanja (Gradient Boosting).
- — NLP.
- — nevronske mreže.
- — platforma za ustvarjanje modelov strojnega učenja.
- — platforma za ustvarjanje modelov strojnega učenja, usmerjena na Python.
- — PMML iz različnih modelov.
Tehnologije AI/ML omogočajo podjetjem, da postanejo bolj učinkovita in prilagodljiva. Poleg tega postajajo te tehnologije danes enostavnejše za razvoj in uvedbo. Začnite raziskovati AI/ML tehnologije in kako lahko pomagajo vaši organizaciji rasti.
Namestitev
Obstaja več načinov za namestitev in uporabo Python Gateway:
- OS
- Windows
- Linux
- Mac
- Docker
- Uporabite sliko iz DockerHub
- Ustvarite svojo lastno sliko
Ne glede na način namestitve boste potrebovali izvorno kodo. Edino mesto za prenos kode je . Vsebuje testirane stabilne izdaje, preprosto prenesite zadnjo. Trenutno je to 0.8, vendar bodo sčasoma na voljo nove različice. Ne kloonirajte/nalagajte repozitorija, temveč prenesite zadnjo izdajo.
OS
Če namestite Python Gateway v operacijski sistem, morate najprej (ne glede na operacijski sistem) namestiti Python. Za to:
- . Priporočljivo je, da Python namestite v privzeto mapo.
- Namestite modul
dill:pip install dill. - Prenesite kodo ObjectScript (tj.
do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) v katero koli področje s produkti. Če želite, da obstoječe področje podpira produkte, izvedite:write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1). - Postavite v mapo
binvašega primera InterSystems IRIS. Datoteka knjižnice mora biti dostopna na poti, vrnjeni zwrite ##class(isc.py.Callout).GetLib().
Windows
- Prepričajte se, da spremenljivka okolja
PYTHONHOMEpokaže na Python 3.6.7. - Prepričajte se, da sistemska spremenljivka okolja
PATHvsebuje spremenljivkoPYTHONHOME(ali mapo, na katero kaže).
Linux (Debian/Ubuntu)
- Preverite, da spremenljivka okolja
PATHvsebuje/usr/libin/usr/lib/x86_64-linux-gnu. Uporabite datoteko/etc/environmentza nastavitev spremenljivk okolja. - V primeru napak
undefined symbol: _Py_TrueStructnastavite nastavitevPythonLib. Prav tako v je razdelek za odpravljanje težav.
Mac
- Trenutno je podprt samo Python 3.6.7 iz . Preverite spremenljivko
PATH.
Če ste spreminjali spremenljivke okolja, ponovno zaženite svoj izdelek InterSystems.
Docker
Uporaba kontejnerjev ima vrsto prednosti:
- Prijenosnost
- Učinkovitost
- Izolacija
- Lahkost
- Imutabilnost
Seznanite se s to za podrobnejše informacije o uporabi Dockerja s produkti InterSystems.
Vse različice Python Gateway so trenutno osnovane na kontejnerjih. 2019.4.
Končni slika
Izvedite: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latest, da prenesete in zaženete Python Gateway z izdajo Community Edition InterSystems IRIS. To je to.
Ustvarite svojo lastno sliko
Za izdelavo Docker slike izvedite v korenu repozitorija: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Privzeto se slika gradi na osnovi slike store/intersystems/iris-community:2019.4.0.383.0, vendar jo lahko spremenite tako, da nastavite spremenljivko IMAGE.
Za gradnjo iz InterSystems IRIS izvedite: `docker build —build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 —force-rm —tag intersystemscommunity/irispy:latest.`
Po tem lahko zaženete Docker sliko:
docker run -d
-p 52773:52773
-v //:/mount
--name irispy
intersystemscommunity/irispy:latest
--key /mount/iris.keyČe uporabljate sliko, osnovano na Community Edition InterSystems IRIS, ključ morda ni potreben.
Komentarji
- Preskusni postopek
isc.py.test.Processshranjuje več slik v začasni imenik. Morda boste želeli spremeniti to pot v pritrjen imenik. To lahko storite tako, da uredite nastavitevWorkingDirz navedbo pritrjenega imenika. - Za dostop do terminala izvedite:
docker exec -it irispy sh. - Dostop do Upravnega Portala Sistema z uporabniškim imenom
SuperUser/SYS. - Da zaustavite vsebnik, izvedite:
docker stop irispy && docker rm --force irispy.
Preverjanje namestitve
Potem ko ste namestili Python Gateway, je smiselno preveriti, ali deluje. Izvedite ta koda v terminalu InterSystems IRIS:
set sc = ##class(isc.py.Callout).Setup()
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
write varRezultat mora biti: HELLO — vrednost Python spremenljivke. xČe je vrnjeni status sc napaka ali var prazno, preverite .
API
Python Gateway je nameščen in ste se prepričali, da deluje. Čas je, da ga začnete uporabljati!
Glavni vmesnik za Python je isc.py.Main. Ponudil bo naslednje skupine metod (vse vračajo %Status):
- Izvrševanje kode
- Prenos podatkov
- Pomožne
Izvrševanje kode
Te metode omogočajo izvajanje poljubne Python kode.
SimpleString
SimpleString — to je glavna metoda. Sprejema 4 neobvezne argumente:
code— niz kode za izvedbo. Znak za prelom vrstice:$c(10).returnVariable— ime spremenljivke za vračilo.serialization— kako serilizirati.returnVariable0 — niz (privzeto), 1 — repr.result— ByRef referenca na spremenljivko, v katero se shrani vrednost.returnVariable.
Zgoraj smo izvedli:
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).V tem primeru dodeljujemo Python spremenljivki x i(j), ki je šifrirana z javnim ključem Zdravo in želimo vrniti vrednost Python spremenljivke x v spremenljivko ObjectScript. var.
ExecuteCode
ExecuteCode je varnejša in manj omejena alternativa. SimpleString.
Nizi v platformi InterSystems IRIS so omejeni na 3 641 144 znakov, in če želite izvesti daljši kos kode, morate uporabiti tokove.
Sprejema dve argumenti:
code— niz ali tok Python kode za izvajanje.variable— (neobvezno) dodeli rezultat izvajanjacodete spremenljivke Python.
Primer uporabe:
set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").V tem primeru pomnožimo 2 in 3 ter shranimo rezultat v Python spremenljivko. y.
Prenos podatkov
Predajte podatke v Python in nazaj.
Python -> InterSystems IRIS
Obstajajo 4 načini, kako pridobiti vrednost Python spremenljivke v InterSystems IRIS, odvisno od serilizacije, ki jo potrebujete:
Nizza preproste tipe podatkov in odpravljanje napak.Reprza shranjevanje preprostih objektov in odpravljanje napak.JSONza enostavno manipulacijo podatkov na strani InterSystems IRIS.Pickleza shranjevanje objektov.
Te metode omogočajo pridobivanje spremenljivk iz Python kot nizov ali tokov.
GetVariable(variable, serialization, .stream, useString)— pridobiserializationvarijablavariableustream. ЕслиuseStringje enako 1 in serializacija je v nizu, vrne niz, ne tok.GetVariableJson(variable, .stream, useString)— pridobi JSON serializacijo spremenljivke.GetVariablePickle(variable, .stream, useString, useDill)— pridobi Pickle (ali Dill) serializacijo spremenljivke.
Poskusimo pridobiti našo spremenljivko y.
set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6InterSystems IRIS -> Python
Nalaganje podatkov iz InterSystems IRIS v Python.
ExecuteQuery(query, variable, type, namespace)— ustvari nabor podatkov (pandasdataframeililist) iz sql poizvedbe in ga nastavi v Python spremenljivko.variable. Paketisc.pymora biti dostopen v območjunamespace— tam bo poizvedba izvedena.ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace)— nalaga podatke iz globalne spremenljivkeglobaliz subindeksastartdoendv Python kot spremenljivko tipatype:list, bodisi pandasdataframe. Opis opcijskih argumentovmaskinlabelsje na voljo v dokumentaciji razreda in repozitoriju .ExecuteClass(class, variable, type, start, end, properties, namespace)— nalaga podatke iz razredaclassiz idstartdoendv Python kot spremenljivko tipatype:list, bodisi pandasdataframe.properties— seznam (ločilnik — vejica) lastnosti razreda, ki jih je treba naložiti v nabor podatkov. Podprti so maske.*in?. Privzeto —*(vse lastnosti). Lastnost%%CLASSNAMEje prezrta.ExecuteTable(table, variable, type, start, end, properties, namespace)— nalaga podatke iz tabeletabelaiz idstartdoendv Python.
ExecuteQuery je univerzalen (vsaka veljavna SQL poizvedba bo poslana v Python). Vendar pa ExecuteGlobal in njegovi ovitki ExecuteClass in ExecuteTable delujejo z določenimi omejitvami. So precej hitrejši (3-5 krat hitrejši od ODBC gonilnika in 20 krat hitrejši ExecuteQuery). Dodatne informacije v .
Vse te metode podpirajo prenos podatkov iz katerega koli območja. Paket isc.py mora biti dostopen v ciljnem območju.
ExecuteQuery
ExecuteQuery(request, variable, type, namespace) — prenos rezultatov katere koli veljavne SQL poizvedbe v Python. To je najpočasnejša metoda prenosa podatkov. Uporabite jo, če ExecuteGlobal in njegovi ovitki niso na voljo.
Argumenti:
query— sql poizvedba.variable— ime Python spremenljivke, v katero se zapišejo podatki.type—listali Pandasdataframe.namespace— območje, v katerem bo poizvedba izvedena.
ExecuteGlobal
ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) — prenos globalne spremenljivke v Python.
Argumenti:
global— ime globalne spremenljivke brez^variable— ime Python spremenljivke, v katero se zapišejo podatki.type—listali Pandasdataframe.start— prvi subindeks globalne spremenljivke. Obvezno%Integer.end— zadnji subindeks globalne spremenljivke. Obvezno%Integer.mask— obrazec vrednosti globalne spremenljivke. Obrazec je lahko krajší kot število polj v globalni spremenljivki (v tem primeru bodo polja na koncu izpuščena). Kako oblike obrazec:+predložite vrednost takšno, kot je.-izpustite to vrednost.b— Logična vrsta (0—False, vse ostalo —True).d— Datum (iz $horolog, na Windows od 1970, na Linux od 1900).t— Čas ($horolog, sekunde po polnoči).m— Časovna oznaka (niz formata LETO-MESEC-DAN HOUR:MINUTE:SECOND).
labels— %Seznam imen stolpcev. Prvi element — ime podskripta.namespace— območje, v katerem bo poizvedba izvedena.
ExecuteClass
Ohitika nad ExecuteGlobal. Na podlagi definicije razreda pripravi klic ExecuteGlobal in ga izvede.
ExecuteClass(class, variable, type, start, end, properties, namespace) — prenos podatkov razreda v Python.
Argumenti:
class— ime razredavariable— ime Python spremenljivke, v katero se zapišejo podatki.type—listali Pandasdataframe.start— začetni Id.end— končni Idproperties— seznam (ločilnik — vejica) lastnosti razreda, ki jih je treba naložiti v nabor podatkov. Podprti so maske.*in?. Privzeto —*(vse lastnosti). Lastnost%%CLASSNAMEje prezrta.namespace— območje, v katerem bo poizvedba izvedena.
Vse lastnosti se prenesejo takšne kot so razen lastnosti tipov te, %Čas, %Logična vrednost in %Časovna oznaka — te se pretvorijo v ustrezne razrede Python.
ExecuteTable
Ohitika nad ExecuteClass. Pretvori ime tabele v ime razreda in izvede ExecuteClass. Podpis:
ExecuteTable(table, variable, type, start, end, properties, namespace) — prenos podatkov tabele v Python.
Argumenti:
tabela— ime tabele.
Vsi drugi argumenti se prenesejo takšni kot so vExecuteClass.
Opombe
ExecuteGlobal,ExecuteClassinExecuteTabledelujejo enako hitro.ExecuteGlobal20-krat hitreje kotExecuteQueryna velikih skladiščih podatkov (čas prenosa več kot >0.01 sekunde).ExecuteGlobal,ExecuteClassinExecuteTabledelujejo na globalnih spremenljivkah s to strukturo:^global(key) = $lb(prop1, prop2, ..., propN)kjerkey— celo število.- Za
ExecuteGlobal,ExecuteClassinExecuteTablepodprte vrednostiteustrezajo obsegumktimein so odvisne od operacijskega sistema (: 1970-01-01, 1900-01-01, ). Uporabite%Časovna oznakaza prenos podatkov izven tega obsega ali uporabite pandas dataframe, saj je to omejitev samo za seznam. - Za
ExecuteGlobal,ExecuteClassinExecuteTablevsi argumenti, razen vira podatkov (globalne spremenljivke, razreda ali tabele) in spremenljivka so opcijski.
Primeri
Testni razred vsebuje metodo, ki prikazuje vse možnosti prenosa podatkov:
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)Извикайте метода do ##class(isc.py.test.Person).Test() за да видите как функционират всички методи за предаване на данни.
Помощни методи
GetVariableInfo(variable, serialization, .defined, .type, .length)— получавате информация за променливата: дали е определена, клас и дължина на сериализация.GetVariableDefined(variable, .defined)— дали променливата е определена.GetVariableType(variable, .type)— получавате класа на променливата.GetStatus()— получите и премахнете последното изключение от страна на Python.GetModuleInfo(module, .imported, .alias)— получавате променливата на модула и статуса на импорта.GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments)— получавате информация за функцията.
Interoperabilnost
Научихте се как да извиквате Python Gateway от терминала, сега ще започнем да го използваме в продукцията. Основата на взаимодействието с Python в този режим — isc.py.ens.Operation. Той ни позволява:
- Да изпълняваме код на Python
- Да запазваме/възстановяваме контекста на Python
- Да зареждаме и получаваме данни от Python
Основно, операцията на Pyhton е обвивка около isc.py.Main. Операцията isc.py.ens.Operation дава възможност за взаимодействие с процеса на Python от продукциите на InterSystems IRIS. Поддържат се пет заявки:
isc.py.msg.ExecutionRequestза изпълнение на Python код. Връщаisc.py.msg.ExecutionResponseс резултата от изпълнението и стойностите на запитаните променливи.isc.py.msg.StreamExecutionRequestза изпълнение на Python код. Връщаisc.py.msg.StreamExecutionResponseс резултата от изпълнението и стойностите на запитаните променливи. Подобно наisc.py.msg.ExecutionRequest, но приема и връща потоци вместо низове.isc.py.msg.QueryRequestза предаване на резултата от изпълнението на SQL заявка. ВръщаEns.Response.isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequestza prenos podatkov globalne/razreda/tabele. VračaEns.Response.isc.py.msg.SaveRequestza shranjevanje konteksta Python. VračaEns.StringResponsez identifikatorjem konteksta.isc.py.msg.RestoreRequestza obnovitev konteksta Python.Pored toga,
isc.py.ens.Operationima dve nastavitvi:Initializer— izbira razreda, ki implementira vmesnikisc.py.init.Abstract. Uporabiti se lahko za nalaganje funkcij, modulov, razredov itd. Izvrši se enkrat ob zagonu postopka.PythonLib— (samo za Linux) če opazite napake pri nalaganju, nastavi njegovo vrednost nalibpython3.6m.soali celo na polno pot do knjižnice Python.
Ustvarjanje poslovnih procesov
Na voljo sta dva razreda, ki olajšata razvoj poslovnih procesov:
isc.py.ens.ProcessUtilsomogoča pridobivanje anotacij iz aktivnosti s podstavitvijo spremenljivk.isc.py.util.BPEmulatoromogoča enostavno testiranje poslovnih procesov s Python. Izvrši lahko poslovni proces (deli v jeziku Python) v trenutnem postopku.
Nadomeščanje spremenljivk.
Vsi poslovni procesi, dedovani od isc.py.ens.ProcessUtils, lahko uporabijo metodo GetAnnotation(name) za pridobitev vrednosti anotacije aktivnosti po njenem imenu. Anotacija aktivnosti lahko vsebuje spremenljivke, ki bodo izračunane na strani InterSystems IRIS pred prenosom v Python. Tukaj je sintaksa podstavitve spremenljivk:
${class:method:arg1:...:argN}— klic metode#{expr}— izvršiti kodo v ObjectScript jeziku.
Primer je na voljo v testnem poslovnem procesu isc.py.test.Process, na primer, v aktivnosti Matrika korelacije: Graf: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). V tem primeru:
#{process.WorkDirectory}vrne lastnost WorkDirectory objektaproces, ki je instanca razredaisc.py.test.Process, torej trenutnega poslovnega procesa.${%PopulateUtils:Integer:1:100}izvede metodoCelo številoklasa%PopulateUtils, pri čemer se predajajo argumenti1in100, vrne naključno celo število v razponu1...100.
Testni poslovni proces
Testni izdelki in testni poslovni proces sta na voljo privzeto kot del Python Gateway. Za njihovo uporabo:
- V terminalu OS izvedite:
pip install pandas matplotlib seaborn. - V terminalu InterSystems IRIS izvedite:
do ##class(isc.py.test.CannibalizationData).Import()za izpolnitev testnih podatkov. - Zaženite izdelek
isc.py.test.Production. - Pošlji zahtevo tipa
Ens.Requestuisc.py.test.Process.
Poglejmo, kako vse to deluje skupaj. Odprite isc.py.test.Process v BPL urejevalniku:

Izvrševanje kode
Najpomembnejši klic — izvršitev Python kode:

Uporablja se zahteva isc.py.msg.ExecutionRequest, tukaj so njene lastnosti:
Koda— Python koda.SeparateLines— ali naj se koda loči na vrstice za izvršitev.$c(10)(n) se uporablja za ločevanje vrstic. Upoštevajte, da NE priporočamo obdelave celotnega sporočila hkrati; ta funkcija je namenjena samo obdelavidefin podobnih večvrstičnih izrazov. Privzeto0.Spremenljivke— seznam spremenljivk, ločenih z vejicami, ki bodo dodane v odgovor.Serializacija— kako serializirati spremenljivke, ki jih želimo vrniti. Možnosti:Str,Repr,JSON,PickleinDill, privzetoStr.
V našem primeru samo nastavljamo lastnost Koda, tako da vse druge lastnosti uporabljajo privzete vrednosti. Nastavljamo jo z navedbo process.GetAnnotation("Import pandas"), ki med izvajanjem vrne anotacijo po izvedbi zamenjave spremenljivk. Na koncu bo koda import pandas as pd poslana v Python. GetAnnotation je lahko koristna za pridobivanje večvrstičnih Python skriptov, vendar ni omejitev glede te metode pridobivanja kode. Lastnost lahko nastavite Koda na kakršenkoli način, ki vam ustreza.
Pridobivanje spremenljivk
Še en zanimiv izziv z uporabo isc.py.msg.ExecutionRequest — Korelacijska matrika: tabelarična:

Izračuna Korelacijsko matriko na strani Pythona in pridobi spremenljivko corrmat nazaj v InterSystems IRIS v formatu JSON z nastavitvijo lastnosti poizvedbe:
Spremenljivke:"corrmat"Serializacija:"JSON"
Rezultate lahko vidimo v Visual Trace:

In če potrebujemo to vrednost v BP, jo lahko pridobimo tako: callresponse.Variables.GetAt("corrmat").
Prenos podatkov
Nato se bomo pogovarjali o prenosu podatkov iz InterSystems IRIS v Python; vsi poizvedbeni zahtevki za prenos podatkov uresničujejo vmesnik isc.py.msg.DataRequest, ki nudi naslednje lastnosti:
Variable— Python spremenljivka, v katero se zapisujejo podatki.Tip— tip spremenljivke:dataframe(pandas dataframe) alilist.Namespace— območje, iz katerega pridobivamo podatke. Paketisc.pymora biti dostopen v tem območju. To je lahko območje brez podpore za produkcijo.
Na podlagi tega vmesnika so bili implementirani 4 razredi zahtevkov:
isc.py.msg.QueryRequest— nastavite lastnostQueryza prenos SQL poizvedbe.isc.py.msg.ClassRequest— nastavite lastnostRazredza prenos podatkov razreda.isc.py.msg.TableRequest— nastavite lastnostТаблицаza prenos podatkov tabele.isc.py.msg.GlobalRequest— nastavite lastnostGlobalza prenos podatkov globalne spremenljivke.
V testnem procesu si oglejte aktivnost RAW, gde isc.py.msg.QueryRequest prikazan v akciji.

Shranjevanje/obnovitev Python konteksta
Nazadnje lahko shranimo Python kontekst v InterSystems IRIS; za to pošljemo isc.py.msg.SaveRequest z argumenti:
Maska— shranijo se samo spremenljivke, ki ustrezajo maske. Podprti so*in?. Primer:"Data*, Figure?". Privzeto*.MaxLength— Največja dolžina shranjene spremenljivke. Če je serializacija spremenljivke daljša, bo ta prezrta. Nastavite 0, da omogočite spremenljivke poljubne dolžine. Privzeto$$$MaxStringLength.Ime— Ime konteksta (neobvezno).Opis— Opis konteksta (neobvezno).
Vrne Ens.StringResponse z Id shranjenega konteksta. Med testnim procesom si oglejte aktivnost Shrani kontekst.
Ustrezno povpraševanje isc.py.msg.RestoreRequest naloži kontekst iz InterSystems IRIS v Python:
ContextId— identifikator konteksta.Počisti— počisti kontekst pred obnovitvijo.
Jupyter Notebook
— to je spletna aplikacija z odprtokodnim delovanjem, ki omogoča ustvarjanje zvezkov, ki vsebujejo kodo, vizualizacije in besedilo ter njihovo objavljanje. Python Gateway omogoča pregledovanje in urejanje BPL procesov v obliki Jupyter Notebook. Upoštevajte, da se trenutno uporablja običajen izvrševalec Python 3.
To razširitev predpostavlja, da anotacije vsebujejo kodo Python in uporabljajo imena aktivnosti kot predhodne naslove. Zdaj je mogoče razvijati poslovne procese PythonGateway v Jupyter Notebook. To je mogoče:
- Ustvarjanje novih poslovnih procesov
- Brisanje poslovnih procesov
- Ustvarjanje novih aktivnosti
- Sprememba aktivnosti
- Brisanje aktivnosti
Evo . In nekaj posnetkov zaslona:
Raziskovalec procesov

Urejevalnik procesa

Namestitev
- Potrebujete InterSystems IRIS 2019.2+.
- Namestite PythonGateway v0.8+ (zahteva le
isc.py.util.Jupyter,isc.py.util.JupyterCheckpointsinisc.py.ens.ProcessUtils). - Posodobite kodo ObjectScript iz skladišča.
- Izvedite
do ##class(isc.py.util.Jupyter).Install()in sledite navodilom.
.
Zaključki
MLToolkit je niz orodij, katerega cilj je združevanje modelov in transakcijskega okolja, da bi bile zgrajene modele mogoče enostavno uporabljati neposredno v vaših poslovnih procesih. Python Gateway je del MLToolkit in omogoča integracijo z jezikom Python, kar omogoča orkestracijo vseh algoritmov strojnega učenja, ustvarjenih v jeziku Python (glavno okolje za številne podatkovne znanstvenike), ter uporabo številnih pripravljenih knjižnic za hitro ustvarjanje prilagodljivih, robotiziranih analitičnih AI/ML rešitev na platformi InterSystems IRIS.
Povezave
MLToolkit
Uporabniška skupina MLToolkit je zasebni GitHub repozitorij, ustanovljen kot del korporativne GitHub organizacije InterSystems. Namenjena je zunanjim uporabnikom, ki namestijo, raziskujejo ali že uporabljajo komponente MLToolkit, vključno s Python Gateway. V skupini je na voljo vrsta izvedenih primerov (z izvorno kodo in testnimi podatki) na področjih marketinga, proizvodnje, medicine in mnogih drugih panog. Da se pridružite skupini uporabnikov ML Toolkit, pošljite kratko sporočilo na elektronski naslov: in v svojem sporočilu navedite naslednje informacije:
- Uporabniško ime GitHub
- Organizacija (kjer delate ali študirate)
- Pozicija (vaša dejanska pozicija v vaši organizaciji, ali "Študent", ali "Neodvisni").
- País
Tistim, ki so prebrali članek in jih zanima, kako lahko InterSystems IRIS služi kot platforma za razvoj ali gostovanje mehanizmov umetne inteligence in strojnega učenja, ponujamo priložnost za razpravo o morebitnih scenarijih, zanimivih za vaše podjetje. Z veseljem bomo analizirali potrebe vašega podjetja in skupaj opredelili akcijski načrt; kontaktni naslov naše strokovne skupine AI/ML je – .
Izvor: habr.com
