Ky kjo artikull i kushtohet Python Gateway â njĂ« projekt komuniteti me kod tĂ« hapur pĂ«r platformĂ«n e tĂ« dhĂ«nave InterSystems IRIS. Ky projekt lejon orkestrimin e çdo algoritmi tĂ« mĂ«simit tĂ« makinerisĂ«, i krijuar nĂ« gjuhĂ«n Python (mjedisi kryesor pĂ«r shumĂ« ShkencĂ«tarĂ« tĂ« TĂ« DhĂ«nave), duke pĂ«rdorur bibliotekat e shumta tĂ« gatshme pĂ«r tĂ« ndihmuar nĂ« krijimin e zgjidhjeve adaptuese, robotizuese analitike AI/ML nĂ« platformĂ«n InterSystems IRIS. NĂ« kĂ«tĂ« artikull, do tĂ« tregoj se si InterSystems IRIS mund tĂ« orkestrojĂ« proceset nĂ« gjuhĂ«n Python, tĂ« realizojĂ« me efektivitet transferimin dyanshĂ«m tĂ« tĂ« dhĂ«nave dhe tĂ« krijojĂ« procese inteligjente biznesi.
Plani
- Hyrje.
- Mjetet.
- Instalimi.
- API.
- Ndëroperabiliteti.
- Jupyter Notebook.
- Përfundime.
- Lidhjet.
- MLToolkit.
Hyrje
Python është një gjuhë programimi në nivel të lartë, për qëllime të përgjithshme, e orientuar drejt rritjes së produktivitetit të zhvilluesit dhe lexueshmërisë së kodit. Në këtë seri artikujsh, do të flas për mundësitë e përdorimit të gjuhës Python në platformën InterSystems IRIS, duke qenë se fokusi kryesor i këtij artikulli është aplikimi i Python si gjuhë për krijimin dhe përdorimin e modeleve të mësimit të makinerisë.
Mësimi i makinerisë (ML) është një klasë metodash të inteligjencës artificiale, me karakteristikën e të cilës është jo zgjidhja e drejtpërdrejtë e problemit, por mësimi gjatë zgjidhjes së shumë problemeve të ngjashme.
Algoritmet dhe modelet e mësimit të makinerisë po bëhen gjithnjë e më të zakonshme. Ka shumë arsye për këtë, por gjithçka reduktohet në aksesueshmërinë, thjeshtësinë dhe arritjen e rezultateve praktike. A është klasterizimi ose madje modelimi me rrjete nervore një teknologji e re?
Sigurisht që jo, por tani nuk ka nevojë të shkruhen qindra mijëra rreshta kodi për të lançuar një model, dhe shpenzimet për krijimin dhe përdorimin e modeleve po bëhen gjithnjë e më të vogla.
Mjetet po evoluojnĂ« â ndonĂ«se nuk kemi mjete tĂ« plota tĂ« orientuara nga GUI pĂ«r AI/ML, progresi qĂ« kemi parĂ« me shumĂ« klasa tĂ« tjera tĂ« sistemeve informative, pĂ«r shembull, BI (nga shkrimi i kodit deri te pĂ«rdorimi i kornizave dhe zgjidhjeve me konfigurim tĂ« orientuar nga GUI), po ndiqet gjithashtu nĂ« mjetet pĂ«r krijimin e AI/ML. Ne tashmĂ« kemi kaluar fazĂ«n e shkruarjes sĂ« kodit dhe sot pĂ«rdorim korniza pĂ«r ndĂ«rtimin dhe trajnimin e modeleve.
Përmirësime të tjera, siç është mundësia për të shpërndarë një model të paratrainuar, kur përdoruesi përfundimtar duhet thjesht të përfundojë trajnimin e modelit me të dhënat e tij specifike, gjithashtu lehtësojnë fillimin e përdorimit të mësimit të makinerisë. Këto arritje e bëjnë shumë më të lehtë studimin e mësimit të makinerisë si për specialistët, ashtu edhe për kompanitë në tërësi.
Nga ana tjetër, ne po mbledhim gjithnjë e më shumë të dhëna. Falë një platforme të unifikuar të të dhënave si InterSystems IRIS, të gjitha këto informacione mund të përgatiten menjëherë dhe të përdoren si të dhëna fillestare për modelet e mësimit të makinerisë.
Me kalimin në cloud, nisja e projekteve AI/ML bëhet më e lehtë se kurrë. Ne mund të konsumohemi vetëm për burimet që na nevojiten. Më tepër, falë paralelizimit që ofrojnë platformat cloud, ne mund të kursejmë kohën e shpenzuar.
Por çfarĂ« ndodh me rezultatet? KĂ«tu gjithçka bĂ«het mĂ« e komplikuar. EkzistojnĂ« shumĂ« mjete pĂ«r ndĂ«rtimin e modeleve, pĂ«r tĂ« cilat do tĂ« flas mĂ« poshtĂ«. NdĂ«rtimi i njĂ« modeli tĂ« mirĂ« nuk Ă«shtĂ« e lehtĂ«, por çfarĂ« vjen mĂ« pas? TĂ« nxjerrim fitime nga pĂ«rdorimi i modelit nga biznesi gjithashtu Ă«shtĂ« njĂ« detyrĂ« e thjeshtĂ«. RrĂ«njĂ«t e problemit qĂ«ndrojnĂ« nĂ« ndarjen e ngarkesave analitike dhe transaksionale, dhe modeleve tĂ« tĂ« dhĂ«nave. Kur e stĂ«rvitim njĂ« model, ne zakonisht e bĂ«jmĂ« kĂ«tĂ« me tĂ« dhĂ«na historike. Por vendi pĂ«r modelin e ndĂ«rtuar Ă«shtĂ« nĂ« pĂ«rpunimin transaksional tĂ« tĂ« dhĂ«nave. ĂfarĂ« dobi ka modeli mĂ« i mirĂ« pĂ«r zbulimin e transaksioneve mashtruese, nĂ«se e aktivizojmĂ« atĂ« njĂ« herĂ« nĂ« ditĂ«? Mashtruesit janĂ« larguar me paratĂ«. Na nevojitet tĂ« trajnojmĂ« modelin me tĂ« dhĂ«na historike, por gjithashtu duhet ta aplikojmĂ« nĂ« kohĂ« reale me tĂ« dhĂ«na tĂ« reja qĂ« vijnĂ«, nĂ« mĂ«nyrĂ« qĂ« proceset tona biznesi tĂ« mund tĂ« veprojnĂ« nĂ« pĂ«rputhje me parashikimet e bĂ«ra nga modeli.
ML Toolkit është një paketë mjetesh, që ka si qëllim pikërisht këtë: të bashkojë modelet dhe mjedisin transaksional, në mënyrë që modelet e ndërtuara të mund të përdoren lehtësisht direkt në proceset tuaja biznesore. Python Gateway është një pjesë e ML Toolkit dhe siguron integrimin me gjuhën Python (ashtu si R Gateway, që është pjesë e ML Toolkit, siguron integrimin me gjuhën R).
Mjetet
Para se vazhdojmë, do doja të përshkruaja disa mjete dhe biblioteka për Python që do të përdorim më vonë.
Teknologjitë
- Python është një gjuhë programimi interpretative, me nivel të lartë, e cila shërben për qëllime të përgjithshme. Avantazhi kryesor i gjuhës është biblioteka e gjerë për llogaritje matematikore, ML dhe AI. Ashtu si ObjectScript, kjo është një gjuhë orientuar në objekte, por gjithçka përcaktohet në mënyrë dinamike dhe jo statike. Gjithashtu, gjithçka është një objekt. Artikujt e mëvonshëm supozojnë një njohuri të kalimtare me gjuhën. Nëse dëshironi të filloni mësimin, ju rekomandoj të filloni me .
- Për ushtrimet tona të ardhshme, instaloni .
- IDE: Unë përdor , por në përgjithësi ka disa të tjera . Nëse përdorni Atelier, ka një plugin Eclipse për zhvilluesit në Python. Nëse përdorni VS Code, ka një shtesë për Python.
- Notebook: në vend të IDE, mund të shkruani dhe ndani skenaret tuaj në notebook-e online. Një nga më popullorët është .
Bibliotekat
Ja një listë (jo të plotë) e biblioteka për mësimin e makinerive:
- â paketa themelore pĂ«r llogaritjet numerike.
- â struktura tĂ« dhĂ«nash me performancĂ« tĂ« lartĂ« dhe mjete pĂ«r analizĂ«n e tĂ« dhĂ«nave.
- â krijimi i grafike.
- â vizualizimi i tĂ« dhĂ«nave, i bazuar nĂ« matplotlib.
- â metoda tĂ« mĂ«simit tĂ« makinerive.
- â algoritme tĂ« mĂ«simit tĂ« makinerive sipas metodologjisĂ« sĂ« pĂ«rmirĂ«simit tĂ« gradĂ«s (Gradient Boosting).
- â NLP.
- â rrjetet nervore.
- â njĂ« platformĂ« pĂ«r ndĂ«rtimin e modeleve tĂ« mĂ«simit tĂ« makinerive.
- â njĂ« platformĂ« pĂ«r ndĂ«rtimin e modeleve tĂ« mĂ«simit tĂ« makinerive, qĂ« Ă«shtĂ« e orientuar drejt Python.
- â PMML nga modele tĂ« ndryshme.
Teknologjitë AI/ML lejojnë që biznesi të jetë më efikas dhe adaptiv. Për më tepër, sot këto teknologji po bëhen më të lehta për t'u zhvilluar dhe implementuar. Filloni të studioni teknologjitë AI/ML dhe se si ato mund t'ju ndihmojnë të rriteni.
Instalimi
Ka disa mënyra për të instaluar dhe përdorur Python Gateway:
- OS
- Windows
- Linux
- Mac
- Docker
- Përdorni një imazh nga DockerHub
- Krijoni imazhin tuaj
Pavarësisht nga mënyra e instalimit, do t'ju nevojitet kodi burimor. Vendi i vetëm për të shkarkuar kodin është . Ajo përmban lëshime stabile të testuara, thjesht merrni atë më të fundit. Aktualisht, ajo është 0.8, por me kalimin e kohës do të ketë edhe të reja. Mos e kloni/ngarko repo-in, shkarkoni lëshimin më të fundit.
OS
Nëse po instaloni Python Gateway në sistemin operativ, së pari (pavarësisht nga sistemi operativ) ju nevojitet të instaloni Python. Për këtë:
- . Rekomandohet që të instaloni Python në direktorinë e paracaktuar.
- Instaloni modul
dill:pip install dill. - Shkarko kodin ObjectScript (pra,
do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) në çdo zonë me produkte. Nëse dëshironi që një zonë ekzistuese të mbështesë produkte, kryeni:write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1). - Vendosni në folderin
bintë instancës suaj InterSystems IRIS. Skedari i bibliotekës duhet të jetë i aksesueshëm në rrugën e kthyerwrite ##class(isc.py.Callout).GetLib().
Windows
- Sigurohuni që variabli i mjedisit
PYTHONHOMEtregon për Python 3.6.7. - Sigurohuni që variabli sistemor i mjedisit
përpërmban variablënPYTHONHOME(ose direktorinë në të cilën tregon ajo).
Linux (Debian/Ubuntu)
- Kontrolloni që variabli i mjedisit
përpërmban/usr/libdhe/usr/lib/x86_64-linux-gnu. Përdorni skedarin/etc/environmentpër të vendosur variablat e mjedisit. - Në rast gabimesh
undefined symbol: _Py_TrueStructvendosni konfiguriminPythonLib. Gjithashtu në ka një seksion për Troubleshooting.
Mac
- Aktualisht mbështetet vetëm Python 3.6.7 nga . Kontroloni variablën
për.
Nëse keni ndryshuar variablat e mjedisit, rinisni produktin tuaj InterSystems.
Docker
Përdorimi i kontejnerëve ka disa përparësi:
- Portabiliteti
- Efikasitet
- Izolimi
- Lehtësia
- Imutabiliteti
Shikoni këtë për më shumë informacion lidhur me përdorimin e Docker me produktet InterSystems.
Të gjitha ndërtimet e Python Gateway deri tani janë bazuar në kontejnerë 2019.4.
Imazhi i gatshëm
Ekzekutoni: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latest, për të shkarkuar dhe nisur Python Gateway me InterSystems IRIS Community Edition. Këtu përfundon.
Krijoni imazhin tuaj
Për të ndërtuar imazhin docker, ekzekutoni në rrënjën e repository-t: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Sipas parazgjedhjes, imazhi ndBuildhet mbi imazhin store/intersystems/iris-community:2019.4.0.383.0, megjithatë ju mund ta ndryshoni këtë, duke vendosur variablën IMAGE.
PĂ«r tĂ« ndĂ«rtuar nga InterSystems IRIS, ekzekutoni: `docker build âbuild-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 âforce-rm âtag intersystemscommunity/irispy:latest`.
Pasi të ketë përfunduar, mund të nisni imazhin docker:
docker run -d
-p 52773:52773
-v //:/mount
--name irispy
intersystemscommunity/irispy:latest
--key /mount/iris.keyNëse po përdorni një imazh të bazuar në InterSystems IRIS Community Edition, mund të mosSpecifikoni çelësin.
Komentet
- Procesi i testit
isc.py.test.Processruan një sërë imazhesh në një katalog të përkohshëm. Ndoshta dëshironi të ndryshoni këtë rrugë në një katalog të montuar. Për ta bërë këtë, redaktoni konfiguriminWorkingDirduke specifikuar direktorinë e montuar. - Për akses në terminal realizoni:
docker exec -it irispy sh. - Aksesi në Portalin e Menaxhimit të Sistemit me identifikues
SuperUser/SYS. - Për të ndaluar kontejnerin, realizoni:
docker stop irispy && docker rm --force irispy.
Kontrolli i instalimit
Pas instalimit të Python Gateway, është mirë të kontrolloni që funksionon. Ekzekutoni këtë kod në terminalin InterSystems IRIS:
set sc = ##class(isc.py.Callout).Setup()
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
write varSi rezultat, duhet tĂ« shfaqet HELLO â vlera e variablit Python x. NĂ«se statusi i kthyer sc Ă«shtĂ« njĂ« gabim ose var i zbrazĂ«t, kontrolloni .
API
Python Gateway Ă«shtĂ« instaluar, dhe ju e keni siguruar qĂ« funksionon. ĂshtĂ« koha ta filloni atĂ«!
Interface kryesore për Python është isc.py.Main. Ai ofron grupet e mëposhtme të metodave (të gjitha kthejnë %Status):
- Ekzekutimi i kodit
- Transmetimi i të dhënave
- Auxiliary
Ekzekutimi i kodit
Këto metoda lejojnë ekzekutimin e kodit të rastësishëm Python.
SimpleString
SimpleString â Ă«shtĂ« metoda kryesore. Ajo merr 4 argumente opsionale:
codeâ njĂ« varg kodi pĂ«r tĂ« ekzekutuar. Simboli i kalimit tĂ« linjĂ«s:$c(10).returnVariableâ emri i variablit pĂ«r kthim.serializationâ si tĂ« serializonireturnVariable. 0 â string (me defaut), 1 â repr.rezultatiâ ByRef referenca nĂ« variablĂ«n nĂ« tĂ« cilĂ«n shkruhet vlerareturnVariable.
Më sipër ne ekzekutuam:
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).Në këtë shembull ne i japim një vlerë variablit Python x vlerën Përshëndetje dhe duam të kthejmë vlerën e variablit Python x në një variabël ObjectScript var.
ExecuteCode
ExecuteCode është një alternativë më e sigurt dhe më pak e kufizuar SimpleString.
Vargjet në platformën InterSystems IRIS janë të kufizuara në 3 641 144 karaktere, dhe nëse dëshiron të ekzekutosh një copë më të gjatë kodi, duhet të përdorësh rrjedhat.
Pranohen dy argumente:
codeâ njĂ« varg ose rrjedhĂ« kodi Python pĂ«r ekzekutim.variableâ (opsionale) cakton rezultatin e ekzekutimitcodekĂ«tij variabli Python.
Për shembull:
set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").Në këtë shembull ne shumzojmë 2 me 3 dhe e regjistrojmë rezultatin në një variabël Python y.
Transmetimi i të dhënave
Dërgoni të dhënat në Python dhe prapa.
Python -> InterSystems IRIS
Ka 4 mënyra për të marrë vlerën e variablit Python në InterSystems IRIS, në varësi të serializimit që ju nevojitet:
Stringpër tipe të dhënash të thjeshta dhe debug.Reprpër ruajtjen e objekteve të thjeshta dhe për debug.JSONpër manipulimin e lehtë të të dhënave në anën e InterSystems IRIS.Picklepër ruajtjen e objekteve.
Këto metoda lejojnë marrjen e variablave nga Python si një string ose si rrjedha.
GetVariable(variable, serialization, .stream, useString)â merrserializationvariabĂ«lvariablenĂ«NĂ« modul stream Ă«shtĂ« shtuar direktiva '. NĂ«seuseStringnĂ«se Ă«shtĂ« 1 dhe serializimi vendoset nĂ« string, atĂ«herĂ« kthehet string dhe jo rrjedhĂ«.GetVariableJson(variable, .stream, useString)â merr serializimin JSON tĂ« variablit.GetVariablePickle(variable, .stream, useString, useDill)â merr serializimin Pickle (ose Dill) tĂ« variablit.
Le të provojmë të marrim variablën tonë y.
set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6InterSystems IRIS -> Python
Po ngarkojmë të dhëna nga InterSystems IRIS në Python.
ExecuteQuery(query, variable, type, namespace)â krijon njĂ« grup tĂ« dhĂ«nash (pandasdataframeoselist) nga njĂ« kĂ«rkesĂ« SQL dhe e vendos atĂ« nĂ« njĂ« variabĂ«l Python.variable. Paketaisc.pyduhet tĂ« jetĂ« e disponueshme nĂ« hapĂ«sirĂ«namespaceâ aty do tĂ« ekzekutohet kĂ«rkesa.ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace)â ngarkon tĂ« dhĂ«nat e globalitglobalnga subskiptastartnĂ«endnĂ« Python si njĂ« variabĂ«l tĂ« tipitlloji:list, ose pandas.dataframePĂ«rshkrimi i argumenteve opsionalemaskdhelabelsĂ«shtĂ« e disponueshme nĂ« dokumentimin e klasĂ«s dhe nĂ« depo .ExecuteClass(class, variable, type, start, end, properties, namespace)â ngarkon tĂ« dhĂ«nat e klasĂ«sclassnga idstartnĂ«endnĂ« Python si njĂ« variabĂ«l tĂ« tipitlloji:list, ose pandas.dataframe.propertiesâ lista (ndashkimi Ă«shtĂ« presja) e pronave tĂ« klasĂ«s qĂ« duhen ngarkuar nĂ« grupin e tĂ« dhĂ«nave. MbĂ«shteten maskat.*dhe?. Me parametra standardĂ« â*(tĂ« gjitha pronat). Prona%%CLASSNAMEneglizhohet.ExecuteTable(table, variable, type, start, end, properties, namespace)â ngarkon tĂ« dhĂ«nat e tabelĂ«stablenga idstartnĂ«endnĂ« Python.
ExecuteQuery â Ă«shtĂ« universale (çdo kĂ«rkesĂ« SQL e saktĂ« do tĂ« dĂ«rgohet nĂ« Python). MegjithatĂ«, ExecuteGlobal dhe mbĂ«shtjellĂ«sat e tij ExecuteClass dhe ExecuteTable punojnĂ« me disa kufizime. Ato janĂ« shumĂ« mĂ« tĂ« shpejta (3-5 herĂ« mĂ« tĂ« shpejtĂ« se ODBC-driverv dhe 20 herĂ« mĂ« tĂ« shpejtĂ« ExecuteQuery). Informacione shtesĂ« janĂ« nĂ« .
Të gjitha këto metoda mbështesin kalimin e të dhënave nga çdo hapësirë. Paketa isc.py duhet të jetë e disponueshme në hapësirën e synuar.
ExecuteQuery
ExecuteQuery(request, variable, type, namespace) â kalimi i rezultateve tĂ« çdo kĂ«rkese SQL tĂ« saktĂ« nĂ« Python. Ky Ă«shtĂ« metoda mĂ« e ngadaltĂ« e kalimit tĂ« tĂ« dhĂ«nave. PĂ«rdorni kĂ«tĂ« nĂ«se ExecuteGlobal dhe mbĂ«shtjellĂ«sat e tij nuk janĂ« tĂ« disponueshme.
Argumentet:
queryâ kĂ«rkesa SQL.variableâ emri i variablit Python nĂ« tĂ« cilin shkruhen tĂ« dhĂ«nat.llojiâlistose Pandasdataframe.namespaceâ hapĂ«sira nĂ« tĂ« cilĂ«n do tĂ« ekzekutohet kĂ«rkesa.
ExecuteGlobal
ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) â kalimi i globalit nĂ« Python.
Argumentet:
globalâ emri i globalit pa^variableâ emri i variablit Python nĂ« tĂ« cilin shkruhen tĂ« dhĂ«nat.llojiâlistose Pandasdataframe.startâ subscripti i parĂ« i globalit. Detyrimisht%Integer.endâ subscripti i fundit i globalit. Detyrimisht%Integer.maskâ maske e vlerave globale. MaskĂ«n mund tĂ« jetĂ« mĂ« e shkurtĂ«r se numri i fushave nĂ« global (nĂ« kĂ«tĂ« rast, fushat nĂ« fund do tĂ« shpĂ«rfillen). Si tĂ« formatohet maska:+kalo vlerĂ«n ashtu siç Ă«shtĂ«.-shpĂ«rfill vlerĂ«n.bâ Tipi logjik (0âFalse, gjithĂ« tĂ« tjerat âE vĂ«rtetĂ«).dâ Data (nga $horolog, nĂ« Windows nga 1970, nĂ« Linux nga 1900).tâ Koha ($horolog, sekondat pas mesnatĂ«s).mâ Koha e shĂ«njĂ«s (string formati VITI-MUAAJ-DITĂ ORĂ:MINUT:SEKOND).
labelsâ %Lista e emrave tĂ« kolonave. Elementi i parĂ« â emri i subskriptit.namespaceâ hapĂ«sira nĂ« tĂ« cilĂ«n do tĂ« ekzekutohet kĂ«rkesa.
ExecuteClass
Mbushja mbi ExecuteGlobal. Në bazë të përkufizimit të klasës përgatit thirrjen ExecuteGlobal dhe e thërret atë.
ExecuteClass(class, variable, type, start, end, properties, namespace) â kalimi i tĂ« dhĂ«nave tĂ« klasĂ«s nĂ« Python.
Argumentet:
classâ emri i klasĂ«svariableâ emri i variablit Python nĂ« tĂ« cilin shkruhen tĂ« dhĂ«nat.llojiâlistose Pandasdataframe.startâ Id fillestar.endâ Id pĂ«rfundimtarpropertiesâ lista (ndashkimi Ă«shtĂ« presja) e pronave tĂ« klasĂ«s qĂ« duhen ngarkuar nĂ« grupin e tĂ« dhĂ«nave. MbĂ«shteten maskat.*dhe?. Me parametra standardĂ« â*(tĂ« gjitha pronat). Prona%%CLASSNAMEneglizhohet.namespaceâ hapĂ«sira nĂ« tĂ« cilĂ«n do tĂ« ekzekutohet kĂ«rkesa.
TĂ« gjitha vetitĂ« kalohen ashtu siç janĂ« pĂ«rveç vetive tĂ« tipave te, %Time, %Boolean dhe %TimeStamp â ato konvertohen nĂ« klasat pĂ«rkatĂ«se tĂ« Python.
ExecuteTable
Mbushja mbi ExecuteClass. Transmeton emrin e tabelës në emrin e klasës dhe thërret ExecuteClass. Nënshkrimi:
ExecuteTable(table, variable, type, start, end, properties, namespace) â kalimi i tĂ« dhĂ«nave tĂ« tabelĂ«s nĂ« Python.
Argumentet:
tableâ emri i tabelĂ«s.
Të gjitha argumentet e tjera kalohen ashtu siç janë nëExecuteClass.
Shënime
ExecuteGlobal,ExecuteClassdheExecuteTablepunojnĂ« po aq shpejt.ExecuteGlobal20 herĂ« mĂ« shpejt seExecuteQuerynĂ« grupe tĂ« mĂ«dha tĂ« tĂ« dhĂ«nave (koha e kalimit mĂ« shumĂ« se >0.01 sekondĂ«).ExecuteGlobal,ExecuteClassdheExecuteTablepunojnĂ« nĂ« globalet me kĂ«tĂ« strukturĂ«:^global(çelĂ«si) = $lb(prop1, prop2, ..., propN)kukeyâ numĂ«r i plotĂ«.- PĂ«r
ExecuteGlobal,ExecuteClassdheExecuteTablerange e mbështetur të vleravetepërputhet me rangunmktimedhe varet nga SO (: 1970-01-01, 1900-01-01, ). Përdorni%TimeStamppër kalimin e të dhënave jashtë këtij rangu ose përdorni pandas dataframe pasi ky është një kufizim vetëm për listën. - Për
ExecuteGlobal,ExecuteClassdheExecuteTabletë gjitha argumentet përveç burimeve të të dhënave (globalit, klasës ose tabelës) dhe variablit janë opsionale.
Shembuj
Klasa testuese ka një metodë që demonstruese të gjitha variantet e kalimit të të dhënave:
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"
// Argumentet e zakonshme
set variable = "df"
set type = "dataframe"
set start = 1
set end = $g(^isc.py.test.PersonD, start)
// Metoda 0: ExecuteGlobal pa argumente
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 0, type)
// Metoda 1: ExecuteGlobal me argumente
// Kur dërgohet global, emrat e fushave përcaktohen manualisht
// globalKey - emri i subskiptit
set labels = $lb("globalKey", "Name", "DOB", "TS", "RandomTime", "AgeYears", "AgeDecimal", "AgeDouble", "Bool")
// mask përmban një element më pak se labels sepse "globalKey" - emri i subskiptit
// Anashkalojmë %%CLASSNAME
set mask = "-+dmt+++b"
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 1, type, start, end, mask, labels)
// Metoda 2: ExecuteClass
set sc = ##class(isc.py.Main).ExecuteClass(class, variable _ 2, type, start, end)
// Metoda 3: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteTable(table, variable _ 3, type, start, end)
// Metoda 4: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteQuery(query, variable _ 4, type)Thirrni metodën do ##class(isc.py.test.Person).Test() për të parë si funksionojnë të gjitha metodat e transmetimit të të dhënave.
Metoda ndihmëse
GetVariableInfo(variable, serialization, .defined, .type, .length)â merr informacion pĂ«r variablin: nĂ«se Ă«shtĂ« e pĂ«rcaktuar, klasa dhe gjatĂ«si e serializimit.GetVariableDefined(variable, .defined)â a Ă«shtĂ« e pĂ«rcaktuar variabla.GetVariableType(variable, .type)â merr klasĂ«n e variablit.GetStatus()â merr dhe fshin pĂ«rjashtimin e fundit nĂ« anĂ«n e Python.GetModuleInfo(module, .imported, .alias)â merr variablĂ«n e modulit dhe statusin e importit.GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments)â merr informacion pĂ«r funksionin.
Interoperabiliteti
Keni mësuar si të thirrni Python Gateway nga terminali, tani do të fillojmë ta përdorim atë në prodhim. Baza e ndërveprimit me Python në këtë mënyrë është isc.py.ens.Operation. Ai na lejon të:
- Kryejmë kodin në Python
- Ruajmë/Ripërimë kontekstin e Python
- Ngarko dhe merr të dhëna nga Python
Në parim, operimi në Pyhton është një mbështjellës mbi isc.py.Main. Operacioni isc.py.ens.Operation jep mundësinë e ndërveprimit me procesin e Python nga prodhimet InterSystems IRIS. Mbështetet pesë kërkesa:
isc.py.msg.ExecutionRequestpër të ekzekutuar kodin në Python. Kthenisc.py.msg.ExecutionResponseme rezultatin e ekzekutimit dhe vlerat e variablave të kërkuara.isc.py.msg.StreamExecutionRequestpër të ekzekutuar kodin në Python. Kthenisc.py.msg.StreamExecutionResponserezultatin e ekzekutimit dhe vlerat e variablave të kërkuara. E ngjashmeisc.py.msg.ExecutionRequest, por pranon dhe kthen rrjedha në vend të vargjeve.isc.py.msg.QueryRequestpër të transmetuar rezultatin e ekzekutimit të kërkesës SQL. KthenEns.Response.isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequestpër të transferuar të dhënat e globit/klasës/tabelës. KthehetEns.Response.isc.py.msg.SaveRequestpër ruajtjen e kontekstit Python. KthehetEns.StringResponseme identifikuesin e kontekstit.isc.py.msg.RestoreRequestpër rikthimin e kontekstit Python.Për më tepër,
isc.py.ens.Operationka dy pika tĂ« vendosjes:Initializerâ zgjedhja e klasĂ«s qĂ« implementon ndĂ«rfaqenisc.py.init.Abstract. Ai mund tĂ« pĂ«rdoret pĂ«r tĂ« ngarkuar funksione, module, klasa etj. Ai ekzekutohet njĂ« herĂ« gjatĂ« nisjes sĂ« procesit.PythonLibâ (vetĂ«m pĂ«r Linux) nĂ«se shihni gabime gjatĂ« ngarkimit, vendoseni vlerĂ«n e tij nĂ«libpython3.6m.soose madje nĂ« rrugĂ«n e plotĂ« deri nĂ« bibliotekĂ«n Python.
Krijimi i procesëve biznesorë
Janë në dispozicion dy klasa që lehtësojnë zhvillimin e procesëve biznesorë:
isc.py.ens.ProcessUtilslejon nxjerrjen e anotacioneve nga aktivitete me zëvendësim variablash.isc.py.util.BPEmulatorlejon testimin e lehtë të procesëve biznesorë me Python. Ai mund të ekzekutojë procesin biznesor (pjesë në gjuhën Python) në procesin aktual.
Zëvendësimi i variablave
Të gjitha proceset e biznesit të trashëguara nga isc.py.ens.ProcessUtils, mund të përdorin metodën GetAnnotation(name) për të marrë vlerën e anotacionit të aktivitetit në emrin e tij. Anotacioni i aktivitetit mund të përmbajë variabla që do të llogariten në anën e InterSystems IRIS përpara se të kalohen në Python. Ja sintaksa për zëvendësimin e variablave:
${class:method:arg1:...:argN}â thirrje e metodĂ«s#{expr}â ekzekuto kodin nĂ« gjuhĂ«n ObjectScript.
Një shembull është në procesin e testimit të biznesit isc.py.test.Process, për shembull, në aktivitetin Matrica e Korrellacionit: Grafi: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Në këtë shembull:
#{process.WorkDirectory}kthen pronën WorkDirectory të objektitprocess, që është një instancë e klasësisc.py.test.Processdmth. procesi aktual i biznesit.${%PopulateUtils:Integer:1:100}thërret metodënIntegerklasës%PopulateUtils, duke kaluar argumentet1dhe100, duke kthyer një numër të rastësishëm të plotë në intervalin1...100.
Procesi i testimit të biznesit
Produkti i testimit dhe procesi i testimit të biznesit janë të disponueshëm si pjesë e Gateway Python. Për t'i përdorur ata:
- Në terminalin e OS-së ekzekutoni:
pip install pandas matplotlib seaborn. - NĂ« terminalin e InterSystems IRIS ekzekutoni:
do ##class(isc.py.test.CannibalizationData).Import()për të plotësuar të dhënat testuese. - Nisni produktin
isc.py.test.Production. - Dërgo një kërkesë të tipit
Ens.Requestnëisc.py.test.Process.
Le të shohim se si funksionon gjithçka së bashku. Hapni isc.py.test.Process në redaktorin BPL:

Ekzekutimi i kodit
Thirrja më e rëndësishme është ekzekutimi i kodit Python:

Kërkesa përdoret isc.py.msg.ExecutionRequest, këtu janë pronat e tij:
Codeâ Kodi Python.SeparateLinesâ a duhet tĂ« ndahet kodi nĂ« linja pĂ«r ekzekutim.$c(10)(n) pĂ«rdoret pĂ«r tĂ« ndarĂ« rreshtat. Vini re se NUK rekomandohet tĂ« pĂ«rpunoni mesazhin nĂ« tĂ«rĂ«si menjĂ«herĂ«, kjo funksion Ă«shtĂ« i destinuar vetĂ«m pĂ«r pĂ«rpunimdefdhe shprehje tĂ« ngjashme me shumĂ« rreshta. NĂ« mĂ«nyrĂ« tĂ« parazgjedhur0.Variablatâ njĂ« listĂ« e ndarĂ« me presje e variablave qĂ« do tĂ« shtohen nĂ« pĂ«rgjigje.Serializimiâ Si tĂ« serializoni variablat qĂ« dĂ«shirojmĂ« tĂ« kthejmĂ«. Opcionet:Str,Repr,JSON,PickledheDill, nĂ« mĂ«nyrĂ« tĂ« parazgjedhurStr.
Në rastin tonë, ne vetëm po vendosim pronën Code, kështu që të gjitha pronat e tjera përdorin vlerat e parazgjedhura. Ne e vendosim atë duke thirrur process.GetAnnotation("Import pandas"), e cila gjatë ekzekutimit kthen anotimin pas zëvendësimit të variablave. Në fund të fundit, kodi import pandas as pd do të dërgohet në Python. GetAnnotation mund të jetë e dobishme për marrjen e skenarëve shumë-rreshtorë Python, por nuk ka kufizime mbi këtë mënyrë të marrjes së kodit. Ju mund ta vendosni pronën Code në çdo mënyrë që ju përshtatet.
Marrja e variablave
NjĂ« sfidĂ« tjetĂ«r interesante duke pĂ«rdorur isc.py.msg.ExecutionRequest â Matrica e Korrellacionit: Tabular:

Ajo llogarit Matrën e Korrellacionit në anën e Python dhe nxjerr variablin corrmat prapa në InterSystems IRIS në formatin JSON, duke vendosur pronat e kërkesës:
Variablat:"corrmat"Serializimi:"JSON"
Ne mund t'i shohim rezultatet në Visual Trace:

Dhe nëse na nevojitet kjo vlerë në BP, mund të merret kështu: callresponse.Variables.GetAt("corrmat").
Transmetimi i të dhënave
Më pas, do të flasim për transferimin e të dhënave nga InterSystems IRIS në Python, të gjitha kërkesat për transferimin e të dhënave implementojnë ndërfaqen isc.py.msg.DataRequest, e cila ofron pronat e mëposhtme:
Variableâ variabla Python nĂ« tĂ« cilin shkruhen tĂ« dhĂ«nat.Tipiâ lloji i variablĂ«s:dataframe(dataframe pandas) oselist.Namespaceâ zona nga e cila marrim tĂ« dhĂ«nat. Paketaisc.pyduhet tĂ« jetĂ« e aksesueshme nĂ« kĂ«tĂ« zonĂ«. Kjo mund tĂ« jetĂ« njĂ« zonĂ« pa mbĂ«shtetje pĂ«r produktet.
Në bazë të kësaj ndërfaqe janë implementuar 4 klasat e kërkesave:
isc.py.msg.QueryRequestâ vendosni pronĂ«nQuerypĂ«r tĂ« transferuar kĂ«rkesĂ«n SQL.isc.py.msg.ClassRequestâ vendosni pronĂ«nClasspĂ«r tĂ« transferuar tĂ« dhĂ«nat e klasĂ«s.isc.py.msg.TableRequestâ vendosni pronĂ«nTabelapĂ«r tĂ« transferuar tĂ« dhĂ«nat e tabelĂ«s.isc.py.msg.GlobalRequestâ vendosni pronĂ«nGlobalpĂ«r tĂ« transferuar tĂ« dhĂ«nat e globalit.
Në procesin e testimit, shikoni aktivitetin RAWindex isc.py.msg.QueryRequest tregon në veprim.

Ruajtja/rikthimi i kontekstit Python
Në fund, ne mund të ruajmë kontekstin Python në InterSystems IRIS, për ta bërë këtë, do të dërgojmë isc.py.msg.SaveRequest me argumentet:
Maskâ RuajnĂ« vetĂ«m variablat qĂ« pĂ«rmbushin maskĂ«n. MbĂ«shteten*dhe?. Shembull:"Data*, Figure?". Si parazgjedhje*.MaxLengthâ GjatĂ«sia maksimale e variablit tĂ« ruajtur. NĂ«se serializimi i variablit Ă«shtĂ« mĂ« i gjatĂ«, ai do tĂ« injorohet. Vendosni 0 pĂ«r tĂ« pranuar variablat me çdo gjatĂ«si. NĂ« parazgjedhje$$$MaxStringLength.Emriâ Emri i kontekstit (opsional).PĂ«rshkrimiâ PĂ«rshkrimi i kontekstit (opsional).
Kthen Ens.StringResponse me Id i kontekstit të ruajtur. Në procesin e testimit, shikoni aktivitetin Ruaj Kontekstin.
Kërkesa përkatëse isc.py.msg.RestoreRequest ngarkon kontekstin nga InterSystems IRIS në Python:
ContextIdâ identifikuesi i kontekstit.Pastroniâ pastroni kontekstin para rikthimit.
Jupyter Notebook
â ky Ă«shtĂ« njĂ« aplikacion web me burim tĂ« hapur qĂ« lejon krijimin e notebook-Ă«ve, tĂ« cilat pĂ«rmbajnĂ« kod, vizualizime dhe tekst dhe t'i publikoni ato. Python Gateway lejon shqyrtimin dhe redaktimin e proceseve BPL nĂ« formĂ«n e Jupyter Notebook. Vini re se aktualisht pĂ«rdoret ekzekutori standard Python 3.
Ky shtesë supozon se anotimet përmbajnë kod Python dhe përdorin emrat e aktiviteteve si tituj të mëparshëm. Tani është e mundur të zhvilloni proceset e biznesit PythonGateway në Jupyter Notebook. Këto janë mundësitë:
- Të krijoni procese të reja të biznesit
- TĂ« fshini proceset e biznesit
- Të krijoni aktivitete të reja
- TĂ« modificarni aktivitete
- TĂ« fshini aktivitete
Ja . Dhe disa screenshot-e:
Eksploruesi i proceseve

Redaktori i procesit

Instalimi
- Do t'ju nevojitet InterSystems IRIS 2019.2+.
- Instaloni PythonGateway v0.8+ (nevojitet vetëm
isc.py.util.Jupyter,isc.py.util.JupyterCheckpointsdheisc.py.ens.ProcessUtils). - Përditësoni kodin ObjectScript nga depoja.
- Kryeni
do ##class(isc.py.util.Jupyter).Install()dhe ndiqni udhëzimet.
.
Përfundimet
MLToolkit â njĂ« paketĂ« mjetesh, qĂ«llimi i sĂ« cilĂ«s Ă«shtĂ« tĂ« bashkojĂ« modelet dhe ambientin transaksional, nĂ« mĂ«nyrĂ« qĂ« modelet e ndĂ«rtuara tĂ« mund tĂ« pĂ«rdoren lehtĂ«sisht direkt nĂ« proceset tuaja tĂ« biznesit. Python Gateway Ă«shtĂ« pjesĂ« e MLToolkit dhe siguron integrimin me gjuhĂ«n Python duke lejuar orkestrimin e çdo algoritmi tĂ« mĂ«simit tĂ« rendit, tĂ« krijuar nĂ« gjuhĂ«n Python (ambienti kryesor pĂ«r shumĂ« Data Scientists), duke pĂ«rdorur shumĂ« biblioteka tĂ« gatshme pĂ«r krijimin e shpejtĂ« tĂ« zgjidhjeve analitike AI/ML tĂ« adaptueshme dhe robotizuara nĂ« platformĂ«n InterSystems IRIS.
Linket
MLToolkit
Grupi i përdoruesve të MLToolkit është një depo private GitHub, e krijuar si pjesë e organizatës korporative GitHub të InterSystems. Ajo i drejtohet përdoruesve të jashtëm që instalojnë, studiojnë ose tashmë përdorin komponentët e MLToolkit, përfshirë Python Gateway. Në grupin është në dispozicion një sërë rastesh të realizuara (me kod burimi dhe të dhëna testimi) në fushat e marketingut, prodhimit, mjekësisë dhe shumë industrive të tjera. Për t'u bashkuar me grupin e përdoruesve të ML Toolkit, ju lutemi dërgoni një mesazh të shkurtër me email në adresën e mëposhtme: dhe tregoni në letrën tuaj të dhënat e mëposhtme:
- Emri i përdoruesit GitHub
- Organizata (ku punoni ose studioni)
- Pozita (pozita juaj aktuale në organizatën tuaj, ose "Student", ose "I Pavarur").
- Shteti
Për ata që e lexuan artikullin dhe janë të interesuar për mundësitë e InterSystems IRIS si një platformë për zhvillimin ose vendosjen e mekanizmave të inteligjencës artificiale dhe mësimit të makinerive, ne ofrojmë të diskutojmë skenarë të mundshëm që janë të rëndësishëm për ndërmarrjen tuaj. Ne jemi të gatshëm të analizojmë nevojat e ndërmarrjes suaj dhe së bashku të përcaktojmë një plan veprimi; adresa kontaktuese e grupit tonë të ekspertëve të AI/ML është .
Burimi: habr.com
