Dan l-artikolu huwa dwar Python Gateway, proġett komunitarju ta' sors miftuħ għall-pjattaforma tad-dejta InterSystems IRIS. Dan il-proġett jippermettilek li orkestra kwalunkwe algoritmi ta' tagħlim tal-magni maħluqa f'Python (l-ambjent ewlieni għal ħafna Xjentisti tad-Data), tuża bosta libreriji lesti biex toħloq malajr soluzzjonijiet adattivi u robotiċi analitiċi AI / ML fuq il-pjattaforma InterSystems IRIS. F'dan l-artikolu, ser nuri kif InterSystems IRIS jista 'jorkestra proċessi f'Python, jikkomunika b'mod effiċjenti data f'żewġ direzzjonijiet, u joħloq proċessi kummerċjali intelliġenti.
Pjan
Introduzzjoni.
Għodda.
Installazzjoni.
API
Interoperabbiltà.
Notebook Jupyter.
Konklużjonijiet.
Links.
MLToolkit.
Introduzzjoni
Python huwa lingwa ta 'programmar ta' livell għoli u għal skopijiet ġenerali mmirata biex ittejjeb il-produttività tal-iżviluppatur u l-leġibbiltà tal-kodiċi. F'din is-sensiela ta' artikoli, ser niddiskuti l-possibbiltajiet tal-użu ta' Python fuq il-pjattaforma InterSystems IRIS, bil-fokus ewlieni ta' dan l-artikolu jkun l-użu ta' Python bħala lingwa għall-ħolqien u t-tħaddim ta' mudelli ta' tagħlim tal-magni.
It-tagħlim tal-magni (ML) huwa klassi ta 'metodi ta' intelliġenza artifiċjali, li l-karatteristika tagħha mhix is-soluzzjoni diretta ta 'problema, iżda t-tagħlim fil-proċess li jsolvi ħafna problemi simili.
L-algoritmi u l-mudelli tat-tagħlim bil-magni qed isiru aktar komuni. Hemm ħafna raġunijiet għal dan, iżda kollox niżel għall-aċċessibbiltà, is-sempliċità u l-kisba ta’ riżultati prattiċi. Il-clustering jew saħansitra l-immudellar tan-netwerk newrali huwa teknoloġija ġdida?
Naturalment le, imma llum il-ġurnata m'hemmx għalfejn tikteb mijiet ta' eluf ta' linji ta' kodiċi biex tmexxi mudell wieħed, u l-ispiża tal-ħolqien u l-użu tal-mudelli qed issir dejjem inqas.
L-għodod qed jevolvu - filwaqt li m'għandniex għodod AI/ML kompletament iċċentrati fuq GUI, il-progress li rajna b'ħafna klassijiet oħra ta' sistemi ta' informazzjoni, bħal BI (mill-kitba tal-kodiċi għall-użu ta' oqfsa u soluzzjonijiet konfigurabbli iċċentrati fuq GUI), huwa osservat ukoll f'għodod għall-ħolqien ta 'AI/ML. Diġà għaddejna mill-istadju tal-kitba tal-kodiċi u llum nużaw oqfsa biex nibnu u nħarrġu mudelli.
Titjib ieħor, bħall-abbiltà li jqassam mudell imħarreġ minn qabel fejn l-utent aħħari sempliċement irid itemm it-taħriġ tal-mudell fuq id-dejta speċifika tiegħu, jagħmilha wkoll aktar faċli biex tibda bit-tagħlim tal-magni. Dawn l-avvanzi jagħmlu t-tagħlim tal-magni tat-tagħlim ħafna aktar faċli kemm għall-professjonisti kif ukoll għall-kumpaniji in ġenerali.
Min-naħa l-oħra, qed niġbru aktar u aktar data. Bi pjattaforma tad-dejta unifikata bħal InterSystems IRIS, din l-informazzjoni kollha tista’ tiġi ppreparata u użata immedjatament bħala input għal mudelli ta’ tagħlim bil-magni.
Biċ-ċaqliq lejn il-cloud, it-tnedija ta 'proġetti AI/ML qed issir aktar faċli minn qatt qabel. Nistgħu nikkunsmaw biss ir-riżorsi li għandna bżonn. Barra minn hekk, grazzi għall-parallelizzazzjoni offruta mill-pjattaformi tal-cloud, nistgħu niffrankaw il-ħin li nqattgħu.
Imma xi ngħidu għar-riżultati? Dan huwa fejn l-affarijiet isiru aktar ikkumplikati. Hemm ħafna għodod għall-bini ta 'mudelli, li se niddiskuti li jmiss. Il-bini ta’ mudell tajjeb mhuwiex faċli, imma x’imiss? Li tagħmel profitt mill-użu ta 'mudell ta' negozju hija wkoll kompitu mhux trivjali. L-għerq tal-problema hija s-separazzjoni tal-piżijiet tax-xogħol analitiċi u transazzjonali, u l-mudelli tad-dejta. Meta nħarrġu mudell, ġeneralment nagħmluh fuq data storika. Iżda l-post għall-mudell mibni huwa fl-ipproċessar tad-dejta transazzjonali. X'inhu tajjeb l-aħjar mudell ta 'skoperta ta' tranżazzjonijiet frawdolenti jekk inħaddmuh darba kuljum? Il-scammers ilhom li telqu bil-flus. Irridu nħarrġu l-mudell fuq dejta storika, iżda rridu napplikawha wkoll f'ħin reali fuq dejta ġdida li tidħol sabiex il-proċessi tan-negozju tagħna jkunu jistgħu jaġixxu fuq it-tbassir magħmul mill-mudell.
L-ML Toolkit huwa sett ta’ għodod li għandu l-għan li jagħmel dan: jgħaqqad mudelli u ambjent transazzjonali sabiex il-mudelli mibnija jkunu jistgħu jintużaw faċilment direttament fil-proċessi tan-negozju tiegħek. Python Gateway huwa parti mill-ML Toolkit u jipprovdi integrazzjoni mal-lingwa Python (simili għal kif R Gateway, li tkun parti mill-ML Toolkit jipprovdi integrazzjoni mal-lingwa R).
Għodda tal-għodda
Qabel ma nkomplu, nixtieq niddeskrivi ftit għodod u libreriji Python li ser nużaw aktar tard.
Teknoloġija
Python huwa lingwa ta' programmazzjoni interpretata, ta' livell għoli u għal skopijiet ġenerali. Il-vantaġġ ewlieni tal-lingwa hija l-librerija kbira tagħha ta 'libreriji matematiċi, ML u AI. Bħal ObjectScript, hija lingwa orjentata lejn l-oġġetti, iżda kollox huwa definit b'mod dinamiku aktar milli b'mod statiku. Ukoll kollox huwa oġġett. Artikli aktar tard jassumu familjarità li tgħaddi mal-lingwa. Jekk trid tibda titgħallem, nirrakkomanda li tibda minn dokumentazzjoni.
IDE: Jien nuża PyCharm, iżda b'mod ġenerali huma много. Jekk tuża Atelier, hemm plugin Eclipse għall-iżviluppaturi Python. Jekk qed tuża VS Code, hemm estensjoni għal Python.
Notebook: Minflok IDE, tista 'tikteb u taqsam l-iskripts tiegħek f'notebooks onlajn. L-aktar popolari minnhom huwa jupyter.
Libreriji
Hawnhekk hawn lista (mhux eżawrjenti) tal-libreriji tat-tagħlim tal-magni:
numpy — pakkett fundamentali għal kalkoli preċiżi.
pandas — strutturi ta' dejta ta' prestazzjoni għolja u għodod ta' analiżi tad-dejta.
It-teknoloġiji AI/ML jagħmlu n-negozju aktar effiċjenti u adattabbli. Barra minn hekk, illum dawn it-teknoloġiji qed isiru aktar faċli biex jiġu żviluppati u implimentati. Ibda titgħallem dwar it-teknoloġiji AI/ML u kif jistgħu jgħinu lill-organizzazzjoni tiegħek tikber.
Installazzjoni
Hemm diversi modi kif tinstalla u tuża Python Gateway:
OS
twieqi
Linux
Mac
Docker
Uża immaġni minn DockerHub
Oħloq id-dehra tiegħek
Irrispettivament mill-metodu ta 'installazzjoni, ser ikollok bżonn il-kodiċi tas-sors. L-uniku post biex tniżżel il-kodiċi huwa paġna rilaxxi. Fiha rilaxxi stabbli ttestjati, ħu biss l-aħħar waħda. Bħalissa huwa 0.8, iżda maż-żmien se jkun hemm oħrajn ġodda. Tikklonax/tniżżilx ir-repożitorju, niżżel l-aħħar rilaxx.
OS
Jekk qed tinstalla Python Gateway fuq sistema operattiva, allura l-ewwel (irrispettivament mis-sistema operattiva) trid tinstalla Python. Għal din:
Niżżel il-kodiċi ObjectScript (i.e. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) għal kwalunkwe żona bi prodotti. Fil-każ li trid żona eżistenti biex tappoġġja l-prodotti, mexxi: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
Poġġi callout DLL/SO/DYLIB għal folder bin l-istanza tiegħek ta' InterSystems IRIS. Il-fajl tal-librerija għandu jkun disponibbli fil-mogħdija lura write ##class(isc.py.Callout).GetLib().
twieqi
Kun żgur li l-ambjent varjabbli PYTHONHOME jindika Python 3.6.7.
Kun żgur li l-varjabbli tal-ambjent tas-sistema hija PATH fih varjabbli PYTHONHOME (jew id-direttorju li jindika).
Linux (Debian/Ubuntu)
Iċċekkja li l-varjabbli ambjentali hija PATH fih /usr/lib и /usr/lib/x86_64-linux-gnu. Uża fajl /etc/environment biex jiġu stabbiliti varjabbli ambjentali.
F'każ ta' żbalji undefined symbol: _Py_TrueStruct issettja l-issettjar PythonLib. ukoll fi README hemm taqsima Issolvi l-problemi.
Mac
Bħalissa Python 3.6.7 biss huwa appoġġjat python.org. Iċċekkja l-varjabbli PATH.
Jekk biddilt il-varjabbli ambjentali, ibda mill-ġdid il-prodott InterSystems tiegħek.
Docker
L-użu ta 'kontenituri għandu numru ta' vantaġġi:
Portabbiltà
Effettività
Insulazzjoni
Ħeffa
Immutabilità
Iċċekkja dan sensiela ta’ artikli għal aktar informazzjoni dwar l-użu ta’ Docker mal-prodotti InterSystems.
Il-bini kollha ta' Python Gateway bħalissa huma bbażati fuq kontenitur 2019.4.
Immaġni lesta
Mexxi: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestbiex tniżżel u tħaddem Python Gateway ma' InterSystems IRIS Community Edition. Dak kollox.
Oħloq id-dehra tiegħek
Biex tibni immaġni docker, ħaddem fl-għerq tar-repożitorju: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
B'mod awtomatiku, l-immaġni hija mibnija bbażata fuq l-immaġni store/intersystems/iris-community:2019.4.0.383.0, madankollu tista' tibdel dan billi tistabbilixxi varjabbli IMAGE.
Biex tibni minn InterSystems IRIS, mexxi: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest ".
Jekk qed tuża immaġni bbażata fuq InterSystems IRIS Community Edition, tista' tħalli barra ċ-ċavetta.
Kummenti
Proċess tat-test isc.py.test.Process jiffranka numru ta' immaġini f'direttorju temporanju. Inti tista 'tixtieq li tibdel din it-triq għad-direttorju mmuntat. Biex tagħmel dan, editja l-issettjar WorkingDir tispeċifika d-direttorju immuntat.
Biex taċċessa t-terminal run: docker exec -it irispy sh.
Aċċess għall-Portal tal-Ġestjoni tas-Sistema permezz tal-login SuperUser/SYS.
Python Gateway huwa installat u vverifikajt li jaħdem. Wasal iż-żmien li tibda tużah!
L-interface ewlenija għal Python hija isc.py.Main. Joffri l-gruppi ta’ metodi li ġejjin (kollha ritorn %Status):
Eżekuzzjoni tal-Kodiċi
Trasferiment tad-dejta
Awżiljarju
Eżekuzzjoni tal-Kodiċi
Dawn il-metodi jippermettulek tesegwixxi kodiċi Python arbitrarju.
SimpleString
SimpleString - dan huwa l-metodu ewlieni. Huwa jieħu 4 argumenti fakultattivi:
code — linja ta' kodiċi li trid tesegwixxi. Karattru ta' l-għalf tal-linja: $c(10).
returnVariable — isem il-varjabbli li trid tirritorna.
result — ByRef referenza għall-varjabbli li fiha jinkiteb il-valur returnVariable.
Hawn fuq għamilna:
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
F'dan l-eżempju, aħna nassenjaw għal varjabbli Python x tifsira Hello u trid tirritorna l-valur ta 'varjabbli Python x għal varjabbli ObjectScript var.
Eżegwixxi Kodiċi
ExecuteCode hija alternattiva aktar sigura u inqas restrittiva SimpleString.
Linji fil-pjattaforma InterSystems IRIS huma limitati għal 3 karattru, u jekk trid tesegwixxi biċċa itwal ta 'kodiċi, għandek bżonn tuża ħjut.
Żewġ argumenti huma aċċettati:
code — linja jew nixxiegħa ta' kodiċi Python li trid tiġi esegwita.
set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").
F'dan l-eżempju, aħna mmultiplika 2 bi 3 u niktbu r-riżultat għal varjabbli Python y.
Trasferiment tad-dejta
Għaddi d-dejta lejn u minn Python.
Python -> InterSystems IRIS
Hemm 4 modi kif tikseb il-valur ta' varjabbli Python f'InterSystems IRIS, skont is-serjelizzazzjoni li għandek bżonn:
String għal tipi ta' data sempliċi u debugging.
Repr għall-ħażna ta 'oġġetti sempliċi u debugging.
JSON għal manipulazzjoni faċli tad-dejta fuq in-naħa ta’ InterSystems IRIS.
Pickle biex isalva l-oġġetti.
Dawn il-metodi jippermettulek tirkupra varjabbli minn Python bħala string jew flussi.
GetVariable(variable, serialization, .stream, useString) - tikseb serialization varjabbli variable в stream. Jekk useString hija 1 u s-serialization titqiegħed fuq string, imbagħad string tiġi rritornata u mhux stream.
GetVariableJson(variable, .stream, useString) — Ikseb serialization JSON ta 'varjabbli.
GetVariablePickle(variable, .stream, useString, useDill) -get Pickle (jew Dill) serialization ta 'varjabbli.
Ejja nippruvaw niksbu l-varjabbli tagħna y.
set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6
InterSystems IRIS -> Python
Tagħbija tad-dejta minn InterSystems IRIS f'Python.
ExecuteQuery(query, variable, type, namespace) - toħloq sett ta' dejta (pandas dataframe jew list) mill-mistoqsija sql u tistabbilixxiha għal varjabbli Python variable. Borża tal-plastik isc.py għandhom ikunu disponibbli fiż-żona namespace — it-talba tiġi esegwita hemmhekk.
ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - jgħabbi dejta globali global mis-sottoskritt start li end f'Python bħala varjabbli tat-tip type: list, jew pandas dataframe. Deskrizzjoni ta' argumenti fakultattivi mask u, labels disponibbli fid-dokumentazzjoni u r-repożitorju tal-klassi Dokumenti tat-Trasferiment tad-Data.
ExecuteClass(class, variable, type, start, end, properties, namespace) - tagħbija data tal-klassi class minn id start li end f'Python bħala varjabbli tat-tip type: list, jew pandas dataframe. properties — lista (separata b'virgola) ta' proprjetajiet ta' klassi li jeħtieġ li jiġu mgħobbija fis-sett tad-dejta. Maskri appoġġjati * и ?. Default - * (il-proprjetajiet kollha). Proprjetà %%CLASSNAME injorat.
ExecuteTable(table, variable, type, start, end, properties, namespace) - Tagħbijiet tabella data table minn id start li end f'Python.
ExecuteQuery — universali (kwalunkwe mistoqsija SQL korretta tiġi mgħoddija lil Python). Madankollu, ExecuteGlobal u l-tgeżwir tagħha ExecuteClass и ExecuteTable taħdem b'numru ta' restrizzjonijiet. Huma ħafna aktar mgħaġġla (3-5 darbiet aktar mgħaġġla mis-sewwieq ODBC u 20 darba aktar mgħaġġla ExecuteQuery). Aktar informazzjoni fuq Dokumenti tat-Trasferiment tad-Data.
Dawn il-metodi kollha jappoġġjaw it-trasferiment tad-dejta minn kwalunkwe żona. Borża tal-plastik isc.py għandhom ikunu disponibbli fiż-żona fil-mira.
ExecuteQuery
ExecuteQuery(request, variable, type, namespace) — it-trasferiment tar-riżultati ta' kwalunkwe mistoqsija SQL korretta lil Python. Dan huwa l-aktar metodu ta 'trasferiment tad-data bil-mod. Użaha jekk ExecuteGlobal u t-tgeżwir tiegħu mhumiex disponibbli.
Argumenti:
query - mistoqsija sql.
variable — l-isem tal-varjabbli Python li fiha tinkiteb id-dejta.
type - list jew Pandas dataframe.
namespace — iż-żona li fiha se titwettaq it-talba.
variable — l-isem tal-varjabbli Python li fiha tinkiteb id-dejta.
type - list jew Pandas dataframe.
start — ID tal-bidu.
end — finali Id
properties — lista (separata b'virgola) ta' proprjetajiet ta' klassi li jeħtieġ li jiġu mgħobbija fis-sett tad-dejta. Maskri appoġġjati * и ?. Default - * (il-proprjetajiet kollha). Proprjetà %%CLASSNAME injorat.
namespace — iż-żona li fiha se titwettaq it-talba.
Il-proprjetajiet kollha huma mgħoddija kif inhu ħlief proprjetajiet tat-tip %Date, %Time, %Boolean и %TimeStamp - huma kkonvertiti fil-klassijiet Python korrispondenti.
ExecuteTable
Kebbeb fuq ExecuteClass. Tittraduċi l-isem tal-mejda fl-isem tal-klassi u sejħiet ExecuteClass. Firma:
table — isem it-tabella.
L-argumenti l-oħra kollha jgħaddu kif inhu ExecuteClass.
Noti
ExecuteGlobal, ExecuteClass и ExecuteTable taħdem bl-istess mod malajr.
ExecuteGlobal 20 darba aktar mgħaġġla minn ExecuteQuery fuq settijiet kbar tad-dejta (ħin tat-trasferiment > 0.01 sekondi).
ExecuteGlobal, ExecuteClass и ExecuteTable taħdem fuq globali b'din l-istruttura: ^global(key) = $lb(prop1, prop2, ..., propN) fejn key — numru sħiħ.
Għal ExecuteGlobal, ExecuteClass и ExecuteTable firxa ta' valuri appoġġjata %Date jikkorrispondi għall-firxa mktime u jiddependi fuq l-OS (twieqi: 1970-01-01, Linux 1900-01-01, mac). Użu %TimeStampbiex tittrasferixxi data barra din il-firxa jew tuża pandas dataframe minħabba din hija limitazzjoni ta' lista biss.
Għal ExecuteGlobal, ExecuteClass и ExecuteTable l-argumenti kollha ħlief is-sors tad-dejta (globali, klassi jew tabella) u l-varjabbli huma fakultattivi.
eżempji
Klassi tat-test isc.py.test.Person fih metodu li juri l-għażliet kollha tat-trasferiment tad-dejta:
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)
Sejħa l-metodu do ##class(isc.py.test.Person).Test() biex tara kif jaħdmu l-metodi kollha tat-trasferiment tad-data.
Metodi Helper
GetVariableInfo(variable, serialization, .defined, .type, .length) — tikseb informazzjoni dwar il-varjabbli: jekk hijiex definita, il-klassi tagħha u t-tul tas-serializzazzjoni.
GetVariableDefined(variable, .defined) — jekk il-varjabbli hijiex definita.
GetStatus() - Ikseb u neħħi l-aħħar eċċezzjoni fuq in-naħa Python.
GetModuleInfo(module, .imported, .alias) — tikseb l-istatus tal-varjabbli tal-modulu u l-importazzjoni.
GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) — tikseb informazzjoni dwar il-funzjoni.
Interoperabbiltà
Tgħallimt kif issejjaħ Python Gateway mit-terminal, issa ejja nibdew nużawh fil-produzzjoni. Il-bażi għall-interazzjoni ma 'Python f'dan il-mod hija isc.py.ens.Operation. Jippermettilna:
Eżegwixxi kodiċi f'Python
Issejvja/Irrestawra l-kuntest Python
Tagħbija u tirċievi data minn Python
Bażikament, operazzjoni Python hija tgeżwir fuq isc.py.Main. Operazzjoni isc.py.ens.Operation jipprovdi l-abbiltà li jinteraġixxi mal-proċess Python mill-prodotti InterSystems IRIS. Ħames mistoqsijiet huma appoġġjati:
isc.py.msg.ExecutionRequest biex tesegwixxi kodiċi Python. Ritorni isc.py.msg.ExecutionResponse bir-riżultat tal-eżekuzzjoni u l-valuri tal-varjabbli mitluba.
isc.py.msg.StreamExecutionRequest biex tesegwixxi kodiċi Python. Ritorni isc.py.msg.StreamExecutionResponse ir-riżultat tal-eżekuzzjoni u l-valuri tal-varjabbli mitluba. Analogu isc.py.msg.ExecutionRequest, iżda jaċċetta u jirritorna streams minflok strings.
isc.py.msg.QueryRequest biex jittrasmetti r-riżultat tal-eżekuzzjoni ta' mistoqsija SQL. Ritorni Ens.Response.
isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest biex tgħaddi data globali/klassi/tabella. Ritorni Ens.Response.
isc.py.msg.SaveRequest biex issalva l-kuntest Python. Ritorni Ens.StringResponse bl-ID tal-kuntest.
isc.py.msg.RestoreRequest biex tirrestawra l-kuntest Python.
Barra minn hekk, isc.py.ens.Operation għandha żewġ settings:
Initializer — għażla ta' klassi li timplimenta l-interface isc.py.init.Abstract. Jista 'jintuża biex jgħabbi funzjonijiet, moduli, klassijiet, eċċ. Huwa esegwit darba meta jibda l-proċess.
PythonLib - (Linux biss) jekk tara żbalji waqt it-tagħbija, issettja l-valur tagħha għal libpython3.6m.so jew saħansitra fit-triq sħiħa lejn il-librerija Python.
Ħolqien ta 'proċessi tan-negozju
Hemm żewġ klassijiet disponibbli li jiffaċilitaw l-iżvilupp tal-proċessi tan-negozju:
isc.py.ens.ProcessUtils jippermettilek estratt annotazzjonijiet minn attivitajiet b'sostituzzjoni varjabbli.
isc.py.util.BPEmulator jagħmilha faċli biex jiġu ttestjati proċessi tan-negozju b'Python. Jista 'jesegwixxi proċess tan-negozju (partijiet Python) fil-proċess attwali.
Sostituzzjoni Varjabbli
Il-proċessi kollha tan-negozju ntirtu minn isc.py.ens.ProcessUtils, jistgħu jużaw il-metodu GetAnnotation(name) biex tikseb il-valur tal-annotazzjoni tal-attività b'isimha. L-annotazzjoni tal-attività jista' jkun fiha varjabbli li se jiġu kkalkulati fuq in-naħa tal-InterSystems IRIS qabel ma jiġu mgħoddija lil Python. Hawnhekk hawn is-sintassi għas-sostituzzjoni varjabbli:
Eżempju huwa disponibbli fil-proċess tan-negozju tat-test isc.py.test.Process, pereżempju, fl-attività Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). F'dan l-eżempju:
#{process.WorkDirectory} jirritorna l-proprjetà WorkDirectory tal-oġġett process, li hija eżempju tal-klassi isc.py.test.Process dawk. proċess tan-negozju kurrenti.
${%PopulateUtils:Integer:1:100} jitlob metodu Integer klassi %PopulateUtils, tgħaddi l-argumenti 1 и 100, li jirritorna numru sħiħ każwali fil-medda 1...100.
Proċess tan-negozju tat-test
Prodotti tat-test u proċessi tan-negozju tat-test huma disponibbli awtomatikament bħala parti mill-Python Gateway. Biex tużahom:
Fit-terminal InterSystems IRIS, mexxi: do ##class(isc.py.test.CannibalizationData).Import() biex timla d-data tat-test.
Tnedija prodotti isc.py.test.Production.
Ibgħat it-tip ta' talba Ens.Request в isc.py.test.Process.
Ejja naraw kif jaħdem kollox flimkien. Miftuħa isc.py.test.Process fl-editur tal-BPL:
Eżekuzzjoni tal-Kodiċi
L-aktar sfida importanti hija l-eżekuzzjoni tal-kodiċi Python:
Mistoqsija użata isc.py.msg.ExecutionRequest, hawn huma l-proprjetajiet tiegħu:
Code — Kodiċi Python.
SeparateLines — jekk għandux jaqsam il-kodiċi f'linji għall-eżekuzzjoni. $c(10) (n) tintuża biex tissepara kordi. Jekk jogħġbok innota li MHUX rakkomandat li tipproċessa l-messaġġ kollu f'daqqa, din il-funzjoni hija maħsuba biss biex tipproċessa def u espressjonijiet simili multiline. Default 0.
Variables — lista ta' varjabbli separati minn virgoli li se jiġu miżjuda mar-rispons.
Serialization — Kif serialize l-varjabbli li rridu nirritornaw. Għażliet: Str, Repr, JSON, Pickle и Dill, default Str.
Fil-każ tagħna, aħna nissettjaw biss il-proprjetà Code, għalhekk il-proprjetajiet l-oħra kollha jużaw il-valuri awtomatiċi. Nissettjawha billi nċemplu process.GetAnnotation("Import pandas"), li waqt ir-runtime jirritorna annotazzjoni wara li tkun saret sostituzzjoni varjabbli. Wara kollox, il-kodiċi import pandas as pd se jiġi mgħoddi lil Python. GetAnnotation jista 'jkun utli għall-kisba ta' skripts Python b'ħafna linji, iżda m'hemm l-ebda restrizzjonijiet fuq dan il-metodu ta 'kisba tal-kodiċi. Tista 'tissettja l-proprjetà Code b'xi mod konvenjenti għalik.
Jkollna Varjabbli
Sfida oħra interessanti bl-użu isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:
Jikkalkula l-Matriċi ta 'Korrelazzjoni fuq in-naħa ta' Python u estratti l-varjabbli corrmat lura għal InterSystems IRIS fil-format JSON billi tistabbilixxi l-proprjetajiet tat-talba:
Variables: "corrmat"
Serialization: "JSON"
Nistgħu naraw ir-riżultati f'Viżwali Traċċa:
U jekk għandna bżonn dan il-valur fil-BP, nistgħu niksbuh bħal dan: callresponse.Variables.GetAt("corrmat").
Trasferiment tad-dejta
Sussegwentement, ejja nitkellmu dwar it-trasferiment tad-dejta minn InterSystems IRIS għal Python; it-talbiet kollha għat-trasferiment tad-dejta jimplimentaw l-interface isc.py.msg.DataRequestli jipprovdi l-proprjetajiet li ġejjin:
Variable — varjabbli Python li fiha tinkiteb id-dejta.
Type — tip varjabbli: dataframe (pandas dataframe) jew list.
Namespace — iż-żona li minnha nirċievu d-dejta. Borża tal-plastik isc.py għandhom ikunu disponibbli f'dan il-qasam. Dan jista 'jkun żona mingħajr appoġġ tal-prodott.
Ibbażat fuq din l-interface, 4 klassijiet ta’ talbiet huma implimentati:
isc.py.msg.QueryRequest - issettja l-proprjetà Query biex tibgħat mistoqsija SQL.
isc.py.msg.ClassRequest - issettja l-proprjetà Class biex jgħaddi data tal-klassi.
isc.py.msg.TableRequest - issettja proprjetà Table biex tittrasferixxi data tal-mejda.
isc.py.msg.GlobalRequest - issettja proprjetà Global għat-trasferiment globali tad-dejta.
Fil-proċess tat-test, ħares lejn l-attività RAWfejn isc.py.msg.QueryRequest murija fl-azzjoni.
Iffrankar/Restawrar Kuntest Python
Fl-aħħarnett, nistgħu naħżnu l-kuntest Python f'InterSystems IRIS, biex nagħmlu dan aħna nibagħtu isc.py.msg.SaveRequest bl-argumenti:
Mask — Jiġu salvati biss il-varjabbli li jaqblu mal-maskra. Appoġġjati * и ?. Eżempju: "Data*, Figure?"... Default *.
MaxLength — It-tul massimu tal-varjabbli maħżun. Jekk is-serialization ta 'varjabbli hija itwal, se tiġi injorata. Issettja għal 0 biex tikseb varjabbli ta' kwalunkwe tul. Default $$$MaxStringLength.
Ritorni Ens.StringResponse с Id kuntest salvat. Fil-proċess tat-test, ħares lejn l-attività Save Context.
Talba relatata isc.py.msg.RestoreRequest jgħabbi l-kuntest minn InterSystems IRIS f'Python:
ContextId — identifikatur tal-kuntest.
Clear — ċara l-kuntest qabel ir-restawr.
Notebook Jupyter
Notebook Jupyter hija applikazzjoni tal-web sors miftuħ li tippermettilek toħloq u tippubblika notebooks li fihom kodiċi, viżwalizzazzjonijiet u test. Python Gateway jippermettilek tara u teditja proċessi BPL fil-forma ta' Jupyter Notebook. Jekk jogħġbok innota li l-eżekutur normali Python 3 bħalissa qed jintuża.
Din l-estensjoni tassumi li l-annotazzjonijiet fihom kodiċi Python u tuża l-ismijiet tal-attivitajiet bħala titoli preċedenti. Issa huwa possibbli li jiġu żviluppati proċessi tan-negozju PythonGateway f'Jupyter Notebook. Hawn x'inhu possibbli:
MLToolkit huwa sett ta 'għodod li l-għan tagħhom huwa li jgħaqqdu mudelli u ambjent transazzjonali sabiex il-mudelli mibnija jkunu jistgħu jintużaw faċilment direttament fil-proċessi tan-negozju tiegħek. Python Gateway huwa parti minn MLToolkit u jipprovdi integrazzjoni mal-lingwa Python, li jippermettilek orkestra kwalunkwe algoritmi ta' tagħlim tal-magni maħluqa f'Python (l-ambjent ewlieni għal ħafna Xjentisti tad-Data), tuża bosta libreriji lesti biex toħloq malajr AI analitika adattiva u robotika / Soluzzjonijiet ML fuq il-pjattaforma InterSystems IRIS.
Il-grupp ta' utenti MLToolkit huwa repożitorju privat ta' GitHub maħluq bħala parti mill-organizzazzjoni korporattiva GitHub ta' InterSystems. Huwa maħsub għal utenti esterni li jinstallaw, jitgħallmu, jew diġà qed jużaw komponenti MLToolkit, inkluż il-Python Gateway. Il-grupp għandu numru ta 'każijiet implimentati (b'kodiċi tas-sors u dejta tat-test) fl-oqsma tal-kummerċjalizzazzjoni, il-manifattura, il-mediċina u ħafna industriji oħra. Biex tissieħeb mal-Grupp ta' Utenti tal-ML Toolkit, jekk jogħġbok ibgħat email qasira fl-indirizz li ġej: [protett bl-email] u inkludi l-informazzjoni li ġejja fl-ittra tiegħek:
Isem tal-utent GitHub
Organizzazzjoni (int taħdem jew tistudja)
Pożizzjoni (il-pożizzjoni attwali tiegħek fl-organizzazzjoni tiegħek, jew "Student" jew "Indipendenti").
Pajjiż
Għal dawk li qraw l-artiklu u huma interessati fil-kapaċitajiet ta 'InterSystems IRIS bħala pjattaforma għall-iżvilupp jew il-hosting ta' intelliġenza artifiċjali u magni tat-tagħlim tal-magni, nistednuk tiddiskuti xenarji possibbli li huma ta 'interess għall-intrapriża tiegħek. Inkunu kuntenti li nanalizzaw il-ħtiġijiet tal-kumpanija tiegħek u niddeterminaw flimkien pjan ta 'azzjoni; L-indirizz elettroniku ta' kuntatt tat-tim tagħna ta' esperti AI/ML - [protett bl-email].