Python Gateway „InterSystems IRIS“.

Šis straipsnis yra apie Python Gateway, atvirojo kodo bendruomenės projektą, skirtą InterSystems IRIS duomenų platformai. Šis projektas leidžia organizuoti bet kokius mašininio mokymosi algoritmus, sukurtus Python (pagrindinė daugelio duomenų mokslininkų aplinka), naudoti daugybę paruoštų bibliotekų, kad greitai sukurtumėte adaptyvius, robotizuotus analitinius AI / ML sprendimus InterSystems IRIS platformoje. Šiame straipsnyje parodysiu, kaip „InterSystems IRIS“ gali organizuoti „Python“ procesus, efektyviai perduoti dvipusius duomenis ir kurti intelektualius verslo procesus.

planas

  1. Įvadas.
  2. Įrankiai.
  3. Įrengimas.
  4. API.
  5. Sąveika.
  6. Jupyter užrašų knygelė.
  7. Išvados.
  8. Nuorodos.
  9. MLT įrankių rinkinys.

įvedimas

Python yra aukšto lygio, bendrosios paskirties programavimo kalba, skirta pagerinti kūrėjo produktyvumą ir kodo skaitomumą. Šioje straipsnių serijoje aptarsiu Python naudojimo InterSystems IRIS platformoje galimybes, daugiausia dėmesio skirdama Python kaip kalbos naudojimui kuriant ir paleidžiant mašininio mokymosi modelius.

Mašinų mokymasis (ML) – tai dirbtinio intelekto metodų klasė, kuriai būdingas ne tiesioginis problemos sprendimas, o mokymasis daugelio panašių problemų sprendimo procese.

Mašininio mokymosi algoritmai ir modeliai tampa vis labiau paplitę. Tam yra daug priežasčių, tačiau viskas priklauso nuo prieinamumo, paprastumo ir praktinių rezultatų. Ar klasterizavimas ar net neuroninių tinklų modeliavimas yra nauja technologija?

Žinoma, ne, bet šiais laikais nereikia rašyti šimtų tūkstančių kodo eilučių, kad būtų paleistas vienas modelis, o modelių kūrimo ir naudojimo kaštai vis mažėja.

Įrankiai tobulėja – nors mes neturime visiškai į GUI orientuotų AI/ML įrankių, pažanga, kurią matėme su daugeliu kitų informacinių sistemų klasių, tokių kaip BI (nuo kodo rašymo iki struktūrų naudojimo ir į GUI orientuotų konfigūruojamų sprendimų) taip pat pastebėta AI/ML kūrimo įrankiuose. Jau praėjome kodo rašymo etapą ir šiandien modeliams kurti ir mokyti naudojame karkasus.

Kiti patobulinimai, pvz., galimybė platinti iš anksto parengtą modelį, kai galutinis vartotojas tiesiog turi baigti modelio mokymą pagal savo konkrečius duomenis, taip pat palengvina mašininio mokymosi pradžią. Dėl šios pažangos mokymosi mašininis mokymasis yra daug lengvesnis tiek specialistams, tiek įmonėms apskritai.

Kita vertus, renkame vis daugiau duomenų. Su vieninga duomenų platforma, tokia kaip InterSystems IRIS, visa ši informacija gali būti nedelsiant paruošta ir naudojama kaip įvestis į mašininio mokymosi modelius.

Perėjus prie debesies, dirbtinio intelekto/ML projektų paleidimas tampa lengvesnis nei bet kada anksčiau. Galime vartoti tik tuos išteklius, kurių mums reikia. Be to, debesų platformų siūlomo lygiagretumo dėka galime sutaupyti praleisto laiko.

Bet kaip su rezultatais? Čia viskas tampa sudėtingesnė. Yra daug modelių kūrimo įrankių, kuriuos aptarsiu toliau. Sukurti gerą modelį nėra lengva, bet kas toliau? Pelno gavimas naudojant verslo modelį taip pat yra nebanali užduotis. Problemos šaknis yra analitinių ir operacijų darbo krūvių bei duomenų modelių atskyrimas. Kai mokome modelį, dažniausiai tai darome remdamiesi istoriniais duomenimis. Tačiau sukurto modelio vieta yra operacijų duomenų apdorojime. Kam naudingas geriausias nesąžiningų operacijų aptikimo modelis, jei jį vykdome kartą per dieną? Su pinigais sukčiai jau seniai išvykę. Turime apmokyti modelį remiantis istoriniais duomenimis, bet taip pat turime jį taikyti realiuoju laiku naujiems gaunamiems duomenims, kad mūsų verslo procesai galėtų veikti pagal modelio prognozes.

ML įrankių rinkinys yra įrankių rinkinys, kuriuo siekiama būtent tai: suvienodinti modelius ir operacijų aplinką, kad sukurtus modelius būtų galima lengvai naudoti tiesiogiai jūsų verslo procesuose. „Python Gateway“ yra ML įrankių rinkinio dalis ir užtikrina integraciją su „Python“ kalba (panašiai kaip „R Gateway“, būdama ML įrankių rinkinio dalis, užtikrina integraciją su R kalba).

Įrankių rinkinys

Prieš tęsdamas norėčiau aprašyti keletą Python įrankių ir bibliotekų, kurias naudosime vėliau.

Technologija

  • Python yra interpretuojama aukšto lygio bendrosios paskirties programavimo kalba. Pagrindinis kalbos pranašumas yra didelė matematinių, ML ir AI bibliotekų biblioteka. Kaip ir ObjectScript, tai į objektus orientuota kalba, tačiau viskas apibrėžiama dinamiškai, o ne statiškai. Taip pat viskas yra objektas. Vėlesniuose straipsniuose kalbama apie trumpalaikį šios kalbos pažinimą. Jei norite pradėti mokytis, rekomenduoju pradėti nuo dokumentacija.
  • Tolesniems pratimams nustatykite Python 3.6.7 64 bitai.
  • IDE: Aš naudoju „PyCharm“, bet apskritai jie много. Jei naudojate „Atelier“, „Python“ kūrėjams yra „Eclipse“ papildinys. Jei naudojate VS kodą, yra Python plėtinys.
  • Užrašinė: vietoj IDE galite rašyti ir bendrinti savo scenarijus internetinėse užrašų knygelėse. Populiariausias iš jų yra Jupyteris.

Bibliotekos

Čia yra (neišsamus) mašininio mokymosi bibliotekų sąrašas:

  • Nešvankus — pagrindinis paketas tiksliems skaičiavimams.
  • Pandas — didelio našumo duomenų struktūros ir duomenų analizės įrankiai.
  • matplotlib - grafikų kūrimas.
  • Seabornas — duomenų vizualizacija, pagrįsta matplotlib.
  • Sklearn — mašininio mokymosi metodai.
  • XGBoost — mašininio mokymosi algoritmai pagal gradiento didinimo metodiką.
  • Gensim – NLP.
  • Keras - neuroniniai tinklai.
  • tenzorinis srautas — platforma mašininio mokymosi modeliams kurti.
  • „PyTorch“ yra mašininio mokymosi modelių kūrimo platforma, orientuota į Python.
  • Nyoka - PMML iš įvairių modelių.

AI/ML technologijos daro verslą efektyvesnį ir pritaikesnį. Be to, šiandien šias technologijas vis lengviau kurti ir įdiegti. Pradėkite mokytis apie AI/ML technologijas ir kaip jos gali padėti jūsų organizacijai augti.

Montavimas

Yra keletas būdų, kaip įdiegti ir naudoti Python Gateway:

  • OS
    • Windows
    • Linux
    • Mac
  • dokininkas
    • Naudokite vaizdą iš DockerHub
    • Sukurkite savo išvaizdą

Nepriklausomai nuo diegimo metodo, jums reikės šaltinio kodo. Vienintelė vieta, kur galima atsisiųsti kodą leidimų puslapį. Jame yra išbandytų stabilių leidimų, tiesiog pasiimkite naujausią. Šiuo metu 0.8, bet laikui bėgant atsiras naujų. Neklonuokite / neatsisiųskite saugyklos, atsisiųskite naujausią versiją.

OS

Jei diegiate Python Gateway operacinėje sistemoje, pirmiausia (nepriklausomai nuo operacinės sistemos) turite įdiegti Python. Už tai:

  1. Įdiekite Python 3.6.7 64 bitų. Rekomenduojama įdiegti Python į numatytąjį katalogą.
  2. Įdiekite modulį dill: pip install dill.
  3. Atsisiųskite ObjectScript kodą (t. y. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) į bet kurią sritį, kurioje yra produktų. Jei norite, kad esama sritis palaikytų produktus, paleiskite: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Vieta išnaša DLL/SO/DYLIB į aplanką bin jūsų InterSystems IRIS egzempliorius. Bibliotekos failas turi būti pasiekiamas grąžintame kelyje write ##class(isc.py.Callout).GetLib().

Windows

  1. Įsitikinkite, kad aplinkos kintamasis PYTHONHOME nurodo Python 3.6.7.
  2. Įsitikinkite, kad sistemos aplinkos kintamasis yra PATH yra kintamasis PYTHONHOME (arba katalogą, į kurį jis nurodo).

„Linux“ („Debian“ / „Ubuntu“)

  1. Patikrinkite, ar aplinkos kintamasis yra PATH yra /usr/lib и /usr/lib/x86_64-linux-gnu. Naudokite failą /etc/environment aplinkos kintamiesiems nustatyti.
  2. Klaidų atveju undefined symbol: _Py_TrueStruct nustatykite nustatymą PythonLib. taip pat viduje readme yra Trikčių šalinimo skyrius.

Mac

  1. Šiuo metu palaikoma tik Python 3.6.7 python.org. Patikrinkite kintamąjį PATH.

Jei pakeitėte aplinkos kintamuosius, iš naujo paleiskite InterSystems produktą.

dokininkas

Konteinerių naudojimas turi keletą privalumų:

  • Perkeliamumas
  • Veiksmingumas
  • Izoliacija
  • Lengvumas
  • Nekintamumas

Patikrinkite tai straipsnių serija Norėdami gauti daugiau informacijos apie Docker naudojimą su InterSystems produktais.

Šiuo metu visos Python Gateway versijos yra pagrįstos konteineriais 2019.4.

Paruoštas vaizdas

Vykdyti: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestNorėdami atsisiųsti ir paleisti Python Gateway su InterSystems IRIS Community Edition. Tai viskas.

Sukurkite savo išvaizdą

Norėdami sukurti „Docker“ vaizdą, paleiskite saugyklos šaknyje: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Pagal numatytuosius nustatymus vaizdas kuriamas remiantis vaizdu store/intersystems/iris-community:2019.4.0.383.0, tačiau tai galite pakeisti nustatydami kintamąjį IMAGE.
Norėdami sukurti iš InterSystems IRIS, paleiskite: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest ".

Po to galite paleisti docker vaizdą:

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

Jei naudojate vaizdą, pagrįstą InterSystems IRIS Community Edition, galite praleisti raktą.

komentarai

  • Bandymo procesas isc.py.test.Process išsaugo keletą vaizdų laikinajame kataloge. Galbūt norėsite pakeisti šį kelią į prijungtą katalogą. Norėdami tai padaryti, redaguokite nustatymą WorkingDir nurodant prijungtą katalogą.
  • Norėdami pasiekti terminalo paleidimą: docker exec -it irispy sh.
  • Prieiga prie sistemos valdymo portalo prisijungus SuperUser/SYS.
  • Norėdami sustabdyti konteinerį, paleiskite: docker stop irispy && docker rm --force irispy.

Instaliacijos tikrinimas

Įdiegę Python Gateway verta patikrinti, ar jis veikia. Vykdykite šį kodą InterSystems IRIS terminale:

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

Rezultatas turėtų būti: HELLO - Python kintamojo reikšmė x. Jei grąžinimo būsena sc yra klaida arba var tuščia, patikrinkite „Readme“ – trikčių šalinimo skyrius.

API

Python Gateway įdiegtas ir jūs patikrinote, ar jis veikia. Pats laikas pradėti juo naudotis!
Pagrindinė Python sąsaja yra isc.py.Main. Jame siūlomos šios metodų grupės (visi grąžinami %Status):

  • Kodo vykdymas
  • Duomenų perdavimas
  • Dukterinė įmonė

Kodo vykdymas

Šie metodai leidžia vykdyti savavališką Python kodą.

SimpleString

SimpleString – tai pagrindinis būdas. Reikia 4 neprivalomų argumentų:

  • code - vykdomo kodo eilutė. Eilučių tiekimo simbolis: $c(10).
  • returnVariable — grąžinamo kintamojo pavadinimas.
  • serialization - kaip serializuoti returnVariable. 0 — eilutė (numatytasis), 1 — repr.
  • result — ByRef nuoroda į kintamąjį, į kurį įrašoma reikšmė returnVariable.

Aukščiau mes padarėme:

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

Šiame pavyzdyje mes priskiriame Python kintamąjį x vertė Hello ir nori grąžinti Python kintamojo reikšmę x į ObjectScript kintamąjį var.

Vykdyti kodą

„ExecuteCode“ yra saugesnė ir mažiau ribojanti alternatyva SimpleString.
„InterSystems IRIS“ platformos eilutės yra apribotos iki 3 641 144 simbolių, o jei norite vykdyti ilgesnę kodo dalį, turite naudoti gijas.
Priimami du argumentai:

  • code — Vykdomo Python kodo eilutė arba srautas.
  • variable — (neprivaloma) priskiria vykdymo rezultatą code šis Python kintamasis.

Naudojimo pavyzdys:

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

Šiame pavyzdyje mes padauginame 2 iš 3 ir įrašome rezultatą į Python kintamąjį y.

Duomenų perdavimas

Perduokite duomenis į Python ir iš jo.

Python -> InterSystems IRIS

Yra 4 būdai, kaip gauti „InterSystems IRIS“ Python kintamojo vertę, atsižvelgiant į jums reikalingą serializavimą:

  • String paprastiems duomenų tipams ir derinimui.
  • Repr paprastų objektų saugojimui ir derinimui.
  • JSON kad būtų lengva valdyti duomenis InterSystems IRIS pusėje.
  • Pickle išsaugoti objektus.

Šie metodai leidžia gauti kintamuosius iš Python kaip eilutę arba srautus.

  • GetVariable(variable, serialization, .stream, useString) - gauti serialization kintamasis variable в stream. Jei useString yra 1 ir serializavimas dedamas ant eilutės, tada grąžinama eilutė, o ne srautas.
  • GetVariableJson(variable, .stream, useString) - gauti kintamojo JSON serializavimą.
  • GetVariablePickle(variable, .stream, useString, useDill) - Gauti Pickle (arba Dill) kintamojo serializavimą.

Pabandykime gauti mūsų kintamąjį y.

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

InterSystems IRIS -> Python

Įkeliami duomenys iš InterSystems IRIS į Python.

  • ExecuteQuery(query, variable, type, namespace) - sukuria duomenų rinkinį (pandas dataframe arba list) iš sql užklausos ir nustato jį į Python kintamąjį variable. Plastikinis maišelis isc.py turi būti pasiekiamas rajone namespace — ten prašymas bus įvykdytas.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - įkelia pasaulinius duomenis global iš indekso start į end Python kaip tipo kintamasis type: list, arba pandos dataframe. Neprivalomų argumentų aprašymas mask ir labels galima rasti klasės dokumentacijoje ir saugykloje Duomenų perdavimo dokumentai.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - įkelia klasės duomenis class iš id start į end Python kaip tipo kintamasis type: list, arba pandos dataframe. properties — klasės ypatybių, kurias reikia įkelti į duomenų rinkinį, sąrašas (atskirtas kableliais). Palaikomos kaukės * и ?. Numatytas - * (visos savybės). Nuosavybė %%CLASSNAME ignoruojamas.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - įkelia lentelės duomenis table iš id start į end Python.

ExecuteQuery — universalus (bet kokia teisinga SQL užklausa bus perduota Python). Tačiau ExecuteGlobal ir jo įvyniojimai ExecuteClass и ExecuteTable dirbti su daugybe apribojimų. Jie yra daug greitesni (3–5 kartus greitesni nei ODBC tvarkyklė ir 20 kartų greitesni ExecuteQuery). Daugiau informacijos adresu Duomenų perdavimo dokumentai.
Visi šie metodai palaiko duomenų perdavimą iš bet kurios srities. Plastikinis maišelis isc.py turi būti pasiekiama tikslinėje srityje.

Vykdyti užklausą

ExecuteQuery(request, variable, type, namespace) — bet kurios teisingos SQL užklausos rezultatų perkėlimas į Python. Tai lėčiausias duomenų perdavimo būdas. Naudokite, jei ExecuteGlobal o jo įvyniojimų nėra.

Argumentai:

  • query - sql užklausa.
  • variable — Python kintamojo, į kurį įrašomi duomenys, pavadinimas.
  • type - list arba Pandos dataframe.
  • namespace — sritis, kurioje bus vykdomas prašymas.

Vykdyti Global

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - pasaulinio lygio praėjimas Python.

Argumentai:

  • global - pasaulinis pavadinimas be ^
  • variable — Python kintamojo, į kurį įrašomi duomenys, pavadinimas.
  • type - list arba Pandos dataframe.
  • start - pirmasis pasaulinio indekso indeksas. Būtinai %Integer.
  • end — paskutinis pasaulinio indekso indeksas. Būtinai %Integer.
  • mask — pasaulinės vertės kaukė. Kaukė gali būti trumpesnė nei pasaulinių laukų skaičius (tokiu atveju laukai pabaigoje bus praleisti). Kaip suformatuoti kaukę:
    • + perduoti vertę tokią, kokia yra.
    • - praleisti vertę.
    • b — Būlio tipas (0 - False, Visa kita - True).
    • d — Data (nuo $horolog, Windows sistemoje nuo 1970 m., Linux sistemoje nuo 1900 m.).
    • t — Laikas ($ horologas, sekundės po vidurnakčio).
    • m — Laiko žyma (formato eilutė METAI-MONTH-DAY HOUR:MINUTE:SECOND).
  • labels — Stulpelių pavadinimų sąrašas. Pirmasis elementas yra indekso pavadinimas.
  • namespace — sritis, kurioje bus vykdomas prašymas.

ExecuteClass

Apvyniokite ExecuteGlobal. Remdamasis klasės apibrėžimu, parengia skambutį ExecuteGlobal ir jam skambina.

ExecuteClass(class, variable, type, start, end, properties, namespace) - klasės duomenų perdavimas Python.

Argumentai:

  • class - klasės pavadinimas
  • variable — Python kintamojo, į kurį įrašomi duomenys, pavadinimas.
  • type - list arba Pandos dataframe.
  • start - pradžios ID.
  • end - galutinis ID
  • properties — klasės ypatybių, kurias reikia įkelti į duomenų rinkinį, sąrašas (atskirtas kableliais). Palaikomos kaukės * и ?. Numatytas - * (visos savybės). Nuosavybė %%CLASSNAME ignoruojamas.
  • namespace — sritis, kurioje bus vykdomas prašymas.

Visos savybės perduodamos tokios, kokios yra, išskyrus tipo ypatybes %Date, %Time, %Boolean и %TimeStamp - jie konvertuojami į atitinkamas Python klases.

Vykdyti lentelę

Apvyniokite ExecuteClass. Paverčia lentelės pavadinimą į klasės pavadinimą ir iškviečia ExecuteClass. Parašas:

ExecuteTable(table, variable, type, start, end, properties, namespace) - lentelės duomenų perdavimas Python.

Argumentai:

  • table - lentelės pavadinimas.
    Visi kiti argumentai priimami taip, kaip yra ExecuteClass.

Pastabos

  • ExecuteGlobal, ExecuteClass и ExecuteTable dirbti vienodai greitai.
  • ExecuteGlobal 20 kartų greičiau nei ExecuteQuery dideliuose duomenų rinkiniuose (perdavimo laikas > 0.01 sekundės).
  • ExecuteGlobal, ExecuteClass и ExecuteTable dirbti su globaliais su tokia struktūra: ^global(key) = $lb(prop1, prop2, ..., propN) kur key – sveikasis skaičius.
  • ExecuteGlobal, ExecuteClass и ExecuteTable palaikomas verčių diapazonas %Date atitinka diapazoną mktime ir priklauso nuo OS (langai: 1970-01-01, Linux 1900 01-01, Mac). Naudokite %TimeStampperkelti duomenis už šio diapazono ribų arba naudoti pandos duomenų rėmelį, nes tai tik sąrašo apribojimas.
  • ExecuteGlobal, ExecuteClass и ExecuteTable visi argumentai, išskyrus duomenų šaltinį (visuotinį, klasę arba lentelę) ir kintamąjį, yra neprivalomi.

pavyzdžiai

Bandomoji klasė isc.py.test.Person yra metodas, parodantis visas duomenų perdavimo parinktis:

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)

Iškvieskite metodą do ##class(isc.py.test.Person).Test() norėdami pamatyti, kaip veikia visi duomenų perdavimo būdai.

Pagalbiniai metodai

  • GetVariableInfo(variable, serialization, .defined, .type, .length) — gauti informaciją apie kintamąjį: ar jis apibrėžtas, jo klasę ir serializacijos ilgį.
  • GetVariableDefined(variable, .defined) — ar kintamasis yra apibrėžtas.
  • GetVariableType(variable, .type) — gauti kintamojo klasę.
  • GetStatus() - gauti ir pašalinti paskutinę išimtį Python pusėje.
  • GetModuleInfo(module, .imported, .alias) - gauti modulio kintamąjį ir importo būseną.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) — gauti informacijos apie funkciją.

Sąveika

Sužinojote, kaip iš terminalo iškviesti Python Gateway, dabar pradėkime jį naudoti gamyboje. Sąveikos su Python šiuo režimu pagrindas yra isc.py.ens.Operation. Tai leidžia mums:

  • Vykdykite kodą Python
  • Išsaugoti / atkurti Python kontekstą
  • Įkelti ir gauti duomenis iš Python

Iš esmės „Python“ operacija yra apvyniojimas isc.py.Main. Operacija isc.py.ens.Operation suteikia galimybę sąveikauti su Python procesu iš InterSystems IRIS produktų. Palaikomos penkios užklausos:

  • isc.py.msg.ExecutionRequest Vykdyti Python kodą. Grąžina isc.py.msg.ExecutionResponse su vykdymo rezultatu ir prašomų kintamųjų reikšmėmis.
  • isc.py.msg.StreamExecutionRequest Vykdyti Python kodą. Grąžina isc.py.msg.StreamExecutionResponse vykdymo rezultatas ir prašomų kintamųjų reikšmės. Analoginis isc.py.msg.ExecutionRequest, bet priima ir grąžina srautus, o ne eilutes.
  • isc.py.msg.QueryRequest SQL užklausos vykdymo rezultatui perduoti. Grąžina Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest pasauliniam/klasės/lentelės duomenims perduoti. Grąžina Ens.Response.
  • isc.py.msg.SaveRequest išsaugoti Python kontekstą. Grąžina Ens.StringResponse su konteksto ID.
  • isc.py.msg.RestoreRequest atkurti Python kontekstą.

    be to, isc.py.ens.Operation turi du nustatymus:

    • Initializer - pasirenkant klasę, kuri įgyvendina sąsają isc.py.init.Abstract. Jis gali būti naudojamas funkcijoms, moduliams, klasėms ir kt. Jis vykdomas vieną kartą, kai procesas prasideda.
    • PythonLib - (tik Linux), jei įkeldami matote klaidas, nustatykite jo reikšmę į libpython3.6m.so arba net visame Python bibliotekos kelyje.

Verslo procesų kūrimas

Yra dvi klasės, kurios palengvina verslo procesų plėtrą:

  • isc.py.ens.ProcessUtils leidžia išgauti anotacijas iš veiklos su kintamuoju pakeitimu.
  • isc.py.util.BPEmulator leidžia lengvai išbandyti verslo procesus naudojant Python. Jis gali vykdyti verslo procesą (Python dalis) dabartiniame procese.

Kintamasis pakeitimas

Visi verslo procesai paveldėti iš isc.py.ens.ProcessUtils, gali naudoti metodą GetAnnotation(name) norėdami gauti veiklos anotacijos reikšmę pagal jos pavadinimą. Veiklos anotacijoje gali būti kintamųjų, kurie bus apskaičiuoti InterSystems IRIS pusėje prieš perduodant juos į Python. Čia yra kintamųjų pakeitimo sintaksė:

  • ${class:method:arg1:...:argN} - metodo iškvietimas
  • #{expr} - vykdyti kodą ObjectScript kalba.

Pavyzdys yra bandomajame verslo procese isc.py.test.Process, pavyzdžiui, veikloje Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Šiame pavyzdyje:

  • #{process.WorkDirectory} grąžina objekto ypatybę WorkDirectory process, kuris yra klasės pavyzdys isc.py.test.Process tie. dabartinis verslo procesas.
  • ${%PopulateUtils:Integer:1:100} vadina metodu Integer klasė %PopulateUtils, perduodami argumentai 1 и 100, grąžina atsitiktinį sveikąjį skaičių diapazone 1...100.

Išbandyti verslo procesą

Bandomieji produktai ir verslo procesai pagal numatytuosius nustatymus pasiekiami kaip Python Gateway dalis. Norėdami juos naudoti:

  1. OS terminale paleiskite: pip install pandas matplotlib seaborn.
  2. InterSystems IRIS terminale paleiskite: do ##class(isc.py.test.CannibalizationData).Import() užpildyti testo duomenis.
  3. Paleisti produktus isc.py.test.Production.
  4. Siųsti užklausos tipą Ens.Request в isc.py.test.Process.

Pažiūrėkime, kaip visa tai veikia kartu. Atviras isc.py.test.Process BPL redaktoriuje:

Python Gateway „InterSystems IRIS“.

Kodo vykdymas

Svarbiausias iššūkis yra Python kodo vykdymas:

Python Gateway „InterSystems IRIS“.

Naudota užklausa isc.py.msg.ExecutionRequest, čia yra jo savybės:

  • Code - Python kodas.
  • SeparateLines — ar padalyti kodą į eilutes vykdymui. $c(10) (n) naudojamas eilutėms atskirti. Atkreipkite dėmesį, kad nerekomenduojama apdoroti viso pranešimo vienu metu, ši funkcija skirta tik apdoroti def ir panašios kelių eilučių išraiškos. Numatytas 0.
  • Variables — kableliais atskirtas kintamųjų, kurie bus pridėti prie atsakymo, sąrašas.
  • Serialization — Kaip suskirstyti kintamuosius, kuriuos norime grąžinti. Galimybės: Str, Repr, JSON, Pickle и Dill, numatytas Str.

Mūsų atveju mes nustatome tik nuosavybę Code, todėl visos kitos savybės naudoja numatytąsias reikšmes. Nustatome paskambinę process.GetAnnotation("Import pandas"), kuri vykdymo metu grąžina anotaciją atlikus kintamųjų pakeitimą. Juk kodas import pandas as pd bus perduotas Python. GetAnnotation gali būti naudinga norint gauti kelių eilučių Python scenarijus, tačiau šiam kodo gavimo metodui nėra jokių apribojimų. Galite nustatyti nuosavybę Code bet kokiu jums patogiu būdu.

Kintamųjų gavimas

Kitas įdomus iššūkis naudojant isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway „InterSystems IRIS“.

Jis apskaičiuoja koreliacijos matricą Python pusėje ir ištraukia kintamąjį corrmat grįžti į InterSystems IRIS JSON formatu, nustatydami užklausos ypatybes:

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

Rezultatus matome „Visual Trace“:

Python Gateway „InterSystems IRIS“.

Ir jei mums reikia šios vertės BP, galime ją gauti taip: callresponse.Variables.GetAt("corrmat").

Duomenų perdavimas

Toliau pakalbėkime apie duomenų perdavimą iš InterSystems IRIS į Python; visos duomenų perdavimo užklausos įgyvendina sąsają isc.py.msg.DataRequestkuri suteikia šias savybes:

  • Variable — Python kintamasis, į kurį įrašomi duomenys.
  • Type - kintamasis tipas: dataframe (pandos duomenų rėmelis) arba list.
  • Namespace — sritis, iš kurios gauname duomenis. Plastikinis maišelis isc.py turėtų būti prieinami šioje srityje. Tai gali būti sritis be produkto palaikymo.

Remiantis šia sąsaja, įgyvendinamos 4 užklausų klasės:

  • isc.py.msg.QueryRequest - nustatyti turtą Query siųsti SQL užklausą.
  • isc.py.msg.ClassRequest - nustatyti turtą Class perduoti klasės duomenis.
  • isc.py.msg.TableRequest - nustatyti turtą Table lentelės duomenims perduoti.
  • isc.py.msg.GlobalRequest - nustatyti turtą Global pasauliniam duomenų perdavimui.

Bandymo procese pažiūrėkite į veiklą RAWKur isc.py.msg.QueryRequest parodyta veiksme.

Python Gateway „InterSystems IRIS“.

Python konteksto išsaugojimas / atkūrimas

Galiausiai galime išsaugoti Python kontekstą „InterSystems IRIS“, kad tai padarytume, atsiųsime isc.py.msg.SaveRequest su argumentais:

  • Mask — Išsaugomi tik tie kintamieji, kurie atitinka kaukę. Palaikoma * и ?. Pavyzdys: "Data*, Figure?". Numatytas *.
  • MaxLength — Didžiausias saugomo kintamojo ilgis. Jei kintamojo serializavimas yra ilgesnis, jis bus ignoruojamas. Nustatykite 0, kad gautumėte bet kokio ilgio kintamuosius. Numatytas $$$MaxStringLength.
  • Name — Konteksto pavadinimas (neprivaloma).
  • Description — Konteksto aprašymas (neprivaloma).

Grįžta Ens.StringResponse с Id išsaugotas kontekstas. Bandymo procese pažiūrėkite į veiklą Save Context.

Susijęs prašymas isc.py.msg.RestoreRequest įkelia kontekstą iš InterSystems IRIS į Python:

  • ContextId - konteksto identifikatorius.
  • Clear — prieš atkurdami išvalykite kontekstą.

„Jupyter“ užrašų knygelė

„Jupyter“ užrašų knygelė yra atvirojo kodo žiniatinklio programa, leidžianti kurti ir publikuoti bloknotus su kodu, vizualizacijomis ir tekstu. „Python Gateway“ leidžia peržiūrėti ir redaguoti BPL procesus „Jupyter“ nešiojamojo kompiuterio pavidalu. Atminkite, kad šiuo metu naudojamas įprastas Python 3 vykdytojas.

Šis plėtinys daro prielaidą, kad komentaruose yra Python kodas ir naudojami veiklos pavadinimai kaip ankstesni pavadinimai. Dabar galima plėtoti PythonGateway verslo procesus Jupyter Notebook. Štai kas įmanoma:

  • Kurti naujus verslo procesus
  • Ištrinkite verslo procesus
  • Kurti naujas veiklas
  • Keisti veiklą
  • Ištrinti veiklą

Čia demonstracinis vaizdo įrašas. Ir keletas ekrano kopijų:

Proceso naršyklė

Python Gateway „InterSystems IRIS“.

Proceso redaktorius

Python Gateway „InterSystems IRIS“.

Montavimas

  1. Jums reikės „InterSystems IRIS 2019.2+“.
  2. Įdiekite PythonGateway v0.8+ (reikia tik isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Atnaujinkite ObjectScript kodą iš saugyklos.
  4. Vykdyti do ##class(isc.py.util.Jupyter).Install() ir vykdykite nurodymus.

Įrašai.

išvados

MLToolkit yra įrankių rinkinys, kurio tikslas yra sujungti modelius ir operacijų aplinką, kad sukurtus modelius būtų galima lengvai naudoti tiesiogiai jūsų verslo procesuose. „Python Gateway“ yra MLToolkit dalis ir suteikia integraciją su Python kalba, leidžiančia organizuoti bet kokius mašininio mokymosi algoritmus, sukurtus Python (pagrindinė daugelio duomenų mokslininkų aplinka), naudoti daugybę paruoštų bibliotekų, kad greitai sukurtumėte prisitaikančią, robotizuotą analitinę AI / ML sprendimai InterSystems platformoje IRIS.

Nuorodos

MLT įrankių rinkinys

MLToolkit vartotojų grupė yra privati ​​GitHub saugykla, sukurta kaip InterSystems įmonės GitHub organizacijos dalis. Jis skirtas išoriniams vartotojams, kurie diegia, mokosi arba jau naudoja MLToolkit komponentus, įskaitant Python Gateway. Grupė turi nemažai įdiegtų atvejų (su šaltinio kodu ir bandymų duomenimis) rinkodaros, gamybos, medicinos ir daugelyje kitų pramonės šakų. Norėdami prisijungti prie ML Toolkit vartotojų grupės, atsiųskite trumpą el. laišką šiuo adresu: [apsaugotas el. paštu] ir į savo laišką įtraukite šią informaciją:

  • GitHub vartotojo vardas
  • Organizacija (dirbate ar studijuojate)
  • Pareigos (jūsų faktinė padėtis organizacijoje, „studentas“ arba „nepriklausoma“).
  • Šalis

Tiems, kurie perskaitė straipsnį ir domisi InterSystems IRIS, kaip dirbtinio intelekto ir mašininio mokymosi variklių kūrimo ar talpinimo platformos, galimybėmis, kviečiame aptarti galimus scenarijus, kurie domina jūsų įmonę. Mielai išanalizuosime Jūsų įmonės poreikius ir kartu parengsime veiksmų planą; Mūsų AI/ML ekspertų komandos kontaktinis el. pašto adresas – [apsaugotas el. paštu].

Šaltinis: www.habr.com

Добавить комментарий