Tento článek se věnuje Python Gateway — komunitnímu projektu s otevřeným zdrojovým kódem pro datovou platformu InterSystems IRIS. Tento projekt umožňuje orchestraci jakýchkoli algoritmů strojového učení vytvořených v jazyce Python (hlavním prostředí pro mnohé datové vědce), využívat řadu hotových knihoven pro rychlé vytváření adaptivních, robotizovaných analytických AI/ML řešení na platformě InterSystems IRIS. V tomto článku ukážu, jak může InterSystems IRIS orchestraci procesů v Pythonu efektivně provádět oboustranný přenos dat a vytvářet inteligentní obchodní procesy.
Plán
- Úvod.
- Nástroje.
- Instalace.
- API.
- Interoperabilita.
- Jupyter Notebook.
- Závěry.
- Odkazy.
- MLToolkit.
Úvod
Python je vysokoúrovňový programovací jazyk obecného určení, který se zaměřuje na zvyšování produktivity vývojářů a čitelnost kódu. V této sérii článků se budu zabývat možnostmi využití jazyka Python na platformě InterSystems IRIS, přičemž hlavním zaměřením tohoto článku je uplatnění Pythonu jako jazyka pro vytváření a aplikaci modelů strojového učení.
Strojové učení (ML) je třída metod umělé inteligence, které se vyznačují tím, že přímo neřeší problém, ale učí se při řešení mnoha podobných úloh.
Algoritmy a modely strojového učení se stávají stále běžnějšími. Důvodů je mnoho, ale všechno se to vrací k dostupnosti, jednoduchosti a dosažení praktických výsledků. Je klasifikace nebo dokonce neuronové modelování novou technologií?
Samozřejmě, že ne, ale v současnosti není potřeba psát stovky tisíc řádků kódu, abychom spustili jeden model, a náklady na vytváření a aplikaci modelů neustále klesají.
Nástroje se vyvíjejí — zatímco nemáme zcela GUI-orientované AI/ML nástroje, pokrok, který jsme zaznamenali u mnoha dalších tříd informačních systémů, například BI (od psaní kódu po používání rámců a GUI-orientovaných konfigurovatelných řešení), se objevuje i u nástrojů pro vytváření AI/ML. Již jsme překonali fázi psaní kódu a dnes používáme rámce k budování a trénování modelů.
Další vylepšení, jako je možnost distribuce předtrénovaného modelu, kdy koncový uživatel musí pouze dokončit trénink modelu na svých specifických datech, také usnadňují začátek uplatnění strojového učení. Tyto pokroky výrazně zjednodušují studium strojového učení jak pro odborníky, tak pro společnosti jako celek.
Na druhé straně sbíráme stále více dat. Díky jednotné datové platformě, jako je InterSystems IRIS, mohou být všechny tyto informace okamžitě připraveny a použity jako výchozí data pro modely strojového učení.
S přechodem do cloudu je spuštění AI/ML projektů snazší než kdykoli předtím. Můžeme spotřebovávat pouze ty zdroje, které potřebujeme. Navíc díky paralelizaci, kterou nabízejí cloudové platformy, můžeme ušetřit čas.
Ale co výsledky? Tady se situace komplikuje. Existuje mnoho nástrojů pro tvorbu modelů, o kterých budu hovořit dále. Vytvořit dobrý model není snadné, ale co dál? Získání zisku z použití modelu firmou je také netriviální úkol. Jádrům problému je rozdělení analytických a transakčních zátěží a datových modelů. Když trénujeme model, obvykle to děláme na historických datech. Ale místo, kde má postavený model fungovat, je v transakčním zpracování dat. Jaký má smysl nejlepší model pro detekci podvodných transakcí, pokud ho spouštíme jednou za den? Podvodníci už dávno utekli s penězi. Musíme trénovat model na historických datech, ale také ho musíme aplikovat v reálném čase na nových přicházejících datech, aby naše podnikové procesy mohly jednat v souladu s predikcemi provedenými modelem.
ML Toolkit je soubor nástrojů, jehož cílem je právě toto: spojení modelů a transakčního prostředí, aby bylo možné použití vytvořených modelů přímo ve vašich obchodních procesech. Python Gateway je součástí ML Toolkit a zajišťuje integraci s jazykem Python (podobně jako R Gateway, která je součástí ML Toolkit, zajišťuje integraci s jazykem R).
Nástroje
Než budeme pokračovat, rád bych popsal několik nástrojů a knihoven pro Python, které budeme používat později.
Technologie
- Python je interpretovaný, vysoce úrovňový programovací jazyk obecného použití. Hlavní výhodou jazyka je rozsáhlá knihovna matematických, ML a AI knihoven. Stejně jako ObjectScript je to objektově orientovaný jazyk, ale všechno je definováno dynamicky, nikoli staticky. Také vše je objektem. Pozdější články předpokládají povrchní seznámení s jazykem. Pokud chcete začít se vzděláváním, doporučuji začít s .
- Pro naše další cvičení nainstalujte .
- IDE: Používám , ale existují také . Pokud používáte Atelier, existuje Eclipse plugin pro vývojáře v Pythonu. Pokud používáte VS Code, existuje rozšíření pro Python.
- Notebook: místo IDE můžete psát a sdílet své skripty v online noteboocích. Nejpoužívanější z nich je .
Knihovny
Zde je (neúplný) seznam knihoven pro strojové učení:
- — základní balíček pro přesné výpočty.
- — vysoce výkonné datové struktury a nástroje pro analýzu dat.
- — vytváření grafů.
- — vizualizace dat založená na matplotlib.
- — metody strojového učení.
- — algoritmy strojového učení v rámci metodologie gradientního boosting (Gradient Boosting).
- — NLP.
- — neuronové sítě.
- — platforma pro vytváření modelů strojového učení.
- — platforma pro vytváření modelů strojového učení zaměřená na Python.
- — PMML z různých modelů.
Technologie AI/ML umožňují učinit podnikání efektivnějším a adaptivnějším. Navíc dnes se tyto technologie stávají snadnějšími k vývoji a implementaci. Začněte se učit technologie AI/ML a jak mohou pomoci vaší organizaci růst.
Instalace
Existuje několik způsobů, jak nainstalovat a používat Python Gateway:
- OS
- Windows
- Linux
- Mac
- Docker
- Použijte obraz z DockerHub
- Vytvořte si vlastní obraz
Ať už zvolíte jakýkoli způsob instalace, budete potřebovat zdrojový kód. Jediné místo pro stažení kódu je . Obsahuje testované stabilní verze, stačí si vzít poslední. V tuto chvíli je to 0.8, ale časem budou k dispozici i nové. Neklonujte/neukládejte repozitář, stáhněte si poslední vydání.
OS
Pokud instalujete Python Gateway do operačního systému, nejprve (bez ohledu na operační systém) musíte nainstalovat Python. K tomu:
- . Doporučuje se nainstalovat Python do výchozího adresáře.
- Nainstalujte modul
dill:pip install dill. - Stáhněte kód ObjectScript (tj.
do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) do jakékoli oblasti s produkty. Pokud chcete, aby existující oblast podporovala produkty, proveďte:write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1). - Umístěte do složky
binvaší instance InterSystems IRIS. Knihovna musí být dostupná na cestě vracenéwrite ##class(isc.py.Callout).GetLib().
Windows
- Ujistěte se, že proměnná prostředí
PYTHONHOMEukazuje na Python 3.6.7. - Ujistěte se, že systémová proměnná prostředí
cestobsahuje proměnnouPYTHONHOME(nebo adresář, na který ukazuje).
Linux (Debian/Ubuntu)
- Zkontrolujte, že proměnná prostředí
cestobsahuje/usr/liba/usr/lib/x86_64-linux-gnu. Použijte soubor/etc/environmentk nastavení proměnných prostředí. - V případě chyb
undefined symbol: _Py_TrueStructnainstalujte nastaveníPythonLib. Také v je sekce Řešení problémů.
Mac
- Aktuálně je podporován pouze Python 3.6.7 z . Zkontrolujte proměnnou
cest.
Pokud jste měnili proměnné prostředí, restartujte svůj produkt InterSystems.
Docker
Použití kontejnerů má řadu výhod:
- Přenositelnost
- Efektivita
- Izolace
- Lehkost
- Immutabilita
Podívejte se na tuto pro více informací o používání Dockeru s produkty InterSystems.
Všechny buildu Python Gateway jsou momentálně založeny na kontejnerových technologiích. 2019.4.
Hotový obraz
Proveďte: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latest, abyste stáhli a spustili Python Gateway s InterSystems IRIS Community Edition. A to je vše.
Vytvořte si vlastní obraz
Pro sestavení docker obrazu spusťte v kořenovém adresáři repozitáře: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Ve výchozím nastavení se obraz sestavuje na základě obrazu store/intersystems/iris-community:2019.4.0.383.0, ale můžete to změnit nastavením proměnné IMAGE.
Pro sestavení z InterSystems IRIS spusťte: `docker build —build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 —force-rm —tag intersystemscommunity/irispy:latest`.
Poté můžete spustit docker obraz:
docker run -d
-p 52773:52773
-v //:/mount
--name irispy
intersystemscommunity/irispy:latest
--key /mount/iris.keyPokud používáte obraz založený na InterSystems IRIS Community Edition, nemusíte zadávat klíč.
Komentáře
- Testovací proces
isc.py.test.Processukládá řadu obrázků do dočasného adresáře. Možná budete chtít změnit tuto cestu na namontovaný adresář. K tomu upravte nastaveníWorkingDirurčením namontovaného adresáře. - Pro přístup k terminálu zadejte:
docker exec -it irispy sh. - Přístup do Portálu Správy Systému pomocí přihlášení
SuperUser/SYS. - Chcete-li zastavit kontejner, zadejte:
docker stop irispy && docker rm --force irispy.
Kontrola instalace
Poté, co jste nainstalovali Python Gateway, je dobré ověřit, že funguje. Zadejte tento kód do terminálu InterSystems IRIS:
set sc = ##class(isc.py.Callout).Setup()
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
write varVýsledkem by mělo být vypsáno HELLO — hodnota Python proměnné x. Pokud je vracený stav sc chybou nebo var prázdno, zkontrolujte .
API
Python Gateway je nainstalován a ujistili jste se, že funguje. Je čas začít ho používat!
Hlavní rozhraní k Pythonu je isc.py.Main. Nabízí následující skupiny metod (vše vrací %Status):
- Spuštění kódu
- Přenos dat
- Pomocné
Spuštění kódu
Tyto metody umožňují spouštět libovolný Python kód.
SimpleString
SimpleString — to je hlavní metoda. Přijímá 4 volitelné argumenty:
code— řetězec kódu k vykonání. Symbol pro nový řádek:$c(10).returnVariable— název proměnné pro návrat.serialization— jak serializovatreturnVariable. 0 — string (výchozí), 1 — repr.result— ByRef odkaz na proměnnou, do které je zapisována hodnotareturnVariable.
V předchozím jsme provedli:
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).V tomto příkladu přiřazujeme proměnné Python x hodnotu Ahoj a chceme vrátit hodnotu Python proměnné x do proměnné ObjectScript var.
ExecuteCode
ExecuteCode je bezpečnější a méně omezenou alternativou SimpleString.
Řetězce v platformě InterSystems IRIS jsou omezeny na 3 641 144 znaky, a pokud chcete spustit delší úsek kódu, musíte použít proudy.
Přijímá dva argumenty:
code— řetězec nebo proud Python kódu k vykonání.variable— (volitelně) přiřazuje výsledek vykonánícodetéto Python proměnné.
Použijte například:
set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").V tomto příkladu násobíme 2 třemi a zapisujeme výsledek do Python proměnné y.
Přenos dat
Přenášejte data mezi Pythonem a zpět.
Python -> InterSystems IRIS
Existují 4 způsoby, jak získat hodnotu Python proměnné v InterSystems IRIS, v závislosti na potřebné serializaci:
Řetězecpro základní datové typy a ladění.Reprpro uchovávání jednoduchých objektů a ladění.JSONpro snadnou manipulaci s daty na straně InterSystems IRIS.Picklepro ukládání objektů.
Tyto metody umožňují získat proměnné z Pythonu ve formě řetězce nebo proudů.
GetVariable(variable, serialization, .stream, useString)— získatserializationproměnnouvariablevstream. PokuduseStringje-li 1 a serializace je umístěna do řetězce, pak se vrátí řetězec a ne proud.GetVariableJson(variable, .stream, useString)— získat JSON serializaci proměnné.GetVariablePickle(variable, .stream, useString, useDill)- získat Pickle (nebo Dill) serializaci proměnné.
Zkusíme získat naši proměnnou y.
set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6InterSystems IRIS -> Python
Načítáme data z InterSystems IRIS do Pythonu.
ExecuteQuery(query, variable, type, namespace)— vytváří datovou sadu (pandasdataframenebolist) z sql dotazu a nastaví ji do proměnné Pythonuvariable. Balíčekisc.pymusí být dostupný v oblastinamespace— zde se bude provádět dotaz.ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace)— načítá data globáluglobalz subscriptustartdoenddo Pythonu jako proměnnou typutype:list, nebo pandasdataframe. Popis volitelných argumentůmaskovatandlabelsje k dispozici v dokumentaci třídy a repozitáři .ExecuteClass(class, variable, type, start, end, properties, namespace)— načítá data třídytřídaz idstartdoenddo Pythonu jako proměnnou typutype:list, nebo pandasdataframe.>, nebo je lze definovat prostřednictvím systémové vlastnosti— seznam (oddělovač – čárka) vlastností třídy, které je třeba načíst do datové sady. Podporují se masky*a?. Ve výchozím nastavení —*(všechny vlastnosti). Vlastnost%%CLASSNAMEignorován.ExecuteTable(table, variable, type, start, end, properties, namespace)— načítá data tabulkytablez idstartdoenddo Pythonu.
ExecuteQuery — je univerzální (jakýkoli platný SQL dotaz bude předán do Pythonu). Nicméně, ExecuteGlobal a jeho obálky ExecuteClass a ExecuteTable mají určitá omezení. Jsou mnohem rychlejší (3-5krát rychlejší než ODBC ovladače a 20krát rychlejší ExecuteQuery). Další informace v .
Všechny tyto metody podporují přenos dat z jakékoli oblasti. Balíček isc.py musí být dostupný ve cílové oblasti.
ExecuteQuery
ExecuteQuery(request, variable, type, namespace) — přenos výsledků jakéhokoli platného SQL dotazu do Pythonu. To je nejpomalejší metoda přenosu dat. Použijte ji, pokud ExecuteGlobal a jeho obálky nejsou dostupné.
Argumenty:
query— sql dotaz.variable— název Python proměnné, do které se ukládají data.type—listnebo Pandasdataframe.namespace— oblast, ve které se bude provádět dotaz.
ExecuteGlobal
ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) — přenos globálu do Pythonu.
Argumenty:
global— jméno globálu bez^variable— název Python proměnné, do které se ukládají data.type—listnebo Pandasdataframe.start— první subscript globálu. Povinné%Integer.end— poslední subscript globálu. Povinné%Integer.maskovat— maska hodnot globálu. Maska může být kratší než počet polí v globálu (v tomto případě budou pole na konci přeskočena). Jak formátovat masku:+předat hodnotu tak, jak je.-přeskočit hodnotu.b— logický typ (0—Při provádění scénáře Nornir se do konzole vyprodukují podrobné logy., všechno ostatní —Pravda).– perioda anténní mřížky (vzdálenost mezi sousedními prvky),— datum (z $horolog, na Windows od 1970, na Linuxu od 1900).t— čas ($horolog, sekundy po půlnoci).m— časová značka (řetězec formátu ROK-MĚSÍC-DEN HODINA:MINUTA:SEKUNDA).
labels— %List názvů sloupců. Prvním prvkem je název subskriptu.namespace— oblast, ve které se bude provádět dotaz.
ExecuteClass
Obal nad ExecuteGlobal. Na základě definice třídy připravuje volání ExecuteGlobal a vyvolává ho.
ExecuteClass(class, variable, type, start, end, properties, namespace) — předávání dat třídy v Pythonu.
Argumenty:
třída— název třídyvariable— název Python proměnné, do které se ukládají data.type—listnebo Pandasdataframe.start— počáteční Id.end— koncové Id>, nebo je lze definovat prostřednictvím systémové vlastnosti— seznam (oddělovač – čárka) vlastností třídy, které je třeba načíst do datové sady. Podporují se masky*a?. Ve výchozím nastavení —*(všechny vlastnosti). Vlastnost%%CLASSNAMEignorován.namespace— oblast, ve které se bude provádět dotaz.
Všechny vlastnosti se předávají tak, jak jsou, kromě vlastností typů te, %Time, %Boolean a %TimeStamp — tyto jsou převáděny na odpovídající třídy Pythonu.
ExecuteTable
Obal nad ExecuteClass. Převádí název tabulky na název třídy a vyvolává ExecuteClass. Podpis:
ExecuteTable(table, variable, type, start, end, properties, namespace) — předání dat tabulky v Pythonu.
Argumenty:
table— název tabulky.
Všechny ostatní argumenty se předávají tak, jak jsou, doExecuteClass.
Poznámky
ExecuteGlobal,ExecuteClassaExecuteTablepracují stejně rychle.ExecuteGlobal20krát rychleji nežExecuteQueryna velkých datových sadách (čas přenosu více než >0.01 sekundy).ExecuteGlobal,ExecuteClassaExecuteTablepracují na globálech s touto strukturou:^global(key) = $lb(prop1, prop2, ..., propN)kdekey— celé číslo.- Pro
ExecuteGlobal,ExecuteClassaExecuteTablepodporovaný rozsah hodnotteodpovídá rozsahumktimea závisí na OS (: 1970-01-01, 1900-01-01, ). Použijte%TimeStamppro předání dat mimo tento rozsah nebo použijte pandas dataframe, protože toto omezení platí pouze pro seznam. - Pro
ExecuteGlobal,ExecuteClassaExecuteTablevšechny argumenty kromě zdroje dat (globálu, třídy nebo tabulky) a proměnné jsou volitelné.
Příklady
Testovací třída obsahuje metodu, která demonstruje všechny možnosti předávání dat:
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"
// Obecné argumenty
set variable = "df"
set type = "dataframe"
set start = 1
set end = $g(^isc.py.test.PersonD, start)
// Metoda 0: ExecuteGlobal bez argumentů
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 0, type)
// Metoda 1: ExecuteGlobal s argumenty
// Při předávání globálního názvy polí se nastavují ručně
// globalKey - název subskriptu
set labels = $lb("globalKey", "Name", "DOB", "TS", "RandomTime", "AgeYears", "AgeDecimal", "AgeDouble", "Bool")
// mask obsahuje o 1 prvek méně než labels, protože "globalKey" - název subskryptu
// Přeskakujeme %%CLASSNAME
set mask = "-+dmt+++b"
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 1, type, start, end, mask, labels)
// Metoda 2: ExecuteClass
set sc = ##class(isc.py.Main).ExecuteClass(class, variable _ 2, type, start, end)
// Metoda 3: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteTable(table, variable _ 3, type, start, end)
// Metoda 4: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteQuery(query, variable _ 4, type)Zavolejte metodu do ##class(isc.py.test.Person).Test() aby se podívali, jak všechny metody předávání dat fungují.
Pomocné metody
GetVariableInfo(variable, serialization, .defined, .type, .length)— získejte informace o proměnné: zda je definována, třída a délka serializace.GetVariableDefined(variable, .defined)— zda je proměnná definována.GetVariableType(variable, .type)— získejte třídu proměnné.GetStatus()— získejte a odstraňte poslední výjimku na straně Python.GetModuleInfo(module, .imported, .alias)— získejte proměnnou modulu a stav importu.GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments)— získejte informace o funkci.
Interoperabilita
Naučili jste se volat Python Gateway z terminálu, nyní začneme používat jej v produkci. Základem interakce s Pythonem v tomto režimu — isc.py.ens.Operation. Umožňuje nám:
- Provádět kód v Pythonu
- Ukládat/Obnovovat Python kontext
- Načítat a získávat data z Pythonu
V zásadě je Python operace obálka nad isc.py.Main. Operace isc.py.ens.Operation umožňuje interakci s procesem Python z produktů InterSystems IRIS. Podporováno je pět požadavků:
isc.py.msg.ExecutionRequestpro provádění Python kódu. Vracíisc.py.msg.ExecutionResponses výsledkem provedení a hodnotami požadovaných proměnných.isc.py.msg.StreamExecutionRequestpro provádění Python kódu. Vracíisc.py.msg.StreamExecutionResponsevýsledkem provedení a hodnotami požadovaných proměnných. Analogisc.py.msg.ExecutionRequest, ale přijímá a vrací toky místo řetězců.isc.py.msg.QueryRequestpro předání výsledku provedení SQL dotazu. VracíEns.Response.isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequestpro přenos dat globální / třídy / tabulky. VracíEns.Response.isc.py.msg.SaveRequestpro uložení Python kontextu. VracíEns.StringResponses identifikátorem kontextu.isc.py.msg.RestoreRequestpro obnovení Python kontextu.Kromě toho,
isc.py.ens.Operationmá dvě nastavení:Initializer— výběr třídy implementující rozhraníisc.py.init.Abstract. Může být použit k načítání funkcí, modulů, tříd atd. Spouští se jednou při spuštění procesu.PythonLib— (pouze pro Linux) pokud vidíte chyby při načítání, nastavte jeho hodnotu nalibpython3.6m.sonebo dokonce na úplnou cestu k Python knihovně.
Vytváření obchodních procesů
K dispozici jsou dvě třídy, které usnadňují vývoj obchodních procesů:
isc.py.ens.ProcessUtilsumožňuje extrahovat anotace z aktivit s náhradou proměnných.isc.py.util.BPEmulatorumožňuje snadno testovat obchodní procesy s Pythonem. Může vykonávat obchodní proces (části v jazyce Python) v aktuálním procesu.
Náhrada proměnných
Veškeré obchodní procesy zděděné od isc.py.ens.ProcessUtils, mohou používat metodu GetAnnotation(name) k získání hodnoty anotace aktivity podle jejího názvu. Anotace aktivity může obsahovat proměnné, které budou vyhodnoceny na straně InterSystems IRIS před jejich předáním do Pythonu. Zde je syntaxe náhrady proměnných:
${class:method:arg1:...:argN}— zavolání metody#{expr}— vykonat kód v jazyce ObjectScript.
Příklad je k dispozici v testovacím obchodním procesu isc.py.test.Process, například v aktivitě Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). V tomto příkladu:
#{process.WorkDirectory}vrací vlastnost WorkDirectory objektuprocess, což je instance třídyisc.py.test.Processtj. aktuální obchodní proces.${%PopulateUtils:Integer:1:100}volá metoduIntegertřídy%PopulateUtils, s předanými argumenty1a100, vracející náhodné celé číslo v rozmezí1...100.
Testovací obchodní proces
Testovací produkt a testovací obchodní proces jsou k dispozici ve výchozím nastavení jako součást Python Gateway. Pro jejich použití:
- V terminálu OS spusťte:
pip install pandas matplotlib seaborn. - V terminálu InterSystems IRIS spusťte:
do ##class(isc.py.test.CannibalizationData).Import()pro naplnění testovacích dat. - Spusťte produkt
isc.py.test.Production. - Odeslat požadavek typu
Ens.Requestvisc.py.test.Process.
Podívejme se, jak to všechno funguje dohromady. Otevřete isc.py.test.Process v editoru BPL:

Spuštění kódu
Nejdůležitější volání — vykonání Python kódu:

Používá se požadavek isc.py.msg.ExecutionRequest, zde jsou jeho vlastnosti:
Kód— Python kód.SeparateLines— má být kód rozdělen na řádky pro vykonání.$c(10)(n) se používá k rozdělení řetězců. Všimněte si, že zpracovávat zprávu jako celek se nedoporučuje, tato funkce je určena pouze pro zpracovánídefa podobných víceřádkových výrazů. Ve výchozím nastavení0.Proměnné— se jedná o seznam proměnných oddělených čárkami, které budou přidány do odpovědi.Serializace— Jak serializovat proměnné, které chceme vrátit. Možnosti:Str,Repr,JSON,PickleaDill, ve výchozím nastaveníStr.
V našem případě jen nastavujeme vlastnost Kód, takže všechny ostatní vlastnosti používají výchozí hodnoty. Nastavujeme ji voláním process.GetAnnotation("Import pandas"), které během běhu vrací anotaci po provedení substituce proměnných. Nakonec kód import pandas as pd bude předán do Pythonu. GetAnnotation může být užitečná pro získání víceřádkových Python skriptů, ale na tento způsob získávání kódu nejsou žádná omezení. Můžete nastavit vlastnost Kód jakýmkoliv způsobem, který vám vyhovuje.
Získávání proměnných
Další zajímavé volání s použitím isc.py.msg.ExecutionRequest — Korelační matice: Tabulka:

Vypočítává Korelační matici na straně Pythonu a extrahuje proměnnou corrmat zpět do InterSystems IRIS ve formátu JSON, tak, že nastavíme vlastnosti dotazu:
Proměnné:"corrmat"Serializace:"JSON"
Můžeme vidět výsledky ve Visual Trace:

A pokud tuto hodnotu budeme potřebovat v BP, můžeme ji získat takto: callresponse.Variables.GetAt("corrmat").
Přenos dat
Dále budeme mluvit o předávání dat z InterSystems IRIS do Pythonu, všechny dotazy na předávání dat implementují rozhraní isc.py.msg.DataRequest, které poskytuje následující vlastnosti:
Variable— proměnná Pythonu, do které se zapisují data.Type— typ proměnné:dataframe(pandas dataframe) nebolist.Namespace— oblast, ze které získáváme data. Balíčekisc.pymusí být v této oblasti dostupný. Může to být oblast bez podpory produktů.
Na základě tohoto rozhraní byly implementovány 4 třídy dotazů:
isc.py.msg.QueryRequest— nastavte vlastnostDotazpro předání SQL dotazu.isc.py.msg.ClassRequest— nastavte vlastnostClasspro předání dat třídy.isc.py.msg.TableRequest— nastavte vlastnostTablepro předání dat tabulky.isc.py.msg.GlobalRequest— nastavte vlastnostGlobalpro předání dat globálu.
V testovacím procesu se podívejte na aktivitu RAW, kde isc.py.msg.QueryRequest zobrazenou v akci.

Uložení/obnovení kontextu Pythonu
Nakonec můžeme uložit kontext Pythonu do InterSystems IRIS, abychom to udělali, odešleme isc.py.msg.SaveRequest s argumenty:
Maska— Ukládají se pouze proměnné vyhovující masce. Podporují se*a?. Příklad:"Data*, Figure?". Ve výchozím nastavení*.MaxLength— Maximální délka uchovávané proměnné. Pokud je serializace proměnné delší, bude ignorována. Nastavte 0 pro povolení proměnných libovolné délky. Ve výchozím nastavení$$$MaxStringLength.Název— Název kontextu (volitelně).Popis— Popis kontextu (volitelně).
Vrátí Ens.StringResponse s Id uloženého kontextu. V testovacím procesu sledujte aktivitu Uložit kontext.
Odpovídající požadavek isc.py.msg.RestoreRequest na načtení kontextu z InterSystems IRIS do Pythonu:
ContextId— identifikátor kontextu.Clear— vyčistit kontext před obnovením.
Jupyter Notebook
— je to open-source webová aplikace, která umožňuje vytvářet notebooky obsahující kód, vizualizace a text a publikovat je. Python Gateway umožňuje prohlížet a upravovat procesy BPL ve formátu Jupyter Notebook. Všimněte si, že se v současnosti používá standardní executor Python 3.
Toto rozšíření předpokládá, že anotace obsahují kód Python a využívají názvy aktivit jako předchozí nadpisy. Nyní je možné vyvíjet obchodní procesy PythonGateway v Jupyter Notebooku. Zde je, co je možné:
- Vytvářet nové obchodní procesy
- Mazat obchodní procesy
- Vytvářet nové aktivity
- Měnit aktivity
- Mazat aktivity
Tady . A několik snímků obrazovky:
Průzkumník procesů

Editor procesu

Instalace
- Budete potřebovat InterSystems IRIS 2019.2+.
- Nainstalujte PythonGateway v0.8+ (požaduje se pouze
isc.py.util.Jupyter,isc.py.util.JupyterCheckpointsaisc.py.ens.ProcessUtils). - Aktualizujte kód ObjectScript z repozitáře.
- Proveďte
do ##class(isc.py.util.Jupyter).Install()a postupujte podle pokynů.
.
Závěry
MLToolkit je sada nástrojů, jejímž cílem je spojit modely a transakční prostředí, aby bylo možné snadno používat vytvořené modely přímo ve vašich obchodních procesech. Python Gateway je součástí MLToolkit a zajišťuje integraci s jazykem Python, což umožňuje orchestraci jakýchkoliv algoritmů strojového učení vytvořených v Pythonu (hlavním prostředí pro mnoho Data Scientistů), využití mnoha připravených knihoven pro rychlé vytvoření adaptivních, automatizovaných analytických AI/ML řešení na platformě InterSystems IRIS.
Odkazy
MLToolkit
Skupina uživatelů MLToolkit je soukromé úložiště GitHub, vytvořené jako součást firemní organizace GitHub InterSystems. Je určena externím uživatelům, kteří instalují, zkoumají nebo již používají komponenty MLToolkit, včetně Python Gateway. Ve skupině je k dispozici řada realizovaných případových studií (se zdrojovým kódem a testovacími daty) v oblastech marketingu, výroby, medicíny a mnoha dalších odvětvích. Pokud se chcete připojit ke skupině uživatelů ML Toolkit, prosím, pošlete krátkou zprávu na e-mail na následující adresu: a uveďte ve své zprávě následující údaje:
- Uživatelské jméno GitHub
- Organizace (kde pracujete nebo studujete)
- Pozice (vaše skutečná pozice ve vaší organizaci, nebo "Student", nebo "Nezávislý").
- Země
Těm, kdo si přečetli článek a mají zájem o možnosti InterSystems IRIS jako platformy pro vývoj nebo hostování mechanismů umělé inteligence a strojového učení, nabízíme možnost probrat možné scénáře, které by byly zajímavé pro vaši firmu. S radostí analyzujeme potřeby vaší firmy a společně určíme akční plán; kontaktní e-mailová adresa naší expertní skupiny AI/ML je – .
Zdroj: habr.com
