InterSystems IRIS дахь Python Gateway

Энэ нийтлэл нь InterSystems IRIS мэдээллийн платформд зориулсан нээлттэй эхийн олон нийтийн төсөл болох Python Gateway-ийн тухай юм. Энэхүү төсөл нь Python-д бүтээгдсэн аливаа машин сургалтын алгоритмуудыг (олон өгөгдөл судлаачдын үндсэн орчин) зохион байгуулах, олон тооны бэлэн номын сангуудыг ашиглан InterSystems IRIS платформ дээр дасан зохицох чадвартай, робот аналитик AI / ML шийдлүүдийг хурдан бүтээх боломжийг олгоно. Энэ нийтлэлд би InterSystems IRIS нь Python-д процессуудыг хэрхэн зохицуулж, хоёр талын өгөгдлийг үр дүнтэйгээр дамжуулж, ухаалаг бизнесийн үйл явцыг бий болгож болохыг харуулах болно.

Төлөвлөгөө

  1. Танилцуулга
  2. Багаж хэрэгсэл.
  3. Суурилуулалт
  4. API.
  5. Харилцан ажиллах чадвар.
  6. Бархасбадь гаригийн дэвтэр.
  7. Дүгнэлт.
  8. Холбоосууд.
  9. MLToolkit.

Танилцуулга

Python бол хөгжүүлэгчийн бүтээмж, код унших чадварыг сайжруулахад чиглэсэн өндөр түвшний, ерөнхий зориулалттай програмчлалын хэл юм. Энэ цуврал нийтлэлд би Python-ийг InterSystems IRIS платформ дээр ашиглах боломжуудын талаар хэлэлцэх бөгөөд энэ өгүүллийн гол зорилго нь Python хэлийг машин сургалтын загвар үүсгэх, ажиллуулах хэл болгон ашиглах явдал юм.

Машины сургалт (ML) нь хиймэл оюун ухааны аргуудын анги бөгөөд онцлог шинж чанар нь асуудлыг шууд шийдвэрлэх биш, ижил төстэй олон асуудлыг шийдвэрлэх явцад суралцах явдал юм.

Машин сургалтын алгоритмууд болон загварууд улам бүр түгээмэл болж байна. Үүнд олон шалтгаан бий, гэхдээ энэ бүхэн хүртээмжтэй байдал, энгийн байдал, практик үр дүнд хүрэхэд хүргэдэг. Кластер хийх эсвэл мэдрэлийн сүлжээг загварчлах нь шинэ технологи мөн үү?

Мэдээж үгүй, гэхдээ өнөө үед нэг загвар ажиллуулахын тулд хэдэн зуун мянган мөр код бичих шаардлагагүй болж, загвар бүтээх, ашиглах зардал улам бүр багассаар байна.

Хэрэгсэлүүд хөгжиж байна - бидэнд GUI-төвт суурилсан AI/ML хэрэгслүүд бүрэн байхгүй ч BI (код бичихээс эхлээд хүрээ болон GUI-төвт тохируулж болох шийдлүүд) зэрэг мэдээллийн системүүдийн бусад олон ангиллын талаар олж харсан ахиц дэвшил нь юм. AI/ML бий болгох хэрэгсэлд мөн ажиглагдсан. Бид код бичих үе шатыг аль хэдийн давсан бөгөөд өнөөдөр бид загвар бүтээх, сургахдаа фреймворк ашиглаж байна.

Урьдчилан бэлтгэгдсэн загварыг түгээх чадвар гэх мэт бусад сайжруулалтууд, тухайлбал эцсийн хэрэглэгч зөвхөн өөрсдийн тусгай өгөгдөл дээр загвараа сургаж дуусгах шаардлагатай болсон нь машин сургалтыг эхлүүлэхэд хялбар болгодог. Эдгээр дэвшил нь мэргэжлийн болон ерөнхийдөө компаниудын хувьд машин сурахад илүү хялбар болгодог.

Нөгөөтэйгүүр, бид улам их мэдээлэл цуглуулж байна. InterSystems IRIS гэх мэт нэгдсэн мэдээллийн платформын тусламжтайгаар эдгээр бүх мэдээллийг шууд бэлтгэж, машин сургалтын загварт оруулах болгон ашиглах боломжтой.

Клоуд руу шилжсэнээр AI/ML төслүүдийг эхлүүлэх нь урьд өмнөхөөсөө илүү хялбар болж байна. Бид өөрт хэрэгтэй нөөцөө л хэрэглэж чадна. Түүнчлэн, үүлэн платформуудын санал болгож буй параллелчлалын ачаар бид зарцуулсан цагийг хэмнэж чадна.

Гэхдээ үр дүнгийн талаар юу хэлэх вэ? Эндээс л бүх зүйл илүү төвөгтэй болдог. Загвар бүтээх олон хэрэгсэл байдаг бөгөөд би үүнийг дараа нь хэлэлцэх болно. Сайн загвар бүтээх нь амаргүй, гэхдээ дараа нь яах вэ? Бизнесийн загварыг ашигласнаар ашиг олох нь бас чухал биш ажил юм. Асуудлын үндэс нь аналитик болон гүйлгээний ажлын ачаалал, өгөгдлийн загваруудыг салгах явдал юм. Загвар өмсөгчийг сургахдаа бид үүнийг ихэвчлэн түүхэн өгөгдөл дээр үндэслэн хийдэг. Гэхдээ бүтээгдсэн загвар нь гүйлгээний өгөгдөл боловсруулах газар юм. Луйврын гүйлгээг илрүүлэх хамгийн сайн загвар нь өдөрт нэг удаа ажиллуулбал ямар ашигтай вэ? Луйварчид мөнгөө аваад аль эрт явчихсан. Бид загвараа түүхэн өгөгдөл дээр сургах хэрэгтэй, гэхдээ бидний бизнесийн үйл явц загвараар хийсэн таамаглалд нийцүүлэн ажиллахын тулд бид үүнийг шинэ ирж буй өгөгдөл дээр бодит цаг хугацаанд ашиглах хэрэгтэй.

ML Toolkit нь яг л үүнийг хийх зорилготой хэрэгслүүдийн багц юм: загварууд болон гүйлгээний орчныг нэгтгэснээр бүтээгдсэн загваруудыг бизнесийн үйл явцад шууд ашиглах боломжтой болно. Python Gateway нь ML Toolkit-ийн нэг хэсэг бөгөөд Python хэлтэй нэгтгэх боломжийг олгодог (ML Toolkit-ийн нэг хэсэг болох R Gateway нь R хэлтэй нэгдмэл байдлыг хангадагтай адил).

Хэрэгсэл

Үргэлжлүүлэхийн өмнө би бидний дараа ашиглах Python-ийн цөөн хэдэн хэрэгсэл, сангуудын талаар тайлбарлахыг хүсч байна.

технологи

  • Python бол тайлбарласан, өндөр түвшний, ерөнхий зориулалттай програмчлалын хэл юм. Энэ хэлний гол давуу тал нь математик, ML, AI номын сангаас бүрдсэн том номын сан юм. ObjectScript-ийн нэгэн адил энэ нь объект хандалтат хэл боловч бүх зүйл статик бус динамикаар тодорхойлогддог. Мөн бүх зүйл объект юм. Хожмын нийтлэлүүд нь тухайн хэлийг сайн мэддэг гэж үздэг. Хэрэв та сурч эхлэхийг хүсч байвал би үүнийг эхлүүлэхийг зөвлөж байна баримт бичиг.
  • Бидний дараагийн дасгалуудын хувьд тохируулна уу Python 3.6.7 64 бит.
  • IDE: Би ашигладаг PyCharm, гэхдээ ерөнхийдөө тэд много. Хэрэв та Atelier ашигладаг бол Python хөгжүүлэгчдэд зориулсан Eclipse залгаас байдаг. Хэрэв та VS код ашиглаж байгаа бол Python-д зориулсан өргөтгөл байдаг.
  • Тэмдэглэлийн дэвтэр: IDE-ийн оронд та онлайн дэвтэрт скрипт бичиж, хуваалцаж болно. Тэдний хамгийн алдартай нь Жуптер.

Номын сангууд

Машин сургалтын номын сангуудын (бүрэн бус) жагсаалт энд байна:

  • Номпи - нарийн тооцоолол хийх үндсэн багц.
  • Пандас - өндөр гүйцэтгэлтэй өгөгдлийн бүтэц, өгөгдлийн шинжилгээний хэрэгслүүд.
  • Матплотлиб - график үүсгэх.
  • Далайн төрсөн — matplotlib дээр суурилсан өгөгдлийн дүрслэл.
  • Склерн - машин сургалтын аргууд.
  • XGBoost — градиентийг нэмэгдүүлэх арга зүйн хүрээнд машин сургалтын алгоритмууд.
  • Гэнсим - NLP.
  • Керас - мэдрэлийн сүлжээ.
  • Тензор урсгал - машин сургалтын загварыг бий болгох платформ.
  • ПиТорч нь Python дээр төвлөрсөн машин сургалтын загваруудыг бий болгох платформ юм.
  • Нёка - Төрөл бүрийн загвараас PMML.

AI/ML технологи нь бизнесийг илүү үр ашигтай, дасан зохицох чадвартай болгодог. Түүнээс гадна өнөөдөр эдгээр технологийг боловсруулж, хэрэгжүүлэхэд хялбар болж байна. AI/ML технологи болон тэдгээр нь танай байгууллагын өсөлтөд хэрхэн тусалж болох талаар суралцаж эхлээрэй.

тохиргоо

Python гарцыг суулгах, ашиглах хэд хэдэн арга байдаг:

  • Үйлдлийн систем
    • Windows
    • Linux
    • Mac
  • Docker
    • DockerHub-ийн зургийг ашиглана уу
    • Өөрийнхөө дүр төрхийг бий болго

Суулгах аргаас үл хамааран танд эх код хэрэгтэй болно. Кодыг татаж авах цорын ганц газар гаргах хуудас. Энэ нь туршигдсан тогтвортой хувилбаруудыг агуулдаг, зүгээр л хамгийн сүүлийнхийг нь аваарай. Одоогоор 0.8 байгаа ч цаг хугацаа өнгөрөхөд шинээр гарч ирэх болно. Хадгалах газрыг хуулбарлах/татаж авах хэрэггүй, хамгийн сүүлийн хувилбарыг татаж аваарай.

Үйлдлийн систем

Хэрэв та үйлдлийн систем дээр Python Gateway суулгаж байгаа бол эхлээд (үйлдлийн системээс үл хамааран) Python-г суулгах хэрэгтэй. Үүний тулд:

  1. Python 3.6.7 64 бит суулгана уу. Python-ийг анхдагч лавлахад суулгахыг зөвлөж байна.
  2. Модулийг суулгана уу dill: pip install dill.
  3. ObjectScript кодыг татаж авах (жишээ нь. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) бүтээгдэхүүнтэй аль ч хэсэгт. Хэрэв та одоо байгаа бүсийг бүтээгдэхүүнийг дэмжихийг хүсч байвал дараахыг ажиллуулна уу: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Газар тайлбар DLL/SO/DYLIB хавтас руу bin таны InterSystems IRIS жишээ. Номын сангийн файл буцаж ирсэн замд байх ёстой write ##class(isc.py.Callout).GetLib().

Windows

  1. Орчны хувьсагч байгаа эсэхийг шалгаарай PYTHONHOME Python 3.6.7-г зааж байна.
  2. Системийн орчны хувьсагч байгаа эсэхийг шалгаарай PATH хувьсагчийг агуулдаг PYTHONHOME (эсвэл түүний зааж буй лавлах).

Линукс (Debian/Ubuntu)

  1. Орчны хувьсагч байгаа эсэхийг шалгана уу PATH агуулж байна /usr/lib и /usr/lib/x86_64-linux-gnu. Файл ашиглах /etc/environment орчны хувьсагчдыг тохируулах.
  2. Алдаа гарсан тохиолдолд undefined symbol: _Py_TrueStruct тохиргоог тохируулна уу PythonLib. бас дотор Readme Асуудлыг олж засварлах хэсэг байдаг.

Mac

  1. Одоогоор зөвхөн Python 3.6.7-г дэмждэг python.org. Хувьсагчийг шалгана уу PATH.

Хэрэв та орчны хувьсагчдыг өөрчилсөн бол InterSystems бүтээгдэхүүнээ дахин эхлүүлнэ үү.

Docker

Савыг ашиглах нь хэд хэдэн давуу талтай:

  • Зөөврийн чадвар
  • Үр нөлөө
  • Тусгаарлалтын
  • Хөнгөн байдал
  • Өөрчлөгдөхгүй байдал

Үүнийг шалгаарай цуврал нийтлэлүүд Docker-ийг InterSystems бүтээгдэхүүнтэй ашиглах талаар дэлгэрэнгүй мэдээллийг авна уу.

Python Gateway-ийн бүх бүтээц нь одоогоор контейнер дээр суурилсан байна 2019.4.

Бэлэн зураг

Ажиллуулах: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestInterSystems IRIS Community Edition-тэй Python Gateway-г татаж аваад ажиллуулах. Тэгээд л болоо.

Өөрийнхөө дүр төрхийг бий болго

Докерийн дүрсийг бүтээхийн тулд репозиторын үндсэн хэсэгт ажиллуулна уу: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Анхдагч байдлаар, зураг нь зураг дээр тулгуурладаг store/intersystems/iris-community:2019.4.0.383.0, гэхдээ та хувьсагчийг тохируулснаар үүнийг өөрчилж болно IMAGE.
InterSystems IRIS-с бүтээхийн тулд: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest ".

Үүний дараа та docker дүрсийг ажиллуулж болно:

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

Хэрэв та InterSystems IRIS Community Edition дээр суурилсан зураг ашиглаж байгаа бол түлхүүрийг орхиж болно.

Сэтгэгдэл

  • Туршилтын үйл явц 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 хоосон, шалгах Readme - Алдааг олж засварлах хэсэг.

API

Python Gateway суулгасан бөгөөд та үүнийг ажиллаж байгаа эсэхийг баталгаажууллаа. Үүнийг ашиглаж эхлэх цаг боллоо!
Python-ийн үндсэн интерфейс нь isc.py.Main. Энэ нь дараах бүлгийн аргуудыг санал болгодог (бүгд буцах %Status):

  • Кодын гүйцэтгэл
  • Мэдээлэл дамжуулах
  • Охин компани

Кодын гүйцэтгэл

Эдгээр аргууд нь танд дурын Python кодыг ажиллуулах боломжийг олгодог.

SimpleString

SimpleString - Энэ бол үндсэн арга юм. Үүнд 4 нэмэлт аргумент шаардлагатай:

  • code — гүйцэтгэх кодын мөр. Мөр тэжээлийн тэмдэгт: $c(10).
  • returnVariable — буцаах хувьсагчийн нэр.
  • serialization - хэрхэн цуврал болгох returnVariable. 0 - мөр (анхдагч), 1 - давталт.
  • result — Утга бичигдсэн хувьсагчийн ByRef лавлагаа returnVariable.

Дээр бид хийсэн:

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

Энэ жишээнд бид Python хувьсагчийг оноож өгдөг x утга Hello мөн Python хувьсагчийн утгыг буцаахыг хүсч байна x ObjectScript хувьсагч руу var.

ExecuteCode

ExecuteCode нь илүү аюулгүй бөгөөд хязгаарлалт багатай хувилбар юм SimpleString.
InterSystems IRIS платформ дахь мөрүүд нь 3 тэмдэгтээр хязгаарлагддаг бөгөөд хэрэв та урт кодыг ажиллуулахыг хүсвэл threads ашиглах хэрэгтэй.
Хоёр аргументыг хүлээн зөвшөөрч байна:

  • code — гүйцэтгэх Python кодын мөр эсвэл урсгал.
  • variable - (заавал биш) гүйцэтгэлийн үр дүнг онооно code энэ Python хувьсагч.

Хэрэглэх жишээ:

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

Энэ жишээнд бид 2-ыг 3-аар үржүүлээд үр дүнг Python хувьсагч руу бичнэ y.

Мэдээлэл дамжуулах

Python руу болон түүнээс өгөгдөл дамжуулах.

Python -> InterSystems IRIS

InterSystems IRIS дээр Python хувьсагчийн утгыг авах 4 арга байдаг бөгөөд энэ нь танд хэрэгтэй цуваачлалаас хамаарна.

  • String энгийн өгөгдлийн төрлүүд болон дибаг хийхэд зориулагдсан.
  • Repr энгийн объектуудыг хадгалах, дибаг хийх зориулалттай.
  • JSON InterSystems IRIS тал дээр өгөгдөл удирдахад хялбар.
  • Pickle объектуудыг хадгалах.

Эдгээр аргууд нь Python-оос хувьсагчдыг мөр эсвэл урсгал хэлбэрээр авах боломжийг олгодог.

  • GetVariable(variable, serialization, .stream, useString) - авах serialization хувьсагч variable в streamБайна. Хэрэв useString нь 1 бөгөөд цувааг стринг дээр байрлуулсны дараа урсгал биш мөрийг буцаана.
  • GetVariableJson(variable, .stream, useString) — хувьсагчийн JSON цуваа авах.
  • GetVariablePickle(variable, .stream, useString, useDill) -хувьсагчийн Pickle (эсвэл Dill) цувааг авах.

Хувьсагчаа авахыг хичээцгээе y.

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

InterSystems IRIS -> Python

InterSystems IRIS-ээс Python руу өгөгдөл ачаалж байна.

  • ExecuteQuery(query, variable, type, namespace) - өгөгдлийн багц үүсгэдэг (pandas dataframe буюу list) sql асуулгаас Python хувьсагч болгон тохируулна variable. Гялгар уут isc.py тухайн газарт бэлэн байх ёстой namespace - хүсэлтийг тэнд гүйцэтгэх болно.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - дэлхийн өгөгдлийг ачаална global дэд тэмдэгтээс start нь end Python дээр төрлийн хувьсагч болгон type: list, эсвэл панда dataframe. Нэмэлт аргументуудын тайлбар mask болон labels ангийн баримт бичиг, хадгалах санд байдаг Өгөгдөл дамжуулах баримт бичиг.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - ангийн өгөгдлийг ачаална class ID-аас start нь end Python дээр төрлийн хувьсагч болгон type: list, эсвэл панда dataframe. properties — өгөгдлийн багцад ачаалах шаардлагатай ангийн шинж чанаруудын жагсаалт (таслалаар тусгаарлагдсан). Маскийг дэмждэг * и ?. Өгөгдмөл - * (бүх өмч). Өмч %%CLASSNAME үл тоомсорлосон.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - хүснэгтийн өгөгдлийг ачаална table ID-аас start нь end Python дээр.

ExecuteQuery — универсал (ямар ч зөв SQL асуулга Python руу шилжих болно). Гэсэн хэдий ч, ExecuteGlobal болон түүний боодол ExecuteClass и ExecuteTable хэд хэдэн хязгаарлалттай ажиллах. Тэд хамаагүй хурдан (ODBC драйвераас 3-5 дахин, 20 дахин хурдан). ExecuteQuery). Дэлгэрэнгүй мэдээллийг эндээс авна уу Өгөгдөл дамжуулах баримт бичиг.
Эдгээр бүх аргууд нь аль ч газраас өгөгдөл дамжуулахыг дэмждэг. Гялгар уут isc.py зорилтот бүсэд бэлэн байх ёстой.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - аливаа зөв SQL асуулгын үр дүнг Python руу шилжүүлэх. Энэ бол өгөгдөл дамжуулах хамгийн удаан арга юм. Хэрэв хэрэглэвэл ExecuteGlobal мөн түүний боодол байхгүй байна.

Аргумент:

  • query - sql асуулга.
  • variable — өгөгдөл бичигдсэн Python хувьсагчийн нэр.
  • type - list эсвэл Панда dataframe.
  • namespace - хүсэлтийг гүйцэтгэх газар.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - Python хэл дээр глобалыг давах.

Аргумент:

  • global - ямар ч дэлхийн нэр ^
  • variable — өгөгдөл бичигдсэн Python хувьсагчийн нэр.
  • type - list эсвэл Панда dataframe.
  • start - дэлхийн анхны дэд тэмдэг. Заавал %Integer.
  • end - дэлхийн хамгийн сүүлийн дэд тэмдэг. Заавал %Integer.
  • mask - дэлхийн үнэ цэнийн маск. Маск нь дэлхийн талбаруудын тооноос богино байж болно (энэ тохиолдолд төгсгөлд байгаа талбаруудыг алгасах болно). Маскийг хэрхэн форматлах вэ:
    • + утгыг байгаагаар нь дамжуулна.
    • - утгыг алгасах.
    • b — Булийн төрөл (0 - False, бусад бүх зүйл - True).
    • d — Огноо ($horolog-аас, Windows дээр 1970 оноос, Линукс дээр 1900 оноос).
    • t — Цаг ($хоролог, шөнө дундын дараах секунд).
    • m — Цагийн тэмдэг (ЖИЛ-САР-ӨДРИЙН ЦАГ:МИНУТ:SECOND мөр формат).
  • labels — % Баганын нэрсийн жагсаалт. Эхний элемент нь дэд тэмдгийн нэр юм.
  • namespace - хүсэлтийг гүйцэтгэх газар.

ExecuteClass

Боож өгнө ExecuteGlobal. Ангийн тодорхойлолт дээр үндэслэн дуудлага бэлтгэдэг ExecuteGlobal мөн түүнийг дууддаг.

ExecuteClass(class, variable, type, start, end, properties, namespace) - Python дээр ангийн өгөгдлийг дамжуулах.

Аргумент:

  • class - ангийн нэр
  • variable — өгөгдөл бичигдсэн Python хувьсагчийн нэр.
  • type - list эсвэл Панда dataframe.
  • start - эхлэх ID.
  • end - эцсийн Id
  • properties — өгөгдлийн багцад ачаалах шаардлагатай ангийн шинж чанаруудын жагсаалт (таслалаар тусгаарлагдсан). Маскийг дэмждэг * и ?. Өгөгдмөл - * (бүх өмч). Өмч %%CLASSNAME үл тоомсорлосон.
  • namespace - хүсэлтийг гүйцэтгэх газар.

Төрөл шинж чанараас бусад бүх шинж чанаруудыг дамжуулдаг %Date, %Time, %Boolean и %TimeStamp - тэдгээр нь тохирох Python анги руу хөрвүүлэгддэг.

Гүйцэтгэх хүснэгт

Боож өгнө ExecuteClass. Хүснэгтийн нэрийг ангийн нэр болон дуудлага руу хөрвүүлнэ ExecuteClass. Гарын үсэг:

ExecuteTable(table, variable, type, start, end, properties, namespace) - хүснэгтийн өгөгдлийг Python руу дамжуулах.

Аргумент:

  • table - хүснэгтийн нэр.
    Бусад бүх аргументуудыг байгаагаар дамжуулна ExecuteClass.

Тэмдэглэл

  • ExecuteGlobal, ExecuteClass и ExecuteTable адилхан хурдан ажиллана.
  • ExecuteGlobal -аас 20 дахин хурдан ExecuteQuery том өгөгдлийн багц дээр (дамжуулах хугацаа >0.01 секунд).
  • ExecuteGlobal, ExecuteClass и ExecuteTable Энэ бүтэцтэй глобалууд дээр ажиллах: ^global(key) = $lb(prop1, prop2, ..., propN) хаана key - бүхэл тоо.
  • Хэрэгтэй ExecuteGlobal, ExecuteClass и ExecuteTable дэмжигдсэн утгын хүрээ %Date хүрээтэй тохирч байна mktime үйлдлийн системээс хамаарна (цонх: 1970-01-01, линукс 1900-01-01, MAC). Ашиглах %TimeStampучир нь энэ хүрээнээс гадуур өгөгдөл дамжуулах эсвэл pandas dataframe ашиглах Энэ бол зөвхөн жагсаалтын хязгаарлалт юм.
  • Хэрэгтэй ExecuteGlobal, ExecuteClass и ExecuteTable өгөгдлийн эх сурвалж (дэлхий, анги эсвэл хүснэгт) болон хувьсагчаас бусад бүх аргументууд нь сонголттой.

жишээ

Туршилтын анги isc.py.test.Person өгөгдөл дамжуулах бүх сонголтыг харуулсан аргыг агуулсан:

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)

Аргыг дуудна уу do ##class(isc.py.test.Person).Test() өгөгдөл дамжуулах бүх аргууд хэрхэн ажилладагийг харах.

Туслах аргууд

  • GetVariableInfo(variable, serialization, .defined, .type, .length) — хувьсагчийн тухай мэдээлэл авах: энэ нь тодорхойлогдсон эсэх, түүний ангилал, цуваачлалын урт.
  • GetVariableDefined(variable, .defined) - хувьсагч тодорхойлогдсон эсэх.
  • GetVariableType(variable, .type) - хувьсагчийн ангиллыг авна.
  • GetStatus() - Python тал дээрх хамгийн сүүлийн үл хамаарах зүйлийг авч устгана уу.
  • GetModuleInfo(module, .imported, .alias) — модулийн хувьсагч болон импортын статусыг авах.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - функцийн талаар мэдээлэл авах.

Харилцан ажиллах чадвар

Та Python Gateway-г терминалаас хэрхэн дуудахыг сурсан, одоо үүнийг үйлдвэрлэлд ашиглаж эхэлцгээе. Энэ горимд Python-той харилцах үндэс нь юм isc.py.ens.Operation. Энэ нь бидэнд олгодог:

  • Python дээр код ажиллуулна уу
  • Python контекстийг хадгалах/сэргээх
  • Python-оос өгөгдөл ачаалах, хүлээн авах

Үндсэндээ Python-ийн үйл ажиллагаа нь боодол юм isc.py.Main. Үйл ажиллагаа isc.py.ens.Operation InterSystems IRIS бүтээгдэхүүнээс Python процесстой харилцах боломжийг олгодог. Таван асуултыг дэмждэг:

  • isc.py.msg.ExecutionRequest Python кодыг ажиллуулах. Буцах isc.py.msg.ExecutionResponse гүйцэтгэлийн үр дүн болон хүссэн хувьсагчдын утгуудын хамт.
  • isc.py.msg.StreamExecutionRequest Python кодыг ажиллуулах. Буцах isc.py.msg.StreamExecutionResponse гүйцэтгэлийн үр дүн болон хүссэн хувьсагчдын утгууд. Аналог isc.py.msg.ExecutionRequest, гэхдээ мөрийн оронд урсгалыг хүлээн авч буцаана.
  • isc.py.msg.QueryRequest SQL хайлтыг гүйцэтгэх үр дүнг дамжуулах. Буцах Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest глобал/ангилал/хүснэгт өгөгдөл дамжуулахад зориулагдсан. Буцах Ens.Response.
  • isc.py.msg.SaveRequest Python контекстийг хадгалах. Буцах Ens.StringResponse контекст ID-тай.
  • isc.py.msg.RestoreRequest Python контекстийг сэргээх.

    Цаашилбал, isc.py.ens.Operation хоёр тохиргоотой:

    • Initializer — интерфэйсийг хэрэгжүүлэх анги сонгох isc.py.init.Abstract. Үүнийг функц, модуль, анги гэх мэт ачаалахад ашиглаж болно. Энэ нь процесс эхлэхэд нэг удаа хийгддэг.
    • PythonLib - (Зөвхөн Линукс) ачаалах үед алдаа гарсан тохиолдолд утгыг нь тохируулна уу libpython3.6m.so эсвэл тэр ч байтугай Python номын сан руу бүрэн замд.

Бизнесийн үйл явцыг бий болгох

Бизнесийн үйл явцыг хөгжүүлэхэд туслах хоёр анги байдаг:

  • isc.py.ens.ProcessUtils хувьсах орлуулалт бүхий үйл ажиллагаануудаас тайлбар авах боломжийг танд олгоно.
  • isc.py.util.BPEmulator Python ашиглан бизнесийн үйл явцыг шалгахад хялбар болгодог. Энэ нь одоогийн үйл явцад бизнесийн үйл явцыг (Python хэсгүүд) гүйцэтгэж чадна.

Хувьсах орлуулалт

Бизнесийн бүх үйл явц нь удамшсан isc.py.ens.ProcessUtils, аргыг хэрэглэж болно GetAnnotation(name) үйл ажиллагааны тэмдэглэгээний утгыг нэрээр нь авах. Үйл ажиллагааны тэмдэглэгээ нь Python руу шилжихээс өмнө InterSystems IRIS тал дээр тооцоолох хувьсагчдыг агуулж болно. Хувьсагчийг орлуулах синтакс энд байна:

  • ${class:method:arg1:...:argN} - аргын дуудлага
  • #{expr} — ObjectScript хэл дээр код гүйцэтгэх.

Туршилтын бизнесийн үйл явцын жишээг үзэх боломжтой isc.py.test.Processжишээлбэл, үйл ажиллагаанд Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Энэ жишээнд:

  • #{process.WorkDirectory} объектын WorkDirectory шинж чанарыг буцаана process, энэ нь ангийн жишээ юм isc.py.test.Process тэдгээр. одоогийн бизнесийн үйл явц.
  • ${%PopulateUtils:Integer:1:100} аргыг дууддаг Integer анги %PopulateUtils, дамжуулсан аргументууд 1 и 100, муж дахь санамсаргүй бүхэл тоог буцаана 1...100.

Бизнесийн үйл явцыг турших

Туршилтын бүтээгдэхүүн болон туршилтын бизнесийн үйл явц нь Python Gateway-ийн нэг хэсэг болгон анхдагчаар байдаг. Тэдгээрийг ашиглахын тулд:

  1. OS терминал дээр дараахыг ажиллуулна уу: pip install pandas matplotlib seaborn.
  2. InterSystems IRIS терминал дээр дараахыг ажиллуулна уу: do ##class(isc.py.test.CannibalizationData).Import() туршилтын өгөгдлийг бөглөх.
  3. Бүтээгдэхүүн гаргах isc.py.test.Production.
  4. Хүсэлтийн төрөл Ens.Request в isc.py.test.Process.

Энэ бүхэн хэрхэн ажилладагийг хамтдаа харцгаая. Нээлттэй isc.py.test.Process BPL редактор дээр:

InterSystems IRIS дахь Python Gateway

Кодын гүйцэтгэл

Хамгийн чухал сорилт бол Python кодыг ажиллуулах явдал юм.

InterSystems IRIS дахь Python Gateway

Асуулга ашигласан isc.py.msg.ExecutionRequest, түүний шинж чанарууд энд байна:

  • Code - Python код.
  • SeparateLines — кодыг гүйцэтгэхийн тулд мөр болгон хуваах эсэх. $c(10) (n) нь мөрүүдийг салгахад хэрэглэгддэг. Зурвасыг бүхэлд нь нэг дор боловсруулахыг зөвлөдөггүй, энэ функц нь зөвхөн боловсруулахад зориулагдсан гэдгийг анхаарна уу def ба ижил төстэй олон мөрт илэрхийллүүд. Өгөгдмөл 0.
  • Variables - хариуд нэмэгдэх хувьсагчийн таслалаар тусгаарлагдсан жагсаалт.
  • Serialization - Бидний буцаахыг хүсч буй хувьсагчдыг хэрхэн цуваа болгох вэ. Сонголтууд: Str, Repr, JSON, Pickle и Dill, анхдагч Str.

Манай тохиолдолд бид зөвхөн өмчийг л тогтоодог Code, тиймээс бусад бүх шинж чанарууд нь анхдагч утгуудыг ашигладаг. Бид үүнийг дуудаж тохируулсан process.GetAnnotation("Import pandas"), энэ нь ажиллах үед хувьсагчийг орлуулсны дараа тайлбарыг буцаана. Эцсийн эцэст, код import pandas as pd Python руу шилжих болно. GetAnnotation Энэ нь олон мөрт Python скрипт авахад тустай байж болох ч код авах энэ аргад ямар ч хязгаарлалт байхгүй. Та үл хөдлөх хөрөнгийг тохируулж болно Code танд тохиромжтой ямар ч аргаар.

Хувьсагч авах

Ашиглах өөр нэг сонирхолтой сорилт isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

InterSystems IRIS дахь Python Gateway

Энэ нь Python тал дээр Корреляцийн матрицыг тооцоолж, хувьсагчийг гаргаж авдаг corrmat хүсэлтийн шинж чанарыг тохируулж JSON форматаар InterSystems IRIS руу буцна уу:

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

Бид үр дүнг Visual Trace дээр харж болно:

InterSystems IRIS дахь Python Gateway

Хэрэв бидэнд АД-д энэ утга хэрэгтэй бол бид үүнийг дараах байдлаар авч болно. callresponse.Variables.GetAt("corrmat").

Мэдээлэл дамжуулах

Дараа нь InterSystems IRIS-ээс Python руу өгөгдөл дамжуулах талаар ярилцъя; өгөгдөл дамжуулах бүх хүсэлт нь интерфейсийг хэрэгжүүлдэг. isc.py.msg.DataRequestдараах шинж чанаруудыг хангадаг:

  • Variable — өгөгдөл бичих Python хувьсагч.
  • Type - хувьсагчийн төрөл: dataframe (pandas dataframe) эсвэл list.
  • Namespace - бидний мэдээлэл хүлээн авдаг газар. Гялгар уут isc.py энэ хэсэгт бэлэн байх ёстой. Энэ нь бүтээгдэхүүний дэмжлэггүй бүс байж болно.

Энэхүү интерфейс дээр үндэслэн 4 ангиллын хүсэлтийг хэрэгжүүлдэг.

  • isc.py.msg.QueryRequest - өмчийг тохируулах Query SQL асуулга илгээх.
  • isc.py.msg.ClassRequest - өмчийг тохируулах Class ангийн өгөгдлийг дамжуулах.
  • isc.py.msg.TableRequest - өмчийг тогтоох Table хүснэгтийн өгөгдлийг дамжуулах.
  • isc.py.msg.GlobalRequest - өмчийг тогтоох Global дэлхийн өгөгдөл дамжуулахад зориулагдсан.

Туршилтын явцад үйл ажиллагааг харна уу RAWхаана isc.py.msg.QueryRequest үйлдлээр харуулсан.

InterSystems IRIS дахь Python Gateway

Python контекстийг хадгалах/сэргээх

Эцэст нь бид InterSystems IRIS-д Python контекстийг хадгалах боломжтой бөгөөд үүнийг хийхийн тулд бид илгээх болно. isc.py.msg.SaveRequest аргументуудтай:

  • Mask — Зөвхөн масктай тохирох хувьсагчдыг хадгална. Дэмжигдсэн * и ?Байна. Жишээ нь: "Data*, Figure?". Өгөгдмөл *.
  • MaxLength — Хадгалагдсан хувьсагчийн хамгийн их урт. Хэрэв хувьсагчийн цуваа урт бол түүнийг үл тооно. Ямар ч урттай хувьсагчийг авахын тулд 0 болгож тохируулна уу. Өгөгдмөл $$$MaxStringLength.
  • Name - Контекст нэр (заавал биш).
  • Description - Нөхцөл байдлын тайлбар (заавал биш).

Буцах Ens.StringResponse с Id хадгалсан контекст. Туршилтын явцад үйл ажиллагааг харна уу Save Context.

Холбогдох хүсэлт isc.py.msg.RestoreRequest InterSystems IRIS-ээс Python руу контекстийг ачаална:

  • ContextId - контекст танигч.
  • Clear - сэргээхийн өмнө контекстийг арилгах.

Jupyter тэмдэглэлийн дэвтэр

Jupyter тэмдэглэлийн дэвтэр код, дүрслэл, текст агуулсан дэвтэр үүсгэх, нийтлэх боломжийг олгодог нээлттэй эхийн вэб програм юм. Python Gateway нь BPL процессуудыг Jupyter Notebook хэлбэрээр харах, засах боломжийг олгодог. Энгийн Python 3 гүйцэтгэгч одоогоор ашиглагдаж байгааг анхаарна уу.

Энэхүү өргөтгөл нь тэмдэглэгээ нь Python кодыг агуулж байгаа бөгөөд үйл ажиллагааны нэрийг өмнөх гарчиг болгон ашигладаг гэж үздэг. Jupyter Notebook дээр PythonGateway бизнесийн үйл явцыг хөгжүүлэх боломжтой боллоо. Энд юу боломжтой вэ:

  • Бизнесийн шинэ үйл явцыг бий болгох
  • Бизнесийн үйл явцыг устгах
  • Шинэ үйл ажиллагаа үүсгэх
  • Үйл ажиллагааг өөрчлөх
  • Үйл ажиллагааг устгах

энд демо видео. Мөн цөөн хэдэн дэлгэцийн агшин:

Процесс судлаач

InterSystems IRIS дахь Python Gateway

Процесс редактор

InterSystems IRIS дахь Python Gateway

тохиргоо

  1. Танд InterSystems IRIS 2019.2+ хэрэгтэй болно.
  2. PythonGateway v0.8+ суулгах (зөвхөн шаардлагатай isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Репозитороос ObjectScript кодыг шинэчилнэ үү.
  4. Гүйцэтгэх do ##class(isc.py.util.Jupyter).Install() болон зааврыг дагана уу.

Баримт бичиг.

үр дүн нь

MLToolkit нь загвар болон гүйлгээний орчинг хослуулах зорилготой хэрэгслүүдийн багц бөгөөд бүтээгдсэн загваруудыг бизнесийн үйл явцад шууд ашиглах боломжтой болно. Python Gateway нь MLToolkit-ийн нэг хэсэг бөгөөд Python хэлтэй нэгтгэх боломжийг олгодог бөгөөд Python-д бүтээгдсэн аливаа машин сургалтын алгоритмуудыг (олон өгөгдөл судлаачдын үндсэн орчин) зохицуулах, олон тооны бэлэн номын сангуудыг ашиглан дасан зохицох чадвартай, робот аналитик хиймэл оюун ухаан / InterSystems платформ IRIS дээрх ML шийдлүүд.

лавлагаа

MLToolkit

MLToolkit хэрэглэгчийн бүлэг нь InterSystems корпорацийн GitHub байгууллагын нэг хэсэг болгон бүтээгдсэн хувийн GitHub репозитор юм. Энэ нь Python Gateway зэрэг MLToolkit бүрэлдэхүүн хэсгүүдийг суулгаж, суралцаж, ашиглаж байгаа гадны хэрэглэгчдэд зориулагдсан болно. Тус групп нь маркетинг, үйлдвэрлэл, анагаах ухаан болон бусад олон салбарт хэрэгжсэн хэд хэдэн хэрэг (эх код болон туршилтын өгөгдөлтэй) байдаг. ML Toolkit Хэрэглэгчийн бүлэгт элсэхийн тулд дараах хаягаар богино имэйл илгээнэ үү. [имэйлээр хамгаалагдсан] мөн захидалдаа дараах мэдээллийг оруулна уу.

  • GitHub хэрэглэгчийн нэр
  • Байгууллага (та ажилладаг эсвэл сурдаг)
  • Албан тушаал (таны байгууллага дахь "Оюутан" эсвэл "Бие даасан" гэсэн бодит байр суурь).
  • Улс

Өгүүллийг уншсан болон InterSystems IRIS-ийн хиймэл оюун ухаан, машин сургалтын хөдөлгүүрийг хөгжүүлэх, байршуулах платформ болох боломжийг сонирхож буй хүмүүст зориулж танай компанид сонирхолтой байж болох хувилбаруудын талаар ярилцахыг урьж байна. Бид танай компанийн хэрэгцээнд дүн шинжилгээ хийж, үйл ажиллагааны төлөвлөгөөгөө хамтран тодорхойлохдоо баяртай байх болно; Манай AI/ML шинжээч багийн холбоо барих имэйл хаяг – [имэйлээр хамгаалагдсан].

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх