Python Gateway a InterSystems IRIS

Aquest article tracta sobre Python Gateway, un projecte comunitari de codi obert per a la plataforma de dades InterSystems IRIS. Aquest projecte us permet orquestrar qualsevol algoritme d'aprenentatge automàtic creat a Python (l'entorn principal per a molts científics de dades), utilitzar nombroses biblioteques ja fetes per crear ràpidament solucions d'IA / ML analítiques robòtiques adaptatives a la plataforma InterSystems IRIS. En aquest article, us mostraré com InterSystems IRIS pot orquestrar processos de Python, realitzar una transferència de dades bidireccional eficient i crear processos empresarials intel·ligents.

Pla

  1. Introducció.
  2. Eines.
  3. Instal·lació
  4. API.
  5. Interoperabilitat.
  6. Quadern Jupyter.
  7. Conclusions.
  8. Enllaços.
  9. Kit d'eines de M.L.

Introducció

Python és un llenguatge de programació d'alt nivell i de propòsit general enfocat a millorar la productivitat dels desenvolupadors i la llegibilitat del codi. En aquesta sèrie d'articles parlaré de les possibilitats d'utilitzar el llenguatge Python a la plataforma InterSystems IRIS, mentre que el focus principal d'aquest article és l'ús de Python com a llenguatge per crear i aplicar models d'aprenentatge automàtic.

L'aprenentatge automàtic (ML) és una classe de mètodes d'intel·ligència artificial, el tret característic dels quals no és la solució directa d'un problema, sinó l'aprenentatge en el procés de resolució de molts problemes similars.

Els algorismes i models d'aprenentatge automàtic són cada cop més comuns. Hi ha moltes raons per això, però tot es redueix a l'accessibilitat, la senzillesa i l'obtenció de resultats pràctics. El clustering o fins i tot el modelatge de xarxes neuronals és una nova tecnologia?

Per descomptat que no, però avui dia no cal escriure centenars de milers de línies de codi per executar un model, i els costos de crear i utilitzar models són cada cop més petits.

Les eines estan evolucionant: encara que no disposem d'eines d'IA/ML totalment orientades a la GUI, també es veu el progrés que hem vist amb moltes altres classes de sistemes d'informació com la BI (des de l'escriptura de codi fins a l'ús de marcs i solucions configurables orientades a GUI) en eines de creació d'IA/ML. Ja hem passat l'etapa d'escriptura de codi i avui fem servir frameworks per construir i entrenar models.

Altres millores, com ara la possibilitat de distribuir un model pre-entrenat on l'usuari final simplement ha d'acabar d'entrenar el model sobre les seves dades específiques, també faciliten començar a aplicar l'aprenentatge automàtic. Aquests avenços faciliten molt l'aprenentatge de l'aprenentatge automàtic tant per als professionals com per a les empreses en general.

D'altra banda, cada cop recollim més dades. Amb una plataforma de dades unificada com InterSystems IRIS, tota aquesta informació es pot preparar immediatament i utilitzar-la com a entrada per als models d'aprenentatge automàtic.

Amb la transició al núvol, llançar projectes d'IA/ML és més fàcil que mai. Només podem consumir els recursos que necessitem. A més, gràcies a la paral·lelització que ofereixen les plataformes en núvol, podem estalviar temps.

Però què passa amb els resultats? Aquí és on les coses es compliquen més. Hi ha moltes eines per construir models, de les quals parlaré a continuació. Construir un bon model no és fàcil, però què passa? Aprofitar l'ús del model per part d'una empresa també és una tasca no trivial. L'arrel del problema és la separació de càrregues de treball analítiques i transaccionals i models de dades. Quan entrenem un model, normalment ho fem amb dades històriques. Però el lloc del model construït és el processament de dades transaccionals. De què serveix el millor model de detecció de transaccions fraudulentes si l'executem un cop al dia? Els estafadors ja han marxat amb els diners. Hem d'entrenar el model sobre dades històriques, però també hem d'aplicar-lo en temps real a les noves dades entrants perquè els nostres processos de negoci puguin actuar segons les prediccions fetes pel model.

ML Toolkit és un conjunt d'eines que fa exactament això: reunir models i un entorn transaccional perquè els models que creeu es puguin utilitzar fàcilment directament als vostres processos empresarials. Python Gateway forma part del ML Toolkit i proporciona integració amb el llenguatge Python (semblant a R Gateway, ser part del ML Toolkit proporciona integració amb el llenguatge R).

Kit d’eines

Abans de continuar, m'agradaria descriure algunes eines i biblioteques de Python que farem servir més endavant.

Tecnologia

  • Python és un llenguatge de programació d'alt nivell interpretat i de propòsit general. El principal avantatge del llenguatge és una gran biblioteca de biblioteques matemàtiques, ML i AI. Igual que ObjectScript, és un llenguatge orientat a objectes, però tot es defineix de forma dinàmica, no estàtica. També tot és un objecte. Els articles posteriors suposen una familiaritat passada amb la llengua. Si voleu començar a aprendre, us recomano començar per documentació.
  • Per als nostres propers exercicis, prepara't Python 3.6.7 de 64 bits.
  • IDE: faig servir PyCharm, però en general много. Si utilitzeu Atelier, hi ha un connector Eclipse per a desenvolupadors de Python. Si utilitzeu VS Code, hi ha una extensió per a Python.
  • Bloc de notes: en lloc d'un IDE, podeu escriure i compartir els vostres scripts en blocs de notes en línia. El més popular d'ells és Júpiter.

biblioteques

Aquí hi ha una llista (parcial) de biblioteques d'aprenentatge automàtic:

  • Ennuvolat — un paquet fonamental per a càlculs exactes.
  • pandes — Estructures de dades d'alt rendiment i eines d'anàlisi de dades.
  • matplotlib - Creació de gràfics.
  • Nascut al mar - Visualització de dades basada en matplotlib.
  • Sklearn - Mètodes d'aprenentatge automàtic.
  • XGBoost — algorismes d'aprenentatge automàtic dins de la metodologia Gradient Boosting.
  • Gensim - PNL.
  • Keras - xarxes neuronals.
  • Corrent de tensió és una plataforma per crear models d'aprenentatge automàtic.
  • PyTorch és una plataforma per crear models d'aprenentatge automàtic centrats en Python.
  • Nyoka - PMML de diversos models.

Les tecnologies d'IA/ML fan que els negocis siguin més eficients i adaptables. A més, avui dia aquestes tecnologies són cada cop més fàcils de desenvolupar i implementar. Comenceu a aprendre sobre les tecnologies d'IA/ML i com poden ajudar la vostra organització a créixer.

Instal · lació

Hi ha diverses maneres d'instal·lar i utilitzar Python Gateway:

  • SO
    • Windows
    • Linux
    • Mac
  • estibador
    • Utilitzeu la imatge de DockerHub
    • Crea el teu propi look

Independentment del mètode d'instal·lació, necessitareu el codi font. L'únic lloc per descarregar el codi és pàgina de llançaments. Conté versions estables provades, només cal agafar la darrera. De moment és de 0.8, però amb el temps n'hi haurà de nous. No cloneu/descarregueu el repositori, baixeu l'última versió.

SO

Si esteu instal·lant Python Gateway en un sistema operatiu, primer (independentment del sistema operatiu) haureu d'instal·lar Python. Per això:

  1. Instal·leu Python 3.6.7 de 64 bits. Es recomana instal·lar Python al directori predeterminat.
  2. Instal·leu el mòdul dill: pip install dill.
  3. Baixeu el codi ObjectScript (és a dir, do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) a qualsevol zona amb productes. Si voleu una àrea existent per donar suport als productes, executeu: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Lloc trucada DLL/SO/DYLIB a la carpeta bin la vostra instància IRIS d'InterSystems. El fitxer de la biblioteca ha d'estar disponible al camí que retorna write ##class(isc.py.Callout).GetLib().

Windows

  1. Assegureu-vos que la variable d'entorn és PYTHONHOME apunta a Python 3.6.7.
  2. Assegureu-vos que la variable d'entorn del sistema és PATH conté una variable PYTHONHOME (o el directori al qual apunta).

Linux (Debian/Ubuntu)

  1. Comproveu si la variable d'entorn ho és PATH conté /usr/lib и /usr/lib/x86_64-linux-gnu. Utilitza Fitxer /etc/environment per establir variables d'entorn.
  2. En cas d'errors undefined symbol: _Py_TrueStruct establir la configuració PythonLib. també a readme hi ha una secció de resolució de problemes.

Mac

  1. Actualment només és compatible amb Python 3.6.7 Python.org. Comprova la variable PATH.

Si heu canviat les variables d'entorn, reinicieu el vostre producte InterSystems.

estibador

L'ús de contenidors té una sèrie d'avantatges:

  • Portabilitat
  • Eficàcia
  • Aïllament
  • lleugeresa
  • Immutabilitat

Fes una ullada a això una sèrie d'articles per obtenir més informació sobre com utilitzar Docker amb els productes InterSystems.

Actualment, totes les compilacions de Python Gateway estan basades en contenidors. 2019.4.

Imatge a punt

Correr: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestper descarregar i executar Python Gateway amb InterSystems IRIS Community Edition. Això és tot.

Crea el teu propi look

Per crear una imatge de Docker, executeu a l'arrel del dipòsit: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Per defecte, la imatge es construeix a partir de la imatge store/intersystems/iris-community:2019.4.0.383.0, però podeu canviar-ho configurant la variable IMAGE.
Per crear des d'InterSystems IRIS, executeu: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest'.

Després d'això, podeu executar la imatge de Docker:

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

Si utilitzeu una imatge basada en InterSystems IRIS Community Edition, podeu deixar de banda la clau.

Comentaris

  • Procés de prova isc.py.test.Process desa diverses imatges en un directori temporal. És possible que vulgueu canviar aquest camí a un directori muntat. Per fer-ho, editeu la configuració WorkingDir especificant el directori muntat.
  • Per accedir al terminal, executeu: docker exec -it irispy sh.
  • Accés al portal de gestió del sistema mitjançant la sessió SuperUser/SYS.
  • Per aturar un contenidor, executeu: docker stop irispy && docker rm --force irispy.

Comprovació de la instal·lació

Un cop instal·lat Python Gateway, val la pena comprovar que funciona. Executeu aquest codi al terminal IRIS d'InterSystems:

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

El resultat hauria de ser HELLO - el valor de la variable Python x. Si l'estat de retorn sc és un error o var buit, comproveu Llegiu-me: secció de resolució de problemes.

API

Python Gateway està instal·lat i heu verificat que funciona. És hora de començar a utilitzar-lo!
La interfície principal de Python és isc.py.Main. Ofereix els següents grups de mètodes (tots retornen %Status):

  • Execució de codi
  • Transferència de dades
  • Auxiliar

Execució de codi

Aquests mètodes us permeten executar codi Python arbitrari.

SimpleString

SimpleString és el mètode principal. Pren 4 arguments opcionals:

  • code és la línia de codi a executar. Caràcter d'avanç de línia: $c(10).
  • returnVariable és el nom de la variable a retornar.
  • serialization - Com serialitzar returnVariable. 0 - cadena (per defecte), 1 - repr.
  • result - ByRef referència a la variable en què s'escriu el valor returnVariable.

Més amunt hem fet:

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

En aquest exemple, estem assignant una variable de Python x значение Hello i voleu retornar el valor d'una variable de Python x a una variable ObjectScript var.

ExecuteCode

ExecuteCode és una alternativa més segura i menys restrictiva SimpleString.
Les línies de la plataforma InterSystems IRIS estan limitades a 3 caràcters, i si voleu executar un fragment de codi més llarg, heu d'utilitzar fluxos.
Es requereixen dos arguments:

  • code — una cadena o flux de codi Python que s'ha d'executar.
  • variable - (opcional) assigna el resultat de l'execució code aquesta variable de Python.

Suggereix utilitzar:

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

En aquest exemple, multipliquem 2 per 3 i emmagatzemem el resultat en una variable de Python y.

Transferència de dades

Passeu dades a i des de Python.

Python -> InterSystems IRIS

Hi ha 4 maneres d'obtenir el valor d'una variable Python a InterSystems IRIS, depenent de la serialització que necessiteu:

  • String per a tipus de dades senzills i depuració.
  • Repr per emmagatzemar objectes senzills i depurar.
  • JSON per a una fàcil manipulació de dades al costat d'InterSystems IRIS.
  • Pickle per guardar objectes.

Aquests mètodes us permeten rebre variables de Python com a cadena o com a fluxos.

  • GetVariable(variable, serialization, .stream, useString) - aconseguir serialization variable variable в stream. Si useString és 1 i la serialització es col·loca en una cadena, després es retorna una cadena, no un flux.
  • GetVariableJson(variable, .stream, useString) — obtenir la serialització JSON d'una variable.
  • GetVariablePickle(variable, .stream, useString, useDill) -Obtenir una serialització Pickle (o Dill) d'una variable.

Intentem obtenir la nostra variable y.

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

InterSystems IRIS -> Python

Carregant dades d'InterSystems IRIS a Python.

  • ExecuteQuery(query, variable, type, namespace) - crea un conjunt de dades (pandas dataframe o list) de la consulta sql i establiu-la a la variable Python variable. Bossa de plàstic isc.py hauria d'estar disponible a la zona namespace - La sol·licitud s'executarà allí.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - carrega dades globals global del subíndex start до end a Python com a variable de tipus type: list, o pandes dataframe. Descripció d'arguments opcionals mask i labels disponible a la documentació de classe i al repositori Documents de transferència de dades.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - Carrega dades de classe class des d'id start до end a Python com a variable de tipus type: list, o pandes dataframe. properties — llista (separada per comes) de propietats de classe que es carregaran al conjunt de dades. Admeten màscares * и ?. Per defecte - * (totes les propietats). Propietat %%CLASSNAME ignorat.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - Carrega les dades de la taula table des d'id start до end en python.

ExecuteQuery - universal (qualsevol consulta SQL vàlida es passarà a Python). Malgrat això, ExecuteGlobal i els seus embolcalls ExecuteClass и ExecuteTable treballar amb una sèrie de restriccions. Són molt més ràpids (3-5 vegades més ràpid que el controlador ODBC i 20 vegades més ràpid que ExecuteQuery). Més informació a Documents de transferència de dades.
Tots aquests mètodes admeten la transferència de dades des de qualsevol àrea. Bossa de plàstic isc.py ha d'estar disponible a la zona objectiu.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - passar els resultats de qualsevol consulta SQL vàlida a Python. Aquest és el mètode de transferència de dades més lent. Utilitzeu-lo si ExecuteGlobal i els seus embolcalls no estan disponibles.

Arguments:

  • query - consulta sql.
  • variable - el nom de la variable Python en què s'escriuen les dades.
  • type - list o pandes dataframe.
  • namespace - l'àmbit en què s'executarà la sol·licitud.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - passar un global a Python.

Arguments:

  • global és el nom del global sense ^
  • variable - el nom de la variable Python en què s'escriuen les dades.
  • type - list o pandes dataframe.
  • start — el primer subíndex del global. Necessàriament %Integer.
  • end és l'últim subíndex del global. Necessàriament %Integer.
  • mask — màscara dels valors globals. La màscara pot ser més curta que el nombre de camps del global (en aquest cas es saltaran els camps del final). Com formatar la màscara:
    • + passar el valor tal qual.
    • - saltar valor.
    • b — Tipus booleà (0 - False, tota la resta - True).
    • d — Data (de $horolog, a Windows des de 1970, a Linux des de 1900).
    • t - Hora ($horolog, segons després de mitjanit).
    • m — Marca de temps (cadena de format ANY-MES-DIA HORA:MINUT:SECOND).
  • labels - %Llista de noms de columnes. El primer element és el nom del subíndex.
  • namespace - l'àmbit en què s'executarà la sol·licitud.

ExecuteClass

embolicar ExecuteGlobal. Prepara una trucada basada en la definició de classe ExecuteGlobal i el crida.

ExecuteClass(class, variable, type, start, end, properties, namespace) - passar dades de classe a Python.

Arguments:

  • class - Nom de la classe
  • variable - el nom de la variable Python en què s'escriuen les dades.
  • type - list o pandes dataframe.
  • start - Id. inicial.
  • end - Id. final
  • properties — llista (separada per comes) de propietats de classe que es carregaran al conjunt de dades. Admeten màscares * и ?. Per defecte - * (totes les propietats). Propietat %%CLASSNAME ignorat.
  • namespace - l'àmbit en què s'executarà la sol·licitud.

Totes les propietats es passen tal qual excepte les propietats de tipus %Date, %Time, %Boolean и %TimeStamp - es converteixen a les classes Python corresponents.

ExecuteTable

embolicar ExecuteClass. Tradueix el nom de la taula en un nom de classe i crida ExecuteClass. Signatura:

ExecuteTable(table, variable, type, start, end, properties, namespace) - passar dades de la taula a Python.

Arguments:

  • table - Nom de la taula.
    Tots els altres arguments es passen tal com estan. ExecuteClass.

Notes

  • ExecuteGlobal, ExecuteClass и ExecuteTable treballar igual de ràpid.
  • ExecuteGlobal 20 vegades més ràpid que ExecuteQuery en grans conjunts de dades (temps de transferència > 0.01 segons).
  • ExecuteGlobal, ExecuteClass и ExecuteTable treballar en globals amb aquesta estructura: ^global(key) = $lb(prop1, prop2, ..., propN) on key és un nombre enter.
  • Per ExecuteGlobal, ExecuteClass и ExecuteTable rang de valors suportat %Date correspon al rang mktime i depèn del sistema operatiufinestres: 1970-01-01, linux 1900-01-01, mac). Ús %TimeStampper passar dades fora d'aquest interval o utilitzar el marc de dades pandas com aquesta limitació és només per a la llista.
  • Per ExecuteGlobal, ExecuteClass и ExecuteTable tots els arguments, excepte la font de dades (global, classe o taula) i la variable, són opcionals.

Примеры

classe de prova isc.py.test.Person conté un mètode que mostra totes les opcions de transferència de dades:

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)

mètode de trucada do ##class(isc.py.test.Person).Test() per veure com funcionen tots els mètodes de transferència de dades.

Mètodes d'ajuda

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - obtenir informació sobre la variable: si està definida, classe i longitud de serialització.
  • GetVariableDefined(variable, .defined) - si la variable està definida.
  • GetVariableType(variable, .type) - Obtenir la classe de la variable.
  • GetStatus() - obtenir i eliminar l'última excepció del costat de Python.
  • GetModuleInfo(module, .imported, .alias) — obtenir la variable del mòdul i l'estat d'importació.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - Obtenir informació sobre la funció.

Interoperabilitat

Heu après com trucar a Python Gateway des del terminal, ara comencem a utilitzar-lo en producció. La base per interactuar amb Python en aquest mode és isc.py.ens.Operation. Ens permet:

  • Executar codi Python
  • Desa/restaura el context de Python
  • Carregar i rebre dades de Python

Bàsicament, una operació de Pyhton és un embolcall isc.py.Main. Funcionament isc.py.ens.Operation permet la interacció amb el procés Python dels productes InterSystems IRIS. S'admeten cinc peticions:

  • isc.py.msg.ExecutionRequest per executar codi Python. torna isc.py.msg.ExecutionResponse amb el resultat de l'execució i els valors de les variables sol·licitades.
  • isc.py.msg.StreamExecutionRequest per executar codi Python. torna isc.py.msg.StreamExecutionResponse el resultat de l'execució i els valors de les variables sol·licitades. Analògic isc.py.msg.ExecutionRequest, però accepta i retorna fluxos en lloc de cadenes.
  • isc.py.msg.QueryRequest per transferir el resultat de l'execució d'una consulta SQL. torna Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest per passar dades globals/classe/taula. torna Ens.Response.
  • isc.py.msg.SaveRequest per desar el context de Python. torna Ens.StringResponse amb ID de context.
  • isc.py.msg.RestoreRequest per restaurar el context de Python.

    A més, isc.py.ens.Operation té dos paràmetres:

    • Initializer - escollir una classe que implementi la interfície isc.py.init.Abstract. Es pot utilitzar per carregar funcions, mòduls, classes i similars. S'executa una vegada quan comença el procés.
    • PythonLib - (només Linux) si veieu errors d'arrencada, establiu el seu valor a libpython3.6m.so o fins i tot en el camí complet a la biblioteca de Python.

Creació de processos de negoci

Hi ha dues classes disponibles que faciliten el desenvolupament de processos de negoci:

  • isc.py.ens.ProcessUtils permet extreure anotacions d'activitats amb substitució de variables.
  • isc.py.util.BPEmulator facilita la prova de processos empresarials amb Python. Pot executar un procés de negoci (parts de Python) en el procés actual.

Substitució variable

Tots els processos empresarials heretats isc.py.ens.ProcessUtils, pot utilitzar el mètode GetAnnotation(name) per obtenir el valor d'una anotació d'activitat pel seu nom. L'anotació de l'activitat pot contenir variables que s'avaluaran al costat d'InterSystems IRIS abans de passar a Python. Aquí teniu la sintaxi per a la substitució de variables:

  • ${class:method:arg1:...:argN} - trucada al mètode
  • #{expr} - executar codi en el llenguatge ObjectScript.

Hi ha un exemple disponible al procés empresarial de prova isc.py.test.Process, per exemple, en l'activitat Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). En aquest exemple:

  • #{process.WorkDirectory} retorna la propietat WorkDirectory de l'objecte process, que és una instància de la classe isc.py.test.Process aquells. procés de negoci actual.
  • ${%PopulateUtils:Integer:1:100} crida un mètode Integer classe %PopulateUtils, passant arguments 1 и 100, que retorna un nombre enter aleatori a l'interval 1...100.

Prova el procés de negoci

La producció de prova i el procés empresarial de prova estan disponibles de manera predeterminada com a part de la passarel·la de Python. Per utilitzar-los:

  1. A l'execució del terminal del sistema operatiu: pip install pandas matplotlib seaborn.
  2. Al terminal IRIS d'InterSystems, executeu: do ##class(isc.py.test.CannibalizationData).Import() per omplir les dades de prova.
  3. Llançar productes isc.py.test.Production.
  4. Enviar tipus de sol·licitud Ens.Request в isc.py.test.Process.

Vegem com funciona tot plegat. obert isc.py.test.Process a l'editor BPL:

Python Gateway a InterSystems IRIS

Execució de codi

La crida més important és l'execució del codi Python:

Python Gateway a InterSystems IRIS

Sol·licitud utilitzada isc.py.msg.ExecutionRequest, aquí teniu les seves propietats:

  • Code - Codi Python.
  • SeparateLines - si s'ha de dividir el codi en línies per a l'execució. $c(10) (n) s'utilitza per separar cadenes. Tingueu en compte que NO es recomana processar tot el missatge alhora, aquesta funció només és per processar def i expressions multilínies similars. Per defecte 0.
  • Variables és una llista de variables separades per comes que s'afegiran a la resposta.
  • Serialization - Com serialitzar les variables que volem retornar. Opcions: Str, Repr, JSON, Pickle и Dill, per defecte Str.

En el nostre cas, només establim la propietat Code, de manera que totes les altres propietats utilitzen els seus valors predeterminats. Ho vam configurar trucant process.GetAnnotation("Import pandas"), que en temps d'execució retorna una anotació després que s'hagi realitzat la substitució de variables. Finalment el codi import pandas as pd es passarà a Python. GetAnnotation pot ser útil per obtenir scripts de Python de diverses línies, però no hi ha restriccions sobre aquesta manera d'obtenir codi. Podeu configurar la propietat Code de qualsevol manera convenient per a vostè.

Obtenció de variables

Un altre repte interessant d'utilitzar isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway a InterSystems IRIS

Calcula la matriu de correlació al costat de Python i extreu la variable corrmat torneu a InterSystems IRIS en format JSON configurant les propietats de la sol·licitud:

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

Podem veure els resultats a Visual Trace:

Python Gateway a InterSystems IRIS

I si necessitem aquest valor a la BP, es pot obtenir així: callresponse.Variables.GetAt("corrmat").

Transferència de dades

A continuació, parlem de la transferència de dades d'InterSystems IRIS a Python, totes les sol·licituds de transferència de dades implementen la interfície isc.py.msg.DataRequest, que ofereix les següents propietats:

  • Variable és una variable de Python a la qual s'escriuen les dades.
  • Type - tipus de variable: dataframe (marc de dades pandas) o list.
  • Namespace - l'àrea de la qual rebem les dades. Bossa de plàstic isc.py hauria d'estar disponible en aquesta zona. Aquesta pot ser una àrea sense suport de producte.

A partir d'aquesta interfície, s'implementen 4 classes de peticions:

  • isc.py.msg.QueryRequest - Establir propietat Query per enviar una consulta SQL.
  • isc.py.msg.ClassRequest - Establir propietat Class per passar les dades de la classe.
  • isc.py.msg.TableRequest - Establir propietat Table per passar les dades de la taula.
  • isc.py.msg.GlobalRequest - Establir propietat Global transferir dades globalment.

En el procés de prova, mireu l'activitat RAWOn isc.py.msg.QueryRequest mostrat en acció.

Python Gateway a InterSystems IRIS

Desar/restaurar un context de Python

Finalment, podem emmagatzemar el context de Python a InterSystems IRIS, per fer-ho, enviar isc.py.msg.SaveRequest amb arguments:

  • Mask — Només es guarden les variables que compleixen la màscara. Admet * и ?... Exemple: "Data*, Figure?"... Per defecte *.
  • MaxLength — La longitud màxima de la variable emmagatzemada. Si la serialització d'una variable és més llarga, s'ignorarà. Establiu a 0 per obtenir variables de qualsevol longitud. Per defecte $$$MaxStringLength.
  • Name — Nom del context (opcional).
  • Description — Descripció del context (opcional).

Devolucions Ens.StringResponse с Id context guardat. En el procés de prova, mireu l'activitat Save Context.

Sol·licitud relacionada isc.py.msg.RestoreRequest carrega un context d'InterSystems IRIS a Python:

  • ContextId és l'identificador de context.
  • Clear — Netegeu el context abans de restaurar.

Jupyter Llibreta

Jupyter Llibreta és una aplicació web de codi obert que us permet crear i publicar quaderns que contenen codi, visualitzacions i text. Python Gateway us permet veure i editar els processos BPL com un bloc de notes de Jupyter. Tingueu en compte que l'executor normal de Python 3 s'està utilitzant actualment.

Aquesta extensió suposa que les anotacions contenen codi Python i utilitzen noms d'activitat com a títols anteriors. Ara és possible desenvolupar processos empresarials PythonGateway a Jupyter Notebook. Aquí teniu el que és possible:

  • Crear nous processos de negoci
  • Eliminar processos empresarials
  • Crear activitats noves
  • Canviar activitats
  • Suprimeix activitats

aquí està vídeo de demostració. I algunes captures de pantalla:

Explorador de processos

Python Gateway a InterSystems IRIS

Editor de processos

Python Gateway a InterSystems IRIS

Instal · lació

  1. Necessitareu InterSystems IRIS 2019.2+.
  2. Instal·leu PythonGateway v0.8+ (només requereix isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Actualitzeu el codi ObjectScript des del dipòsit.
  4. Executar do ##class(isc.py.util.Jupyter).Install() i seguiu les indicacions.

Registres.

Troballes

MLToolkit és un conjunt d'eines que pretén combinar models i un entorn transaccional perquè els models creats es puguin utilitzar fàcilment directament en els vostres processos de negoci. Python Gateway forma part de MLToolkit i proporciona integració amb el llenguatge Python, la qual cosa us permet orquestrar qualsevol algoritme d'aprenentatge automàtic creat a Python (l'entorn principal per a molts científics de dades), utilitzar nombroses biblioteques ja fetes per crear ràpidament una IA analítica adaptativa i robòtica. Solucions ML a la plataforma InterSystems IRIS.

Referències

MLToolkit

El grup d'usuaris MLToolkit és un dipòsit privat de GitHub creat com a part de l'organització corporativa de GitHub d'InterSystems. S'adreça a usuaris externs que estan instal·lant, aprenent o que ja utilitzen components MLToolkit, inclòs Python Gateway. El grup té una sèrie de casos implementats (amb codi font i dades de prova) en els camps del màrqueting, la fabricació, la medicina i moltes altres indústries. Per unir-vos al grup d'usuaris de ML Toolkit, envieu un breu correu electrònic a l'adreça següent: [protegit per correu electrònic] i inclou la informació següent a la teva carta:

  • Nom d'usuari de GitHub
  • Organització (treballes o estudies)
  • Posició (la vostra posició real a la vostra organització, "Estudiant" o "Independent").
  • País

Per a aquells que hagin llegit l'article i estiguin interessats en InterSystems IRIS com a plataforma per desenvolupar o allotjar mecanismes d'aprenentatge automàtic i intel·ligència artificial, us convidem a discutir possibles escenaris d'interès per a la vostra empresa. Analitzarem fàcilment les necessitats de la vostra empresa i determinarem conjuntament un pla d'acció; adreça electrònica de contacte del nostre grup d'experts en IA/ML: [protegit per correu electrònic].

Font: www.habr.com

Afegeix comentari