Python Gateway í InterSystems IRIS

Þessi grein fjallar um Python Gateway, opið samfélagsverkefni fyrir InterSystems IRIS gagnapallinn. Þetta verkefni gerir þér kleift að skipuleggja hvaða vélræna reiknirit sem er búið til í Python (aðalumhverfi margra gagnafræðinga), nota fjölmörg tilbúin bókasöfn til að búa fljótt til aðlögunarhæfar, vélfærafræðilegar greiningargervigreindar / ML lausnir á InterSystems IRIS pallinum. Í þessari grein mun ég sýna hvernig InterSystems IRIS getur skipulagt ferla í Python, miðlað tvíhliða gögnum á skilvirkan hátt og búið til greindar viðskiptaferla.

Áætlun

  1. Inngangur.
  2. Verkfæri.
  3. Uppsetning.
  4. API.
  5. Samvirkni.
  6. Jupyter minnisbók.
  7. Ályktanir.
  8. Tenglar.
  9. MLToolkit.

Inngangur

Python er almennt forritunarmál á háu stigi sem miðar að því að bæta framleiðni þróunaraðila og læsileika kóða. Í þessari greinaröð mun ég fjalla um möguleika þess að nota Python á InterSystems IRIS pallinum, þar sem megináhersla þessarar greinar er notkun Python sem tungumáls til að búa til og keyra vélanámslíkön.

Vélanám (ML) er flokkur gervigreindaraðferða, sem einkennist ekki af beinni lausn á vandamáli, heldur nám í því ferli að leysa mörg svipuð vandamál.

Vélrænni reiknirit og líkön eru að verða algengari. Það eru margar ástæður fyrir þessu, en allt snýst þetta um aðgengi, einfaldleika og að ná hagnýtum árangri. Er þyrping eða jafnvel taugakerfislíkön ný tækni?

Auðvitað ekki, en nú á dögum er óþarfi að skrifa hundruð þúsunda kóðalína til að keyra eitt líkan og kostnaðurinn við að búa til og nota líkan er að verða minni og minni.

Verkfæri eru að þróast - á meðan við höfum ekki fullkomlega GUI-miðlæg AI/ML verkfæri, þá er framfarirnar sem við höfum séð með mörgum öðrum flokkum upplýsingakerfa, svo sem BI (frá því að skrifa kóða til að nota ramma og GUI-miðlægar stillanlegar lausnir) , einnig sést í verkfærum til að búa til gervigreind/ML. Við höfum þegar staðist stigið að skrifa kóða og í dag notum við ramma til að byggja og þjálfa líkön.

Aðrar endurbætur, eins og hæfileikinn til að dreifa forþjálfuðu líkani þar sem endanlegur notandi þarf einfaldlega að klára að þjálfa líkanið á sínum tilteknu gögnum, gera það einnig auðveldara að byrja með vélanám. Þessar framfarir gera nám í vélanámi mun auðveldara bæði fyrir fagfólk og fyrirtæki almennt.

Á hinn bóginn erum við að safna fleiri og fleiri gögnum. Með sameinuðum gagnavettvangi eins og InterSystems IRIS er hægt að útbúa allar þessar upplýsingar strax og nota sem inntak í vélanámslíkön.

Með flutningnum yfir í skýið er það að verða auðveldara en nokkru sinni fyrr að hefja gervigreind/ML verkefni. Við getum aðeins neytt þeirra auðlinda sem við þurfum. Þar að auki, þökk sé samhliða samsetningunni sem skýjapallar bjóða upp á, getum við sparað tíma.

En hvað með niðurstöðurnar? Þetta er þar sem hlutirnir verða flóknari. Það eru mörg verkfæri til að byggja módel, sem ég mun fjalla um næst. Það er ekki auðvelt að byggja upp gott líkan, en hvað næst? Að græða á því að nota viðskiptamódel er líka ekki léttvægt verkefni. Rót vandans er aðskilnaður greiningar- og viðskiptaálags og gagnalíkana. Þegar við þjálfum líkan gerum við það venjulega á sögulegum gögnum. En staðurinn fyrir smíðaða líkanið er í viðskiptagagnavinnslu. Hvaða gagn er besta svikaviðskiptagreiningarlíkanið ef við keyrum það einu sinni á dag? Svindlararnir eru löngu hættir með peningana. Við þurfum að þjálfa líkanið á sögulegum gögnum, en við þurfum líka að beita því í rauntíma á ný komandi gögn svo að viðskiptaferlar okkar geti brugðist við spám sem líkanið gerir.

ML Toolkit er sett af verkfærum sem miðar að því að gera einmitt það: sameina líkön og viðskiptaumhverfi þannig að auðvelt sé að nota innbyggðu líkönin beint í viðskiptaferlum þínum. Python Gateway er hluti af ML Toolkit og veitir samþættingu við Python tungumálið (svipað og R Gateway, sem hluti af ML Toolkit veitir samþættingu við R tungumálið).

Verkfæri

Áður en við höldum áfram langar mig að lýsa nokkrum Python verkfærum og bókasöfnum sem við munum nota síðar.

Tækni

  • Python er túlkað, háþróað, almennt forritunarmál. Helsti kostur tungumálsins er stórt bókasafn þess af stærðfræði-, ML- og gervigreindarsöfnum. Eins og ObjectScript er það hlutbundið tungumál, en allt er skilgreint á kraftmikið frekar en statískt. Einnig er allt hlutur. Síðari greinar gera ráð fyrir að tungumálið þekkist í bráð. Ef þú vilt byrja að læra mæli ég með því að byrja með skjöl.
  • Fyrir síðari æfingar okkar, stilltu Python 3.6.7 64 bita.
  • IDE: Ég nota PyCharm, en almennt þeir много. Ef þú notar Atelier, þá er Eclipse viðbót fyrir Python forritara. Ef þú ert að nota VS kóða, þá er viðbót fyrir Python.
  • Minnisbók: Í stað IDE geturðu skrifað og deilt forskriftum þínum í netbókum. Vinsælast þeirra er Júpyter.

Bókasöfn

Hér er (ekki tæmandi) listi yfir vélanámssöfn:

  • Óbeit — grundvallarpakki fyrir nákvæma útreikninga.
  • Pandas — afkastamikil gagnabygging og gagnagreiningartæki.
  • matplotlib — gerð grafa.
  • Sjófæddur — gagnasýn byggð á matplotlib.
  • Sklearn — vélanámsaðferðir.
  • XGBoost — reiknirit fyrir vélanám innan ramma aðferðafræði til að auka halla.
  • Gensim - NLP.
  • Keras - taugakerfi.
  • Tensorflæði — vettvangur til að búa til vélanámslíkön.
  • PyTorch er vettvangur til að búa til vélanámslíkön, með áherslu á Python.
  • Nýoka - PMML frá ýmsum gerðum.

AI/ML tækni gerir viðskipti skilvirkari og aðlögunarhæfari. Þar að auki, í dag er þessi tækni að verða auðveldari í þróun og innleiðingu. Byrjaðu að læra um gervigreind/ML tækni og hvernig hún getur hjálpað fyrirtækinu þínu að vaxa.

Uppsetning

Það eru nokkrar leiðir til að setja upp og nota Python Gateway:

  • OS
    • Windows
    • Linux
    • Mac
  • Docker
    • Notaðu mynd frá DockerHub
    • Búðu til þitt eigið útlit

Óháð uppsetningaraðferðinni þarftu frumkóðann. Eini staðurinn til að hlaða niður kóðanum er útgáfusíðu. Það inniheldur prófaðar stöðugar útgáfur, taktu bara þá nýjustu. Í augnablikinu er það 0.8, en með tímanum koma nýir. Ekki klóna/hala niður geymslunni, hlaðið niður nýjustu útgáfunni.

OS

Ef þú ert að setja upp Python Gateway á stýrikerfi, þá þarftu fyrst (óháð stýrikerfi) að setja upp Python. Fyrir þetta:

  1. Settu upp Python 3.6.7 64 bita. Mælt er með því að setja Python upp í sjálfgefna skránni.
  2. Settu upp eininguna dill: pip install dill.
  3. Sæktu ObjectScript kóðann (þ.e. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) á hvaða svæði sem er með vörur. Ef þú vilt að núverandi svæði styðji vörur skaltu keyra: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Staður útkall DLL/SO/DYLIB í möppu bin InterSystems IRIS tilvikið þitt. Bókasafnsskráin verður að vera tiltæk í slóðinni sem skilað er write ##class(isc.py.Callout).GetLib().

Windows

  1. Gakktu úr skugga um að umhverfisbreytan PYTHONHOME bendir á Python 3.6.7.
  2. Gakktu úr skugga um að kerfisumhverfisbreytan sé PATH inniheldur breytu PYTHONHOME (eða möppuna sem það bendir á).

Linux (Debian/Ubuntu)

  1. Athugaðu hvort umhverfisbreytan sé PATH inniheldur /usr/lib и /usr/lib/x86_64-linux-gnu. Notaðu skrá /etc/environment til að stilla umhverfisbreytur.
  2. Ef um villur er að ræða undefined symbol: _Py_TrueStruct stilltu stillinguna PythonLib. líka inn upplýsingaskrá það er bilanaleitarhluti.

Mac

  1. Sem stendur er aðeins Python 3.6.7 studd python.org. Athugaðu breytuna PATH.

Ef þú breyttir umhverfisbreytum skaltu endurræsa InterSystems vöruna þína.

Docker

Að nota ílát hefur ýmsa kosti:

  • Færanleiki
  • Skilvirkni
  • Einangrun
  • Léttleiki
  • Óbreytanleiki

Skoðaðu þetta greinaröð fyrir frekari upplýsingar um notkun Docker með InterSystems vörum.

Allar Python Gateway smíðin eru sem stendur byggðar á gáma 2019.4.

Tilbúin mynd

Hlaupa: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latesttil að hlaða niður og keyra Python Gateway með InterSystems IRIS Community Edition. Það er allt og sumt.

Búðu til þitt eigið útlit

Til að búa til docker mynd skaltu keyra í rót geymslunnar: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Sjálfgefið er að myndin er byggð út frá myndinni store/intersystems/iris-community:2019.4.0.383.0, en þú getur breytt þessu með því að stilla breytu IMAGE.
Til að byggja frá InterSystems IRIS skaltu keyra: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest ".

Eftir þetta geturðu keyrt docker myndina:

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

Ef þú ert að nota mynd byggða á InterSystems IRIS Community Edition geturðu sleppt lyklinum.

Comments

  • Prófunarferli isc.py.test.Process vistar fjölda mynda í tímabundna möppu. Þú gætir viljað breyta þessari slóð í uppsettu möppuna. Til að gera þetta, breyttu stillingunni WorkingDir sem tilgreinir uppsetta möppu.
  • Til að fá aðgang að flugstöðinni: docker exec -it irispy sh.
  • Aðgangur að kerfisstjórnunargáttinni með innskráningu SuperUser/SYS.
  • Til að stöðva ílátið skaltu keyra: docker stop irispy && docker rm --force irispy.

Athugaðu uppsetninguna

Þegar þú hefur sett upp Python Gateway er þess virði að athuga hvort það virki. Keyrðu þennan kóða í InterSystems IRIS flugstöðinni:

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

Niðurstaðan ætti að vera: HELLO — Python breytugildi x. Ef skilastaðan sc er villa eða var tómt, athugaðu Readme - Úrræðaleit hluti.

API

Python Gateway er uppsett og þú hefur staðfest að það virki. Það er kominn tími til að byrja að nota það!
Aðalviðmótið við Python er isc.py.Main. Það býður upp á eftirfarandi hópa af aðferðum (allar aftur %Status):

  • Kóðaframkvæmd
  • Gagnaflutningur
  • Aðstoðarmaður

Kóðaframkvæmd

Þessar aðferðir gera þér kleift að framkvæma handahófskenndan Python kóða.

SimpleString

SimpleString - þetta er aðalaðferðin. Það þarf 4 valfrjáls rök:

  • code — lína af kóða til að framkvæma. Línustraumsstafur: $c(10).
  • returnVariable — heiti breytunnar sem á að skila.
  • serialization - hvernig á að raðgreina returnVariable. 0 — strengur (sjálfgefið), 1 — repr.
  • result — ByRef tilvísun í breytuna sem gildið er skrifað í returnVariable.

Hér að ofan gerðum við:

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

Í þessu dæmi úthlutum við Python breytu x значение Hello og viltu skila gildi Python breytu x í ObjectScript breytu var.

ExecuteCode

ExecuteCode er öruggari og minna takmarkandi valkostur SimpleString.
Línur í InterSystems IRIS pallinum eru takmarkaðar við 3 stafi og ef þú vilt keyra lengra kóða þarftu að nota þræði.
Tvö rök eru samþykkt:

  • code — lína eða straumur af Python kóða sem á að keyra.
  • variable — (valfrjálst) úthlutar niðurstöðu framkvæmdar code þessa Python breytu.

Dæmi til að nota:

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

Í þessu dæmi margföldum við 2 með 3 og skrifum niðurstöðuna í Python breytu y.

Gagnaflutningur

Sendu gögn til og frá Python.

Python -> InterSystems IRIS

Það eru 4 leiðir til að fá gildi Python breytu í InterSystems IRIS, allt eftir raðgreiningunni sem þú þarft:

  • String fyrir einfaldar gagnategundir og villuleit.
  • Repr til að geyma einfalda hluti og villuleit.
  • JSON til að auðvelda meðhöndlun gagna á InterSystems IRIS hliðinni.
  • Pickle að vista hluti.

Þessar aðferðir gera þér kleift að sækja breytur úr Python sem streng eða strauma.

  • GetVariable(variable, serialization, .stream, useString) - fáðu serialization breytileg variable в stream. Ef useString er 1 og serialization er sett á streng, þá er strengur skilað en ekki straumi.
  • GetVariableJson(variable, .stream, useString) — fáðu JSON serialization á breytu.
  • GetVariablePickle(variable, .stream, useString, useDill) -fáðu Pickle (eða Dill) serialization á breytu.

Við skulum reyna að fá breytuna okkar y.

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

InterSystems IRIS -> Python

Hleður gögnum frá InterSystems IRIS í Python.

  • ExecuteQuery(query, variable, type, namespace) - býr til gagnasafn (pandas dataframe eða list) úr sql fyrirspurninni og setur hana á Python breytu variable. Plastpoki isc.py þarf að vera til staðar á svæðinu namespace — beiðninni verður framfylgt þar.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - hleður alþjóðlegum gögnum global úr áskrift start í end í Python sem tegundarbreytu type: list, eða pöndur dataframe. Lýsing á valkvæðum rökum mask og labels fáanlegt í bekkjarskjölum og geymslu Gagnaflutningsskjöl.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - hleður bekkjargögnum class frá kt start í end í Python sem tegundarbreytu type: list, eða pöndur dataframe. properties — listi (aðskilinn með kommu) yfir eiginleika flokka sem þarf að hlaða inn í gagnasafnið. Grímur studdar * и ?. Sjálfgefið - * (allar eignir). Eign %%CLASSNAME hunsuð.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - hleður töflugögnum table frá kt start í end í Python.

ExecuteQuery - alhliða (allar réttar SQL fyrirspurnir verða sendar til Python). Hins vegar, ExecuteGlobal og umbúðir þess ExecuteClass и ExecuteTable vinna með ýmsum takmörkunum. Þeir eru miklu hraðari (3-5 sinnum hraðar en ODBC driverinn og 20 sinnum hraðari ExecuteQuery). Nánari upplýsingar á Gagnaflutningsskjöl.
Allar þessar aðferðir styðja gagnaflutning frá hvaða svæði sem er. Plastpoki isc.py verður að vera til staðar á marksvæðinu.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - að flytja niðurstöður allrar réttrar SQL fyrirspurnar yfir í Python. Þetta er hægasta gagnaflutningsaðferðin. Notaðu það ef ExecuteGlobal og umbúðir þess eru ekki til.

Rök:

  • query - sql fyrirspurn.
  • variable — heiti Python breytunnar sem gögnin eru skrifuð í.
  • type - list eða Pöndur dataframe.
  • namespace — svæði þar sem beiðninni verður framfylgt.

Framkvæma Global

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - að fara framhjá hnattrænu í Python.

Rök:

  • global - alþjóðlegt nafn án ^
  • variable — heiti Python breytunnar sem gögnin eru skrifuð í.
  • type - list eða Pöndur dataframe.
  • start — fyrsta áskrift alþjóðlegu. Nauðsynlega %Integer.
  • end — síðasta áskrift alheimsins. Nauðsynlega %Integer.
  • mask — alheimsgildisgríma. Gríman getur verið styttri en fjöldi reita í hnattrænu (í því tilviki verður reitunum í lokin sleppt). Hvernig á að forsníða grímu:
    • + gefa gildið eins og það er.
    • - sleppa gildi.
    • b - Boolean gerð (0 - False, allt hitt - True).
    • d — Dagsetning (frá $horolog, á Windows frá 1970, á Linux frá 1900).
    • t — Tími ($horolog, sekúndum eftir miðnætti).
    • m — Tímastimpill (sniðstrengur ÁR-MÁNAÐUR-DAGUR TÍMA: MÍNÚTA: ÖNNUR).
  • labels — %Listi yfir dálkanöfn. Fyrsti þátturinn er nafn áskriftarinnar.
  • namespace — svæði þar sem beiðninni verður framfylgt.

ExecuteClass

Vefjið yfir ExecuteGlobal. Byggt á flokksskilgreiningunni, undirbýr símtal ExecuteGlobal og kallar á hann.

ExecuteClass(class, variable, type, start, end, properties, namespace) - senda bekkjargögn í Python.

Rök:

  • class - flokksheiti
  • variable — heiti Python breytunnar sem gögnin eru skrifuð í.
  • type - list eða Pöndur dataframe.
  • start — upphafsskilríki.
  • end — endanleg auðkenni
  • properties — listi (aðskilinn með kommu) yfir eiginleika flokka sem þarf að hlaða inn í gagnasafnið. Grímur studdar * и ?. Sjálfgefið - * (allar eignir). Eign %%CLASSNAME hunsuð.
  • namespace — svæði þar sem beiðninni verður framfylgt.

Allar eignir eru samþykktar eins og þær eru nema tegundareiginleikar %Date, %Time, %Boolean и %TimeStamp - þeim er breytt í samsvarandi Python flokka.

ExecuteTable

Vefjið yfir ExecuteClass. Þýðir nafn töflunnar yfir í bekkjarheiti og kallar ExecuteClass. Undirskrift:

ExecuteTable(table, variable, type, start, end, properties, namespace) - að senda töflugögn til Python.

Rök:

  • table — nafn töflu.
    Öll önnur rök eru samþykkt eins og þau eru ExecuteClass.

Skýringar

  • ExecuteGlobal, ExecuteClass и ExecuteTable vinna jafn hratt.
  • ExecuteGlobal 20 sinnum hraðar en ExecuteQuery á stórum gagnasöfnum (flutningstími >0.01 sekúnda).
  • ExecuteGlobal, ExecuteClass и ExecuteTable vinna á heimsvísu með þessari uppbyggingu: ^global(key) = $lb(prop1, prop2, ..., propN) þar sem key — heil tala.
  • Fyrir ExecuteGlobal, ExecuteClass и ExecuteTable stutt gildissvið %Date samsvarar svið mktime og fer eftir stýrikerfinu (Windows: 1970-01-01, Linux 1900-01-01, lagsi). Notaðu %TimeStampað flytja gögn utan þessa sviðs eða nota pandas gagnaramma vegna þess þetta er takmörkun á lista eingöngu.
  • Fyrir ExecuteGlobal, ExecuteClass и ExecuteTable öll rök nema gagnagjafinn (global, class eða table) og breytu eru valfrjáls.

dæmi

Prófaflokkur isc.py.test.Person inniheldur aðferð sem sýnir alla gagnaflutningsmöguleika:

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)

Kallaðu aðferðina do ##class(isc.py.test.Person).Test() til að sjá hvernig allar gagnaflutningsaðferðir virka.

Hjálparaðferðir

  • GetVariableInfo(variable, serialization, .defined, .type, .length) — fáðu upplýsingar um breytuna: hvort hún sé skilgreind, flokki hennar og lengd raðgerðar.
  • GetVariableDefined(variable, .defined) — hvort breytan sé skilgreind.
  • GetVariableType(variable, .type) — fáðu flokk breytunnar.
  • GetStatus() - fáðu og fjarlægðu síðustu undantekninguna á Python hliðinni.
  • GetModuleInfo(module, .imported, .alias) — fáðu einingabreytu og innflutningsstöðu.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) — fáðu upplýsingar um aðgerðina.

Samvirkni

Þú hefur lært hvernig á að hringja í Python Gateway frá flugstöðinni, nú skulum við byrja að nota það í framleiðslu. Grunnurinn fyrir samskiptum við Python í þessum ham er isc.py.ens.Operation. Það gerir okkur kleift:

  • Keyra kóða í Python
  • Vista/endurheimta Python samhengi
  • Hlaða og taka á móti gögnum frá Python

Í grundvallaratriðum, Python aðgerð er umbúðir yfir isc.py.Main. Aðgerð isc.py.ens.Operation veitir möguleika á að hafa samskipti við Python ferlið frá InterSystems IRIS vörum. Fimm fyrirspurnir eru studdar:

  • isc.py.msg.ExecutionRequest til að keyra Python kóða. Skilar isc.py.msg.ExecutionResponse með framkvæmdarniðurstöðunni og gildum umbeðinna breyta.
  • isc.py.msg.StreamExecutionRequest til að keyra Python kóða. Skilar isc.py.msg.StreamExecutionResponse niðurstöður framkvæmdar og gildi umbeðinna breyta. Hliðstæður isc.py.msg.ExecutionRequest, en tekur við og skilar straumum í stað strengja.
  • isc.py.msg.QueryRequest til að senda niðurstöðu af því að keyra SQL fyrirspurn. Skilar Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest fyrir að senda alþjóðlegt/flokka/töflugögn. Skilar Ens.Response.
  • isc.py.msg.SaveRequest til að vista Python samhengi. Skilar Ens.StringResponse með samhengisauðkenni.
  • isc.py.msg.RestoreRequest til að endurheimta Python samhengið.

    Að auki, isc.py.ens.Operation hefur tvær stillingar:

    • Initializer - að velja flokk sem útfærir viðmótið isc.py.init.Abstract. Það er hægt að nota til að hlaða aðgerðir, einingar, flokka osfrv. Það er keyrt einu sinni þegar ferlið hefst.
    • PythonLib - (aðeins Linux) ef þú sérð villur við hleðslu skaltu stilla gildi þess á libpython3.6m.so eða jafnvel í fullri leið að Python bókasafninu.

Gerð viðskiptaferla

Það eru tveir flokkar í boði sem auðvelda þróun viðskiptaferla:

  • isc.py.ens.ProcessUtils gerir þér kleift að draga út athugasemdir úr athöfnum með breytilegum staðgöngum.
  • isc.py.util.BPEmulator gerir það auðvelt að prófa viðskiptaferla með Python. Það getur framkvæmt viðskiptaferli (Python hlutar) í núverandi ferli.

Breytileg skipti

Allir viðskiptaferli erft frá isc.py.ens.ProcessUtils, getur notað aðferðina GetAnnotation(name) til að fá virkniskýringargildið undir nafni. Atvinnuskýringin getur innihaldið breytur sem verða reiknaðar á InterSystems IRIS hliðinni áður en þær eru sendar til Python. Hér er setningafræði fyrir breytuskipti:

  • ${class:method:arg1:...:argN} - aðferðakall
  • #{expr} - keyra kóða á ObjectScript tungumáli.

Dæmi er fáanlegt í prófunarviðskiptaferlinu isc.py.test.Processtd í starfsemi Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Í þessu dæmi:

  • #{process.WorkDirectory} skilar WorkDirectory eiginleika hlutarins process, sem er tilvik af bekknum isc.py.test.Process þeim. núverandi viðskiptaferli.
  • ${%PopulateUtils:Integer:1:100} kallar aðferð Integer bekknum %PopulateUtils, flutningsrök 1 и 100, skilar tilviljunarkenndri heiltölu á bilinu 1...100.

Prófaðu viðskiptaferli

Prófunarvörur og prófunarviðskiptaferli eru sjálfgefið fáanleg sem hluti af Python Gateway. Til að nota þá:

  1. Í OS flugstöðinni skaltu keyra: pip install pandas matplotlib seaborn.
  2. Í InterSystems IRIS flugstöðinni skaltu keyra: do ##class(isc.py.test.CannibalizationData).Import() til að fylla út prófunargögn.
  3. Opnaðu vörur isc.py.test.Production.
  4. Senda beiðni gerð Ens.Request в isc.py.test.Process.

Við skulum sjá hvernig þetta virkar allt saman. Opið isc.py.test.Process í BPL ritstjóranum:

Python Gateway í InterSystems IRIS

Kóðaframkvæmd

Mikilvægasta áskorunin er að framkvæma Python kóða:

Python Gateway í InterSystems IRIS

Fyrirspurn notuð isc.py.msg.ExecutionRequest, hér eru eiginleikar þess:

  • Code - Python kóða.
  • SeparateLines — hvort skipta eigi kóðanum í línur til framkvæmdar. $c(10) (n) er notað til að aðskilja strengi. Athugið að EKKI er mælt með því að vinna öll skilaboðin í einu, þessari aðgerð er aðeins ætlað að vinna úr def og svipuð marglínu tjáning. Sjálfgefið 0.
  • Variables — kommuaðskilinn listi yfir breytur sem verður bætt við svarið.
  • Serialization — Hvernig á að raðgreina breyturnar sem við viljum skila. Valkostir: Str, Repr, JSON, Pickle и Dill, sjálfgefið Str.

Í okkar tilviki stillum við aðeins eignina Code, þannig að allar aðrar eignir nota sjálfgefin gildi. Við stillum það með því að hringja process.GetAnnotation("Import pandas"), sem á keyrslutíma skilar athugasemd eftir að breytuskipti hafa verið framkvæmd. Eftir allt saman, kóðinn import pandas as pd verður sent til Python. GetAnnotation getur verið gagnlegt til að fá fjöllína Python forskriftir, en það eru engar takmarkanir á þessari aðferð til að fá kóða. Þú getur stillt eignina Code á einhvern hátt sem hentar þér.

Að fá breytur

Önnur áhugaverð áskorun að nota isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway í InterSystems IRIS

Það reiknar út fylgnifylki á Python hliðinni og dregur út breytuna corrmat aftur í InterSystems IRIS á JSON sniði með því að stilla beiðniareiginleikana:

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

Við getum séð niðurstöðurnar í Visual Trace:

Python Gateway í InterSystems IRIS

Og ef við þurfum þetta gildi í BP getum við fengið það svona: callresponse.Variables.GetAt("corrmat").

Gagnaflutningur

Næst skulum við tala um að flytja gögn frá InterSystems IRIS til Python; allar beiðnir um gagnaflutning útfæra viðmótið isc.py.msg.DataRequestsem veitir eftirfarandi eiginleika:

  • Variable — Python breyta sem gögn eru skráð í.
  • Type — gerð breytu: dataframe (pandas dataframe) eða list.
  • Namespace — svæðið sem við fáum gögn frá. Plastpoki isc.py ætti að liggja fyrir á þessu sviði. Þetta gæti verið svæði án vörustuðnings.

Byggt á þessu viðmóti eru 4 flokkar beiðna útfærðir:

  • isc.py.msg.QueryRequest - stilltu eignina Query til að senda SQL fyrirspurn.
  • isc.py.msg.ClassRequest - stilltu eignina Class til að afhenda bekkjargögn.
  • isc.py.msg.TableRequest - setja eign Table til að flytja töflugögn.
  • isc.py.msg.GlobalRequest - setja eign Global fyrir alþjóðlegan gagnaflutning.

Í prófunarferlinu skaltu skoða virknina RAWhvar isc.py.msg.QueryRequest sýnt í verki.

Python Gateway í InterSystems IRIS

Vistar/endurheimtir Python samhengi

Að lokum getum við vistað Python samhengið í InterSystems IRIS, til að gera þetta munum við senda isc.py.msg.SaveRequest með rökum:

  • Mask — Aðeins breytur sem passa við grímuna eru vistaðar. Stuðningur * и ?. Dæmi: "Data*, Figure?"... Sjálfgefið *.
  • MaxLength — Hámarkslengd vistuðu breytunnar. Ef raðgreining breytu er lengri verður hún hunsuð. Stilltu á 0 til að fá breytur af hvaða lengd sem er. Sjálfgefið $$$MaxStringLength.
  • Name — Samhengisheiti (valfrjálst).
  • Description — Lýsing á samhenginu (valfrjálst).

Skilar Ens.StringResponse с Id vistað samhengi. Í prófunarferlinu skaltu skoða virknina Save Context.

Tengd beiðni isc.py.msg.RestoreRequest hleður samhengi frá InterSystems IRIS í Python:

  • ContextId — samhengisauðkenni.
  • Clear — hreinsaðu samhengið áður en þú endurheimtir.

Jupyter minnisbók

Jupyter minnisbók er opinn uppspretta vefforrit sem gerir þér kleift að búa til og gefa út fartölvur sem innihalda kóða, sjónmyndir og texta. Python Gateway gerir þér kleift að skoða og breyta BPL ferlum í formi Jupyter Notebook. Vinsamlegast athugaðu að venjulegur Python 3 executor er notaður.

Þessi viðbót gerir ráð fyrir að athugasemdir innihaldi Python kóða og notar virkninöfn sem fyrri titla. Það er nú hægt að þróa PythonGateway viðskiptaferla í Jupyter Notebook. Hér er það sem er mögulegt:

  • Búðu til nýja viðskiptaferla
  • Eyða viðskiptaferlum
  • Búðu til nýjar aðgerðir
  • Breyta starfsemi
  • Eyða starfsemi

Hér kynningarmyndband. Og nokkur skjáskot:

Process Explorer

Python Gateway í InterSystems IRIS

Ritstjóri ferli

Python Gateway í InterSystems IRIS

Uppsetning

  1. Þú þarft InterSystems IRIS 2019.2+.
  2. Settu upp PythonGateway v0.8+ (aðeins krafist isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Uppfærðu ObjectScript kóðann úr geymslunni.
  4. Framkvæma do ##class(isc.py.util.Jupyter).Install() og fylgdu leiðbeiningunum.

Skjöl.

Niðurstöður

MLToolkit er sett af verkfærum sem hafa það að markmiði að sameina líkön og viðskiptaumhverfi þannig að auðvelt sé að nota innbyggðu líkönin beint í viðskiptaferlum þínum. Python Gateway er hluti af MLToolkit og veitir samþættingu við Python tungumálið, sem gerir þér kleift að skipuleggja hvaða vélræna reiknirit sem er búið til í Python (aðalumhverfi margra gagnafræðinga), nota fjölmörg tilbúin bókasöfn til að búa til fljótt aðlagandi, vélfærafræðilega greiningargervigreind / ML lausnir á InterSystems pallinum IRIS.

tilvísanir

MLToolkit

MLToolkit notendahópurinn er einka GitHub geymsla búin til sem hluti af InterSystems fyrirtækja GitHub stofnuninni. Það er ætlað fyrir utanaðkomandi notendur sem setja upp, læra eða eru nú þegar að nota MLToolkit hluti, þar á meðal Python Gateway. Hópurinn hefur fjölda útfærðra mála (með frumkóða og prófunargögnum) á sviði markaðssetningar, framleiðslu, lyfja og margra annarra atvinnugreina. Til að ganga í ML Toolkit notendahópinn, vinsamlegast sendu stuttan tölvupóst á eftirfarandi heimilisfang: [netvarið] og láttu eftirfarandi upplýsingar fylgja með í bréfi þínu:

  • GitHub notendanafn
  • Skipulag (þú vinnur eða lærir)
  • Staða (raunveruleg staða þín í fyrirtækinu þínu, annað hvort „Nemandi“ eða „Óháður“).
  • Land

Fyrir þá sem hafa lesið greinina og hafa áhuga á getu InterSystems IRIS sem vettvang til að þróa eða hýsa gervigreind og vélanámsvélar, bjóðum við þér að ræða mögulegar aðstæður sem hafa áhuga fyrir fyrirtæki þitt. Við munum vera fús til að greina þarfir fyrirtækis þíns og ákveða sameiginlega aðgerðaáætlun; Samskiptanetfang AI/ML sérfræðingateymis okkar - [netvarið].

Heimild: www.habr.com

Bæta við athugasemd