See artikkel on pühendatud Python Gateway'ile — avatud lähtekoodiga kogukonnaprojektile InterSystems IRIS andmeplatvormile. See projekt võimaldab orkestreerida mis tahes masinõppe algoritme, mis on loodud Pythonis (peamine keskkond paljude andmeteadlaste jaoks), kasutades arvukalt valmis teeke paindlike, robotiseeritud analüütiliste AI/ML lahenduste kiireks loomiseks InterSystems IRIS platvormil. Selles artiklis näitan, kuidas InterSystems IRIS saab orkestreerida protsesse Pythoni keeles, efektiivselt korraldada andmete kahepoolset edastamist ja luua intelligentseid äriprotsesse.
Plaani
- Sissejuhatus.
- Tööriistakomplekt.
- Paigaldamine.
- API.
- Interoperatiivsusus.
- Jupyter Notebook.
- Järeldused.
- Lingid.
- MLToolkit.
Sissejuhatus
Python on kõrgema taseme üldotstarbeline programmeerimiskeel, mis on suunatud arendaja tootlikkuse ja koodi loetavuse parandamisele. Selles artiklite sarjas räägin Python'i rakendamise võimalustest InterSystems IRIS platvormil, keskendudes peamiselt Python'i kasutamisele masinõppe mudelite loomisel ja rakendamisel.
Masinõpe (ML) on tehisintellekti meetodite klass, mille iseloomulikuks tunnuseks on ülesande otsese lahendamise võimaluse asemel sarnaste ülesannete lahendamine õppimise kaudu.
Masinõppe algoritmid ja mudelid saavad üha enam levinud. Selle põhjuseid on palju, kuid kõik taandub kergusele, lihtsusele ja praktilise tulemuse saavutamisele. Kas klasterdamine või isegi närvivõrgu modelleerimine on uus tehnoloogia?
Muidugi mitte, kuid praegu pole enam vaja kirjutada sadu tuhandeid ridu koodi, et käivitada üks mudel, ja mudelite loomise ja rakendamise kulud vähenevad järjest enam.
Tööriistad arenevad — kuigi meil pole täielikult GUI-orienteeritud AI/ML tööriistu, siis areng, mida oleme täheldanud paljude teiste infosüsteemide klassidega, näiteks BI (koodikirjutamisest raamistike ja GUI-orienteeritud konfigureeritavate lahenduste kasutamiseni), toimub samuti AI/ML loomise tööriistades. Oleme juba ületanud koodikirjutamise etapi ja täna kasutame mudelite loomise ja õpetamise raamistikke.
Teised täiustused, nagu eelõppemudeli levitamise võimalus, kus lõppkasutaja peab lihtsalt lõpetama mudeli treenimise oma spetsiifiliste andmete peal, lihtsustavad masinõppe rakenduse alustamist. Need saavutused muudavad masinõppe õppimise oluliselt lihtsamaks nii spetsialistide kui ka ettevõtete jaoks tervikuna.
Teisest küljest kogume järjest rohkem andmeid. Ühtse andmeplatvormi, nagu InterSystems IRIS, abil saab kogu see teave koheselt ette valmistada ja kasutada masinõppe mudelite lähtedata.
Pilve ülemineku tõttu on AI/ML-projektide käivitamine lihtsam kui kunagi varem. Saame kasutada ainult neid ressursse, mis meile vajalikud on. Veelgi enam, tänu pilveplatvormide pakutavale paralleelsusele suudame säästa kulutatud aega.
Aga kuidas on tulemustega? Siin läheb kõik keeruliseks. On palju tööriistu mudelite ehitamiseks, millest ma räägin hiljem. Hea mudeli ehitamine pole lihtne, aga mis edasi? Tulu saamine mudeli kasutamisest äris on samuti keeruline ülesanne. Probleemi juured peituvad analüütiliste ja tehingute koormate ning andmemudelite lahendamises. Kui treenime mudelit, teeme seda tavaliselt ajalooliste andmete peal. Ent ehitatud mudeli koht on tehinguandmete töötlemises. Mis kasu on parimast petukaupade tuvastamise mudelist, kui käivitame seda ainult kord päevas? Petised on raha juba ammu kaasa võtnud. Me peame treenima mudelit ajalooliste andmete peal, aga me peame seda rakendama ka reaalajas uute saabuvate andmete peal, et meie äri protsessid saaksid toimida vastavalt mudeli tehtud prognoosidele.
ML Toolkit on tööriistade komplekt, mille eesmärk on just see: mudelite ja tehingu keskkonna ühendamine, et ehitatud mudeleid saaks hõlpsasti teie äriprotsessides kasutada. Python Gateway on osa ML Toolkit-st ja tagab integreerimise Pythoniga (sarnaselt R Gateway-ga, mis koos ML Toolkit-iga tagab integreerimise R-iga).
Tööriistakomplekt
Enne kui jätkame, tahaksin tutvustada mõningaid Python'i tööriistu ja raamatukogusid, mida me hiljem kasutame.
Tehnoloogiad
- Python on tõlgendatav, kõrgema taseme üldotstarbeline programmeerimiskeel. Keele peamine eelis on suur matemaatika, ML ja AI raamatukogu. Nagu ObjectScript, on see objektorienteeritud keel, kuid kõik määratakse dünaamiliselt, mitte staatiliselt. Samuti on kõik objekt. Hilisemad artiklid eeldavad, et teil on keele kohta pinnapealne tutvustus. Kui soovite alustada õppimist, soovitan alustada .
- Meie järgmiste harjutuste jaoks installige .
- IDE: kasutan , aga neid on . Kui kasutate Atelier'i, siis on olemas Eclipse'i plugin Python'i arendajatele. Kui kasutate VS Code'i, siis on olemas Python'i laiendus.
- Notebook: IDE asemel saate oma skripte kirjutada ja jagada veebipõhistes märkmikes. Kõige populaarsem neist on .
Raamatukogud
Siin on (puudulik) nimekiri masinõppe raamatukogudest:
- — täpsete arvutuste aluspakk.
- — kõrge jõudlusega andmestruktuurid ja andmeanalüüsi tööriistad.
- — joonistamine.
- — andmete visualiseerimine, mis põhineb matplotlib'il.
- — masinõppe meetodid.
- — masinõppe algoritmid, mis põhinevad gradientide tõukamise metoodikal.
- — NLP.
- — närvivõrgud.
- — platvorm masinõppemudelite loomiseks.
- — platvorm masinõppemudelite loomiseks, mis on suunatud Python'ile.
- — PMML erinevatest mudelitest.
AI/ML tehnoloogiad võimaldavad teha äri tõhusamaks ja kohanemisvõimelisemaks. Rohkemgi veel, need tehnoloogiad muutuvad täna arendamiseks ja rakendamiseks lihtsamaks. Alustage AI/ML tehnoloogiate õppimist ja sellega, kuidas need võivad aidata teie organisatsioonil kasvada.
Paigaldamine
On mitmeid viise Python Gateway'i installimiseks ja kasutamiseks:
- on teil alati kõige uuemad tarkvaralahendused.
- Windows
- Linux
- Mac
- Docker
- Kasutage DockerHub'i kujutist
- Looge oma enda kujutis
Ükskõik, kuidas te installite, vajate lähtekoodi. Ains koht koodi allalaadimiseks on . See sisaldab testitud stabiilseid versioone, võtke lihtsalt viimane. Hetkel on see 0.8, kuid ajaga tuleb uusi. Ärge kloonige/laadige alla reposiit, laadige alla viimane versioon.
on teil alati kõige uuemad tarkvaralahendused.
Kui installite Python Gateway operatsioonisüsteemi, peate esmalt (ükskõik millisest operatsioonisüsteemist) installima Python. Selleks:
- . Soovitav on installida Python vaikekausta.
- Installige moodul
dill:pip install dill. - Laadige ObjectScript kood (st.
do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) ükskõik millises valdkonnas tooteid. Kui soovite, et olemasolev valdkond toetaks tooteid, tehke järgmist:write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1). - Asetage kausta
binteie InterSystems IRIS instantsis. Raamatukogu fail peab olema kätte saadav teelt, mille tagastabwrite ##class(isc.py.Callout).GetLib().
Windows
- Veenduge, et keskkonnamuutuja
PYTHONHOMEosutab Python 3.6.7-le. - Veenduge, et süsteemi keskkonnamuutuja
PATHsisaldab muutujatPYTHONHOME(või katalooge, millele see osutab).
Linux (Debian/Ubuntu)
- Kontrollige, et keskkonnamuutuja
PATHsisaldab/usr/libja/usr/lib/x86_64-linux-gnu. Kasutage faili/etc/environmentkeskkonnamuutujate seadistamiseks. - Vigade korral
undefined symbol: _Py_TrueStructseadke konfiguratsioonPythonLib. Samuti on osa tõrkeotsingust.
Mac
- Praegu toetatakse ainult Python 3.6.7 versiooni lehelt Kontrollige muutujaid
PATH.
Kui olete keskkonnamuutujaid muutnud, taaskäivitage oma InterSystems toode.
Docker
Konteinerite kasutamisel on mitmeid eeliseid:
- Kantavus
- Tõhusus
- Isolatsioon
- Kergus
- Muudetavus
Tutvuge selle rohkema teabe saamiseks Docker'i kasutamisest InterSystems toodetega.
Kõik Python Gateway kogud põhinevad praegu konteineritel 2019.4.
Valmis pilt
Käivitage: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latest, et laadida ja käivitada Python Gateway InterSystems IRIS Community Edition'iga. Nii lihtne see on.
Looge oma enda kujutis
Dokker-pildi koostamiseks käivitage reposi juuris: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Vaikimisi koostatakse pilt pildi põhjal store/intersystems/iris-community:2019.4.0.383.0, kuid saate seda muuta, seadistades muutuja IMAGE.
InterSystems IRIS'est koostamiseks käivitage: `docker build —build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 —force-rm —tag intersystemscommunity/irispy:latest`.
Pärast seda võite käivitada dokker-pildi:
docker run -d
-p 52773:52773
-v //:/mount
--name irispy
intersystemscommunity/irispy:latest
--key /mount/iris.keyKui kasutate pilti, mis põhineb InterSystems IRIS Community Edition'il, ei pruugi te võtit määrata.
Kommentaarid
- Testimisprotsess
isc.py.test.Processсохраняет ряд изображений во временный каталог. Возможно, вы захотите изменить этот путь на смонтированный каталог. Для этого отредактируйте настройкуWorkingDirуказав смонтированную директорию. - Для доступа к терминалу выполните:
docker exec -it irispy sh. - Доступ к Порталу Управления Системой по логину
SuperUser/SYS. - Чтобы остановить контейнер, выполните:
docker stop irispy && docker rm --force irispy.
Проверка установки
После того, как вы установили Python Gateway, стоит проверить, что он работает. Выполните этот код в терминале InterSystems IRIS:
set sc = ##class(isc.py.Callout).Setup()
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
write varВ результате должно быть выведено HELLO — значение Python-переменной x. Если возвращаемый статус sc является ошибкой или var пусто, проверьте .
API
Python Gateway установлен, и вы убедились, что он работает. Пора начинать его использовать!
Главный интерфейс к Python это isc.py.Main. Он предлагает следующие группы методов (все возвращают %Status):
- Исполнение кода
- Andmete edastamine
- Вспомогательные
Исполнение кода
Эти методы позволяют исполнять произвольный Python-код.
SimpleString
SimpleString — это основной метод. Он принимает 4 опциональных аргумента:
code— строка кода для выполнения. Символ перевода строки:$c(10).returnVariable— имя переменной для возврата.serialization— как сериализоватьreturnVariable. 0 — string (по умолчанию), 1 — repr.result— ByRef ссылка на переменную, в которую записывается значениеreturnVariable.
Выше мы выполнили:
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).В данном примере мы присваиваем переменной Python x väärtuse Tere и хотим вернуть значение Python переменной x в ObjectScript переменную var.
ExecuteCode
ExecuteCode является более безопасной и менее ограниченной альтернативой SimpleString.
Строки в платформе InterSystems IRIS ограничены 3 641 144 символами, и если вы хотите выполнить более длинный кусок кода, вам необходимо использовать потоки.
Принимаются два аргумента:
code— строка или поток Python кода для исполнения.variable— (опционально) присваивает результат выполненияcodeэтой Python переменной.
Приме использовать:
set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").В этом примере мы умножаем 2 на 3 и записываем результат в Python переменную y.
Andmete edastamine
Передавайте данные в Python и обратно.
Python -> InterSystems IRIS
Есть 4 способа получить значение Python переменной в InterSystems IRIS, в зависимости от сериализации, которая вам нужна:
Stringlihtsate andmete tüüpide ja silumise jaoks.Reprlihtsate objektide salvestamiseks ja silumise jaoks.JSONandmete lihtsaks manipuleerimiseks InterSystems IRIS-i küljel.Pickleobjektide salvestamiseks.
Need meetodid võimaldavad saada muutujaid Pythonis stringi või voogena.
GetVariable(variable, serialization, .stream, useString)— saadaserializationmuutujavariablejastream. KuiuseStringon 1 ja serialiseerimine pannakse stringi, tagastatakse string, mitte voog.GetVariableJson(variable, .stream, useString)— saada JSON serialiseerimise muutuja.GetVariablePickle(variable, .stream, useString, useDill)— saada Pickle (või Dill) serialiseerimise muutuja.
Proovime saada meie muutuja y.
set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6InterSystems IRIS -> Python
Laeme andmeid InterSystems IRIS-st Pythonisse.
ExecuteQuery(query, variable, type, namespace)— loob andmekogumi (pandasdataframevõiloend) sql päringu põhjal ja määrab selle Python muutuja.variable. Pakettisc.pypeab olema saadaval alalnamespace— seal hakatakse päringut täitma.ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace)— laadib globaali andmedglobalalamskriptistartkunilõpetaPythonis muutuja tüüpitype:loend, või pandasdataframe. Valikute argumentide kirjeldusmaskjalabelson saadaval klassi dokumentatsioonis ja hoidlas .ExecuteClass(class, variable, type, start, end, properties, namespace)— laadib klassi andmedclassid-ststartkunilõpetaPythonis muutuja tüüpitype:loend, või pandasdataframe.properties— omaduste loetelu (eraldaja - koma), mida tuleb andmekogusse laadida. Toetatakse maske*ja?. Vaikimisi —*(kõik omadused). Omadus%%CLASSNAMEignored.ExecuteTable(table, variable, type, start, end, properties, namespace)— laadib tabeli andmedtableid-ststartkunilõpetaPythonisse.
ExecuteQuery — universaalne (iga korrektne SQL-päring edastatakse Pythonisse). Siiski, ExecuteGlobal ja selle ümbrised ExecuteClass ja ExecuteTable töötavad mitmete piirangutega. Need on palju kiirem (3-5 korda kiiremini ODBC-draiverist ja 20 korda kiiremini ExecuteQuery). Täiendav teave .
Kõik need meetodid toetavad andmete edastamist igast piirkonnast. Pakett isc.py peab olema saadaval sihtpiirkonnas.
ExecuteQuery
ExecuteQuery(request, variable, type, namespace) — edastab iga korrektse SQL-päringu tulemused Pythonisse. See on andmete edastamise kõige aeglasem meetod. Kasutage seda, kui ExecuteGlobal ja selle ümbrised pole saadaval.
Argumentid:
query— sql päring.variable— Python muutuja nimi, kuhu andmed salvestatakse.type—loendvõi Pandasdataframe.namespace— piirkond, kus päring täidetakse.
ExecuteGlobal
ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) — globaali edastamine Pythonisse.
Argumentid:
global— globaali nimi ilma^variable— Python muutuja nimi, kuhu andmed salvestatakse.type—loendvõi Pandasdataframe.start— esimene globaalne alamskript. Kohustuslik%Integer.lõpeta— viimane globaalne alamskript. Kohustuslik%Integer.mask— globaalsete väärtuste mask. Mask võib olla lühem kui globaalsete väljade arv (sellisel juhul jäetakse lõpus väljad vahele). Kuidas maski vormindada:+edasta väärtus sellisena, nagu see on.-jäta väärtus vahele.b— Loogiline tüüp (0—Vale, kõik muu —Tõsi).d— Kuupäev ($horolog, Windowsis alates 1970, Linuxis alates 1900).t— Aeg ($horolog, sekundid keskööst).m— Aja märge (aasta-kuu-päev tund:minuut:sekund formaadis).
labels— %Loend veergude nimedest. Esimene element — alamskripti nimi.namespace— piirkond, kus päring täidetakse.
ExecuteClass
Kapseldus ExecuteGlobal. Klassi määratluse põhjal valmistab ette kutse ExecuteGlobal ja kutsub selle esile.
ExecuteClass(class, variable, type, start, end, properties, namespace) — Klasside andmete edastamine Pythonis.
Argumentid:
class— klassi nimivariable— Python muutuja nimi, kuhu andmed salvestatakse.type—loendvõi Pandasdataframe.start— algne Id.lõpeta— lõpp Idproperties— omaduste loetelu (eraldaja - koma), mida tuleb andmekogusse laadida. Toetatakse maske*ja?. Vaikimisi —*(kõik omadused). Omadus%%CLASSNAMEignored.namespace— piirkond, kus päring täidetakse.
Kõik omadused edastatakse sellisena, nagu need on, välja arvatud tüübi omadused %Date, g, %Loogiline ja %AjaMärk — need konverteeritakse vastavatesse Python klassidesse.
ExecuteTable
Kapseldus ExecuteClass. Edastab tabeli nime klassi nime ja kutsub selle esile ExecuteClass. Allkiri:
ExecuteTable(table, variable, type, start, end, properties, namespace) — tabeli andmete edastamine Pythonis.
Argumentid:
table— tabeli nimi.
Kõik teised argumendid edastatakse sellisena, nagu need onExecuteClass.
Märkused
ExecuteGlobal,ExecuteClassjaExecuteTabletöötavad sama kiiresti.ExecuteGlobal20 korda kiiremini kuiExecuteQuerysuurte andmekogude korral (andmete edastamise aeg >0.01 sekundit).ExecuteGlobal,ExecuteClassjaExecuteTabletöötavad globaalidega, millel on antud struktuur:^global(key) = $lb(prop1, prop2, ..., propN)kuskey— täisarv.- Tooge
ExecuteGlobal,ExecuteClassjaExecuteTabletoetatud väärtuste vahemik%Datevastab vahemikulemktimeja sõltub opsüsteemist (: 1970-01-01, 1900-01-01, ). Kasutage%AjaMärkandmete edastamiseks sellest vahemikust väljapoole või kasutage pandas dataframe'i, kuna see piirang kehtib ainult loendi kohta. - Tooge
ExecuteGlobal,ExecuteClassjaExecuteTablekõik argumendid välja arvatud andmeallikas (globaal, klass või tabel) ja muutuja on valikulised.
Näited
Testklass sisaldab meetodit, mis demonstreerib kõiki andmete edastamise variante:
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"
// Üldised argumendid
set variable = "df"
set type = "dataframe"
set start = 1
set end = $g(^isc.py.test.PersonD, start)
// Meetod 0: ExecuteGlobal ilma argumentideta
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 0, type)
// Meetod 1: ExecuteGlobal argumentidega
// Kui edastate globaalset, määratakse väljade nimetused käsitsi
// globalKey - subskripti nimi
set labels = $lb("globalKey", "Name", "DOB", "TS", "RandomTime", "AgeYears", "AgeDecimal", "AgeDouble", "Bool")
// mask sisaldab ühe elemendi vähem kui labels, kuna "globalKey" - subskripti nimi
// Jätame vahele %%CLASSNAME
set mask = "-+dmt+++b"
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 1, type, start, end, mask, labels)
// Meetod 2: ExecuteClass
set sc = ##class(isc.py.Main).ExecuteClass(class, variable _ 2, type, start, end)
// Meetod 3: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteTable(table, variable _ 3, type, start, end)
// Meetod 4: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteQuery(query, variable _ 4, type)Käivitage meetod do ##class(isc.py.test.Person).Test() et näha, kuidas töötab kõik andmete edastamise meetodid.
Abimeetodid
GetVariableInfo(variable, serialization, .defined, .type, .length)— saada teavet muutuja kohta: kas see on määratud, klass ja serialiseerimise pikkus.GetVariableDefined(variable, .defined)— kas muutuja on määratud.GetVariableType(variable, .type)— saada muutuja klassi.GetStatus()— saada ja eemaldada viimane erand Python'i poolel.GetModuleInfo(module, .imported, .alias)— saada mooduli muutuja ja importimise staatus.GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments)— saada teavet funktsiooni kohta.
Ühenduvus
Olete õppinud, kuidas kutsuda Python Gateway'i terminalist, nüüd alustame selle kasutamist toodetes. Python'i integreerimise aluseks sellises režiimis on isc.py.ens.Operation. See võimaldab meil:
- Käivitada koodi Python'is
- Salvestada/taastada Python konteksti
- Laadida ja saada andmeid Python'ist
Põhimõtteliselt on Python'i operatsioon ümberringi kapseldamine isc.py.Main. Operatsioon isc.py.ens.Operation võimaldab interakteeruda Python'i protsessiga InterSystems IRIS toodetest. Toetatakse viit päringut:
isc.py.msg.ExecutionRequestPython koodi täitmiseks. Tagastabisc.py.msg.ExecutionResponsetäitmise tulemuse ja küsitud muutujate väärtused.isc.py.msg.StreamExecutionRequestPython koodi täitmiseks. Tagastabisc.py.msg.StreamExecutionResponsetäitmise tulemuse ja küsitud muutujate väärtused. Sarnaneisc.py.msg.ExecutionRequest, kuid võtab ja tagastab vooge jõude asemel stringe.isc.py.msg.QueryRequestSQL päringu täitmise tulemuse edastamiseks. TagastabEns.Response.isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequestandmete edastamiseks globaalsete /klasside /tabelite jaoks. TagastabEns.Response.isc.py.msg.SaveRequestPython konteksti salvestamiseks. TagastabEns.StringResponsekonteksti identifikaatoriga.isc.py.msg.RestoreRequestPython konteksti taastamiseks.Lisaks,
isc.py.ens.Operationon kaks seadistust:Initializer— klassi valik, mis rakendab liidestisc.py.init.Abstract. Seda saab kasutada funktsioonide, moodulite, klasside jne laadimiseks. See täidetakse üks kord protsessi käivitamisel.PythonLib— (ainult Linuxi jaoks) kui näete laadimisel vigu, seadke selle väärtuslibpython3.6m.sovõi isegi täielik tee Python teeki.
Äriprocesside loomine
Kaks klassi on saadaval, et lihtsustada äriprotsesside arendamist:
isc.py.ens.ProcessUtilsvõimaldab saada tõlgendusi tegevustest, asendades muutujaid.isc.py.util.BPEmulatorvõimaldab hõlpsasti testida äriprotsesse Pythonis. See suudab täita äriprotsessi (Python keeles osasid) jooksval protsessil.
Muutujate asendamine
Kõik äriprotsessid, mis pärivad isc.py.ens.ProcessUtils, saavad kasutada meetodit GetAnnotation(name) aktiivsuse tõlgenduse väärtuse saamiseks selle nime järgi. Tegevuse tõlgendus võib sisaldada muutujaid, mis arvutatakse InterSystems IRIS'i küljel enne Pythonisse saatmist. Siin on muutuja asendamise süntaks:
${class:method:arg1:...:argN}— meetodi kutsumine#{expr}— koodi täitmine ObjectScript keeles.
Näide on saadaval testivas äriprotsessis isc.py.test.Process, näiteks tegevuses Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Selles näites:
#{process.WorkDirectory}tagastab objekti WorkDirectory omaduseprocess, mis on klassi eksemplarisc.py.test.Processst. käesolev äriprotsess.${%PopulateUtils:Integer:1:100}kutsib meetodiIntegerklassist%PopulateUtils, edastades argumendid1ja100, tagastades juhusliku täisarvu vahemikus1...100.
Testimisprotsess
Testtooted ja testimisprotsess on vaikimisi saadaval osana Python Gateway'st. Kasutamiseks:
- Käivitage OS terminalis:
pip install pandas matplotlib seaborn. - Käivitage InterSystems IRIS terminalis:
do ##class(isc.py.test.CannibalizationData).Import()testandmete täitmiseks. - Käivitage toode
isc.py.test.Production. - Saada nõue tüüpi
Ens.Requestjaisc.py.test.Process.
Vaadake, kuidas kõik see koos toimib. Avage isc.py.test.Process BPL redaktoris:

Исполнение кода
Kõige olulisem kutse - Python koodi täitmine:

Kasutatakse nõuet isc.py.msg.ExecutionRequest, siin on selle omadused:
Kood— Python kood.SeparateLines— kas jagada kood readeks täitmiseks.$c(10)(n) kasutatakse ridade eraldamiseks. Pange tähele, et kogu sõnumit korraga töödelda ei soovitata, see funktsioon on mõeldud ainult töötlemiseksdefja sarnaste mitmerealiste avalduste jaoks. Vaikimisi0.Variables— koma eraldatud muutuja nimekiri, mis lisatakse vastusesse.Serialiseerimine— Kuidas serialiseerida muutujaid, mida me soovime tagasi saata. Valikud:Str,Repr,JSON,PicklejaDill, vaikimisiStr.
Meie puhul seadistame ainult omaduse Kood, nii et kõik teised omadused kasutavad vaikimisi väärtusi. Seadistame selle, kutsudes process.GetAnnotation("Import pandas"), mis tagastab käitamise ajal annotatsiooni pärast muutuja asendusi. Lõpuks import pandas as pd edastatakse Pythonile. GetAnnotation võib olla kasulik mitmerealiste Python skriptide saamiseks, kuid selle koodi saamise meetodil ei ole mingit piirangut. Saate seada omaduse Kood igati mugaval viisil.
Muutujate saamine
Veel üks huvitav väljakutse, kasutades isc.py.msg.ExecutionRequest — Korrelatsioonide Maatriks: Tabel:

See arvutab Korrelatsioonide Maatriksi Pythonis ja ekstraktib muutuja corrmat tagasi InterSystems IRIS-s JSON formaadis, seades päringu omadused:
Variables:"corrmat"Serialiseerimine:"JSON"
Saame tulemusi Visual Trace'is näha:

Ja kui see väärtus on meile BP-s vajalik, saame selle kätte nii: callresponse.Variables.GetAt("corrmat").
Andmete edastamine
Järgmisena räägime andmete edastamisest InterSystems IRIS-st Pythonisse, kõik andmete edastamise päringud rakendavad liidest isc.py.msg.DataRequest, mis pakub järgmisi omadusi:
Variable— Python muutuja, kuhu andmed salvestatakse.Tüüp— muutuja tüüp:dataframe(pandas dataframe) võiloend.Namespace— ala, kust andmeid saadakse. Pakettisc.pypeab olema selles väljas saadaval. See võib olla ala, mis ei toeta tootmisi.
Selle liidese alusel on rakendatud 4 päringute klassi:
isc.py.msg.QueryRequest— seadistage omadusQuerySQL päringu edastamiseks.isc.py.msg.ClassRequest— seadistage omadusClassklassi andmete edastamiseks.isc.py.msg.TableRequest— seadistage omadusTabletabeli andmete edastamiseks.isc.py.msg.GlobalRequest— seadistage omadusGlobalglobaalsete andmete edastamiseks.
Testimisprotsessi käigus vaadake aktiivsust RAW, kus isc.py.msg.QueryRequest näidatakse tegevuses.

Python konteksti salvestamine / taastamine
Lõpuks saame salvestada Python konteksti InterSystems IRIS-s, et seda teha, saadame isc.py.msg.SaveRequest argumendina:
Mask— Salvestatakse ainult need muutujad, mis vastavad maskile. Toetatakse*ja?. Näidis:"Data*, Figure?". Vaikimisi*.MaxLength— Muutmise maksimaalne pikkus. Kui muutuja seerumine on pikem, jäetakse see tähelepanuta. Seadke väärtuseks 0, et lubada muutujate mistahes pikkust. Vaikimisi$$$MaxStringLength.Nimi— Konteksti nimi (valikuline).Kirjeldus— Konteksti kirjeldus (valikuline).
Tagastab Ens.StringResponse jot Id salvestatud konteksti. Testimisprotsessi ajal vaadake aktiivsuseid Salvesta kontekst.
Vastav päring isc.py.msg.RestoreRequest laeb konteksti InterSystems IRIS-elt Pythonisse:
KontekstiId— konteksti identifikaator.Kustuta— puhasta konteksti enne taastamist.
Jupyter Notebook
— avatud lähtekoodiga veebirakendus, mis võimaldab luua kõvakettakujulisi faile, mis sisaldavad koodi, visualiseerimist ja teksti ning neid avaldada. Python Gateway võimaldab vaadata ja redigeerida BPL-protsesse Jupyter Notebooki vormis. Pange tähele, et hetkel kasutatakse tavalist Python 3 executor'i.
See laiend arvab, et annotatsioonid sisaldavad Python'i koodi ja kasutavad tegevuste nimesid eelpealkirjadena. Nüüd on võimalik arendada PythonGateway äriprotsesse Jupyter Notebookis. Siin on, mida on võimalik:
- Luua uusi äriprotsesse
- Kustutada äriprotsesse
- Luua uusi tegevusi
- Muuta tegevusi
- Kustutada tegevusi
Siin . Ja mõned ekraanipildid:
Protsesside sirvija

Protsessi redaktor

Paigaldamine
- Vajate InterSystems IRIS 2019.2+.
- Installige PythonGateway v0.8+ (vajalik ainult
isc.py.util.Jupyter,isc.py.util.JupyterCheckpointsjaisc.py.ens.ProcessUtils). - Uuendage ObjectScript'i koodi hoidlast.
- Käivitage
do ##class(isc.py.util.Jupyter).Install()ja järgige juhiseid.
.
Järeldused
MLToolkit on tööriistade komplekt, mille eesmärk on liita mudelid ja tehingute keskkond, et loodud mudeleid saaks hõlpsasti kasutada otse teie äriprotsessides. Python Gateway on osa MLToolkit'ist ja tagab integreerimise Python'i keelega, võimaldades orkestreerida kõiki masinõppe algoritme, mis on loodud Python'is (paljude andeteadlaste põhiline keskkond), kasutades arvukalt valmis teeke kiireks muudetavate ja automatiseeritud analüüsivõime AI/ML lahenduste loomiseks InterSystems IRIS platvormil.
Viidatud lingid
MLToolkit
MLToolkit'i kasutajate grupp on privaatne GitHubi hoidla, mis on loodud osana InterSystems'i ettevõtte GitHubi organisatsioonist. See on suunatud välistele kasutajatele, kes installivad, uurivad või juba kasutavad MLToolkit komponente, sealhulgas Python Gateway'd. Grupis on saadaval mitmeid rakendatud juhtumeid (koos lähtekoodi ja testandmetega) turunduse, tootmise, meditsiini ja paljude teiste valdkondade alal. Et liituda ML Toolkit'i kasutajate grupiga, palun saatke lühike meil aadressile: ja märkige oma kirjas järgmised andmed:
- GitHubi kasutajanimi
- Organisatsioon (koht, kus töötate või õpite)
- Amet (teie tegelik amet teie organisatsioonis, või "Üliõpilane", või "Iseseisev").
- Riik
Neile, kes on artikli läbi lugenud ja huvitatud InterSystems IRIS'i võimalustest kunstliku intellekti ja masinõppe mehhanismide arendamiseks või majutamiseks, pakume võimalust arutada teie ettevõttele huvi pakkuvaid stsenaariume. Oleme valmis analüüsima teie ettevõtte vajadusi ja ühiselt määrama tegevuskava; meie AI/ML ekspertgrupi kontaktmeiliaadress on .
Allikas: habr.com
