Questo articolo è dedicato a Python Gateway — un progetto comunitario open source per la piattaforma di dati InterSystems IRIS. Questo progetto consente di orchestrare qualsiasi algoritmo di machine learning creato in Python (l'ambiente principale per molti Data Scientist), utilizzando numerose librerie pronte per la creazione rapida di soluzioni analitiche adattive e robotizzate AI/ML sulla piattaforma InterSystems IRIS. In questo articolo mostrerò come InterSystems IRIS può orchestrare processi in Python, effettuare una trasmissione bidirezionale dei dati e creare processi aziendali intelligenti.
Piano
- Introduzione.
- Strumenti.
- Installazione.
- API.
- Interoperabilità.
- Jupyter Notebook.
- Conclusioni.
- Link.
- MLToolkit.
Introduzione
Python è un linguaggio di programmazione ad alto livello, orientato a migliorare la produttività dello sviluppatore e la leggibilità del codice. In questa serie di articoli parlerò delle possibilità di utilizzo del linguaggio Python sulla piattaforma InterSystems IRIS, con particolare focus sull'uso di Python come linguaggio per la creazione e applicazione di modelli di machine learning.
Il machine learning (ML) è una classe di metodi di intelligenza artificiale caratterizzati dall'apprendimento durante la risoluzione di una serie di compiti simili, piuttosto che dal fornire una soluzione diretta al problema.
Gli algoritmi e i modelli di machine learning stanno diventando sempre più comuni. Le ragioni sono molteplici, ma sono tutte riconducibili all'accessibilità, alla semplicità e ai risultati pratici ottenuti. È la clustering o anche la modellazione basata su reti neurali una tecnologia nuova?
Assolutamente no, ma oggi non è più necessario scrivere centinaia di migliaia di righe di codice per avviare un modello, e i costi per la creazione e l'applicazione dei modelli stanno diminuendo sempre di più.
Gli strumenti stanno evolvendo: mentre non abbiamo ancora strumenti AI/ML completamente orientati alla GUI, il progresso che abbiamo osservato in molte altre classi di sistemi informativi, come il BI (da scrivere codice a utilizzare framework e soluzioni configurabili orientate alla GUI), si sta verificando anche negli strumenti per la creazione di AI/ML. Abbiamo già superato la fase di scrittura del codice e oggi utilizziamo framework per costruire e addestrare modelli.
Altri miglioramenti, come la possibilità di distribuire modelli preaddestrati, in cui l'utente finale deve semplicemente completare l'addestramento del modello sui propri dati specifici, semplificano l'inizio dell'applicazione dell'apprendimento automatico. Questi progressi rendono significativamente più accessibile l'apprendimento dell'intelligenza artificiale sia per i professionisti che per le aziende nel loro complesso.
D'altra parte, stiamo raccogliendo sempre più dati. Grazie a una piattaforma dati unificata come InterSystems IRIS, tutte queste informazioni possono essere immediatamente preparate e utilizzate come dati di origine per i modelli di apprendimento automatico.
Con il passaggio al cloud, l'avvio di progetti AI/ML diventa più semplice che mai. Possiamo utilizzare solo le risorse di cui abbiamo bisogno. Inoltre, grazie alla parallelizzazione offerta dalle piattaforme cloud, possiamo risparmiare tempo.
Ma che dire dei risultati? Qui le cose si complicano. Esistono molti strumenti per costruire modelli, di cui parlerò in seguito. Creare un buon modello non è semplice, ma cosa viene dopo? Realizzare profitti dall'uso di un modello da parte delle imprese è anche un compito non banale. La radice del problema risiede nella separazione dei carichi analitici e transazionali, e dei modelli di dati. Quando alleniamo un modello, di solito lo facciamo su dati storici. Ma il posto di un modello costruito è nell'elaborazione transazionale dei dati. Qual è l'utile di un migliore modello di rilevamento delle transazioni fraudolente, se lo eseguiamo una volta al giorno? I truffatori sono già scappati con i soldi. Dobbiamo addestrare il modello su dati storici, ma dobbiamo anche applicarlo in tempo reale su nuovi dati in arrivo, affinché i nostri processi aziendali possano agire in base alle previsioni fatte dal modello.
ML Toolkit — una suite di strumenti il cui obiettivo è proprio questo: unire modelli e ambienti transazionali, affinché i modelli sviluppati possano essere facilmente utilizzati direttamente nei vostri processi aziendali. Python Gateway è parte di ML Toolkit e garantisce l'integrazione con il linguaggio Python (analogamente a R Gateway, che essendo parte di ML Toolkit, offre integrazione con il linguaggio R).
Strumenti
Prima di continuare, vorrei descrivere alcuni strumenti e librerie per Python che utilizzeremo più avanti.
Tecnologie
- Python è un linguaggio di programmazione interpretato e di alto livello, di uso generale. Il principale vantaggio del linguaggio è la vasta libreria di funzioni matematiche, ML e AI. Come ObjectScript, è un linguaggio orientato agli oggetti, ma tutto è definito dinamicamente, non staticamente. Inoltre, tutto è un oggetto. Gli articoli successivi presuppongono una conoscenza superficiale del linguaggio. Se desiderate iniziare l'apprendimento, consiglio di cominciare con .
- Per i nostri esercizi successivi, installa .
- IDE: Io utilizzo , ma in generale ci sono . Se utilizzi Atelier, esiste un plug-in Eclipse per gli sviluppatori Python. Se utilizzi VS Code, c'è un'estensione per Python.
- Notebook: invece di un IDE, puoi scrivere e condividere i tuoi script in notebook online. Il più popolare di questi è .
Librerie
Ecco un elenco (non completo) di librerie per l'apprendimento automatico:
- — un pacchetto fondamentale per i calcoli scientifici.
- — strutture dati ad alte prestazioni e strumenti per l'analisi dei dati.
- — creazione di grafici.
- — visualizzazione dei dati basata su matplotlib.
- — metodi di apprendimento automatico.
- — algoritmi di apprendimento automatico nell'ambito della metodologia del gradient boosting (Gradient Boosting).
- — NLP.
- — reti neurali.
- — piattaforma per la creazione di modelli di apprendimento automatico.
- — piattaforma per la creazione di modelli di apprendimento automatico, focalizzata su Python.
- — PMML da diversi modelli.
Le tecnologie AI/ML possono rendere le aziende più efficienti e adattabili. Inoltre, oggi queste tecnologie stanno diventando più semplici da sviluppare e implementare. Inizia a esplorare le tecnologie AI/ML e come possono aiutare la tua organizzazione a crescere.
Installazione
Ci sono diversi modi per installare e utilizzare Python Gateway:
- il sistema operativo
- Windows
- Linux
- Mac
- Docker
- Utilizza un'immagine da DockerHub
- Crea la tua immagine personalizzata
Indipendentemente dal metodo di installazione, avrai bisogno del codice sorgente. L'unico posto per scaricare il codice è la . Questa contiene le release stabili testate, basta prendere l'ultima. Attualmente è la 0.8, ma ci saranno aggiornamenti nel tempo. Non clonare/caricare il repository, scarica l'ultima release.
il sistema operativo
Se stai installando Python Gateway su un sistema operativo, dovrai prima (indipendentemente dal sistema operativo) installare Python. Per fare ciò:
- . Si consiglia di installare Python nella directory predefinita.
- Installa il modulo
dill:pip install dill. - Carica il codice ObjectScript (cioè,
do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) in qualsiasi namespace con prodotti. Se desideri che un namespace esistente supporti i prodotti, esegui:write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1). - Posiziona nella cartella
bindella tua istanza InterSystems IRIS. Il file della libreria deve essere accessibile nel percorso restituito dawrite ##class(isc.py.Callout).GetLib().
Windows
- Assicurati che la variabile d'ambiente
PYTHONHOMEindichi Python 3.6.7. - Verifica che la variabile d'ambiente di sistema
PATHincluda la variabilePYTHONHOME(o la directory a cui si riferisce).
Linux (Debian/Ubuntu)
- Controlla che la variabile d'ambiente
PATHcontiene/usr/libe/usr/lib/x86_64-linux-gnu. Usa il file/etc/environmentper impostare le variabili d'ambiente. - In caso di errori
undefined symbol: _Py_TrueStructconfigura l'impostazionePythonLib. Inoltre nel è presente una sezione di Risoluzione dei problemi.
Mac
- Attualmente è supportato solo Python 3.6.7 da . Controlla la variabile
PATH.
Se hai modificato le variabili d'ambiente, riavvia il tuo prodotto InterSystems.
Docker
L'utilizzo dei container offre diversi vantaggi:
- Portabilità
- Efficienza
- Isolamento
- Leggerezza
- Immutabilità
Consulta questa per ulteriori informazioni sull'uso di Docker con i prodotti InterSystems.
Tutte le build di Python Gateway sono attualmente basate su container 2019.4.
Immagine pronta
Esegui: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latest, per scaricare e avviare Python Gateway con InterSystems IRIS Community Edition. Questo è tutto.
Crea la tua immagine personalizzata
Per costruire l'immagine docker, esegui nella radice del repository: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Per impostazione predefinita, l'immagine viene costruita su base dell'immagine store/intersystems/iris-community:2019.4.0.383.0, tuttavia puoi modificarlo impostando la variabile IMAGE.
Per costruire da InterSystems IRIS, esegui: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest`.
Dopo di ciò, puoi avviare l'immagine Docker:
docker run -d
-p 52773:52773
-v //:/mount
--name irispy
intersystemscommunity/irispy:latest
--key /mount/iris.keySe stai usando un'immagine basata su InterSystems IRIS Community Edition, non è necessario specificare la chiave.
Commenti
- Processo di test
isc.py.test.Processsalva una serie di immagini in una directory temporanea. Potresti voler modificare questo percorso in una directory montata. Per farlo, modifica l'impostazioneWorkingDirspecificando la directory montata. - Per accedere al terminale, esegui:
docker exec -it irispy sh. - Accesso al Portale di Gestione del Sistema con login
SuperUser/SYS. - Per fermare il container, esegui:
docker stop irispy && docker rm --force irispy.
Verifica dell'installazione
Dopo aver installato Python Gateway, è opportuno verificare che funzioni. Esegui questo codice nel terminale di InterSystems IRIS:
set sc = ##class(isc.py.Callout).Setup()
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
write varIl risultato dovrebbe essere stampato HELLO — il valore della variabile Python x. Se lo stato restituito sc è un errore o var è vuoto, controlla .
API
Python Gateway è installato e hai verificato che funzioni. È ora di iniziare a usarlo!
L'interfaccia principale per Python è isc.py.Main. Offre i seguenti gruppi di metodi (tutti restituiscono %Status):
- Esecuzione del codice
- Trasmissione dati
- Ausiliari
Esecuzione del codice
Questi metodi consentono di eseguire codice Python arbitrario.
SimpleString
SimpleString — è il metodo principale. Accetta 4 argomenti opzionali:
code— stringa di codice da eseguire. Simbolo di nuova riga:$c(10).returnVariable— nome della variabile da restituire.serialization— come serializzarereturnVariable. 0 — string (predefinito), 1 — repr.result— ByRef riferimento alla variabile in cui viene scritto il valorereturnVariable.
Abbiamo eseguito:
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).In questo esempio stiamo assegnando alla variabile Python x valore Hello e vogliamo restituire il valore della variabile Python x nella variabile ObjectScript var.
ExecuteCode
ExecuteCode è un'alternativa più sicura e meno restrittiva SimpleString.
Le stringhe nella piattaforma InterSystems IRIS sono limitate a 3.641.144 caratteri, e se desideri eseguire un pezzo di codice più lungo, devi utilizzare i flussi.
Si accettano due argomenti:
code— una stringa o un flusso di codice Python da eseguire.variable— (opzionale) assegna il risultato dell'esecuzione acodequesta variabile Python.
Esempio d'uso:
set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").In questo esempio moltiplichiamo 2 per 3 e registriamo il risultato in una variabile Python. y.
Trasmissione dati
Passa dati a Python e indietro.
Python -> InterSystems IRIS
Ci sono 4 modi per ottenere il valore di una variabile Python in InterSystems IRIS, a seconda della serializzazione di cui hai bisogno:
Stringaper tipi di dati semplici e debug.Reprper memorizzare oggetti semplici e debug.JSONper una facile manipolazione dei dati sul lato InterSystems IRIS.Pickleper la conservazione di oggetti.
Questi metodi consentono di ottenere variabili da Python come stringhe o flussi.
GetVariable(variable, serialization, .stream, useString)— ottenereserializationla variabilevariableinstream. SeuseStringè uguale a 1 e la serializzazione è memorizzata in una stringa, allora viene restituita una stringa e non un flusso.GetVariableJson(variable, .stream, useString)— ottenere la serializzazione JSON della variabile.GetVariablePickle(variable, .stream, useString, useDill)-ottenere la serializzazione Pickle (o Dill) di una variabile.
Proviamo a ottenere la nostra variabile y.
set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6InterSystems IRIS -> Python
Carichiamo i dati da InterSystems IRIS in Python.
ExecuteQuery(query, variabile, tipo, namespace)— crea un set di dati (pandasdataframeolist) da una query sql e lo imposta in una variabile Pythonvariable. Il pacchettoisc.pydeve essere accessibile nell'areanamespace— lì verrà eseguita la query.ExecuteGlobal(global, variabile, tipo, start, end, mask, labels, namespace)— carica i dati di un globaleglobalda un sottoscrittorestartfino aendin Python come variabile di tipotype:list, oppure pandasdataframe. La descrizione degli argomenti opzionalimaskandetichetteè disponibile nella documentazione della classe e nel repository .ExecuteClass(class, variabile, tipo, start, end, properties, namespace)— carica i dati di una classeclassda idstartfino aendin Python come variabile di tipotype:list, oppure pandasdataframe.properties— elenco (separatore — virgola) delle proprietà della classe da caricare nel set di dati. Sono supportate le maschere*e?. Di default —*(tutte le proprietà). La proprietà%%CLASSNAMEviene ignorata.ExecuteTable(table, variabile, tipo, start, end, properties, namespace)— carica i dati di una tabellatableda idstartfino aendin Python.
ExecuteQuery — è universale (qualsiasi query SQL corretta sarà passata a Python). Tuttavia, ExecuteGlobal e le sue wrapper ExecuteClass e ExecuteTable lavorano con alcune limitazioni. Sono notevolmente più veloci (da 3 a 5 volte più veloci dei driver ODBC e 20 volte più veloci ExecuteQuery). Maggiori informazioni su .
Tutti questi metodi supportano il trasferimento di dati da qualsiasi area. Il pacchetto isc.py deve essere accessibile nell'area target.
ExecuteQuery
ExecuteQuery(request, variable, type, namespace) — trasferimento dei risultati di qualsiasi query SQL valida in Python. Questo è il metodo più lento per il trasferimento dei dati. Utilizzalo se ExecuteGlobal e i suoi wrapper non sono disponibili.
Argomenti:
query— query SQL.variable— nome della variabile Python in cui verranno registrati i dati.type—listo Pandasdataframe.namespace— area in cui verrà eseguita la query.
ExecuteGlobal
ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) — trasferimento di un globale in Python.
Argomenti:
global— nome del globale senza^variable— nome della variabile Python in cui verranno registrati i dati.type—listo Pandasdataframe.start— primo sottoscrittore del globale. Obbligatorio%Integer.end— ultimo sottoscrittore del globale. Obbligatorio%Integer.mask— maschera dei valori del globale. La maschera può essere più corta del numero di campi nel globale (in questo caso i campi finali verranno saltati). Come formattare la maschera:+trasmettere il valore così com'è.-saltare il valore.b— Tipo logico (0—Falso, tutto il resto —True).d— Data (da $horolog, su Windows dal 1970, su Linux dal 1900).t— Orario ($horolog, secondi dopo la mezzanotte).m— Timestamp (formato YEAR-MONTH-DAY HOUR:MINUTE:SECOND).
etichette— %List dei nomi delle colonne. Il primo elemento è il nome del sottoscrittore.namespace— area in cui verrà eseguita la query.
ExecuteClass
Wrapper sopra ExecuteGlobal. Sulla base della definizione della classe prepara la chiamata ExecuteGlobal e la esegue.
ExecuteClass(class, variabile, tipo, start, end, properties, namespace) — passaggio dei dati della classe in Python.
Argomenti:
class— nome della classevariable— nome della variabile Python in cui verranno registrati i dati.type—listo Pandasdataframe.start— Id iniziale.end— Id finaleproperties— elenco (separatore — virgola) delle proprietà della classe da caricare nel set di dati. Sono supportate le maschere*e?. Di default —*(tutte le proprietà). La proprietà%%CLASSNAMEviene ignorata.namespace— area in cui verrà eseguita la query.
Tutte le proprietà vengono passate così come sono, tranne le proprietà di tipo %Date, %Ora, %Booleano e %Timestamp — vengono convertiti nei corrispondenti tipi Python.
ExecuteTable
Wrapper sopra ExecuteClass. Trasmette il nome della tabella nel nome della classe e la chiama ExecuteClass. Firma:
ExecuteTable(table, variabile, tipo, start, end, properties, namespace) — passaggio dei dati della tabella in Python.
Argomenti:
table— nome della tabella.
Tutti gli altri argomenti vengono passati così come sono aExecuteClass.
Note
ExecuteGlobal,ExecuteClasseExecuteTablefunzionano altrettanto velocemente.ExecuteGlobal20 volte più veloce diExecuteQuerysu grandi set di dati (tempo di trasmissione superiore a >0.01 secondi).ExecuteGlobal,ExecuteClasseExecuteTablefunzionano su globali con questa struttura:^global(key) = $lb(prop1, prop2, ..., propN)dovekey— numero intero.- Per
ExecuteGlobal,ExecuteClasseExecuteTableintervallo di valori supportato%Datecorrisponde all'intervallomktimee dipende dal sistema operativo (: 1970-01-01, 1900-01-01, ). Utilizzare%Timestampper passare dati al di fuori di questo intervallo o utilizzare un pandas dataframe poiché questa restrizione è valida solo per la lista. - Per
ExecuteGlobal,ExecuteClasseExecuteTabletutti gli argomenti tranne la fonte dei dati (globale, classe o tabella) e la variabile sono facoltativi.
Esempi
Classe di test contiene un metodo che dimostra tutte le modalità di trasferimento dei dati:
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"
// Argomenti comuni
set variable = "df"
set type = "dataframe"
set start = 1
set end = $g(^isc.py.test.PersonD, start)
// Metodo 0: ExecuteGlobal senza argomenti
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 0, type)
// Metodo 1: ExecuteGlobal con argomenti
// Durante il passaggio del globale, i nomi dei campi sono specificati manualmente
// globalKey - nome del sotto-scrittore
set labels = $lb("globalKey", "Nome", "Data di nascita", "TS", "TempoCasuale", "AnniEtà", "EtàDecimale", "EtàDoppia", "Bool")
// mask contiene un elemento in meno di labels perché "globalKey" è il nome del sotto-scrittore
// Saltiamo %%CLASSNAME
set mask = "-+dmt+++b"
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 1, type, start, end, mask, labels)
// Metodo 2: ExecuteClass
set sc = ##class(isc.py.Main).ExecuteClass(class, variable _ 2, type, start, end)
// Metodo 3: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteTable(table, variable _ 3, type, start, end)
// Metodo 4: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteQuery(query, variable _ 4, type)Chiama il metodo do ##class(isc.py.test.Person).Test() per vedere come funzionano tutti i metodi di trasferimento dei dati.
Metodi ausiliari
GetVariableInfo(variable, serialization, .defined, .type, .length)— ottenere informazioni sulla variabile: se è definita, classe e lunghezza della serializzazione.GetVariableDefined(variable, .defined)— è stata definita la variabile.GetVariableType(variable, .type)— ottenere la classe della variabile.GetStatus()— ottenere e rimuovere l'ultima eccezione dal lato Python.GetModuleInfo(module, .imported, .alias)— ottenere la variabile del modulo e lo stato di importazione.GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments)— ottenere informazioni sulla funzione.
Interoperabilità
Hai imparato a chiamare il Python Gateway dal terminale, ora iniziamo a utilizzarlo nella produzione. La base dell'interazione con Python in questo modo è isc.py.ens.Operation. Ci permette di:
- Eseguire codice Python
- Salvare/Ripristinare il contesto Python
- Caricare e ottenere dati da Python
Fondamentalmente, un'operazione Python è una wrapper su isc.py.Main. L'operazione isc.py.ens.Operation consente l'interazione con il processo Python dalle produzioni di InterSystems IRIS. Sono supportate cinque richieste:
isc.py.msg.ExecutionRequestper eseguire codice Python. Restituisceisc.py.msg.ExecutionResponsecon il risultato dell'esecuzione e i valori delle variabili richieste.isc.py.msg.StreamExecutionRequestper eseguire codice Python. Restituisceisc.py.msg.StreamExecutionResponserisultato dell'esecuzione e i valori delle variabili richieste. Simileisc.py.msg.ExecutionRequest, ma accetta e restituisce flussi anziché stringhe.isc.py.msg.QueryRequestper restituire il risultato dell'esecuzione di una query SQL. RestituisceEns.Response.isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequestper la trasmissione dei dati globali/di classe/di tabella. RestituisceEns.Response.isc.py.msg.SaveRequestper salvare il contesto Python. RestituisceEns.StringResponsecon l'identificativo del contesto.isc.py.msg.RestoreRequestper ripristinare il contesto Python.Inoltre,
isc.py.ens.Operationha due impostazioni:Inizializzatore— selezione della classe che implementa l'interfacciaisc.py.init.Abstract. Può essere utilizzato per caricare funzioni, moduli, classi, ecc. Viene eseguito una sola volta all'avvio del processo.PythonLib— (solo per Linux) se vedere errori durante il caricamento, impostare il suo valore alibpython3.6m.soo anche al percorso completo della libreria Python.
Creazione di processi aziendali
Sono disponibili due classi che semplificano lo sviluppo di processi aziendali:
isc.py.ens.ProcessUtilspermette di estrarre annotazioni dalle attività con sostituzione di variabili.isc.py.util.BPEmulatorconsente di testare facilmente i processi aziendali con Python. Può eseguire un processo aziendale (parti in linguaggio Python) nel processo corrente.
Sostituzione di variabili
Tutti i processi aziendali ereditati da isc.py.ens.ProcessUtils, possono utilizzare il metodo GetAnnotation(name) per ottenere il valore dell'annotazione dell'attività in base al suo nome. L'annotazione dell'attività può contenere variabili che saranno calcolate sul lato di InterSystems IRIS prima di essere passate a Python. Ecco la sintassi per la sostituzione delle variabili:
${class:method:arg1:...:argN}— chiamata del metodo#{expr}— eseguire codice in ObjectScript.
Un esempio è disponibile nel processo aziendale di test isc.py.test.Process, ad esempio, nell'attività Matrice di Correlazione: Grafico: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). In questo esempio:
#{process.WorkDirectory}restituisce la proprietà WorkDirectory dell'oggettoprocesscioè, il processo aziendale corrente.isc.py.test.Process${%PopulateUtils:Integer:1:100}${%PopulateUtils:Integer:1:100}invoca il metodoInteroclasse%PopulateUtils, passando gli argomenti1e100, restituendo un numero intero casuale nell'intervallo1...100.
Processo aziendale di test
I dati di test e il processo aziendale di test sono disponibili di default come parte del gateway Python Gateway. Per utilizzarli:
- Esegui nel terminale OS:
pip install pandas matplotlib seaborn. - Esegui nel terminale InterSystems IRIS:
do ##class(isc.py.test.CannibalizationData).Import()per riempire i dati di test. - Avvia la produzione
isc.py.test.Production. - Invia una richiesta di tipo
Ens.Requestinisc.py.test.Process.
Vediamo come funziona tutto insieme. Apri isc.py.test.Process nell'editor BPL:

Esecuzione del codice
La chiamata più importante è l'esecuzione del codice Python:

Richiesta utilizzata isc.py.msg.ExecutionRequest, ecco le sue proprietà:
Code— codice Python.SeparateLines— suddividere il codice in righe per l'esecuzione.$c(10)(n) viene utilizzato per separare le righe. Si prega di notare che NON è consigliabile elaborare l'intero messaggio contemporaneamente, questa funzione è destinata esclusivamente all'elaborazionedefe simili espressioni multilinea. Per impostazione predefinita0.Variabili— elenco di variabili separate da virgole che verranno incluse nella risposta.Serializzazione— come serializzare le variabili che desideriamo restituire. Opzioni:Str,Repr,JSON,PickleeDill, per impostazione predefinitaStr.
Nel nostro caso, impostiamo solo la proprietà Code, in modo che tutte le altre proprietà utilizzino i valori predefiniti. Lo impostiamo chiamando process.GetAnnotation("Import pandas"), che durante l'esecuzione restituisce l'annotazione dopo aver effettuato la sostituzione delle variabili. Infine, il codice import pandas as pd verrà passato a Python. GetAnnotation può essere utile per ottenere script Python multilinea, ma non ci sono restrizioni su questo modo di ottenere il codice. Puoi impostare la proprietà Code in qualsiasi modo ti sia comodo.
Ottenere variabili
Un'altra sfida interessante utilizzando isc.py.msg.ExecutionRequest — Matrice di Correlazione: Tabellare:

Calcola la Matrice di Correlazione sul lato Python ed estrae la variabile corrmat di nuovo in InterSystems IRIS in formato JSON, impostando le proprietà della richiesta:
Variabili:"corrmat"Serializzazione:"JSON"
Possiamo visualizzare i risultati in Visual Trace:

E se avessimo bisogno di questo valore nel BP, possiamo ottenerlo in questo modo: callresponse.Variables.GetAt("corrmat").
Trasmissione dati
Ora parliamo del trasferimento dei dati da InterSystems IRIS a Python; tutte le richieste di trasferimento dati implementano l'interfaccia isc.py.msg.DataRequest, che fornisce le seguenti proprietà:
Variabile— variabile Python in cui vengono scritti i dati.Tipo— tipo di variabile:dataframe(dataframe pandas) olist.Namespace— ambito da cui otteniamo i dati. Il pacchettoisc.pydeve essere accessibile in questo ambito. Questo può essere un ambito senza supporto per le produzioni.
In base a questa interfaccia sono stati implementati 4 classi di richieste:
isc.py.msg.QueryRequest— impostare la proprietàQueryper trasmettere la query SQL.isc.py.msg.ClassRequest— impostare la proprietàClasseper trasmettere i dati della classe.isc.py.msg.TableRequest— impostare la proprietàTabellaper trasmettere i dati della tabella.isc.py.msg.GlobalRequest— impostare la proprietàGlobaleper trasmettere i dati globali.
Nel processo di testing guarda l'attività RAW, dove isc.py.msg.QueryRequest mostrato in azione.

Salvataggio/ripristino del contesto Python
Infine, possiamo salvare il contesto Python in InterSystems IRIS, per farlo invieremo isc.py.msg.SaveRequest con argomenti:
Mask— Vengono salvate solo le variabili che soddisfano la maschera. Supportati*e?. Esempio:"Data*, Figure?". Per impostazione predefinita*.MaxLength— Lunghezza massima della variabile memorizzata. Se la serializzazione della variabile è più lunga, verrà ignorata. Imposta 0 per ottenere variabili di qualsiasi lunghezza. Per impostazione predefinita$$$MaxStringLength.Name— Nome del contesto (opzionale).Descrizione— Descrizione del contesto (opzionale).
Restituisce Ens.StringResponse con Id del contesto salvato. Nel processo di test, controlla l'attività Salva contesto.
Richiesta corrispondente isc.py.msg.RestoreRequest carica il contesto da InterSystems IRIS a Python:
ContextId— identificatore del contesto.Pulisci— pulire il contesto prima del ripristino.
Jupyter Notebook
— è un'applicazione web open source che consente di creare notebook contenenti codice, visualizzazioni e testo e pubblicarli. Python Gateway consente di visualizzare e modificare i processi BPL come Jupyter Notebook. Si noti che attualmente viene utilizzato l'esecutore Python 3 standard.
Questa estensione presuppone che le annotazioni contengano codice Python e utilizzino i nomi delle attività come intestazioni precedenti. Ora è possibile sviluppare processi aziendali PythonGateway in Jupyter Notebook. Ecco cosa è possibile:
- Creare nuovi processi aziendali
- Eliminare processi aziendali
- Creare nuove attività
- Modificare attività
- Eliminare attività
Ecco . E alcuni screenshot:
Esplora processi

Editor di processi

Installazione
- Avrai bisogno di InterSystems IRIS 2019.2+.
- Installa PythonGateway v0.8+ (richiesto solo
isc.py.util.Jupyter,isc.py.util.JupyterCheckpointseisc.py.ens.ProcessUtils). - Aggiorna il codice ObjectScript dal repository.
- Esegui
do ##class(isc.py.util.Jupyter).Install()e segui le istruzioni.
.
Conclusioni
MLToolkit è un insieme di strumenti con l'obiettivo di integrare modelli e ambienti transazionali, consentendo di utilizzare facilmente i modelli costruiti direttamente nei tuoi processi aziendali. Python Gateway è parte di MLToolkit e fornisce integrazione con il linguaggio Python, permettendo di orchestrare qualsiasi algoritmo di machine learning creato in Python (l'ambiente principale per molti Data Scientists) e di utilizzare numerose librerie pronte per la creazione rapida di soluzioni analitiche AI/ML adattative e robotizzate sulla piattaforma InterSystems IRIS.
Link
MLToolkit
Il gruppo utenti MLToolkit è un repository GitHub privato, creato come parte dell'organizzazione aziendale GitHub di InterSystems. È rivolto a utenti esterni che installano, esplorano o utilizzano già i componenti di MLToolkit, inclusa la Python Gateway. Nel gruppo sono disponibili diversi casi realizzati (con codice sorgente e dati di test) in ambiti come marketing, produzione, medicina e molti altri settori. Per unirti al gruppo utenti ML Toolkit, ti preghiamo di inviare un breve messaggio via email al seguente indirizzo: e indica nella tua email le seguenti informazioni:
- Nome utente GitHub
- Organizzazione (dove lavori o studi)
- Posizione (il tuo attuale ruolo nella tua organizzazione, oppure "Studente", o "Indipendente").
- Paese
A chi ha letto l'articolo e è interessato alle potenzialità di InterSystems IRIS come piattaforma per lo sviluppo o l'hosting di meccanismi di intelligenza artificiale e apprendimento automatico, offriamo l'opportunità di discutere scenari potenzialmente rilevanti per la vostra azienda. Siamo pronti ad analizzare le esigenze della vostra azienda e a definire insieme un piano d'azione; l'indirizzo email del nostro gruppo di esperti AI/ML è .
Fonte: habr.com
