Python Gateway az InterSystems IRIS-nél

Ez a cikk a Python Gatewayrő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 a Pythonban (sok adattudós fő környezetében) létrehozott gépi tanulási algoritmusok hangszerelését, számos kész könyvtár felhasználását az adaptív, robotizált analitikus AI/ML megoldások gyors létrehozásához az InterSystems IRIS platformon. Ebben a cikkben bemutatom, hogy az InterSystems IRIS hogyan tudja a Python-folyamatokat levezényelni, hatékony kétirányú adatátvitelt végezni és intelligens üzleti folyamatokat létrehozni.

terv

  1. Bevezetés.
  2. Eszközök.
  3. Telepítés.
  4. API.
  5. Interoperabilitás.
  6. Jupyter jegyzetfüzet.
  7. Következtetések.
  8. Linkek.
  9. M.L.Toolkit.

Bevezetés

A Python egy magas szintű, általános célú programozási nyelv, amely a fejlesztői termelékenység és a kód olvashatóságának javítására összpontosít. Ebben a cikksorozatban a Python nyelv InterSystems IRIS platformon való használatának lehetőségeiről fogok beszélni, míg a cikk fő fókusza a Python nyelvként való használata a gépi tanulási modellek létrehozásához és alkalmazásához.

A gépi tanulás (ML) a mesterséges intelligencia módszerek egy osztálya, amelynek jellemzője nem a probléma közvetlen megoldása, hanem a tanulás a sok hasonló probléma megoldásának folyamatában.

Egyre elterjedtebbek a gépi tanulási algoritmusok és modellek. Ennek számos oka van, de minden a hozzáférhetőségen, az egyszerűségen és a gyakorlati eredmények elérésén múlik. A klaszterezés vagy akár a neurális hálózatok modellezése új technológia?

Természetesen nem, de manapság már nem kell több százezer sornyi kódot írni egy modell futtatásához, és a modellek létrehozásának és használatának költségei is egyre kisebbek.

Az eszközök fejlődnek – bár nem rendelkezünk teljesen GUI-orientált AI/ML-eszközeinkkel, az információs rendszerek sok más osztályánál, például a BI-nél (a kódírástól a keretrendszerek használatáig és a grafikus felhasználói felület-orientált konfigurálható megoldásokig) is tapasztalható fejlődés. az AI/ML létrehozási eszközökben. Már túljutottunk a kódírás szakaszán, és ma már keretrendszereket használunk modellek felépítéséhez és betanításához.

Más fejlesztések, mint például az előre betanított modell terjesztésének képessége, ahol a végfelhasználónak egyszerűen be kell fejeznie a modell betanítását az adott adatain, szintén megkönnyítik a gépi tanulás alkalmazásának megkezdését. Ezek a fejlesztések sokkal könnyebbé teszik a gépi tanulás elsajátítását, mind a szakemberek, mind a vállalatok egésze számára.

Másrészt egyre több adatot gyűjtünk. Egy egyesített adatplatform, például az InterSystems IRIS segítségével mindezek az információk azonnal előkészíthetők és felhasználhatók bemenetként a gépi tanulási modellekhez.

A felhőre való átállással az AI/ML projektek elindítása egyszerűbb, mint valaha. Csak a szükséges erőforrásokat tudjuk felhasználni. Sőt, a felhőplatformok által kínált párhuzamosításnak köszönhetően elvesztegetett időt takaríthatunk meg.

De mi a helyzet az eredményekkel? Itt a dolgok bonyolultabbá válnak. A modellek építéséhez számos eszköz létezik, amelyeket a következőkben tárgyalok. Egy jó modell felépítése nem könnyű, de mi lesz ezután? Ugyancsak nem triviális feladat, hogy egy vállalkozás profitáljon a modell használatából. A probléma gyökere az analitikai és tranzakciós terhelések és adatmodellek szétválasztása. Amikor egy modellt betanítunk, azt általában történeti adatok alapján tesszük. A felépített modell helye azonban a tranzakciós adatfeldolgozásban van. Mire jó a legjobb csalárd tranzakció-észlelési modell, ha naponta egyszer futtatjuk? A csalók már elmentek a pénzzel. A modellt történelmi adatokra kell képeznünk, de valós időben kell alkalmazni az új bejövő adatokra is, hogy üzleti folyamataink a modell előrejelzései szerint működhessenek.

Az ML Toolkit egy olyan eszközkészlet, amely pontosan ezt teszi: modelleket és tranzakciós környezetet hoz össze, hogy az Ön által felépített modellek könnyen felhasználhatók legyenek közvetlenül az üzleti folyamatokban. A Python Gateway az ML Toolkit része, és integrációt biztosít a Python nyelvvel (hasonlóan az R Gateway-hez, az ML Toolkit része integrációt biztosít az R nyelvvel).

szerszámok

Mielőtt folytatnánk, szeretnék leírni néhány Python-eszközt és könyvtárat, amelyeket később használni fogunk.

Technológia

  • A Python egy értelmezett, általános célú, magas szintű programozási nyelv. A nyelv fő előnye a matematikai, ML és AI könyvtárak nagy könyvtára. Az ObjectScripthez hasonlóan ez is egy objektum-orientált nyelv, de minden dinamikusan van definiálva, nem statikusan. Emellett minden egy tárgy. A későbbi cikkek feltételezik a nyelv múló ismeretét. Ha el akar kezdeni tanulni, azt javaslom, hogy kezdje ezzel dokumentáció.
  • Következő gyakorlatainkhoz állítsa be Python 3.6.7 64 bites.
  • IDE: Én használom PyCharm, de általában много. Ha Atelier-t használ, van egy Eclipse beépülő modul a Python fejlesztői számára. Ha VS Code-ot használ, akkor van egy kiterjesztés a Python számára.
  • Jegyzetfüzet: IDE helyett szkriptjeit online jegyzetfüzetekben is megírhatja és megoszthatja. Közülük a legnépszerűbb az jupyter.

könyvtárak

Íme a gépi tanulási könyvtárak (részleges) listája:

  • Hülye — alapcsomag a pontos számításokhoz.
  • pandák — nagy teljesítményű adatstruktúrák és adatelemző eszközök.
  • matplotlib - Grafikonok készítése.
  • Tengeren született - Matplotlib alapú adatvizualizáció.
  • Sklearn — gépi tanulási módszerek.
  • XGBoost — gépi tanulási algoritmusok a Gradient Boosting módszertanon belül.
  • Gensim - NLP.
  • Keras - neurális hálózatok.
  • tenzor áramlás egy platform a gépi tanulási modellek létrehozásához.
  • PyTorch egy platform a Pythonra összpontosító gépi tanulási modellek létrehozására.
  • Nyoka - PMML különböző modellekből.

Az AI/ML technológiák hatékonyabbá és alkalmazkodóbbá teszik az üzletet. Ráadásul manapság ezek a technológiák egyre könnyebben fejleszthetők és implementálhatók. Kezdje el megismerni az AI/ML technológiákat és azt, hogy ezek hogyan segíthetik a szervezet növekedését.

Telepítés

A Python Gateway telepítésének és használatának többféle módja van:

  • operációs rendszer
    • Windows
    • Linux
    • Mac
  • Dokkmunkás
    • Használja a DockerHub képét
    • Készítse el saját megjelenését

A telepítési módtól függetlenül szüksége lesz a forráskódra. Az egyetlen hely, ahol letöltheti a kódot kiadások oldala. Tesztelt stabil kiadásokat tartalmaz, csak ragadd meg a legújabbat. Jelenleg 0.8, de idővel lesznek újak. Ne klónozza/töltse le a tárolót, töltse le a legújabb kiadást.

operációs rendszer

Ha a Python Gateway-t operációs rendszerre telepíti, akkor először (az operációs rendszertől függetlenül) telepítenie kell a Python-t. Ezért:

  1. Telepítse a Python 3.6.7 64 bites verzióját. Javasoljuk, hogy a Python-t az alapértelmezett könyvtárba telepítse.
  2. Telepítse a modult dill: pip install dill.
  3. Töltse le az ObjectScript kódot (pl. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) bármely termékkel rendelkező területre. Ha azt szeretné, hogy egy meglévő terület támogassa a termékeket, futtassa: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Hely kiemelés DLL/SO/DYLIB mappába bin az InterSystems IRIS példányát. A könyvtárfájlnak elérhetőnek kell lennie a visszaadott útvonalon write ##class(isc.py.Callout).GetLib().

Windows

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

Linux (Debian/Ubuntu)

  1. Ellenőrizze, hogy a környezeti változó az PATH ez tartalmazza /usr/lib и /usr/lib/x86_64-linux-gnu. Fájl használata /etc/environment környezeti változók beállításához.
  2. Hibák esetén undefined symbol: _Py_TrueStruct állítsa be a beállítást PythonLib. be is Readme van egy Hibaelhárítás rész.

Mac

  1. Jelenleg csak a python 3.6.7 támogatott 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éket.

Dokkmunkás

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

  • Hordozhatóság
  • hatékonyság
  • Szigetelés
  • könnyűség
  • Állandóság

Nézd meg ezt cikksorozat további információkért a Docker InterSystems termékekkel való használatáról.

Jelenleg az összes Python Gateway build konténer alapú. 2019.4.

Kész kép

Fuss: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latesta Python Gateway letöltéséhez és futtatásához az InterSystems IRIS Community Edition segítségével. Ez minden.

Készítse el saját megjelenését

Docker-kép létrehozásához futtassa a lerakat gyökerében: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Alapértelmezés szerint a kép a kép alapján épül fel store/intersystems/iris-community:2019.4.0.383.0, azonban ezt megváltoztathatja a változó beállításával IMAGE.
Az InterSystems IRIS-ből való felépítéshez futtassa: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest'.

Ezt követően futtathatja a docker-képet:

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

Ha az InterSystems IRIS Community Edition rendszeren alapuló képet használ, nem kell kulcsot megadnia.

Comments

  • Tesztfolyamat isc.py.test.Process számos képet ment egy ideiglenes könyvtárba. Érdemes lehet módosítani ezt az elérési utat egy csatolt könyvtárra. Ehhez módosítsa a beállítást WorkingDir a csatolt könyvtár megadása.
  • A terminál eléréséhez futtassa: docker exec -it irispy sh.
  • Hozzáférés a Rendszerfelügyeleti portálhoz bejelentkezéssel SuperUser/SYS.
  • Egy tároló leállításához futtassa: docker stop irispy && docker rm --force irispy.

A telepítés ellenőrzése

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

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

Az eredmény legyen HELLO - a Python változó értéke x. Ha a visszatérési állapot sc hiba vagy var üres, ellenőrizze Olvass el – Hibaelhárítás rész.

API

A Python Gateway telepítve van, és Ön ellenőrizte, hogy működik. Ideje elkezdeni használni!
A Python fő felülete az isc.py.Main. A következő módszercsoportokat kínálja (mind visszatér %Status):

  • Kód végrehajtása
  • Adatátvitel
  • Leányvállalat

Kód végrehajtása

Ezek a módszerek tetszőleges Python-kód futtatását teszik lehetővé.

SimpleString

SimpleString a fő módszer. 4 opcionális argumentum szükséges:

  • code a végrehajtandó kódsor. Soremelés karakter: $c(10).
  • returnVariable a visszaadandó változó neve.
  • serialization - hogyan kell sorozatozni returnVariable. 0 - karakterlánc (alapértelmezett), 1 - ismétlés.
  • result - ByRef hivatkozás arra a változóra, amelybe az érték be van írva returnVariable.

Fent tettük:

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

Ebben a példában Python-változót rendelünk hozzá x jelentés Hello és egy Python-változó értékét szeretné visszaadni x egy ObjectScript változóhoz var.

ExecuteCode

Az ExecuteCode egy biztonságosabb és kevésbé korlátozó alternatíva SimpleString.
Az InterSystems IRIS platform sorai 3 641 144 karakterre korlátozódnak, és ha hosszabb kódrészletet szeretne végrehajtani, adatfolyamokat kell használnia.
Két érv kell hozzá:

  • code — a végrehajtandó Python-kód sztringje vagy adatfolyama.
  • variable - (nem kötelező) hozzárendeli a végrehajtás eredményét code ezt a Python-változót.

Használata javasolt:

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

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

Adatátvitel

Adatok továbbítása Pythonba és onnan.

Python -> InterSystems IRIS

Az InterSystems IRIS-ben négyféleképpen lehet megszerezni a Python-változók értékét, a szükséges szerializálástól függően:

  • String egyszerű adattípusokhoz és hibakereséshez.
  • Repr egyszerű objektumok tárolására és hibakeresésre.
  • JSON az egyszerű adatkezeléshez az InterSystems IRIS oldalán.
  • Pickle tárgyak mentésére.

Ezek a módszerek lehetővé teszik változók fogadását a Pythonból karakterláncként vagy adatfolyamként.

  • GetVariable(variable, serialization, .stream, useString) - kap serialization változó variable в stream... Ha useString 1, és a szerializálást egy karakterláncba helyezzük, majd egy karakterláncot ad vissza, nem egy adatfolyamot.
  • GetVariableJson(variable, .stream, useString) - egy változó JSON szerializálása.
  • GetVariablePickle(variable, .stream, useString, useDill) -Változó Pickle (vagy kapor) sorozatosítása.

Próbáljuk meg megszerezni 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 a Pythonba.

  • ExecuteQuery(query, variable, type, namespace) - létrehoz egy adatkészletet (pandas dataframe vagy list) az sql lekérdezésből, és állítsa be python változóra variable. Nejlonzacskó isc.py elérhetőnek kell lennie a területen namespace - a kérést ott teljesítik.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - globális adatokat tölt be global alsó indexből start a end Pythonban típusváltozóként type: list, vagy pandák dataframe. Opcionális argumentumok leírása mask és a labels elérhető az osztály dokumentációjában és tárházában Adatátviteli dokumentumok.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - betölti az osztályadatokat class azonosítóból start a end Pythonban típusváltozóként type: list, vagy pandák dataframe. properties — az adatkészletbe betöltendő osztálytulajdonságok listája (vesszővel elválasztva). Támogatott maszkok * и ?. Alapértelmezett - * (összes tulajdonság). Ingatlan %%CLASSNAME figyelmen kívül hagyva.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - betölti a táblázat adatait table azonosítóból start a end pythonban.

ExecuteQuery - univerzális (bármely érvényes SQL-lekérdezés átadásra kerül a Pythonnak). Azonban, ExecuteGlobal és a pakolásait ExecuteClass и ExecuteTable számos korlátozással dolgozhat. Sokkal gyorsabbak (3-5-ször gyorsabbak, mint az ODBC-illesztőprogram, és 20-szor gyorsabbak, mint ExecuteQuery). Bővebb információ a Adatátviteli dokumentumok.
Mindezek a módszerek támogatják az adatok bármely területről történő átvitelét. Nejlonzacskó isc.py elérhetőnek kell lennie a célterületen.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - bármely érvényes SQL lekérdezés eredményének átadása a Pythonnak. Ez a leglassabb adatátviteli mód. Használd, ha ExecuteGlobal és a csomagolása nem kapható.

érvek:

  • query - sql lekérdezés.
  • variable - annak a Python-változónak a neve, amelybe az adatot írják.
  • type - list vagy pandák dataframe.
  • namespace - a terület, ahol a kérést végrehajtják.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - Globális átadás Pythonnak.

érvek:

  • global a globális neve anélkül ^
  • variable - annak a Python-változónak a neve, amelybe az adatot írják.
  • type - list vagy pandák dataframe.
  • start — a globális első indexe. Szükségszerűen %Integer.
  • end a globális utolsó indexe. Szükségszerűen %Integer.
  • mask — a globális értékek maszkja. A maszk lehet rövidebb, mint a globális mezők száma (ebben az esetben a végén lévő mezők kimaradnak). A maszk formázása:
    • + adja át az értéket úgy, ahogy van.
    • - érték kihagyása.
    • b - Boole-típus (0 - False, az összes többi - True).
    • d — Dátum ($horologtól, Windowson 1970-től, Linuxon 1900-tól).
    • t - Idő ($horolog, másodperc éjfél után).
    • m — Időbélyeg (ÉV-HÓNAP-NAP ÓRA:PERC:MÁSODIK formátumú karakterlánc).
  • labels - %Oszlopnevek listája. Az első elem az alsó index neve.
  • namespace - a terület, ahol a kérést végrehajtják.

ExecuteClass

tekerjük át ExecuteGlobal. Hívást készít elő az osztálydefiníció alapján ExecuteGlobal és felhívja őt.

ExecuteClass(class, variable, type, start, end, properties, namespace) - osztályadatok átadása Pythonnak.

érvek:

  • class - osztály név
  • variable - annak a Python-változónak a neve, amelybe az adatot írják.
  • type - list vagy pandák dataframe.
  • start — kezdő Id.
  • end - végső azonosító
  • properties — az adatkészletbe betöltendő osztálytulajdonságok listája (vesszővel elválasztva). Támogatott maszkok * и ?. Alapértelmezett - * (összes tulajdonság). Ingatlan %%CLASSNAME figyelmen kívül hagyva.
  • namespace - a terület, ahol a kérést végrehajtják.

A típustulajdonságok kivételével minden tulajdonság úgy kerül átadásra, ahogy van %Date, %Time, %Boolean и %TimeStamp - a megfelelő Python osztályokká konvertálódnak.

ExecuteTable

tekerjük át ExecuteClass. Lefordítja a tábla nevét osztálynévvé, és meghívja ExecuteClass. Aláírás:

ExecuteTable(table, variable, type, start, end, properties, namespace) - táblaadatok átadása Pythonnak.

érvek:

  • table - táblázat neve.
    Az összes többi érvet úgy fogadják el, ahogy vannak. ExecuteClass.

Megjegyzések

  • ExecuteGlobal, ExecuteClass и ExecuteTable ugyanolyan gyorsan dolgozni.
  • ExecuteGlobal 20-szor gyorsabb, mint ExecuteQuery nagy adathalmazokon (átviteli idő >0.01 másodperc).
  • ExecuteGlobal, ExecuteClass и ExecuteTable dolgozzon a globalokon ezzel a szerkezettel: ^global(key) = $lb(prop1, prop2, ..., propN) ahol key egy egész szám.
  • mert ExecuteGlobal, ExecuteClass и ExecuteTable támogatott értéktartomány %Date tartománynak felel meg mktime és az operációs rendszertől függablakok: 1970-01-01, linux 1900-01-01, esőkabát). Használat %TimeStampezen a tartományon kívüli adatok átadásához vagy a pandas adatkeret használatához ez a korlátozás csak a listára vonatkozik.
  • mert ExecuteGlobal, ExecuteClass и ExecuteTable az adatforrás (globális, osztály vagy tábla) és a változó kivételével minden argumentum nem kötelező.

Примеры

teszt osztály isc.py.test.Person tartalmaz egy módszert, amely bemutatja az összes adatátviteli lehetőséget:

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)

hívás módszere do ##class(isc.py.test.Person).Test() hogy megtudja, hogyan működik az összes adatátviteli módszer.

Segítő módszerek

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - információt kapni a változóról: definiált-e, osztály és szerializáció hossza.
  • GetVariableDefined(variable, .defined) - definiálva van-e a változó.
  • GetVariableType(variable, .type) - kapja meg a változó osztályát.
  • GetStatus() - Szerezze meg és távolítsa el az utolsó kivételt a Python oldalon.
  • GetModuleInfo(module, .imported, .alias) — modulváltozó és importállapot lekérése.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - információkat kaphat a funkcióról.

Interoperabilitás

Megtanulta, hogyan hívhatja meg a Python Gateway-t a terminálról, most kezdjük el használni a termelésben. A Pythonnal való interakció alapja ebben a módban az isc.py.ens.Operation. Lehetővé teszi számunkra:

  • Futtassa le a Python kódot
  • Python-környezet mentése/visszaállítása
  • Adatok betöltése és fogadása Pythonból

Alapvetően egy Pyhton-művelet egy wrapper over isc.py.Main. Művelet isc.py.ens.Operation lehetővé teszi az interakciót az InterSystems IRIS termékek Python folyamatával. Öt kérés támogatott:

  • isc.py.msg.ExecutionRequest Python kód végrehajtásához. visszatér 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. visszatér isc.py.msg.StreamExecutionResponse a végrehajtás eredménye és a kért változók értékei. Analóg isc.py.msg.ExecutionRequest, de karakterláncok helyett folyamokat fogad el és ad vissza.
  • isc.py.msg.QueryRequest SQL lekérdezés végrehajtásának eredményének átviteléhez. visszatér Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest globális/osztály/tábla adatok átadására. visszatér Ens.Response.
  • isc.py.msg.SaveRequest a Python kontextus mentéséhez. visszatér Ens.StringResponse környezetazonosítóval.
  • isc.py.msg.RestoreRequest a Python kontextus visszaállításához.

    Továbbá, isc.py.ens.Operation két beállítással rendelkezik:

    • Initializer - a felületet megvalósító osztály kiválasztása isc.py.init.Abstract. Használható függvények, modulok, osztályok és hasonlók betöltésére. Egyszer kerül végrehajtásra, amikor a folyamat elindul.
    • PythonLib - (Csak Linux), ha rendszerindítási hibákat lát, állítsa be az értékét libpython3.6m.so vagy akár a Python könyvtár teljes elérési útjában.

Ü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 a megjegyzések kinyerését változó helyettesítéssel rendelkező tevékenységekből.
  • isc.py.util.BPEmulator megkönnyíti az üzleti folyamatok Python segítségével történő tesztelését. Egy üzleti folyamatot (Python-részeket) tud végrehajtani az aktuális folyamatban.

Változó helyettesítés

Minden üzleti folyamat örökölt isc.py.ens.ProcessUtils, használhatja a módszert GetAnnotation(name) hogy egy tevékenység annotáció értékét a neve alapján kapjuk meg. A tevékenység megjegyzése olyan változókat tartalmazhat, amelyek az InterSystems IRIS oldalán kerülnek kiértékelésre, mielőtt átadnák a Pythonnak. Íme a változók helyettesítésének szintaxisa:

  • ${class:method:arg1:...:argN} - metódushívás
  • #{expr} - végrehajtani a kódot ObjectScript nyelven.

Egy példa a teszt üzleti folyamatban található isc.py.test.Processpéldául tevékenységben Correlation Matrix: Graph: 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 egy példánya isc.py.test.Process azok. aktuális üzleti folyamat.
  • ${%PopulateUtils:Integer:1:100} módszert nevezi Integer класса %PopulateUtils, átmenő érvek 1 и 100, egy véletlenszerű egész számot ad vissza a tartományban 1...100.

Teszt üzleti folyamat

A tesztgyártás és a tesztelési üzleti folyamat alapértelmezés szerint elérhető a Python Gateway részeként. Használatuk:

  1. Az operációs rendszer termináljában fut: pip install pandas matplotlib seaborn.
  2. Az InterSystems IRIS terminálban futtassa: do ##class(isc.py.test.CannibalizationData).Import() tesztadatok feltöltéséhez.
  3. Termékek bevezetése isc.py.test.Production.
  4. Kérelem típusa Ens.Request в isc.py.test.Process.

Lássuk, hogyan működik mindez együtt. Nyisd ki isc.py.test.Process a BPL szerkesztőben:

Python Gateway az InterSystems IRIS-nél

Kód végrehajtása

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

Python Gateway az InterSystems IRIS-nél

A kérés felhasználva isc.py.msg.ExecutionRequest, íme a tulajdonságai:

  • Code - Python kód.
  • SeparateLines - a kód felosztása sorokra a végrehajtáshoz. $c(10) (n) karakterláncok elválasztására szolgál. Vegye figyelembe, hogy NEM ajánlott a teljes üzenetet egyszerre feldolgozni, ez a funkció csak feldolgozásra szolgál def és hasonló többsoros kifejezések. Alapértelmezett 0.
  • Variables a válaszhoz hozzáadott változók vesszővel elválasztott listája.
  • Serialization - Hogyan állítsuk sorba a visszaadni kívánt változókat. Lehetőségek: Str, Repr, JSON, Pickle и Dill, alapértelmezett Str.

Esetünkben csak a tulajdonságot állítjuk be Code, így az összes többi tulajdonság az alapértelmezett értékeit használja. Telefonálással beállítottuk process.GetAnnotation("Import pandas"), amely futás közben egy annotációt ad vissza a változócsere végrehajtása után. Végül a kód import pandas as pd átkerül a Pythonba. GetAnnotation hasznos lehet többsoros Python-szkriptek beszerzéséhez, de a kód beszerzésének erre a módjára nincs korlátozás. Beállíthatja a tulajdonságot Code az Ön számára megfelelő módon.

Változók beszerzése

Egy másik érdekes kihívás a használat során isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway az InterSystems IRIS-nél

Kiszámítja a korrelációs mátrixot a Python oldalon, és kivonja a változót corrmat vissza az InterSystems IRIS-hez JSON formátumban a kérés tulajdonságainak beállításával:

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

Az eredményeket a Visual Trace-ben láthatjuk:

Python Gateway az InterSystems IRIS-nél

És ha szükségünk van erre az értékre a BP-ben, akkor ezt így kaphatjuk meg: callresponse.Variables.GetAt("corrmat").

Adatátvitel

Ezután beszéljünk az adatok átviteléről az InterSystems IRIS-ből a Pythonba, minden adatátviteli kérés megvalósítja az interfészt isc.py.msg.DataRequest, amely a következő tulajdonságokkal rendelkezik:

  • Variable egy Python-változó, amelybe az adatok íródnak.
  • Type - változó típusa: dataframe (pandas adatkeret) ill list.
  • Namespace - az a terület, ahonnan adatokat kapunk. Nejlonzacskó isc.py elérhetőnek kell lennie ezen a területen. Ez egy olyan terület lehet, ahol nincs terméktámogatás.

Ezen a felületen a kérések 4 osztálya valósul meg:

  • isc.py.msg.QueryRequest - tulajdonság beállítása Query SQL lekérdezés küldéséhez.
  • isc.py.msg.ClassRequest - tulajdonság beállítása Class osztályadatok átadására.
  • isc.py.msg.TableRequest - tulajdonság beállítása Table táblázat adatainak átadására.
  • isc.py.msg.GlobalRequest - tulajdonság beállítása Global az adatok globális átviteléhez.

A tesztfolyamatban nézze meg a tevékenységet RAWAhol isc.py.msg.QueryRequest tetten érhető.

Python Gateway az InterSystems IRIS-nél

Python-környezet mentése/visszaállítása

Végül tárolhatjuk a Python környezetet az InterSystems IRIS-ben, ehhez küldjük el isc.py.msg.SaveRequest érvekkel:

  • Mask — Csak a maszknak megfelelő változók kerülnek mentésre. Támogatott * и ?... Példa: "Data*, Figure?"... Alapértelmezett *.
  • MaxLength — A tárolt változó maximális hossza. Ha egy változó szerializálása hosszabb, akkor a rendszer figyelmen kívül hagyja. Állítsa 0-ra, ha bármilyen hosszúságú változót szeretne kapni. Alapértelmezett $$$MaxStringLength.
  • Name — Kontextus neve (opcionális).
  • Description — A kontextus leírása (opcionális).

Visszatér Ens.StringResponse с Id mentett kontextus. A tesztfolyamatban nézze meg a tevékenységet Save Context.

Kapcsolódó kérés isc.py.msg.RestoreRequest betölt egy kontextust az InterSystems IRIS-ből a Pythonba:

  • ContextId a kontextusazonosító.
  • Clear — a visszaállítás előtt tisztázza a kontextust.

Jupyter Jegyzetfüzet

Jupyter Jegyzetfüzet 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 Notebookként. Vegye figyelembe, hogy jelenleg a szokásos Python 3 végrehajtó van használatban.

Ez a kiterjesztés feltételezi, hogy a megjegyzések Python-kódot tartalmaznak, és tevékenységneveket használnak megelőző címként. Mostantól lehetőség van PythonGateway üzleti folyamatok fejlesztésére a Jupyter Notebookban. Íme, mi lehetséges:

  • Hozzon létre új üzleti folyamatokat
  • Törölje az üzleti folyamatokat
  • Hozzon létre új tevékenységeket
  • Változtassa meg a tevékenységeket
  • Tevékenységek törlése

Itt bemutató videó. És néhány képernyőkép:

Process Explorer

Python Gateway az InterSystems IRIS-nél

Folyamatszerkesztő

Python Gateway az InterSystems IRIS-nél

Telepítés

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

dokumentáció.

Álláspontja

Az MLToolkit egy olyan eszközkészlet, amelynek célja a modellek és a tranzakciós környezet kombinálása, hogy a felépített modellek könnyen felhasználhatók legyenek közvetlenül az üzleti folyamatokban. A Python Gateway az MLToolkit része, és integrációt biztosít a Python nyelvvel, lehetővé téve a Pythonban (a sok adatkutató fő környezetében) létrehozott gépi tanulási algoritmusok hangszerelését, számos kész könyvtár használatát az adaptív, robotizált analitikus AI gyors létrehozásához / ML megoldások az InterSystems IRIS platformon.

referenciák

MLToolkit

Az MLToolkit felhasználói csoport egy privát GitHub-lerakat, amelyet az InterSystems vállalati GitHub-szervezet részeként hoztak létre. Külső felhasználóknak szól, akik telepítik, tanulják vagy már használják az MLToolkit összetevőket, beleértve a Python Gateway-t is. A csoport számos megvalósított esettel rendelkezik (forráskóddal és tesztadatokkal) a marketing, a gyártás, az orvostudomány és sok más iparág területén. Az ML Toolkit felhasználói csoporthoz való csatlakozáshoz kérjük, küldjön egy rövid e-mailt a következő címre: [e-mail védett] és a következő információkat adja meg levelében:

  • GitHub felhasználónév
  • Szervezet (dolgozol vagy tanulsz)
  • Pozíció (az Ön tényleges pozíciója a szervezetben, „hallgató” vagy „független”).
  • Ország

Azokat, akik elolvasták a cikket, és érdeklődnek az InterSystems IRIS iránt, mint a mesterséges intelligencia és a gépi tanulási mechanizmusok fejlesztésére vagy üzemeltetésére szolgáló platformra, megkérjük, hogy vitassa meg a vállalkozása számára érdekes lehetséges forgatókönyveket. Könnyen elemezzük vállalkozása igényeit, és közösen cselekvési tervet dolgozunk ki; AI/ML szakértői csoportunk elérhetőségi e-mail címe – [e-mail védett].

Forrás: will.com

Hozzászólás