Python Gateway az InterSystems IRIS-ben

Ez a cikk a Python Gateway-ről szól, amely egy nyílt forráskódú közösségi projekt az InterSystems IRIS adatplatformhoz. Ez a projekt lehetővé teszi bármilyen gépi tanulási algoritmus megszervezését, amelyet Python nyelven készítettek (amely a Data Scientistok számára alapvető környezet), számos kész könyvtár használatát a rugalmas, automatizált AI/ML elemző megoldások gyors létrehozásához az InterSystems IRIS platformon. Ebben a cikkben megmutatom, hogyan tudja az InterSystems IRIS megszervezni a folyamatokat Python nyelven, hatékonyan megvalósítani a kétirányú adatátvitelt és létrehozni intelligens üzleti folyamatokat.

Terv

  1. Bevezetés.
  2. Eszközkészlet.
  3. Telepítés.
  4. API.
  5. Interoperabilitás.
  6. Jupyter Notebook.
  7. Következtetések.
  8. Hivatkozások.
  9. MLToolkit.

Bevezetés

A Python egy általános célú, magas szintű programozási nyelv, amely a fejlesztők hatékonyságának és a kód olvashatóságának növelésére összpontosít. Ebben a cikk sorozatban bemutatom a Python nyelv alkalmazási lehetőségeit az InterSystems IRIS platformon, különös figyelmet fordítva a Python használatára gépi tanulási modellek létrehozására és alkalmazására.

A gépi tanulás (ML) egy mesterséges intelligenciához tartozó módszercsoport, amelynek jellemzője, hogy nem közvetlenül old meg egy feladatot, hanem a hasonló feladatok megoldása során tanul.

A gépi tanulás algoritmusai és modellei egyre elterjedtebbek. Ennek számos oka van, de mind arra vezethető vissza, hogy elérhetővé váltak, könnyen használhatók és gyakorlati eredményeket hoznak. A klaszterezés vagy akár a neurális hálózati modellezés új technológiának számít?

Természetesen nem, de jelenleg nincs szükség arra, hogy számos ezer sor kódot írjunk egyetlen modell elindításához, és az modellek létrehozásának és alkalmazásának költségei folyamatosan csökkennek.

Az eszközök fejlődnek — miközben nincsenek teljesen GUI-irányított AI/ML eszközök, a fejlődés, amelyet más információs rendszerek osztályaiban, például a BI-ben tapasztaltunk (a kódírástól a keretrendszer és GUI-irányított konfigurálható megoldások használatáig), az AI/ML eszközökben is megfigyelhető. Már túlléptünk a kódírás fázisán, és ma keretrendszereket használunk a modellek felépítésére és oktatására.

Más egyéb fejlesztések, például a lehetőség a már előképzett modellek terjesztésére, amikor a végfelhasználónak csak a modell tanítását kell befejeznie a saját, specifikus adataival, könnyebbé teszi a gépi tanulás alkalmazásának megkezdését. Ezek az áttörések jelentősen leegyszerűsítik a gépi tanulás tanulmányozását mind a szakemberek, mind a cégek számára.

Másrészről egyre több adatot gyűjtünk. Az InterSystems IRIS-hez hasonló egységesített adatplatform révén ez az információ azonnal feldolgozható és felhasználható a gépi tanulási modellek alapadataként.

A felhőre való átállással az AI/ML projektek indítása könnyebbé válik, mint valaha. Csak azokat az erőforrásokat használjuk, amelyekre szükségünk van. Továbbá, a felhőplatformok által kínált párhuzamosítás révén időt is megtakaríthatunk.

De mi a helyzet az eredményekkel? Itt kezd bonyolultabbá válni a dolog. Számos eszköz létezik a modellek építésére, amelyeket később ismertetek. Jó modellt építeni nem könnyű, de mi jön ezután? A modell üzleti hasznosítása szintén nem trivialis feladat. A probléma gyökere az analitikai és tranzakciós terhelések, valamint az adatmodellek szétválasztásában rejlik. Amikor a modellt tanítjuk, ezt általában történeti adatokon tesszük. De a felépített modell helye a tranzakciós adatfeldolgozásban van. Mi értelme van a legjobb csalás-észlelő modellnek, ha naponta egyszer futtatjuk? A csalók már rég elmentek a pénzükkel. A modellt történeti adatokon kell tanítani, de azt is valós időben kell alkalmaznunk az újonnan beérkező adatokon, hogy üzleti folyamataik a modell által tett előrejelzések szerint tudjanak működni.

A ML Toolkit olyan eszközök gyűjteménye, amelynek célja éppen ez: a modellek és a tranzakciós környezet integrálása, hogy az épített modelleket könnyen fel lehessen használni közvetlenül az üzleti folyamataikban. A Python Gateway a ML Toolkit részét képezi, és integrációt biztosít a Python nyelvvel (hasonlóan az R Gateway-hez, amely a ML Toolkit részeként az R nyelv integrálását biztosít).

Eszköztár

Mielőtt tovább lépnénk, szeretném néhány eszközt és könyvtárat bemutatni Pythonban, amelyet később használni fogunk.

Technológiák

  • A Python egy értelmezett, magas szintű, általános célú programozási nyelv. A nyelv fő előnye a nagy matematikai, ML és AI könyvtárak választéka. Az ObjectScript-hez hasonlóan ez is egy objektum-orientált nyelv, de minden dinamikusan, nem statikusan van meghatározva. Emellett minden egy objektum. A későbbi cikkek egy rövid ismeretanyagot feltételeznek a nyelvről. Ha szeretné elkezdeni a tanulást, azt javaslom, hogy kezdje itt: dokumentáció.
  • A következő gyakorlatokhoz telepítse a Python 3.6.7 64 bit.
  • IDE: Én a PyCharm, de általában használható más is, sok. Ha az Atelier-t használja, van egy Eclipse-bővítmény Python fejlesztők számára. Ha a VS Code-t használja, van egy kiegészítő Pythonhoz.
  • Notebook: Az IDE helyett online jegyzetfüzetekben írhat és oszthat meg a szkriptjeit. A legnépszerűbb ezek közül a Jupyter.

Könyvtárak

Íme egy (nem teljes) lista gépi tanulásra vonatkozó könyvtárakról:

Az AI/ML technológiák lehetővé teszik a vállalkozások hatékonyabbá és alkalmazkodóbbá tételét. Ráadásul manapság ezek a technológiák egyre könnyebben fejleszthetők és alkalmazhatók. Kezdje el tanulmányozni az AI/ML technológiákat és azt, hogyan segíthetnek szervezetének növekedni.

Telepítés

Több módja is van a Python Gateway telepítésének és használatának:

  • Windows OS
    • Windows
    • Linux
    • Mac
  • Docker
    • Használjon képet a DockerHub-ból.
    • Hozzon létre saját képet.

Függetlenül a telepítés módjától, szüksége lesz a forráskódra. A kód letöltésére csak egy hely van: a kiadási oldalon. Ez tartalmazza a tesztelt stabil kiadásokat, egyszerűen vegye az utolsót. Jelenleg ez a 0.8, de idővel újabbak is fognak érkezni. Ne klónozza/ töltsön le a tárolót, inkább töltse le a legfrissebb kiadást.

Windows OS

Ha Python Gateway-t telepít a működtetett rendszerre, először (függetlenül a rendszertől) telepítenie kell a Python-t. Ehhez:

  1. Telepítse a Python 3.6.7 64 bit verzióját. Javasolt a Python-t az alapértelmezett könyvtárba telepíteni.
  2. Telepítse a modult dill: pip install dill.
  3. Töltse le az ObjectScript kódot (azaz do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) bármelyik szervezetbe a termékekkel. Ha azt szeretné, hogy a meglévő terület támogassa a termékeket, futtassa: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Helyezze el callout DLL/SO/DYLIB tartalmát a mappába bin az InterSystems IRIS példányában. A könyvtárfájnak elérhetőnek kell lennie a visszaadott úton write ##class(isc.py.Callout).GetLib().

Windows

  1. Győződjön meg arról, hogy a környezeti változó PYTHONHOME a Python 3.6.7-re mutat.
  2. Győződjön meg arról, hogy a rendszer környezeti változója PATH tartalmazza a változót PYTHONHOME (vagy a mappát, amire mutat).

Linux (Debian/Ubuntu)

  1. Ellenőrizze, hogy a környezeti változó PATH tartalmazza /usr/lib és /usr/lib/x86_64-linux-gnu. Használja a fájlt /etc/environment az környezeti változók beállításához.
  2. Hibák esetén undefined symbol: _Py_TrueStruct állítsa be a PythonLib. Továbbá a Readme tartalmazza a Hibaelhárítás szakaszt.

Mac

  1. Jelenleg csak a Python 3.6.7 van támogatva a Python.org. Ellenőrizze a változót PATH.

Ha módosította a környezeti változókat, indítsa újra az InterSystems termékét.

Docker

A konténerek használatának számos előnye van:

  • Hordozhatóság
  • Hatékonyság
  • Elszigetelés
  • Könnyűségének
  • Immutable

Ismerkedjen meg ezzel a cikkből álló sorozattal további információkért az InterSystems termékek Dockerrel való használatáról.

Jelenleg minden Python Gateway kiadás konténerekre épül 2019.4.

Elkészített kép

Futtassa: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latest, hogy letöltse és elindítsa a Python Gateway-t az InterSystems IRIS Community Editionnel. Ennyi.

Hozzon létre saját képet.

A docker-kép felépítéséhez futtassa a repository gyökerében: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Alapértelmezés szerint a kép a store/intersystems/iris-community:2019.4.0.383.0, de ezt megváltoztathatja az IMAGE.
változó beállításával.

Az InterSystems IRIS-ból való építéshez futtassa: `docker build —build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 —force-rm —tag intersystemscommunity/irispy:latest `.

Ezután elindíthatja a docker-képet:

docker run -d -p 52773:52773 -v //:/mount --name irispy intersystemscommunity/irispy:latest --key /mount/iris.key

Megjegyzések

  • Tesztelési folyamat isc.py.test.Process több képet tárol ideiglenes könyvtárba. Lehet, hogy érdemes megváltoztatni ezt az útvonalat egy csatolt könyvtárra. Ehhez szerkeszteni kell a beállítást WorkingDir a csatolt könyvtár megadásával.
  • A terminálhoz való hozzáféréshez futtassa: docker exec -it irispy sh.
  • Hozzáférés a Rendszerkezelő Portálhoz bejelentkezéssel SuperUser/SYS.
  • A konténer leállításához futtassa: docker stop irispy && docker rm --force irispy.

A telepítés ellenőrzése

Miután telepítette a Python Gateway-t, érdemes ellenőrizni, hogy működik-e. Futtassa ezt a kódot az InterSystems IRIS terminálján:

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

Az eredménynek a következőt kellene kiírnia HELLO — a Python változó értéke x. Ha a visszatérési státusz sc hiba vagy var üres, ellenőrizze Readme — Hibakeresési szakasz.

API

A Python Gateway telepítve van, és megbizonyosodott róla, hogy működik. Itt az idő elkezdeni használni!
A Python fő interfésze a isc.py.Main. Ez a következő metóduscsoportokat kínálja (mind visszatéríti a %Status):

  • Kód végrehajtása
  • Adatátvitel
  • Segédprogramok

Kód végrehajtása

Ezek a metódusok lehetővé teszik tetszőleges Python kód végrehajtását.

SimpleString

SimpleString — ez a fő metódus. Négy vol. érvelést fogad el:

  • kód — a végrehajtandó kód stringje. Sorvégi szimbólum: $c(10).
  • returnVariable — a visszatérendő változó neve.
  • serialization — hogyan sorozza ezt. returnVariable. 0 — string (alapértelmezett), 1 — repr.
  • eredmény — ByRef referencia a a változóra, amelyben az érték tárolódik returnVariable.

Fent végrehajtottuk:

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

Ebben a példában a Python változónak adunk értéket x értéket Helló és vissza szeretnénk kapni a Python változó értékét x az ObjectScript változóba var.

ExecuteCode

Az ExecuteCode egy biztonságosabb és kevésbé korlátozott alternatíva SimpleString.
Az InterSystems IRIS platformja korlátozott 3 641 144 karakter hosszig, és ha hosszabb kódot szeretne végrehajtani, folyamatazonosítókra van szükség.
Két érvet fogad el:

  • kód — a végrehajtandó Python kód stringje vagy folyamata.
  • variable — (opcionális) a végrehajtás eredményének hozzárendelése kód ehhez a Python változóhoz.

Példa a használatára:

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

Ebben a példában megszorozzuk a 2-t a 3-mal, és az eredményt egy Python változóba írjuk. y.

Adatátvitel

Adatok átadása Pythonban és vissza.

Python -> InterSystems IRIS

Négy módja van annak, hogy a Python változó értékét az InterSystems IRIS-ben kapja meg, a szükséges sorozattól függően:

  • String egyszerű adatdíjak és hibakeresés.
  • Repr egyszerű objektumok tárolására és hibakeresésre.
  • JSON az InterSystems IRIS oldalon lévő adatok egyszerű kezelésére.
  • Pickle az objektumok tárolására.

Ezek a metódusok lehetővé teszik, hogy a Python változókat string vagy stream formájában kapjuk meg.

  • GetVariable(variable, serialization, .stream, useString) — lekérés serialization változót variable be. stream. Ha useString ha egyenlő 1-gyel, és a sorozat egy stringbe kerül, akkor egy stringet ad vissza, nem streamet.
  • GetVariableJson(variable, .stream, useString) — JSON formátumban lekérdezi a változót.
  • GetVariablePickle(variable, .stream, useString, useDill) — lekérdezi a Pickle (vagy Dill) formátumú változót.

Próbáljuk meg lekérdezni a változónkat y.

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

InterSystems IRIS -> Python

Adatok betöltése az InterSystems IRIS-ből Pythonba.

  • ExecuteQuery(query, variable, type, namespace) — létrehoz egy adatbázist (pandas dataframe vagy list) SQL lekérdezésből és beállítja Python változóba. variable. A csomag isc.py elérhetőnek kell lennie a közegben, ahol a lekérdezés végrehajtásra kerül. namespace ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace)
  • — globális adatok betöltése a szubscriptből global a subscriptből start tól end Pythonban változóként type: list, vagy pandas. dataframeAz opcionális argumentumok leírása álarc és címkéket a osztály dokumentációjában és a tárolóban található Data Transfer docs.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) — az osztály adatait betölti class az id-ból start tól end Pythonban változóként type: list, vagy pandas. dataframe. itt szükséges ahhoz, hogy az adminisztrátor értesítést kapjon a build és tesztelési eredményekről, mint a folyamat tulajdonosa. — lista (vesszővel elválasztva) az osztály tulajdonságairól, amelyeket be kell tölteni az adathalmazba. Maszkok támogatottak. * és ?. Alapértelmezett — * (minden tulajdonság). A tulajdonság %%CLASSNAME figyelmen kívül hagyásra kerül.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) — az adatainak betöltése táblázatból table az id-ból start tól end Pythonba.

ExecuteQuery — univerzális (bármely érvényes SQL-lekérdezés átkerülésre kerül Pythonba). Azonban, ExecuteGlobal és a wrapper-ei ExecuteClass és ExecuteTable számos korlátozással működnek. Sokkal gyorsabbak (3-5-ször gyorsabbak, mint az ODBC-illesztő, és 20-szor gyorsabbak, mint ExecuteQuery). További információk találhatók a Data Transfer docs.
Mindezek a metódusok támogatják az adatok átadását bármely területről. A csomagnak isc.py elérhetőnek kell lennie a célterületen.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) — az érvényes SQL-lekérdezés eredményeinek átadása Pythonba. Ez a leglassabb módszer az adatok átadására. Használja akkor, ha ExecuteGlobal és a wrapper-ei nem elérhetők.

Argumentumok:

  • query — SQL lekérdezés.
  • variable — a Python változó neve, amelybe az adatok beíródnak.
  • type — list vagy Pandas dataframe.
  • namespace — a terület, ahol a lekérdezés végrehajtásra kerül.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) — a globális adatok átadása Pythonba.

Argumentumok:

  • global — a globális név anélkül, hogy ^
  • variable — a Python változó neve, amelybe az adatok beíródnak.
  • type — list vagy Pandas dataframe.
  • start — a globális első szubscriptje. Kötelező %Integer.
  • end — a globális utolsó szubscriptje. Kötelező %Integer.
  • álarc — a globális értékek maszkolása. A maszk rövidebb lehet, mint a globálban található mezők száma (ebben az esetben a végső mezők kihagyásra kerülnek). A maszk formázása:
    • + adja át az értéket úgy, ahogy van.
    • - hagyd ki az értéket.
    • b — Logikai típus (0 — False, minden más — Igaz).
    • d — Dátum ($horolog, Windows alatt 1970-től, Linux alatt 1900-tól).
    • t — Idő ($horolog, másodpercek éjfél óta).
    • m — Időbélyeg (YEAR-MONTH-DAY HOUR:MINUTE:SECOND formátumú szöveg).
  • címkéket — %Oszlopok nevét tartalmazó lista. Az első elem — a szubscript neve.
  • namespace — a terület, ahol a lekérdezés végrehajtásra kerül.

ExecuteClass

Borító a ExecuteGlobal. Az osztály definíciója alapján készíti elő a hívást ExecuteGlobal és végrehajtja azt.

ExecuteClass(class, variable, type, start, end, properties, namespace) — az osztályadatok átadása Pythonban.

Argumentumok:

  • class — osztály neve
  • variable — a Python változó neve, amelybe az adatok beíródnak.
  • type — list vagy Pandas dataframe.
  • start — kezdő azonosító.
  • end — végső azonosító
  • itt szükséges ahhoz, hogy az adminisztrátor értesítést kapjon a build és tesztelési eredményekről, mint a folyamat tulajdonosa. — lista (vesszővel elválasztva) az osztály tulajdonságairól, amelyeket be kell tölteni az adathalmazba. Maszkok támogatottak. * és ?. Alapértelmezett — * (minden tulajdonság). A tulajdonság %%CLASSNAME figyelmen kívül hagyásra kerül.
  • namespace — a terület, ahol a lekérdezés végrehajtásra kerül.

Minden tulajdonság azonos formában kerül átadásra, kivéve a típusú tulajdonságokat %Dátum, %Idő, %Logikai és %Időbélyeg — ezek a megfelelő Python osztályokká konvertálódnak.

ExecuteTable

Borító a ExecuteClass. Átírja a táblázat nevét az osztály nevére és meghívja ExecuteClass. Aláírás:

ExecuteTable(table, variable, type, start, end, properties, namespace) — a táblázat adatinak átadása Pythonban.

Argumentumok:

  • table — táblázat neve.
    Minden egyéb argumentum azonos formában kerül átadásra ExecuteClass.

Megjegyzések

  • ExecuteGlobal, ExecuteClass és ExecuteTable ugyanolyan gyorsan működnek.
  • ExecuteGlobal 20-szor gyorsabban, mint ExecuteQuery nagy adathalmazon (átadási idő >0,01 másodperc).
  • ExecuteGlobal, ExecuteClass és ExecuteTable ugyanazzal a struktúrával működnek: ^global(key) = $lb(prop1, prop2, ..., propN) ahol key — egész szám.
  • A ExecuteGlobal, ExecuteClass és ExecuteTable támogatott értékkészlet %Dátum megegyezik a tartománnyal mktime és az operációs rendszertől függ (windows: 1970-01-01, Linux 1900-01-01, mac). Használja a %Időbélyegaz értékek ezen tartományon kívüli átadásához, vagy használjon pandas dataframe-t, mivel ez a korlátozás csak a listára vonatkozik.
  • A ExecuteGlobal, ExecuteClass és ExecuteTable minden argumentum, a forrásadatokon (globális, osztály vagy táblázat) kívül és a változó opcionális.

Példák

Teszt osztály isc.py.test.Person tartalmaz egy metódust, amely bemutatja az adatok átadásának minden változatát:

global beállítása = "isc.py.test.PersonD"
class beállítása = "isc.py.test.Person"
tábla beállítása = "isc_py_test.Person"
lekérdezés beállítása = "SELECT * FROM isc_py_test.Person"

// Általános argumentumok
változó beállítása = "df"
típus beállítása = "dataframe"
kezdés beállítása = 1
vég beállítása = $g(^isc.py.test.PersonD, kezdés)

// 0. módszer: ExecuteGlobal argumentumok nélkül
sc beállítása = ##class(isc.py.Main).ExecuteGlobal(global, változó _ 0, típus)

// 1. módszer: ExecuteGlobal argumentumokkal
// A globális mezők nevét manuálisan kell megadni
// globalKey - a szubszkriptek neve
címkék beállítása = $lb("globalKey", "Név", "SzületésiDátum", "TS", "RandomTime", "ÉletkorÉvek", "ÉletkorTizedes", "ÉletkorDupla", "Bool")

// a maszk 1 elemmel kevesebb mint a címkék, mert a "globalKey" - a szubszkript neve
// a %%CLASSNAME-t kihagyjuk
maszk beállítása = "-+dmt+++b"

sc beállítása = ##class(isc.py.Main).ExecuteGlobal(global, változó _ 1, típus, kezdés, vég, maszk, címkék)

// 2. módszer: ExecuteClass
sc beállítása = ##class(isc.py.Main).ExecuteClass(class, változó _ 2, típus, kezdés, vég)

// 3. módszer: ExecuteTable
sc beállítása = ##class(isc.py.Main).ExecuteTable(tábla, változó _ 3, típus, kezdés, vég)

// 4. módszer: ExecuteTable
sc beállítása = ##class(isc.py.Main).ExecuteQuery(lekérdezés, változó _ 4, típus)

Hívja meg a módszert do ##class(isc.py.test.Person).Test() hogy lássa, hogyan működnek az adatok átadásának összes módszere.

Segédfunkciók

  • GetVariableInfo(változó, sorosítás, .definált, .típus, .hossz) — információt kap a változóról: létezik-e, osztály és a sorosítás hossza.
  • GetVariableDefined(változó, .definált) — létezik-e a változó.
  • GetVariableType(változó, .típus) — a változó osztályát kapja meg.
  • GetStatus() — a Python oldalán az utolsó kivételt kapja meg és törli is azt.
  • GetModuleInfo(module, .importált, .alias) — kapja meg a modul változóját és az importálás státuszát.
  • GetFunctionInfo(function, .definált, .típus, .docs, .aláírás, .érvek) — információt kap a funkcióról.

Interoperabilitás

Most, hogy megtanulta meghívni a Python Gateway-t a terminálból, kezdjük el használni a termékeinkben. Az alapja a Python-nal való interakciónak ilyen módon — isc.py.ens.Operation. Ez lehetővé teszi számunkra:

  • Kód végrehajtása Python-on
  • Python kontextus mentése/ helyreállítása
  • Adatok betöltése és lekérdezése Python-ból

Alapvetően, a Python művelet egy burkoló a isc.py.Main. Művelet isc.py.ens.Operation lehetővé teszi az interakciót a Python folyamattal az InterSystems IRIS termékeiből. Öt lekérdezést támogat:

  • isc.py.msg.ExecutionRequest Python kód végrehajtásához. Visszaadja isc.py.msg.ExecutionResponse a végrehajtás eredményével és a kért változók értékeivel.
  • isc.py.msg.StreamExecutionRequest Python kód végrehajtásához. Visszaadja isc.py.msg.StreamExecutionResponse a végrehajtás eredményével és a kért változók értékeivel. Analóg isc.py.msg.ExecutionRequest, de áramot fogad és ad vissza a sorok helyett.
  • isc.py.msg.QueryRequest SQL lekérdezés végrehajtásának eredményének átadásához. Visszaadja Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest adatok globális / osztály / táblázat átviteléhez. Visszatér Ens.Response.
  • isc.py.msg.SaveRequest a Python kontextus mentésére. Visszatér Ens.StringResponse a kontextus azonosítójával.
  • isc.py.msg.RestoreRequest a Python kontextus helyreállításához.

    Ezen kívül, isc.py.ens.Operation két beállítással rendelkezik:

    • Initializer — az interfészt megvalósító osztály kiválasztása isc.py.init.Abstract. Ezt használhatjuk funkciók, modulok, osztályok stb. betöltésére. Egyszer fut le a folyamat indításakor.
    • PythonLib — (csak Linux alatt) ha betöltési hibákat látsz, állítsd be az értékét libpython3.6m.so vagy akár a Python könyvtár teljes elérési útjára.

Üzleti folyamatok létrehozása

Két osztály áll rendelkezésre, amelyek megkönnyítik az üzleti folyamatok fejlesztését:

  • isc.py.ens.ProcessUtils lehetővé teszi az aktivitások annotációinak kinyerését változók behelyettesítésével.
  • isc.py.util.BPEmulator könnyedén tesztelhetjük az üzleti folyamatokat Python alatt. Ez képes végrehajtani az üzleti folyamatot (Python nyelvű részeket) a jelenlegi folyamatban.

A változók behelyettesítése.

Minden üzleti folyamat, amely öröklődik isc.py.ens.ProcessUtils, használhatja a GetAnnotation(name) metódust az aktivitás annotációjának értékének beszerezésére annak nevén keresztül. Az aktivitás annotációja változókat tartalmazhat, amelyeket az InterSystems IRIS oldalán számolnak ki, mielőtt Pythonba kerülnének. Íme a változók behelyettesítése:

  • ${class:method:arg1:...:argN} — metódus hívása
  • #{expr} — kód végrehajtása ObjectScript nyelven.

Példa elérhető a teszt üzleti folyamatban isc.py.test.Process, például az aktivitásban Korrelációs mátrix: Grafikon: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Ebben a példában:

  • #{process.WorkDirectory} visszaadja az objektum WorkDirectory tulajdonságát process, amely az osztály példánya, isc.py.test.Process azaz az aktuális üzleti folyamat.
  • ${%PopulateUtils:Integer:1:100} látni fogja, hogy a gomb megnyomása Egész szám kapcsolat és csatornák %PopulateUtils, átadva az argumentumokat 1 és 100, visszaad egy véletlenszerű egész számot a tartományban 1...100.

Teszt üzleti folyamat

A teszttermék és a teszt üzleti folyamat alapértelmezés szerint elérhetőek a Python Gateway részeként. Használatukhoz:

  1. Futtasd a parancssorban: pip install pandas matplotlib seaborn.
  2. Futtasd az InterSystems IRIS parancsot: do ##class(isc.py.test.CannibalizationData).Import() a tesztadatok betöltéséhez.
  3. Indítsd el a terméket isc.py.test.Production.
  4. Küldjön egy Ens.Request be. isc.py.test.Process.

lekérdezést. Nézzük meg, hogyan működik ez együtt. Nyisd meg isc.py.test.Process a BPL szerkesztőben:

Python Gateway az InterSystems IRIS-ben

Kód végrehajtása

A legfontosabb hívás — Python kód végrehajtása:

Python Gateway az InterSystems IRIS-ben

A kérést használják isc.py.msg.ExecutionRequest, itt vannak a tulajdonságai:

  • Code — Python kód.
  • SeparateLines — a kódot sorokra osztani a végrehajtáshoz. $c(10) (n) vonalak elválasztására használható. Ne felejtsük el, hogy NEM ajánlott az üzenetet egyszerre teljes egészében feldolgozni, ez a funkció csak részleges feldolgozásra készült. def és hasonló több soros kifejezésekhez. Alapértelmezés szerint 0.
  • Változók — vesszővel elválasztott változók listája, amelyeket hozzáadunk a válaszhoz.
  • Serialization — Hogyan lehet sorosítani a változókat, amelyeket vissza szeretnénk adni. Lehetőségek: Str, Repr, JSON, Pickle és Dill, alapértelmezés szerint Str.

Ebben az esetben csak beállítjuk a tulajdonságot Code, így a többi tulajdonság az alapértelmezett értékeket használja. Beállítjuk a hívásával process.GetAnnotation("Import pandas"), amely végrehajtás közben visszaadja az annotációt a változók behelyettesítése után. Végül a kód import pandas as pd átadásra kerül Pythonba. GetAnnotation hasznos lehet több soros Python szkriptek megszerzésére, de ennek a módszernek nincs korlátozása a kód megszerzésére. A tulajdonságot Code tetszőleges módon beállíthatja.

Változók lekérdezése

Egy másik érdekes hívás a használatával isc.py.msg.ExecutionRequest — Korrelációs Mátrix: Táblázatos:

Python Gateway az InterSystems IRIS-ben

A Python oldalon számítja ki a Korrelációs Mátrixot, és a változót corrmat visszahozza InterSystems IRIS-be JSON formátumban, a lekérdezési tulajdonságok beállításával:

  • Változók: "corrmat"
  • Serialization: "JSON"

Láthatjuk az eredményeket a Visual Trace-ben:

Python Gateway az InterSystems IRIS-ben

És ha erre az értékre szükségünk lenne a BP-ben, így érhetjük el: callresponse.Variables.GetAt("corrmat").

Adatátvitel

Most beszéljünk arról, hogyan lehet adatokat átvinni az InterSystems IRIS-ből Pythonba, minden adatátvitelhez ezen az interfészen keresztül valósul meg isc.py.msg.DataRequest, amely a következő tulajdonságokat biztosít:

  • Variable — Python változó, amelybe az adatok kerülnek.
  • Típus — változó típusa: dataframe (pandas dataframe) vagy list.
  • Namespace — terület, ahonnan az adatokat nyerjük. A csomagnak elérhetőnek kell lennie ezen a területen. Ez lehet egy terméktámogatás nélküli terület. isc.py Ezen interfész alapján 4 osztályú lekérdezés lett megvalósítva:

— állítsa be a

  • isc.py.msg.QueryRequest Query SQL lekérdezés továbbítására. Class
  • isc.py.msg.ClassRequest Query osztály adattovábbítására. — állítsa be a
  • isc.py.msg.TableRequest Table adatok táblázatra történő továbbításához. Global
  • isc.py.msg.GlobalRequest Table a globális adatok továbbításához. A tesztelési folyamat során figyeljen a tevékenységre

ki van mutatva működés közben. RAW, ahol isc.py.msg.QueryRequest Python kontextus mentése/visszaállítása

Python Gateway az InterSystems IRIS-ben

Végül meg tudjuk menteni a Python kontextust az InterSystems IRIS-ben, ehhez elküldjük

argumentumokkal: isc.py.msg.SaveRequest Mask

  • — Csak a maszkot kielégítő változók kerülnek mentésre. Támogatja "Data*, Figure?" * és ?. Példa: . Alapértelmezés szerintMaxLength *.
  • MaxLength — A maximális egyenleg hossza. Ha a változó sorosítása hosszabb, mint ez, akkor figyelmen kívül lesz hagyva. Állítsa 0-ra, hogy bármilyen hosszúságú változókat kapjon. Alapértelmezett $$$MaxStringLength.
  • Név — A kontextus neve (opcionális).
  • Leírás — A kontextus leírása (opcionális).

Visszaadja Ens.StringResponse a Id a mentett kontextus. A tesztelési folyamat során figyelje meg az aktivitást Kontextus mentése.

A megfelelő kérés isc.py.msg.RestoreRequest betölti a kontextust az InterSystems IRIS-ből Pythonba:

  • ContextId — a kontextus azonosítója.
  • Tisztít — törölje a kontextust a visszaállítás előtt.

Jupyter Notebook

Jupyter Notebook — ez egy nyílt forráskódú webalkalmazás, amely lehetővé teszi kódot, vizualizációkat és szöveget tartalmazó jegyzetfüzetek létrehozását és közzétételét. A Python Gateway lehetővé teszi a BPL folyamatok megtekintését és szerkesztését Jupyter Notebook formájában. Kérjük, vegye figyelembe, hogy jelenleg a Python 3 standard végrehajtót használja.

Ez a bővítmény azt feltételezi, hogy az annotációk Python kódot tartalmaznak, és az aktivitások neveit használják előkészített címekként. Most már lehetőség van a PythonGateway üzleti folyamatainak fejlesztésére Jupyter Notebookban. Az alábbiak érhetők el:

  • Új üzleti folyamatok létrehozása
  • Üzleti folyamatok törlése
  • Új aktivitások létrehozása
  • Aktivitások módosítása
  • Aktivitások törlése

Íme demó videó. És néhány képernyőkép:

Folyamat Explorer

Python Gateway az InterSystems IRIS-ben

Folyamat szerkesztő

Python Gateway az InterSystems IRIS-ben

Telepítés

  1. Szüksége van az InterSystems IRIS 2019.2+ verzióra.
  2. Telepítse a PythonGateway v0.8+ (csak a szükséges) isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints és isc.py.ens.ProcessUtils).
  3. Frissítse az ObjectScript kódot a tárolóból.
  4. Futtassa a do ##class(isc.py.util.Jupyter).Install() és kövesse az utasításokat.

kódkönyvtárra lépésével érheti el..

Következtetések

MLToolkit — egy eszközkészlet, amelynek célja a modellek és a tranzakciós környezet összekapcsolása, lehetővé téve, hogy az épített modellek könnyen használhatóak legyenek közvetlenül az üzleti folyamataiban. A Python Gateway a MLToolkit része, és lehetővé teszi a Python nyelv integrálását, hogy bármilyen, Python nyelven készült gépi tanulási algoritmust vezényeljen, lehetővé téve számos kész könyvtár felhasználását gyorsan alkalmazkodó, automatizált analitikai AI/ML megoldások létrehozására az InterSystems IRIS platformon.

Hivatkozások

MLToolkit

Az MLToolkit felhasználói csoport egy privát GitHub-repozitórium, amely az InterSystems vállalati GitHub-szervezetének részeként jött létre. Különösen a külső felhasználók számára készült, akik telepítik, tanulmányozzák vagy már használják az MLToolkit komponenseit, beleértve a Python Gateway-t. A csoportban számos megvalósított esettanulmány érhető el (forráskóddal és tesztadatokkal) a marketing, gyártás, orvostudomány és sok más területen. Az ML Toolkit felhasználói csoporthoz való csatlakozáshoz kérjük, küldjön egy rövid üzenetet az alábbi e-mail címre: MLToolkit@intersystems.com és az üzenetben kérjük, adja meg az alábbi adatokat:

  • GitHub felhasználónév
  • Szervezet (ahol dolgozik vagy tanul)
  • Beosztás (az Ön jelenlegi beosztása a szervezetében, vagy "Hallgató", vagy "Független").
  • Ország

Azoknak, akik elolvasták a cikket és érdeklődnek az InterSystems IRIS lehetőségei iránt, mint a mesterséges intelligencia és gépi tanulás fejlesztési vagy üzemeltetési platform, javasoljuk, hogy beszéljük meg az Ön vállalata számára érdekes lehetséges forgatókönyveket. Szívesen elemezzük a vállalata igényeit, és közösen meghatározzuk a cselekvési tervet; a mesterséges intelligenciával és gépi tanulással foglalkozó szakértői csapatunk kontaktelektronikus levelezési címe: MLToolkit@intersystems.com.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster