Porth Python yn InterSystems IRIS

Mae'r erthygl hon yn ymwneud â Python Gateway, prosiect cymunedol ffynhonnell agored ar gyfer platfform data InterSystems IRIS. Mae'r prosiect hwn yn caniatáu ichi drefnu unrhyw algorithmau dysgu peirianyddol a grëwyd yn Python (y prif amgylchedd ar gyfer llawer o Wyddonwyr Data), defnyddio nifer o lyfrgelloedd parod i greu datrysiadau AI / ML dadansoddol robotig addasol yn gyflym ar lwyfan InterSystems IRIS. Yn yr erthygl hon, byddaf yn dangos i chi sut y gall InterSystems IRIS drefnu prosesau Python, perfformio cyfathrebu dwy ffordd effeithlon, a chreu prosesau busnes deallus.

Cynllun

  1. Cyflwyniad
  2. Offer.
  3. Gosod.
  4. API.
  5. Rhyngweithredu.
  6. Llyfr nodiadau Jupyter.
  7. Casgliadau.
  8. Cysylltiadau.
  9. Pecyn Cymorth M.L.

Cyflwyniad

Mae Python yn iaith raglennu lefel uchel, pwrpas cyffredinol sy'n canolbwyntio ar wella cynhyrchiant datblygwyr a darllenadwyedd cod. Yn y gyfres hon o erthyglau, byddaf yn siarad am y posibiliadau o ddefnyddio'r iaith Python ar y llwyfan InterSystems IRIS, tra bod prif ffocws yr erthygl hon yw defnyddio Python fel iaith ar gyfer creu a chymhwyso modelau dysgu peiriant.

Mae dysgu peiriant (ML) yn ddosbarth o ddulliau deallusrwydd artiffisial, nad yw ei nodwedd nodweddiadol yn ddatrysiad uniongyrchol i broblem, ond dysgu yn y broses o ddatrys llawer o broblemau tebyg.

Mae algorithmau a modelau dysgu peirianyddol yn dod yn fwyfwy cyffredin. Mae yna lawer o resymau am hyn, ond mae'r cyfan yn dibynnu ar hygyrchedd, symlrwydd, a chyflawni canlyniadau ymarferol. Ai technoleg newydd yw clystyru neu hyd yn oed modelu rhwydwaith niwral?

Wrth gwrs na, ond y dyddiau hyn nid oes angen ysgrifennu cannoedd o filoedd o linellau o god i redeg un model, ac mae costau creu a defnyddio modelau yn mynd yn llai ac yn llai.

Mae offer yn esblygu - er nad oes gennym offer AI/ML sy'n canolbwyntio'n llwyr ar GUI, mae'r cynnydd rydym wedi'i weld gyda llawer o ddosbarthiadau eraill o systemau gwybodaeth fel BI (o ysgrifennu cod i ddefnyddio fframweithiau a datrysiadau ffurfweddadwy sy'n canolbwyntio ar GUI), hefyd i'w weld mewn offer creu AI/ML. Rydym eisoes wedi pasio'r cam o ysgrifennu cod a heddiw rydym yn defnyddio fframweithiau ar gyfer adeiladu a hyfforddi modelau.

Mae gwelliannau eraill, megis y gallu i luosogi model wedi'i hyfforddi ymlaen llaw lle mae'n rhaid i'r defnyddiwr terfynol orffen hyfforddi'r model ar eu data penodol, hefyd yn ei gwneud hi'n haws dechrau cymhwyso dysgu peiriant. Mae'r datblygiadau hyn yn ei gwneud hi'n llawer haws dysgu peiriant dysgu, i weithwyr proffesiynol ac i gwmnïau yn gyffredinol.

Ar y llaw arall, rydym yn casglu mwy a mwy o ddata. Gyda llwyfan data unedig fel InterSystems IRIS, gellir paratoi'r holl wybodaeth hon ar unwaith a'i defnyddio fel mewnbwn ar gyfer modelau dysgu peiriant.

Gyda'r newid i'r cwmwl, mae lansio prosiectau AI/ML yn haws nag erioed. Dim ond yr adnoddau sydd eu hangen arnom y gallwn eu defnyddio. Ar ben hynny, diolch i'r paraleleiddio a gynigir gan lwyfannau cwmwl, gallwn arbed amser sy'n cael ei wastraffu.

Ond beth am y canlyniadau? Dyma lle mae pethau'n mynd yn fwy cymhleth. Mae yna lawer o offer ar gyfer adeiladu modelau, y byddaf yn eu trafod nesaf. Nid yw adeiladu model da yn hawdd, ond beth nesaf? Mae elwa ar y defnydd o'r model gan fusnes hefyd yn dasg nad yw'n ddibwys. Gwraidd y broblem yw gwahanu llwythi gwaith dadansoddol a thrafodol a modelau data. Pan fyddwn yn hyfforddi model, rydym fel arfer yn ei wneud ar ddata hanesyddol. Ond y lle ar gyfer y model adeiledig yw prosesu data trafodion. Pa fudd yw'r model canfod trafodion twyllodrus gorau os ydym yn ei redeg unwaith y dydd? Mae'r sgamwyr wedi hen adael gyda'r arian. Mae angen inni hyfforddi'r model ar ddata hanesyddol, ond mae angen inni hefyd ei gymhwyso mewn amser real ar ddata newydd sy'n dod i mewn fel y gall ein prosesau busnes weithredu yn unol â'r rhagfynegiadau a wneir gan y model.

Mae Pecyn Cymorth ML yn becyn cymorth sy'n gwneud yn union hynny: dod â modelau at ei gilydd ac amgylchedd trafodion fel y gellir defnyddio'r modelau rydych chi'n eu hadeiladu yn uniongyrchol yn eich prosesau busnes. Mae Python Gateway yn rhan o Becyn Cymorth ML ac mae'n integreiddio â'r iaith Python (yn debyg i R Gateway, mae bod yn rhan o Becyn Cymorth ML yn darparu integreiddio â'r iaith R).

Pecyn cymorth

Cyn i ni barhau, hoffwn ddisgrifio ychydig o offer a llyfrgelloedd Python y byddwn yn eu defnyddio yn nes ymlaen.

Technoleg

  • Mae Python yn iaith raglennu lefel uchel, pwrpas cyffredinol, wedi'i dehongli. Prif fantais yr iaith yw llyfrgell fawr o lyfrgelloedd mathemategol, ML ac AI. Fel ObjectScript, mae'n iaith gwrthrych-ganolog, ond mae popeth wedi'i ddiffinio'n ddeinamig, nid yn statig. Hefyd mae popeth yn wrthrych. Mae erthyglau diweddarach yn rhagdybio eu bod yn gyfarwydd iawn â'r iaith. Os ydych chi am ddechrau dysgu, rwy'n argymell dechrau dogfennaeth.
  • Ar gyfer ein hymarferion nesaf, set Python 3.6.7 64bit.
  • IDE: Rwy'n defnyddio PyCharm, ond yn gyffredinol много. Os ydych chi'n defnyddio Atelier, mae yna ategyn Eclipse ar gyfer datblygwyr Python. Os ydych chi'n defnyddio VS Code, yna mae estyniad ar gyfer Python.
  • Llyfr nodiadau: Yn lle DRhA, gallwch ysgrifennu a rhannu eich sgriptiau mewn llyfrau nodiadau ar-lein. Y mwyaf poblogaidd ohonynt yw jupyter.

Llyfrgelloedd

Dyma restr (rhannol) o lyfrgelloedd dysgu peirianyddol:

  • nympy — pecyn sylfaenol ar gyfer cyfrifiadau manwl gywir.
  • pandas — strwythurau data perfformiad uchel ac offer dadansoddi data.
  • matplotlib - Creu siartiau.
  • Mor-eni - delweddu data yn seiliedig ar matplotlib.
  • Sklearn - dulliau dysgu peirianyddol.
  • XGBoost — algorithmau dysgu peirianyddol o fewn y fethodoleg Hybu Graddiant.
  • Gensim - NLP.
  • Keras - rhwydweithiau niwral.
  • Llif tensor yn llwyfan ar gyfer creu modelau dysgu peirianyddol.
  • PyTorch yn llwyfan ar gyfer creu modelau dysgu peirianyddol sy'n canolbwyntio ar Python.
  • Nyoka - PMML o wahanol fodelau.

Mae technolegau AI/ML yn gwneud busnes yn fwy effeithlon ac addasadwy. Ar ben hynny, heddiw mae'r technolegau hyn yn dod yn haws i'w datblygu a'u gweithredu. Dechreuwch ddysgu am dechnolegau AI/ML a sut y gallant helpu eich sefydliad i dyfu.

Gosod

Mae sawl ffordd o osod a defnyddio Python Gateway:

  • OS
    • ffenestri
    • Linux
    • Mac
  • Docker
    • Defnyddiwch y ddelwedd o DockerHub
    • Creu eich delwedd eich hun

Waeth beth fo'r dull gosod, bydd angen y cod ffynhonnell arnoch. Yr unig le i lawrlwytho'r cod yw tudalen datganiadau. Mae'n cynnwys datganiadau sefydlog profedig, dim ond cydio yn yr un diweddaraf. Ar hyn o bryd mae'n 0.8, ond dros amser bydd rhai newydd. Peidiwch â chlonio / lawrlwytho'r ystorfa, lawrlwythwch y datganiad diweddaraf.

OS

Os ydych chi'n gosod Python Gateway ar system weithredu, yna yn gyntaf (waeth beth fo'r system weithredu) bydd angen i chi osod Python. Ar gyfer hyn:

  1. Gosod Python 3.6.7 64 bit. Argymhellir gosod Python yn y cyfeiriadur rhagosodedig.
  2. Gosodwch y modiwl dill: pip install dill.
  3. Lawrlwythwch y cod ObjectScript (h.y. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) i unrhyw ardal gyda chynhyrchion. Rhag ofn eich bod eisiau ardal bresennol i gefnogi cynyrchiadau, rhedeg: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Lle galwad allan DLL/SO/DYLIB i ffolder bin eich enghraifft InterSystems IRIS. Rhaid i ffeil y llyfrgell fod ar gael yn y llwybr a ddychwelwyd gan write ##class(isc.py.Callout).GetLib().

ffenestri

  1. Sicrhewch fod y newidyn amgylchedd PYTHONHOME pwyntiau i Python 3.6.7.
  2. Sicrhewch fod y newidyn amgylchedd system PATH yn cynnwys newidyn PYTHONHOME (neu'r cyfeiriadur y mae'n cyfeirio ato).

Linux (Debian/Ubuntu)

  1. Gwiriwch a yw'r newidyn amgylchedd PATH yn cynnwys /usr/lib и /usr/lib/x86_64-linux-gnu. Defnyddiwch Ffeil /etc/environment i osod newidynnau amgylchedd.
  2. Mewn achos o wallau undefined symbol: _Py_TrueStruct gosod y gosodiad PythonLib... hefyd yn readme mae adran Datrys Problemau.

Mac

  1. Ar hyn o bryd dim ond python 3.6.7 a gefnogir o python.org. Gwiriwch Newidyn PATH.

Os ydych wedi newid newidynnau amgylchedd, ailgychwynnwch eich cynnyrch InterSystems.

Docker

Mae gan ddefnyddio cynwysyddion nifer o fanteision:

  • Cludadwyedd
  • Effeithiolrwydd
  • Inswleiddio
  • ysgafnder
  • Digyfnewid

Edrychwch ar hwn cyfres o erthyglau am ragor o wybodaeth am ddefnyddio Docker gyda chynhyrchion InterSystems.

Mae pob adeilad Python Gateway yn seiliedig ar gynhwysydd ar hyn o bryd. 2019.4.

Delwedd orffenedig

Rhedeg: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latesti lawrlwytho a rhedeg Python Gateway gyda InterSystems IRIS Community Edition. Dyna i gyd.

Creu eich delwedd eich hun

I adeiladu delwedd docwr, rhedwch yng ngwraidd yr ystorfa: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Yn ddiofyn, mae'r ddelwedd wedi'i hadeiladu yn seiliedig ar y ddelwedd store/intersystems/iris-community:2019.4.0.383.0, fodd bynnag gallwch chi newid hyn trwy osod y newidyn IMAGE.
I adeiladu o InterSystems rhediad IRIS: `adeilad dociwr --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest'.

Ar ôl hynny, gallwch chi redeg delwedd y docwr:

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

Os ydych chi'n defnyddio delwedd yn seiliedig ar InterSystems IRIS Community Edition, nid oes angen i chi nodi allwedd.

Sylwadau

  • Proses Prawf isc.py.test.Process yn arbed nifer o ddelweddau i gyfeiriadur dros dro. Efallai y byddwch am newid y llwybr hwn i gyfeiriadur wedi'i osod. I wneud hyn, golygwch y gosodiad WorkingDir gan nodi'r cyfeiriadur wedi'i osod.
  • I gael mynediad i'r derfynell, rhedwch: docker exec -it irispy sh.
  • Mynediad i'r Porth Rheoli Systemau trwy fewngofnodi SuperUser/SYS.
  • I atal cynhwysydd, rhedeg: docker stop irispy && docker rm --force irispy.

Gwirio'r gosodiad

Unwaith y byddwch wedi gosod Python Gateway, mae'n werth gwirio ei fod yn gweithio. Rhedeg y cod hwn yn nherfynell InterSystems IRIS:

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

Dylai'r canlyniad fod HELLO - gwerth y newidyn Python x. Os yw'r statws dychwelyd sc yn gamgymeriad neu var gwag, siec Readme - adran datrys problemau.

API

Mae Python Gateway wedi'i osod ac rydych chi wedi gwirio ei fod yn gweithio. Amser i ddechrau ei ddefnyddio!
Y prif ryngwyneb i Python yw isc.py.Main. Mae'n cynnig y grwpiau canlynol o ddulliau (pob un yn dychwelyd %Status):

  • Gweithredu cod
  • Trosglwyddo data
  • Atodol

Gweithredu cod

Mae'r dulliau hyn yn caniatáu ichi weithredu cod Python mympwyol.

Llinyn Syml

SimpleString yw'r prif ddull. Mae angen 4 dadl ddewisol:

  • code yw llinell y cod i'w weithredu. Cymeriad porthiant llinell: $c(10).
  • returnVariable yw enw'r newidyn i'w ddychwelyd.
  • serialization - sut i gyfresoli returnVariable. 0 - llinyn (diofyn), 1 - repr.
  • result - Cyfeiriad ByRef at y newidyn y mae'r gwerth wedi'i ysgrifennu ynddo returnVariable.

Uchod rydym wedi gwneud:

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

Yn yr enghraifft hon, rydym yn aseinio i newidyn Python x значение Hello ac eisiau dychwelyd gwerth newidyn Python x i newidyn ObjectScript var.

GweithreduCod

Mae ExecuteCode yn ddewis mwy diogel a llai cyfyngol SimpleString.
Mae llinellau yn y platfform InterSystems IRIS wedi'u cyfyngu i nodau 3, ac os ydych chi am weithredu darn hirach o god, mae angen i chi ddefnyddio ffrydiau.
Mae'n cymryd dwy ddadl:

  • code — llinyn neu ffrwd o god Python i'w gweithredu.
  • variable - (dewisol) yn aseinio canlyniad dienyddio code y newidyn Python hwn.

Awgrymu defnyddio:

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

Yn yr enghraifft hon, rydym yn lluosi 2 â 3 ac yn storio'r canlyniad mewn newidyn Python y.

Trosglwyddo data

Pasio data i ac o Python.

Python -> InterSystems IRIS

Mae 4 ffordd o gael gwerth newidyn Python yn InterSystems IRIS, yn dibynnu ar y cyfresoli sydd ei angen arnoch chi:

  • String ar gyfer mathau syml o ddata a dadfygio.
  • Repr ar gyfer storio gwrthrychau syml a dadfygio.
  • JSON ar gyfer trin data yn hawdd ar ochr IRIS InterSystems.
  • Pickle i arbed gwrthrychau.

Mae'r dulliau hyn yn caniatáu ichi dderbyn newidynnau o Python fel llinyn neu fel ffrydiau.

  • GetVariable(variable, serialization, .stream, useString) - cael serialization amrywiol variable в stream. Os useString yw 1 a gosodir y cyfresoli mewn llinyn, yna dychwelir llinyn, nid ffrwd.
  • GetVariableJson(variable, .stream, useString) - cael cyfresi JSON o newidyn.
  • GetVariablePickle(variable, .stream, useString, useDill) -Cael cyfresi Pickle (neu Dill) o newidyn.

Gadewch i ni geisio cael ein newidyn y.

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

InterSystems IRIS -> Python

Llwytho data o InterSystems IRIS i Python.

  • ExecuteQuery(query, variable, type, namespace) - yn creu set ddata (pandas dataframe neu list) o ymholiad sql a'i osod i newidyn python variable. Bag plastig isc.py dylai fod ar gael yn yr ardal namespace - bydd y cais yn cael ei weithredu yno.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - yn llwytho data byd-eang global o danysgrifiad start i end yn Python fel newidyn math type: list, neu pandas dataframe. Disgrifiad o ddadleuon dewisol mask ac labels ar gael yn nogfennau ac ystorfa'r dosbarth Dogfennau Trosglwyddo Data.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - yn llwytho data dosbarth class oddi wrth id start i end yn Python fel newidyn math type: list, neu pandas dataframe. properties — rhestr (wedi'i gwahanu gan goma) o briodweddau dosbarth i'w llwytho i mewn i'r set ddata. Cefnogir masgiau * и ?. Rhagosodedig - * (pob eiddo). Eiddo %%CLASSNAME anwybyddu.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - yn llwytho data tabl table oddi wrth id start i end mewn python.

ExecuteQuery - cyffredinol (bydd unrhyw ymholiad SQL dilys yn cael ei drosglwyddo i Python). Fodd bynnag, ExecuteGlobal a'i wraps ExecuteClass и ExecuteTable gweithio gyda nifer o gyfyngiadau. Maent yn llawer cyflymach (3-5 gwaith yn gyflymach na'r gyrrwr ODBC ac 20 gwaith yn gyflymach na ExecuteQuery). Mwy o wybodaeth yn Dogfennau Trosglwyddo Data.
Mae'r holl ddulliau hyn yn cefnogi trosglwyddo data o unrhyw faes. Bag plastig isc.py rhaid iddo fod ar gael yn yr ardal darged.

Ymholiad Gweithredol

ExecuteQuery(request, variable, type, namespace) - pasio canlyniadau unrhyw ymholiad SQL dilys i Python. Dyma'r dull trosglwyddo data arafaf. Defnyddiwch ef os ExecuteGlobal ac nid yw ei lapyddion ar gael.

Dadleuon:

  • query - ymholiad sql.
  • variable - enw'r newidyn Python y mae'r data wedi'i ysgrifennu ynddo.
  • type - list neu pandas dataframe.
  • namespace - yr ardal lle bydd y cais yn cael ei weithredu.

GweithreduGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - pasio byd-eang i Python.

Dadleuon:

  • global yw enw y byd heb ^
  • variable - enw'r newidyn Python y mae'r data wedi'i ysgrifennu ynddo.
  • type - list neu pandas dataframe.
  • start — tanysgrifiad cyntaf y byd-eang. O reidrwydd %Integer.
  • end yw tanysgrifiad olaf y byd-eang. O reidrwydd %Integer.
  • mask — mwgwd o werthoedd byd-eang. Gall y mwgwd fod yn fyrrach na nifer y meysydd yn y byd-eang (ac os felly bydd y meysydd ar y diwedd yn cael eu hepgor). Sut i fformatio'r mwgwd:
    • + pasio'r gwerth fel y mae.
    • - sgip gwerth.
    • b — Math Boole (0 - False, y gweddill i gyd - True).
    • d — Dyddiad (o $horolog, ar Windows o 1970, ar Linux o 1900).
    • t - Amser ($ horolog, eiliadau ar ôl hanner nos).
    • m — Stamp amser (BLWYDDYN-MIS-DYDD AWR: COFNOD: llinyn fformat AIL).
  • labels - %Rhestr o enwau colofnau. Yr elfen gyntaf yw enw'r tanysgrifiad.
  • namespace - yr ardal lle bydd y cais yn cael ei weithredu.

Dosbarth Cyflawni

lapio drosodd ExecuteGlobal. Yn paratoi galwad yn seiliedig ar ddiffiniad y dosbarth ExecuteGlobal ac yn ei alw.

ExecuteClass(class, variable, type, start, end, properties, namespace) - pasio data dosbarth i Python.

Dadleuon:

  • class - enw dosbarth
  • variable - enw'r newidyn Python y mae'r data wedi'i ysgrifennu ynddo.
  • type - list neu pandas dataframe.
  • start — cychwyn Id.
  • end - Id terfynol
  • properties — rhestr (wedi'i gwahanu gan goma) o briodweddau dosbarth i'w llwytho i mewn i'r set ddata. Cefnogir masgiau * и ?. Rhagosodedig - * (pob eiddo). Eiddo %%CLASSNAME anwybyddu.
  • namespace - yr ardal lle bydd y cais yn cael ei weithredu.

Mae pob eiddo yn cael ei basio fel y mae ac eithrio eiddo math %Date, %Time, %Boolean и %TimeStamp - maent yn cael eu trosi i'r dosbarthiadau Python cyfatebol.

ExecuteTable

lapio drosodd ExecuteClass. Yn trosi enw'r tabl yn enw dosbarth a galwadau ExecuteClass. Llofnod:

ExecuteTable(table, variable, type, start, end, properties, namespace) - pasio data tabl i Python.

Dadleuon:

  • table - enw bwrdd.
    Mae pob dadl arall yn cael ei phasio fel y mae. ExecuteClass.

Nodiadau

  • ExecuteGlobal, ExecuteClass и ExecuteTable gweithio yr un mor gyflym.
  • ExecuteGlobal 20 gwaith yn gyflymach na ExecuteQuery ar setiau data mawr (amser trosglwyddo >0.01 eiliad).
  • ExecuteGlobal, ExecuteClass и ExecuteTable gweithio ar fyd-eang gyda'r strwythur hwn: ^global(key) = $lb(prop1, prop2, ..., propN) lle key yn gyfanrif.
  • I ExecuteGlobal, ExecuteClass и ExecuteTable ystod gwerth â chymorth %Date yn cyfateb i'r ystod mktime ac yn dibynnu ar yr OSffenestri: 1970-01-01, linux 1900-01-01, mac). Defnydd %TimeStampi basio data y tu allan i'r ystod hon neu ddefnyddio pandas dataframe fel dim ond ar gyfer y rhestr y mae'r cyfyngiad hwn.
  • I ExecuteGlobal, ExecuteClass и ExecuteTable mae pob dadl ac eithrio ffynhonnell data (byd-eang, dosbarth neu dabl) a newidyn yn ddewisol.

Примеры

dosbarth prawf isc.py.test.Person yn cynnwys dull sy'n dangos yr holl opsiynau trosglwyddo data:

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)

dull galw do ##class(isc.py.test.Person).Test() i weld sut mae'r holl ddulliau trosglwyddo data yn gweithio.

Dulliau Cynnorthwywr

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - cael gwybodaeth am y newidyn: a yw wedi'i ddiffinio, dosbarth a hyd cyfresoli.
  • GetVariableDefined(variable, .defined) - a yw'r newidyn wedi'i ddiffinio.
  • GetVariableType(variable, .type) - cael dosbarth y newidyn.
  • GetStatus() - cael a dileu'r eithriad olaf ar ochr Python.
  • GetModuleInfo(module, .imported, .alias) — cael newidyn modiwl a statws mewnforio.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - cael gwybodaeth am y swyddogaeth.

Cydweithrediad

Rydych chi wedi dysgu sut i alw Python Gateway o'r derfynell, nawr gadewch i ni ddechrau ei ddefnyddio wrth gynhyrchu. Y sail ar gyfer rhyngweithio â Python yn y modd hwn yw isc.py.ens.Operation. Mae'n caniatáu i ni:

  • Gweithredu cod Python
  • Cadw/Adfer cyd-destun Python
  • Llwytho a derbyn data o Python

Yn y bôn, mae gweithrediad Pyhton yn ddeunydd lapio drosodd isc.py.Main. Gweithrediad isc.py.ens.Operation yn caniatáu rhyngweithio â'r broses Python o gynhyrchion InterSystems IRIS. Cefnogir pum cais:

  • isc.py.msg.ExecutionRequest i weithredu cod Python. yn dychwelyd isc.py.msg.ExecutionResponse gyda'r canlyniad gweithredu a gwerthoedd y newidynnau y gofynnwyd amdanynt.
  • isc.py.msg.StreamExecutionRequest i weithredu cod Python. yn dychwelyd isc.py.msg.StreamExecutionResponse canlyniad gweithredu a gwerthoedd y newidynnau y gofynnwyd amdanynt. Analog isc.py.msg.ExecutionRequest, ond yn derbyn ac yn dychwelyd ffrydiau yn lle tannau.
  • isc.py.msg.QueryRequest i drosglwyddo canlyniad gweithredu ymholiad SQL. yn dychwelyd Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest i basio data byd-eang/dosbarth/tabl. yn dychwelyd Ens.Response.
  • isc.py.msg.SaveRequest i arbed cyd-destun Python. yn dychwelyd Ens.StringResponse gyda ID cyd-destun.
  • isc.py.msg.RestoreRequest i adfer y cyd-destun Python.

    Yn ogystal, isc.py.ens.Operation Mae ganddo ddau osodiad:

    • Initializer - dewis dosbarth sy'n gweithredu'r rhyngwyneb isc.py.init.Abstract. Gellir ei ddefnyddio i lwytho swyddogaethau, modiwlau, dosbarthiadau, ac ati. Fe'i gweithredir unwaith pan fydd y broses yn dechrau.
    • PythonLib - (Linux yn unig) os gwelwch wallau cychwyn, gosodwch ei werth i libpython3.6m.so neu hyd yn oed yn y llwybr llawn i lyfrgell Python.

Creu prosesau busnes

Mae dau ddosbarth ar gael sy'n hwyluso datblygiad prosesau busnes:

  • isc.py.ens.ProcessUtils yn eich galluogi i echdynnu anodiadau o weithgareddau gydag amnewidiadau amrywiol.
  • isc.py.util.BPEmulator yn ei gwneud hi'n hawdd profi prosesau busnes gyda Python. Gall weithredu proses fusnes (rhannau Python) yn y broses gyfredol.

Amnewidiad amrywiol

Yr holl brosesau busnes a etifeddwyd o isc.py.ens.ProcessUtils, yn gallu defnyddio'r dull GetAnnotation(name) i gael gwerth anodiad gweithgaredd wrth ei enw. Gall yr anodiad gweithgaredd gynnwys newidynnau a fydd yn cael eu gwerthuso ar ochr InterSystems IRIS cyn cael eu trosglwyddo i Python. Dyma'r gystrawen ar gyfer amnewid newidiol:

  • ${class:method:arg1:...:argN} - galwad dull
  • #{expr} - gweithredu cod yn yr iaith ObjectScript.

Mae enghraifft ar gael yn y broses busnes prawf isc.py.test.Process, er enghraifft, mewn gweithgaredd Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Yn yr enghraifft hon:

  • #{process.WorkDirectory} yn dychwelyd eiddo WorkDirectory y gwrthrych process, sy'n enghraifft o'r dosbarth isc.py.test.Process y rhai. broses fusnes gyfredol.
  • ${%PopulateUtils:Integer:1:100} yn galw dull Integer dosbarth %PopulateUtils, pasio dadleuon 1 и 100, dychwelyd cyfanrif ar hap yn yr ystod 1...100.

Profi proses fusnes

Mae'r broses busnes cynhyrchu prawf a phrofi ar gael yn ddiofyn fel rhan o Borth Python. I'w defnyddio:

  1. Yn rhediad terfynell OS: pip install pandas matplotlib seaborn.
  2. Yn nherfynell InterSystems IRIS, rhedwch: do ##class(isc.py.test.CannibalizationData).Import() i boblogi data prawf.
  3. Lansio cynnyrch isc.py.test.Production.
  4. Anfonwch y math o gais Ens.Request в isc.py.test.Process.

Gawn ni weld sut mae'r cyfan yn gweithio gyda'i gilydd. agored isc.py.test.Process yn y golygydd BPL:

Porth Python yn InterSystems IRIS

Gweithredu cod

Y galwad pwysicaf yw gweithredu cod Python:

Porth Python yn InterSystems IRIS

Cais wedi'i ddefnyddio isc.py.msg.ExecutionRequest, dyma ei briodweddau:

  • Code - cod Python.
  • SeparateLines - a ddylid rhannu'r cod yn llinellau ar gyfer gweithredu. $c(10) (n) yn cael ei ddefnyddio i wahanu llinynnau. Sylwch NAD yw'n cael ei argymell i brosesu'r neges gyfan ar unwaith, mae'r swyddogaeth hon ar gyfer prosesu yn unig def ac ymadroddion aml-linell cyffelyb. Diofyn 0.
  • Variables yn rhestr o newidynnau wedi'u gwahanu gan goma a fydd yn cael eu hychwanegu at yr ymateb.
  • Serialization - Sut i gyfresoli'r newidynnau rydyn ni am eu dychwelyd. Opsiynau: Str, Repr, JSON, Pickle и Dill, rhagosodedig Str.

Yn ein hachos ni, dim ond yr eiddo rydyn ni'n ei osod Code, fel bod pob eiddo arall yn defnyddio eu gwerthoedd rhagosodedig. Rydym yn ei sefydlu trwy ffonio process.GetAnnotation("Import pandas"), sydd ar amser rhedeg yn dychwelyd anodiad ar ôl amnewid newidiol. Yn olaf y cod import pandas as pd yn cael ei drosglwyddo i Python. GetAnnotation Gall fod yn ddefnyddiol ar gyfer cael sgriptiau Python aml-linell, ond nid oes unrhyw gyfyngiadau ar y ffordd hon o gael cod. Gallwch chi osod yr eiddo Code mewn unrhyw ffordd sy'n gyfleus i chi.

Cael Newidynnau

Her ddiddorol arall gan ddefnyddio isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Porth Python yn InterSystems IRIS

Mae'n cyfrifo'r Matrics Cydberthynas ar ochr Python ac yn echdynnu'r newidyn corrmat yn ôl i InterSystems IRIS mewn fformat JSON trwy osod priodweddau'r cais:

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

Gallwn weld y canlyniadau yn Visual Trace:

Porth Python yn InterSystems IRIS

Ac os oes angen y gwerth hwn arnom yn y BP, gellir ei gael fel hyn: callresponse.Variables.GetAt("corrmat").

Trosglwyddo data

Nesaf, gadewch i ni siarad am drosglwyddo data o InterSystems IRIS i Python, mae pob cais trosglwyddo data yn gweithredu'r rhyngwyneb isc.py.msg.DataRequest, sy'n darparu'r priodweddau canlynol:

  • Variable yn newidyn Python y mae'r data wedi'i ysgrifennu iddo.
  • Type - math amrywiol: dataframe (ffram data pandas) neu list.
  • Namespace - yr ardal yr ydym yn derbyn data ohoni. Bag plastig isc.py dylai fod ar gael yn yr ardal hon. Gall hwn fod yn faes heb gefnogaeth cynnyrch.

Yn seiliedig ar y rhyngwyneb hwn, gweithredir 4 dosbarth o geisiadau:

  • isc.py.msg.QueryRequest — eiddo gosod Query i anfon ymholiad SQL.
  • isc.py.msg.ClassRequest — eiddo gosod Class i basio data dosbarth.
  • isc.py.msg.TableRequest — eiddo gosod Table i basio data tabl.
  • isc.py.msg.GlobalRequest — eiddo gosod Global i drosglwyddo data yn fyd-eang.

Yn y broses brawf, edrychwch ar y gweithgaredd RAWlle isc.py.msg.QueryRequest dangos ar waith.

Porth Python yn InterSystems IRIS

Arbed/Adfer Cyd-destun Python

Yn olaf, gallwn storio'r cyd-destun Python yn InterSystems IRIS, i wneud hyn, anfonwch isc.py.msg.SaveRequest gyda dadleuon:

  • Mask - Dim ond newidynnau sy'n bodloni'r mwgwd sy'n cael eu cadw. Cefnogwyd * и ?. Enghraifft: "Data*, Figure?"... Yn ddiofyn *.
  • MaxLength — Hyd mwyaf y newidyn sydd wedi'i storio. Os yw cyfresoli newidyn yn hirach, yna caiff ei anwybyddu. Gosodwch i 0 i gael newidynnau o unrhyw hyd. Diofyn $$$MaxStringLength.
  • Name — Enw cyd-destun (dewisol).
  • Description — Disgrifiad o'r cyd-destun (dewisol).

Dychweliadau Ens.StringResponse с Id cyd-destun wedi'i gadw. Yn y broses brawf, edrychwch ar y gweithgaredd Save Context.

Cais cysylltiedig isc.py.msg.RestoreRequest yn llwytho cyd-destun o InterSystems IRIS i Python:

  • ContextId yw'r dynodwr cyd-destun.
  • Clear — cliriwch y cyd-destun cyn adfer.

Llyfr Nodiadau Jupyter

Llyfr Nodiadau Jupyter yn gymhwysiad gwe ffynhonnell agored sy'n eich galluogi i greu a chyhoeddi llyfrau nodiadau sy'n cynnwys cod, delweddiadau a thestun. Mae Python Gateway yn caniatáu ichi weld a golygu prosesau BPL fel Llyfr Nodiadau Jupyter. Sylwch fod yr ysgutor Python 3 rheolaidd yn cael ei ddefnyddio ar hyn o bryd.

Mae'r estyniad hwn yn cymryd bod anodiadau yn cynnwys cod Python ac yn defnyddio enwau gweithgaredd fel teitlau blaenorol. Mae bellach yn bosibl datblygu prosesau busnes PythonGateway yn Jupyter Notebook. Dyma beth sy'n bosibl:

  • Creu prosesau busnes newydd
  • Dileu prosesau busnes
  • Creu gweithgareddau newydd
  • Newid gweithgareddau
  • Dileu gweithgareddau

Yma fideo demo. A rhai sgrinluniau:

Archwiliwr Proses

Porth Python yn InterSystems IRIS

Golygydd prosesau

Porth Python yn InterSystems IRIS

Gosod

  1. Bydd angen InterSystems IRIS 2019.2+ arnoch chi.
  2. Gosod PythonGateway v0.8+ (angen yn unig isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Diweddaru'r cod ObjectScript o'r gadwrfa.
  4. Rhedeg do ##class(isc.py.util.Jupyter).Install() a dilynwch yr awgrymiadau.

Cofnodion.

Canfyddiadau

Mae MLToolkit yn set o offer sy'n ceisio cyfuno modelau ac amgylchedd trafodion fel y gellir defnyddio'r modelau adeiledig yn uniongyrchol yn eich prosesau busnes. Mae Python Gateway yn rhan o MLToolkit ac mae'n integreiddio â'r iaith Python, sy'n eich galluogi i drefnu unrhyw algorithmau dysgu peirianyddol a grëwyd yn Python (y prif amgylchedd i lawer o Wyddonwyr Data), defnyddio nifer o lyfrgelloedd parod i greu AI / dadansoddol robotig addasol yn gyflym. Datrysiadau ML ar blatfform InterSystems IRIS.

cyfeiriadau

Pecyn Cymorth ML

Mae grŵp defnyddwyr MLToolkit yn ystorfa GitHub breifat a grëwyd fel rhan o sefydliad GitHub corfforaethol InterSystems. Fe'i cyfeirir at ddefnyddwyr allanol sy'n gosod, yn dysgu, neu eisoes yn defnyddio cydrannau MLToolkit, gan gynnwys Python Gateway. Mae gan y grŵp nifer o achosion ar waith (gyda chod ffynhonnell a data prawf) ym meysydd marchnata, gweithgynhyrchu, meddygaeth a llawer o ddiwydiannau eraill. I ymuno â grŵp defnyddwyr Pecyn Cymorth ML, anfonwch e-bost byr i'r cyfeiriad canlynol: [e-bost wedi'i warchod] a chynnwys y wybodaeth ganlynol yn eich llythyr:

  • Enw defnyddiwr GitHub
  • Sefydliad (rydych yn gweithio neu'n astudio)
  • Swydd (eich sefyllfa wirioneddol yn eich sefydliad, naill ai "Myfyriwr" neu "Annibynnol").
  • Gwlad

I'r rhai sydd wedi darllen yr erthygl ac sydd â diddordeb yn InterSystems IRIS fel llwyfan ar gyfer datblygu neu gynnal deallusrwydd artiffisial a mecanweithiau dysgu peirianyddol, rydym yn eich gwahodd i drafod senarios posibl o ddiddordeb i'ch menter. Byddwn yn dadansoddi anghenion eich menter yn rhwydd ac yn pennu cynllun gweithredu ar y cyd; cyfeiriad e-bost cyswllt ein grŵp arbenigol AI/ML - [e-bost wedi'i warchod].

Ffynhonnell: hab.com

Ychwanegu sylw