Python Gateway by InterSystems IRIS

Hierdie artikel handel oor Python Gateway, 'n oopbron-gemeenskapsprojek vir die InterSystems IRIS-dataplatform. Hierdie projek stel jou in staat om enige masjienleeralgoritmes wat in Python geskep is (die hoofomgewing vir baie datawetenskaplikes) te orkestreer, om talle klaargemaakte biblioteke te gebruik om vinnig aanpasbare, robotiese analitiese AI / ML-oplossings op die InterSystems IRIS-platform te skep. In hierdie artikel sal ek jou wys hoe InterSystems IRIS Python-prosesse kan orkestreer, doeltreffende tweerigting-data-oordrag kan uitvoer en intelligente besigheidsprosesse kan skep.

plan

  1. Inleiding.
  2. Gereedskap.
  3. Installasie.
  4. API.
  5. Interoperabiliteit.
  6. Jupyter Notaboek.
  7. Gevolgtrekkings.
  8. Skakels.
  9. M.L. Toolkit.

Inleiding

Python is 'n hoëvlak, algemene programmeertaal wat daarop gefokus is om ontwikkelaarproduktiwiteit en kodeleesbaarheid te verbeter. In hierdie reeks artikels sal ek praat oor die moontlikhede om die Python-taal op die InterSystems IRIS-platform te gebruik, terwyl die hooffokus van hierdie artikel die gebruik van Python as 'n taal vir die skep en toepassing van masjienleermodelle is.

Masjienleer (ML) is 'n klas kunsmatige intelligensie-metodes, waarvan die kenmerkende kenmerk nie die direkte oplossing van 'n probleem is nie, maar leer in die proses om baie soortgelyke probleme op te los.

Masjienleeralgoritmes en -modelle word al hoe meer algemeen. Daar is baie redes hiervoor, maar dit kom alles neer op toeganklikheid, eenvoud en die bereiking van praktiese resultate. Is groepering of selfs neurale netwerkmodellering 'n nuwe tegnologie?

Natuurlik nie, maar deesdae is dit nie nodig om honderde duisende reëls kode te skryf om een ​​model te laat loop nie, en die koste van die skep en gebruik van modelle word al hoe kleiner.

Gereedskap ontwikkel - hoewel ons nie ten volle GUI-georiënteerde AI/ML-gereedskap het nie, word die vordering wat ons gesien het met baie ander klasse inligtingstelsels soos BI (van die skryf van kode tot die gebruik van raamwerke en GUI-georiënteerde konfigureerbare oplossings) ook gesien. in AI/ML-skeppingsinstrumente. Ons het reeds die stadium van die skryf van kode geslaag en vandag gebruik ons ​​raamwerke vir die bou en opleiding van modelle.

Ander verbeterings, soos die vermoë om 'n vooraf-opgeleide model te propageer waar die eindgebruiker eenvoudig die model op hul spesifieke data moet klaar oefen, maak dit ook makliker om masjienleer te begin toepas. Hierdie vooruitgang maak dit baie makliker om masjienleer te leer, beide vir professionele persone en vir maatskappye as 'n geheel.

Aan die ander kant samel ons meer en meer data in. Met 'n verenigde dataplatform soos InterSystems IRIS kan al hierdie inligting onmiddellik voorberei en as insette vir masjienleermodelle gebruik word.

Met die oorgang na die wolk is die bekendstelling van KI/ML-projekte makliker as ooit. Ons kan net die hulpbronne gebruik wat ons nodig het. Boonop, danksy die parallelisering wat deur wolkplatforms aangebied word, kan ons vermorsde tyd bespaar.

Maar wat van resultate? Dit is waar dinge meer ingewikkeld raak. Daar is baie gereedskap om modelle te bou, wat ek volgende sal bespreek. Om 'n goeie model te bou is nie maklik nie, maar wat volgende? Om voordeel te trek uit die gebruik van die model deur 'n besigheid is ook 'n nie-onbelangrike taak. Die wortel van die probleem is die skeiding van analitiese en transaksionele werkladings en datamodelle. Wanneer ons 'n model oplei, doen ons dit gewoonlik op historiese data. Maar die plek vir die gekonstrueerde model is in transaksionele dataverwerking. Wat help die beste model vir opsporing van bedrieglike transaksies as ons dit een keer per dag uitvoer? Die swendelaars is lankal weg met die geld. Ons moet die model op historiese data oplei, maar ons moet dit ook intyds toepas op nuwe inkomende data sodat ons besigheidsprosesse kan optree volgens die voorspellings wat deur die model gemaak word.

ML Toolkit is 'n gereedskapstel wat presies dit doen: modelle bymekaar bring en 'n transaksionele omgewing sodat die modelle wat jy bou maklik direk in jou besigheidsprosesse gebruik kan word. Python Gateway is deel van die ML Toolkit en bied integrasie met die Python-taal (soortgelyk aan R Gateway, as deel van die ML Toolkit bied integrasie met die R-taal).

Gereedskap

Voordat ons voortgaan, wil ek 'n paar Python-nutsgoed en -biblioteke beskryf wat ons later sal gebruik.

Tegnologie

  • Python is 'n geïnterpreteerde, algemene doel, hoëvlak programmeertaal. Die belangrikste voordeel van die taal is 'n groot biblioteek van wiskundige, ML en KI biblioteke. Soos ObjectScript, is dit 'n objekgeoriënteerde taal, maar alles word dinamies gedefinieer, nie staties nie. Alles is ook 'n voorwerp. Latere artikels veronderstel 'n verbygaande vertroudheid met die taal. As jy wil begin leer, beveel ek aan om met dokumentasie.
  • Vir ons volgende oefeninge, stel Python 3.6.7 64bit.
  • IDE: Ek gebruik PyCharm, maar in die algemeen много. As jy Atelier gebruik, is daar 'n Eclipse-inprop vir Python-ontwikkelaars. As jy VS-kode gebruik, is daar 'n uitbreiding vir Python.
  • Notaboek: In plaas van 'n IDE, kan jy jou skrifte in aanlyn notaboeke skryf en deel. Die gewildste van hulle is jupyter.

biblioteke

Hier is 'n (gedeeltelike) lys van masjienleerbiblioteke:

  • Lomp — 'n fundamentele pakket vir presiese berekeninge.
  • pandas — hoëprestasie datastrukture en data-analise-instrumente.
  • matplotlib - Skep van kaarte.
  • Seebaard - datavisualisering gebaseer op matplotlib.
  • Sklearn - masjienleermetodes.
  • XGBoost - masjienleeralgoritmes binne die Gradient Boosting-metodologie.
  • Gensim - NLP.
  • Keras - neurale netwerke.
  • Tensorstroom is 'n platform vir die skep van masjienleermodelle.
  • PyTorch is 'n platform vir die skep van masjienleermodelle gefokus op Python.
  • Nyoka - PMML van verskeie modelle.

KI/ML-tegnologie maak besigheid meer doeltreffend en aanpasbaar. Boonop word hierdie tegnologie vandag makliker om te ontwikkel en te implementeer. Begin om te leer oor KI/ML-tegnologieë en hoe dit jou organisasie kan help groei.

installasie

Daar is verskeie maniere om Python Gateway te installeer en te gebruik:

  • bedryfstelsel
    • Windows
    • Linux
    • Mac
  • Docker
    • Gebruik die prent van DockerHub
    • Skep jou eie voorkoms

Ongeag die installasiemetode, sal jy die bronkode nodig hê. Die enigste plek om die kode af te laai is vrystellings bladsy. Dit bevat beproefde stabiele vrystellings, gryp net die nuutste een. Op die oomblik is dit 0.8, maar mettertyd sal daar nuwes wees. Moenie die bewaarplek kloon/aflaai nie, laai die nuutste weergawe af.

bedryfstelsel

As jy Python Gateway op 'n bedryfstelsel installeer, moet jy eers Python installeer (ongeag die bedryfstelsel). Vir dit:

  1. Installeer Python 3.6.7 64 bit. Dit word aanbeveel om Python in die verstekgids te installeer.
  2. Installeer die module dill: pip install dill.
  3. Laai die ObjectScript-kode af (d.w.s. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) na enige area met produkte. As jy wil hê dat 'n bestaande area produkte moet ondersteun, voer: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Plek uitroep DLL/SO/DYLIB na die gids bin jou InterSystems IRIS-instansie. Die biblioteeklêer moet beskikbaar wees in die pad wat deur write ##class(isc.py.Callout).GetLib().

Windows

  1. Maak seker die omgewingsveranderlike is PYTHONHOME wys na Python 3.6.7.
  2. Maak seker dat die stelsel omgewing veranderlike is PATH 'n veranderlike bevat PYTHONHOME (of die gids waarna dit verwys).

Linux (Debian/Ubuntu)

  1. Kyk of die omgewingsveranderlike is PATH bevat /usr/lib и /usr/lib/x86_64-linux-gnu. Gebruik lêer /etc/environment omgewingsveranderlikes te stel.
  2. In geval van foute undefined symbol: _Py_TrueStruct stel die instelling PythonLib. ook in readme daar is 'n afdeling vir probleemoplossing.

Mac

  1. Tans word slegs python 3.6.7 ondersteun vanaf python.org. Kontroleer Veranderlike PATH.

As jy omgewingsveranderlikes verander het, herbegin jou InterSystems-produk.

Docker

Die gebruik van houers het 'n aantal voordele:

  • Draagbaarheid
  • effektiwiteit
  • Isolasie
  • ligtheid
  • Onveranderlikheid

Kyk hierna 'n reeks artikels vir meer inligting oor die gebruik van Docker met InterSystems-produkte.

Alle Python Gateway-geboue is tans op houer gebaseer. 2019.4.

Voltooide beeld

Hardloop: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestom Python Gateway met InterSystems IRIS Community Edition af te laai en te laat loop. Dis al.

Skep jou eie voorkoms

Om 'n docker-beeld te bou, hardloop in die wortel van die bewaarplek: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
By verstek word die prent gebou op grond van die prent store/intersystems/iris-community:2019.4.0.383.0, maar jy kan dit verander deur die veranderlike in te stel IMAGE.
Om vanaf InterSystems IRIS te bou, hardloop: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:nuutste'.

Daarna kan jy die docker-beeld laat loop:

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

As jy 'n prent gebruik wat gebaseer is op InterSystems IRIS Community Edition, hoef jy nie 'n sleutel te spesifiseer nie.

Comments

  • Toets proses isc.py.test.Process stoor 'n aantal beelde in 'n tydelike gids. Miskien wil jy hierdie pad verander na 'n gemonteerde gids. Om dit te doen, wysig die instelling WorkingDir spesifiseer die gemonteerde gids.
  • Om toegang tot die terminale te kry, hardloop: docker exec -it irispy sh.
  • Toegang tot die Stelselbestuursportaal deur aan te meld SuperUser/SYS.
  • Om 'n houer te stop, hardloop: docker stop irispy && docker rm --force irispy.

Kontroleer die installasie

Sodra jy Python Gateway geïnstalleer het, is dit die moeite werd om te kyk of dit werk. Begin hierdie kode in die InterSystems IRIS-terminaal:

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

Die resultaat moet wees HELLO - die waarde van die Python-veranderlike x. As die terugkeer status sc is 'n fout of var leeg, check Lees my—Foutopsporing afdeling.

API

Python Gateway is geïnstalleer en jy het geverifieer dat dit werk. Tyd om dit te begin gebruik!
Die hoofkoppelvlak vir Python is isc.py.Main. Dit bied die volgende groepe metodes (alle keer terug %Status):

  • Kode uitvoering
  • Data-oordrag
  • hulp

Kode uitvoering

Hierdie metodes laat jou toe om arbitrêre Python-kode uit te voer.

SimpleString

SimpleString is die hoofmetode. Dit neem 4 opsionele argumente:

  • code is die reël kode om uit te voer. Lynvoer karakter: $c(10).
  • returnVariable is die naam van die veranderlike om terug te gee.
  • serialization - hoe om te serialiseer returnVariable. 0 - string (verstek), 1 - repr.
  • result - ByRef verwysing na die veranderlike waarin die waarde geskryf is returnVariable.

Hierbo het ons gedoen:

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

In hierdie voorbeeld ken ons 'n Python-veranderlike toe x waarde Hello en wil die waarde van 'n Python-veranderlike terugstuur x na 'n ObjectScript-veranderlike var.

Voer Kode uit

ExecuteCode is 'n veiliger en minder beperkende alternatief SimpleString.
Lyne in die InterSystems IRIS-platform is beperk tot 3 641 144 karakters, en as jy 'n langer stuk kode wil uitvoer, moet jy strome gebruik.
Dit verg twee argumente:

  • code - 'n string of stroom Python-kode wat uitgevoer moet word.
  • variable - (opsioneel) ken die resultaat van uitvoering toe code hierdie Python-veranderlike.

Stel voor om te gebruik:

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

In hierdie voorbeeld vermenigvuldig ons 2 met 3 en stoor die resultaat in 'n Python-veranderlike y.

Data-oordrag

Gee data na en van Python deur.

Python -> InterSystems IRIS

Daar is 4 maniere om die waarde van 'n Python-veranderlike in InterSystems IRIS te kry, afhangende van die serialisering wat u benodig:

  • String vir eenvoudige datatipes en ontfouting.
  • Repr vir die stoor van eenvoudige voorwerpe en ontfouting.
  • JSON vir maklike datamanipulasie aan die InterSystems IRIS-kant.
  • Pickle om voorwerpe te stoor.

Hierdie metodes laat jou toe om veranderlikes vanaf Python as 'n string of as strome te ontvang.

  • GetVariable(variable, serialization, .stream, useString) - kry serialization veranderlik variable в stream. indien useString is 1 en die serialisering word in 'n string geplaas, dan word 'n string teruggestuur, nie 'n stroom nie.
  • GetVariableJson(variable, .stream, useString) - kry JSON-serialisering van 'n veranderlike.
  • GetVariablePickle(variable, .stream, useString, useDill) -Kry 'n Pickle (of Dill) serialisering van 'n veranderlike.

Kom ons probeer om ons veranderlike te kry y.

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

InterSystems IRIS -> Python

Laai data van InterSystems IRIS na Python.

  • ExecuteQuery(query, variable, type, namespace) - skep 'n datastel (pandas dataframe of list) van sql-navraag en stel dit op python-veranderlike variable. Plastiese sak isc.py moet in die area beskikbaar wees namespace - die versoek sal daar uitgevoer word.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - laai globale data global vanaf subskripsie start aan end in Python as tipe veranderlike type: list, of pandas dataframe. Beskrywing van opsionele argumente mask en labels beskikbaar in klasdokumentasie en bewaarplek Data-oordrag dokumente.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - laai klasdata class van id start aan end in Python as tipe veranderlike type: list, of pandas dataframe. properties — lys (geskei deur komma) van klaseienskappe wat in die datastel gelaai moet word. Maskers ondersteun * и ?. Verstek - * (alle eiendomme). Eiendom %%CLASSNAME geïgnoreer.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - laai tabeldata table van id start aan end in luislang.

ExecuteQuery - universeel (enige geldige SQL-navraag sal na Python deurgegee word). Maar ExecuteGlobal en sy omhulsels ExecuteClass и ExecuteTable werk met 'n aantal beperkings. Hulle is baie vinniger (3-5 keer vinniger as die ODBC-bestuurder en 20 keer vinniger as ExecuteQuery). Meer inligting in Data-oordrag dokumente.
Al hierdie metodes ondersteun die oordrag van data vanaf enige area. Plastiese sak isc.py moet in die teikenarea beskikbaar wees.

Voer Query uit

ExecuteQuery(request, variable, type, namespace) - stuur die resultate van enige geldige SQL-navraag na Python. Dit is die stadigste data-oordragmetode. Gebruik dit as ExecuteGlobal en sy omhulsels is nie beskikbaar nie.

Argumente:

  • query - sql navraag.
  • variable - die naam van die Python-veranderlike waarin die data geskryf is.
  • type - list of pandas dataframe.
  • namespace - die area waarin die versoek uitgevoer sal word.

Voer Globale uit

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - 'n globale aan Python deurgee.

Argumente:

  • global is die naam van die globale sonder ^
  • variable - die naam van die Python-veranderlike waarin die data geskryf is.
  • type - list of pandas dataframe.
  • start — die eerste subskripsie van die globale. Nodig %Integer.
  • end is die laaste subskripsie van die globale. Nodig %Integer.
  • mask - masker van globale waardes. Die masker kan korter wees as die aantal velde in die globale (in welke geval die velde aan die einde oorgeslaan sal word). Hoe om die masker te formateer:
    • + slaag die waarde soos dit is.
    • - slaan waarde oor.
    • b - Boole-tipe (0 - False, al die res - True).
    • d — Datum (van $horolog, op Windows vanaf 1970, op Linux vanaf 1900).
    • t - Tyd ($horolog, sekondes na middernag).
    • m — Tydstempel (JAAR-MAAND-DAG UUR:MINUT: TWEEDE formaatstring).
  • labels - % Lys van kolomname. Die eerste element is die naam van die subskrip.
  • namespace - die area waarin die versoek uitgevoer sal word.

Voer Klas uit

omvou ExecuteGlobal. Berei 'n oproep voor gebaseer op die klasdefinisie ExecuteGlobal en hom roep.

ExecuteClass(class, variable, type, start, end, properties, namespace) - deurgee van klasdata na Python.

Argumente:

  • class - klas naam
  • variable - die naam van die Python-veranderlike waarin die data geskryf is.
  • type - list of pandas dataframe.
  • start - begin-ID.
  • end - finale ID
  • properties — lys (geskei deur komma) van klaseienskappe wat in die datastel gelaai moet word. Maskers ondersteun * и ?. Verstek - * (alle eiendomme). Eiendom %%CLASSNAME geïgnoreer.
  • namespace - die area waarin die versoek uitgevoer sal word.

Alle eienskappe word deurgegee soos dit is, behalwe tipe eienskappe %Date, %Time, %Boolean и %TimeStamp - hulle word omgeskakel na die ooreenstemmende Python-klasse.

Voer Tabel uit

omvou ExecuteClass. Vertaal die tabelnaam in 'n klasnaam en roep ExecuteClass. Handtekening:

ExecuteTable(table, variable, type, start, end, properties, namespace) - die deurgee van tabeldata na Python.

Argumente:

  • table - tabel naam.
    Alle ander argumente word deurgegee soos dit is. ExecuteClass.

opmerkings

  • ExecuteGlobal, ExecuteClass и ExecuteTable werk ewe vinnig.
  • ExecuteGlobal 20 keer vinniger as ExecuteQuery op groot datastelle (oordragtyd >0.01 sekonde).
  • ExecuteGlobal, ExecuteClass и ExecuteTable werk aan globale met hierdie struktuur: ^global(key) = $lb(prop1, prop2, ..., propN) waar key is 'n heelgetal.
  • Vir ExecuteGlobal, ExecuteClass и ExecuteTable ondersteunde waardereeks %Date ooreenstem met die reeks mktime en hang af van die OSvensters: 1970-01-01, linux 1900-01-01, mac). Gebruik %TimeStampom data buite hierdie reeks deur te gee of gebruik pandas dataraam as hierdie beperking is slegs vir die lys.
  • Vir ExecuteGlobal, ExecuteClass и ExecuteTable alle argumente behalwe databron (globaal, klas of tabel) en veranderlike is opsioneel.

voorbeelde

toets klas isc.py.toets.Persoon bevat 'n metode wat alle data-oordragopsies demonstreer:

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)

oproep metode do ##class(isc.py.test.Person).Test() om te sien hoe alle data-oordragmetodes werk.

Helper Metodes

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - kry inligting oor die veranderlike: of dit gedefinieer is, klas en serialisering lengte.
  • GetVariableDefined(variable, .defined) - of die veranderlike gedefinieer is.
  • GetVariableType(variable, .type) - kry die klas van die veranderlike.
  • GetStatus() - kry en verwyder die laaste uitsondering aan die Python-kant.
  • GetModuleInfo(module, .imported, .alias) - kry moduleveranderlike en invoerstatus.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - kry inligting oor die funksie.

Interoperabiliteit

Jy het geleer hoe om Python Gateway vanaf die terminaal te bel, kom ons begin dit nou in produksie gebruik. Die basis vir interaksie met Python in hierdie modus is isc.py.ens.Operation. Dit laat ons toe:

  • Voer Python-kode uit
  • Stoor/herstel Python-konteks
  • Laai en ontvang data van Python

Basies, 'n Pyhton-operasie is 'n omslag isc.py.Main. Operasie isc.py.ens.Operation laat interaksie met die Python-proses van InterSystems IRIS-produkte toe. Vyf versoeke word ondersteun:

  • isc.py.msg.ExecutionRequest om Python-kode uit te voer. opbrengste isc.py.msg.ExecutionResponse met die uitvoeringsresultaat en die waardes van die gevraagde veranderlikes.
  • isc.py.msg.StreamExecutionRequest om Python-kode uit te voer. opbrengste isc.py.msg.StreamExecutionResponse die resultaat van uitvoering en die waardes van die gevraagde veranderlikes. Analoog isc.py.msg.ExecutionRequest, maar aanvaar en gee strome terug in plaas van snare.
  • isc.py.msg.QueryRequest om die resultaat van die uitvoering van 'n SQL-navraag oor te dra. opbrengste Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest om globale/klas/tabeldata deur te gee. opbrengste Ens.Response.
  • isc.py.msg.SaveRequest om Python-konteks te stoor. opbrengste Ens.StringResponse met konteks ID.
  • isc.py.msg.RestoreRequest om die Python-konteks te herstel.

    Daarbenewens, isc.py.ens.Operation het twee instellings:

    • Initializer - die keuse van 'n klas wat die koppelvlak implementeer isc.py.init.Abstract. Dit kan gebruik word om funksies, modules, klasse en dies meer te laai. Dit word een keer uitgevoer wanneer die proses begin.
    • PythonLib - (Slegs Linux) as jy opstartfoute sien, stel die waarde daarvan op libpython3.6m.so of selfs in die volle pad na die Python-biblioteek.

Skep van besigheidsprosesse

Daar is twee klasse beskikbaar wat die ontwikkeling van besigheidsprosesse fasiliteer:

  • isc.py.ens.ProcessUtils laat jou toe om aantekeninge uit aktiwiteite met veranderlike vervanging te onttrek.
  • isc.py.util.BPEmulator maak dit maklik om besigheidsprosesse met Python te toets. Dit kan 'n besigheidsproses (Python-onderdele) in die huidige proses uitvoer.

Veranderlike vervanging

Alle besigheidsprosesse oorgeërf van isc.py.ens.ProcessUtils, kan die metode gebruik GetAnnotation(name) om die waarde van 'n aktiwiteitsaantekening by sy naam te kry. Die aktiwiteitsaantekening kan veranderlikes bevat wat aan die InterSystems IRIS-kant geëvalueer sal word voordat dit na Python oorgedra word. Hier is die sintaksis vir veranderlike vervanging:

  • ${class:method:arg1:...:argN} - metode oproep
  • #{expr} - voer kode in die ObjectScript-taal uit.

'n Voorbeeld is beskikbaar in die toetsbesigheidsproses isc.py.test.Process, byvoorbeeld, in aktiwiteit Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). In hierdie voorbeeld:

  • #{process.WorkDirectory} gee die voorwerp se WorkDirectory-eienskap terug process, wat 'n voorbeeld van die klas is isc.py.test.Process dié. huidige besigheidsproses.
  • ${%PopulateUtils:Integer:1:100} roep 'n metode Integer klas %PopulateUtils, verbygaande argumente 1 и 100, wat 'n ewekansige heelgetal in die reeks terugstuur 1...100.

Toets besigheidsproses

Die toetsproduksie en toetsbesigheidsproses is by verstek beskikbaar as deel van die Python Gateway. Om hulle te gebruik:

  1. In OS terminale hardloop: pip install pandas matplotlib seaborn.
  2. In die InterSystems IRIS-terminaal, hardloop: do ##class(isc.py.test.CannibalizationData).Import() toetsdata in te vul.
  3. Begin produkte isc.py.test.Production.
  4. Stuur versoek tipe Ens.Request в isc.py.test.Process.

Kom ons kyk hoe dit alles saamwerk. oopmaak isc.py.test.Process in die BPL-redakteur:

Python Gateway by InterSystems IRIS

Kode uitvoering

Die belangrikste oproep is die uitvoering van Python-kode:

Python Gateway by InterSystems IRIS

Versoek gebruik isc.py.msg.ExecutionRequest, hier is sy eienskappe:

  • Code - Python-kode.
  • SeparateLines - of die kode in reëls verdeel moet word vir uitvoering. $c(10) (n) word gebruik om snare te skei. Let daarop dat dit NIE aanbeveel word om die hele boodskap gelyktydig te verwerk nie, hierdie funksie is slegs vir verwerking def en soortgelyke meerlyn uitdrukkings. Verstek 0.
  • Variables is 'n komma-geskeide lys van veranderlikes wat by die antwoord gevoeg sal word.
  • Serialization - Hoe om die veranderlikes wat ons wil terugstuur te serialiseer. Opsies: Str, Repr, JSON, Pickle и Dill, verstek Str.

In ons geval stel ons net die eiendom vas Code, sodat alle ander eiendomme hul verstekwaardes gebruik. Ons stel dit op deur te bel process.GetAnnotation("Import pandas"), wat tydens looptyd 'n aantekening terugstuur nadat veranderlike vervanging uitgevoer is. Uiteindelik die kode import pandas as pd sal na Python oorgedra word. GetAnnotation kan nuttig wees om meerlyn Python-skrifte te kry, maar daar is geen beperkings op hierdie manier om kode te kry nie. Jy kan die eiendom stel Code op enige manier wat vir jou gerieflik is.

Kry veranderlikes

Nog 'n interessante uitdaging om te gebruik isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway by InterSystems IRIS

Dit bereken die korrelasiematriks aan die Python-kant en onttrek die veranderlike corrmat terug na InterSystems IRIS in JSON-formaat deur die versoekeienskappe in te stel:

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

Ons kan die resultate in Visual Trace sien:

Python Gateway by InterSystems IRIS

En as ons hierdie waarde in die BP nodig het, kan dit so verkry word: callresponse.Variables.GetAt("corrmat").

Data-oordrag

Kom ons praat dan oor die oordrag van data van InterSystems IRIS na Python, alle data-oordragversoeke implementeer die koppelvlak isc.py.msg.DataRequest, wat die volgende eienskappe verskaf:

  • Variable is 'n Python-veranderlike waarna die data geskryf word.
  • Type - tipe veranderlike: dataframe (pandas dataraam) of list.
  • Namespace - die area waaruit ons data ontvang. Plastiese sak isc.py moet in hierdie area beskikbaar wees. Dit kan 'n gebied wees sonder produkondersteuning.

Op grond van hierdie koppelvlak word 4 klasse versoeke geïmplementeer:

  • isc.py.msg.QueryRequest - stel eiendom Query om 'n SQL-navraag te stuur.
  • isc.py.msg.ClassRequest - stel eiendom Class klasdata deur te gee.
  • isc.py.msg.TableRequest - stel eiendom Table tabeldata deur te gee.
  • isc.py.msg.GlobalRequest - stel eiendom Global om data wêreldwyd oor te dra.

Kyk na die aktiwiteit in die toetsproses RAWWaar isc.py.msg.QueryRequest in aksie gewys.

Python Gateway by InterSystems IRIS

Stoor/herstel 'n Python-konteks

Laastens kan ons die Python-konteks in InterSystems IRIS stoor, stuur om dit te doen isc.py.msg.SaveRequest met argumente:

  • Mask — Slegs veranderlikes wat aan die masker voldoen, word gestoor. Ondersteun * и ?. 'N Voorbeeld: "Data*, Figure?"... Verstek *.
  • MaxLength — Die maksimum lengte van die gestoorde veranderlike. As die serialisering van 'n veranderlike langer is, sal dit geïgnoreer word. Stel op 0 om veranderlikes van enige lengte te kry. Verstek $$$MaxStringLength.
  • Name — Konteksnaam (opsioneel).
  • Description — Beskrywing van die konteks (opsioneel).

Opbrengste Ens.StringResponse с Id gestoorde konteks. Kyk na die aktiwiteit in die toetsproses Save Context.

Verwante versoek isc.py.msg.RestoreRequest laai 'n konteks van InterSystems IRIS in Python:

  • ContextId is die konteks identifiseerder.
  • Clear — maak die konteks skoon voor herstel.

Jupyter Notaboek

Jupyter Notaboek is 'n oopbron-webtoepassing wat jou toelaat om notaboeke te skep en te publiseer wat kode, visualiserings en teks bevat. Python Gateway laat jou toe om BPL-prosesse as 'n Jupyter-notaboek te sien en te wysig. Let daarop dat die gewone Python 3-uitvoerder tans gebruik word.

Hierdie uitbreiding neem aan dat aantekeninge Python-kode bevat en aktiwiteitsname as voorafgaande titels gebruik. Dit is nou moontlik om PythonGateway-besigheidsprosesse in Jupyter Notebook te ontwikkel. Hier is wat moontlik is:

  • Skep nuwe besigheidsprosesse
  • Vee besigheidsprosesse uit
  • Skep nuwe aktiwiteite
  • Verander aktiwiteite
  • Vee aktiwiteite uit

Hier demo video. En 'n paar skermkiekies:

Proses Explorer

Python Gateway by InterSystems IRIS

Prosesredakteur

Python Gateway by InterSystems IRIS

installasie

  1. Jy sal InterSystems IRIS 2019.2+ benodig.
  2. Installeer PythonGateway v0.8+ (slegs vereis isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Dateer die ObjectScript-kode vanaf die bewaarplek op.
  4. volg do ##class(isc.py.util.Jupyter).Install() en volg die aanwysings.

Dokumentasie.

Bevindinge

MLToolkit is 'n stel gereedskap wat daarop gemik is om modelle en 'n transaksionele omgewing te kombineer sodat die geboude modelle maklik direk in jou besigheidsprosesse gebruik kan word. Python Gateway is deel van MLToolkit en bied integrasie met die Python-taal, sodat jy enige masjienleeralgoritmes wat in Python (die hoofomgewing vir baie Data Scientists) geskep is, kan orkestreer, talle klaargemaakte biblioteke kan gebruik om vinnig aanpasbare, robotiese analitiese KI te skep / ML-oplossings op die InterSystems-platform IRIS.

verwysings

MLToolkit

Die MLToolkit-gebruikersgroep is 'n private GitHub-bewaarplek wat geskep is as deel van die InterSystems-korporatiewe GitHub-organisasie. Dit is gerig aan eksterne gebruikers wat MLToolkit-komponente installeer, leer of reeds gebruik, insluitend Python Gateway. Die groep het 'n aantal geïmplementeerde gevalle (met bronkode en toetsdata) in die velde van bemarking, vervaardiging, medisyne en baie ander industrieë. Om by die ML Toolkit-gebruikersgroep aan te sluit, stuur asseblief 'n kort e-pos na die volgende adres: [e-pos beskerm] en sluit die volgende inligting in jou brief in:

  • GitHub-gebruikersnaam
  • Organisasie (jy werk of studeer)
  • Posisie (jou werklike posisie in jou organisasie, hetsy "Student" of "Onafhanklik").
  • land

Vir diegene wat die artikel gelees het en belangstel in InterSystems IRIS as 'n platform vir die ontwikkeling of aanbieding van kunsmatige intelligensie en masjienleermeganismes, nooi ons jou uit om moontlike scenario's van belang vir jou onderneming te bespreek. Ons sal die behoeftes van u onderneming geredelik ontleed en gesamentlik 'n aksieplan bepaal; kontak e-posadres van ons KI/ML kundige groep – [e-pos beskerm].

Bron: will.com

Voeg 'n opmerking