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
- Bevezetés.
- Eszközkészlet.
- Telepítés.
- API.
- Interoperabilitás.
- Jupyter Notebook.
- Következtetések.
- Hivatkozások.
- 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: .
- A következő gyakorlatokhoz telepítse a .
- IDE: Én a , de általában használható más is, . 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 .
Könyvtárak
Íme egy (nem teljes) lista gépi tanulásra vonatkozó könyvtárakról:
- — alapvető csomag pontos számításokhoz.
- — nagy teljesítményű adatstruktúrák és adat-elemző eszközök.
- — grafikonok készítése.
- — adatvizualizáció, amely a matplotlib-ra épül.
- — gépi tanulási módszerek.
- — gépi tanulási algoritmusok a gradiensemelés (Gradient Boosting) módszertanán belül.
- — NLP.
- — neurális hálózatok.
- — platform gépi tanulási modellek létrehozásához.
- — Pythonra optimalizált gépi tanulási modellek létrehozására szolgáló platform.
- — PMML különböző modellekbő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: . 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:
- . Javasolt a Python-t az alapértelmezett könyvtárba telepíteni.
- Telepítse a modult
dill:pip install dill. - 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). - Helyezze el tartalmát a mappába
binaz InterSystems IRIS példányában. A könyvtárfájnak elérhetőnek kell lennie a visszaadott útonwrite ##class(isc.py.Callout).GetLib().
Windows
- Győződjön meg arról, hogy a környezeti változó
PYTHONHOMEa Python 3.6.7-re mutat. - Győződjön meg arról, hogy a rendszer környezeti változója
PATHtartalmazza a változótPYTHONHOME(vagy a mappát, amire mutat).
Linux (Debian/Ubuntu)
- Ellenőrizze, hogy a környezeti változó
PATHtartalmazza/usr/libés/usr/lib/x86_64-linux-gnu. Használja a fájlt/etc/environmentaz környezeti változók beállításához. - Hibák esetén
undefined symbol: _Py_TrueStructállítsa be aPythonLib. Továbbá a tartalmazza a Hibaelhárítás szakaszt.
Mac
- Jelenleg csak a Python 3.6.7 van támogatva a . 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 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.Processtö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ástWorkingDira 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 varAz 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 .
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ódikreturnVariable.
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ésekódehhez 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:
Stringegyszerű adatdíjak és hibakeresés.Repregyszerű objektumok tárolására és hibakeresésre.JSONaz InterSystems IRIS oldalon lévő adatok egyszerű kezelésére.Pickleaz 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ésserializationváltozótvariablebe.stream. HauseStringha 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
>6InterSystems IRIS -> Python
Adatok betöltése az InterSystems IRIS-ből Pythonba.
ExecuteQuery(query, variable, type, namespace)— létrehoz egy adatbázist (pandasdataframevagylist) SQL lekérdezésből és beállítja Python változóba.variable. A csomagisc.pyelérhetőnek kell lennie a közegben, ahol a lekérdezés végrehajtásra kerül.namespaceExecuteGlobal(global, variable, type, start, end, mask, labels, namespace)— globális adatok betöltésea szubscriptbőlglobala subscriptbőlstarttólendPythonban változókénttype:list, vagy pandas.dataframeAz opcionális argumentumok leírásaálarcéscímkéketa osztály dokumentációjában és a tárolóban található .ExecuteClass(class, variable, type, start, end, properties, namespace)— az osztály adatait betölticlassaz id-bólstarttólendPythonban változókénttype: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%%CLASSNAMEfigyelmen kívül hagyásra kerül.ExecuteTable(table, variable, type, start, end, properties, namespace)— az adatainak betöltése táblázatbóltableaz id-bólstarttólendPythonba.
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 .
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—listvagy Pandasdataframe.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—listvagy Pandasdataframe.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 nevevariable— a Python változó neve, amelybe az adatok beíródnak.type—listvagy Pandasdataframe.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%%CLASSNAMEfigyelmen 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ásraExecuteClass.
Megjegyzések
ExecuteGlobal,ExecuteClassésExecuteTableugyanolyan gyorsan működnek.ExecuteGlobal20-szor gyorsabban, mintExecuteQuerynagy adathalmazon (átadási idő >0,01 másodperc).ExecuteGlobal,ExecuteClassésExecuteTableugyanazzal a struktúrával működnek:^global(key) = $lb(prop1, prop2, ..., propN)aholkey— egész szám.- A
ExecuteGlobal,ExecuteClassésExecuteTabletámogatott értékkészlet%Dátummegegyezik a tartománnyalmktimeés az operációs rendszertől függ (: 1970-01-01, 1900-01-01, ). 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ésExecuteTableminden 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 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.ExecutionRequestPython kód végrehajtásához. Visszaadjaisc.py.msg.ExecutionResponsea végrehajtás eredményével és a kért változók értékeivel.isc.py.msg.StreamExecutionRequestPython kód végrehajtásához. Visszaadjaisc.py.msg.StreamExecutionResponsea végrehajtás eredményével és a kért változók értékeivel. Analógisc.py.msg.ExecutionRequest, de áramot fogad és ad vissza a sorok helyett.isc.py.msg.QueryRequestSQL lekérdezés végrehajtásának eredményének átadásához. VisszaadjaEns.Response.isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequestadatok globális / osztály / táblázat átviteléhez. VisszatérEns.Response.isc.py.msg.SaveRequesta Python kontextus mentésére. VisszatérEns.StringResponsea kontextus azonosítójával.isc.py.msg.RestoreRequesta Python kontextus helyreállításához.Ezen kívül,
isc.py.ens.Operationkét beállítással rendelkezik:Initializer— az interfészt megvalósító osztály kiválasztásaisc.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étlibpython3.6m.sovagy 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.ProcessUtilslehetővé teszi az aktivitások annotációinak kinyerését változók behelyettesítésével.isc.py.util.BPEmulatorkö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átprocess, amely az osztály példánya,isc.py.test.Processazaz az aktuális üzleti folyamat.${%PopulateUtils:Integer:1:100}látni fogja, hogy a gomb megnyomásaEgész számkapcsolat és csatornák%PopulateUtils, átadva az argumentumokat1és100, visszaad egy véletlenszerű egész számot a tartományban1...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:
- Futtasd a parancssorban:
pip install pandas matplotlib seaborn. - Futtasd az InterSystems IRIS parancsot:
do ##class(isc.py.test.CannibalizationData).Import()a tesztadatok betöltéséhez. - Indítsd el a terméket
isc.py.test.Production. - Küldjön egy
Ens.Requestbe.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:

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

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 szerint0.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ésDill, alapértelmezés szerintStr.
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:

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:

É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) vagylist.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.pyEzen interfész alapján 4 osztályú lekérdezés lett megvalósítva:
— állítsa be a
isc.py.msg.QueryRequestQuerySQL lekérdezés továbbítására.Classisc.py.msg.ClassRequestQueryosztály adattovábbítására.— állítsa be aisc.py.msg.TableRequestTableadatok táblázatra történő továbbításához.Globalisc.py.msg.GlobalRequestTablea 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

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
— 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 . És néhány képernyőkép:
Folyamat Explorer

Folyamat szerkesztő

Telepítés
- Szüksége van az InterSystems IRIS 2019.2+ verzióra.
- Telepítse a PythonGateway v0.8+ (csak a szükséges)
isc.py.util.Jupyter,isc.py.util.JupyterCheckpointsésisc.py.ens.ProcessUtils). - Frissítse az ObjectScript kódot a tárolóból.
- Futtassa a
do ##class(isc.py.util.Jupyter).Install()és kövesse az utasításokat.
.
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: é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: .
Forrás: habr.com
