บทความนี้เกี่ยวกับ Python Gateway ซึ่งเป็นโครงการชุมชนโอเพ่นซอร์สสำหรับแพลตฟอร์มข้อมูล InterSystems IRIS โปรเจกต์นี้ช่วยให้คุณจัดการอัลกอริทึมการเรียนรู้ของเครื่องที่สร้างขึ้นใน Python (สภาพแวดล้อมหลักสำหรับนักวิทยาศาสตร์ข้อมูลจำนวนมาก) ใช้ไลบรารีสำเร็จรูปจำนวนมากเพื่อสร้างโซลูชัน AI / ML เชิงวิเคราะห์แบบหุ่นยนต์ที่ปรับเปลี่ยนได้อย่างรวดเร็วบนแพลตฟอร์ม InterSystems IRIS ในบทความนี้ ฉันจะแสดงให้คุณเห็นว่า InterSystems IRIS สามารถจัดการกระบวนการของ Python ทำการถ่ายโอนข้อมูลแบบสองทางอย่างมีประสิทธิภาพ และสร้างกระบวนการทางธุรกิจที่ชาญฉลาดได้อย่างไร
แผนการ
- การแนะนำ
- เครื่องมือ
- การติดตั้ง
- API
- การทำงานร่วมกัน
- โน๊ตบุ๊ค Jupyter
- สรุปผลการวิจัย
- ลิงค์
- ม.ล.ทูลกิตต์.
การแนะนำ
Python เป็นภาษาโปรแกรมระดับสูงสำหรับวัตถุประสงค์ทั่วไป โดยมุ่งเน้นที่การปรับปรุงประสิทธิภาพการทำงานของนักพัฒนาและความสามารถในการอ่านโค้ด ในบทความชุดนี้ ผมจะพูดถึงความเป็นไปได้ของการใช้ภาษา Python บนแพลตฟอร์ม InterSystems IRIS ในขณะที่ประเด็นหลักของบทความนี้คือการใช้ Python เป็นภาษาสำหรับการสร้างและประยุกต์ใช้โมเดลการเรียนรู้ของเครื่อง
แมชชีนเลิร์นนิง (ML) เป็นคลาสของวิธีการทางปัญญาประดิษฐ์ซึ่งเป็นคุณลักษณะเฉพาะที่ไม่ใช่วิธีแก้ปัญหาโดยตรง แต่เป็นการเรียนรู้ในกระบวนการแก้ปัญหาที่คล้ายกันมากมาย
อัลกอริทึมและโมเดลการเรียนรู้ของเครื่องมีมากขึ้นเรื่อย ๆ มีเหตุผลมากมายสำหรับสิ่งนี้ แต่ทั้งหมดนี้ขึ้นอยู่กับการเข้าถึง ความเรียบง่าย และการบรรลุผลลัพธ์ที่ใช้งานได้จริง การทำคลัสเตอร์หรือโครงข่ายประสาทเทียมกำลังสร้างแบบจำลองเทคโนโลยีใหม่หรือไม่?
ไม่แน่นอน แต่ปัจจุบันนี้ไม่จำเป็นต้องเขียนโค้ดหลายแสนบรรทัดเพื่อรันโมเดลเดียว และต้นทุนในการสร้างและใช้งานโมเดลก็เล็กลงเรื่อยๆ
เครื่องมือกำลังพัฒนา - ในขณะที่เราไม่มีเครื่องมือ AI/ML ที่เน้น GUI อย่างสมบูรณ์ ความคืบหน้าที่เราได้เห็นในระบบข้อมูลประเภทอื่นๆ มากมาย เช่น BI (ตั้งแต่การเขียนโค้ดไปจนถึงการใช้เฟรมเวิร์กและโซลูชันที่กำหนดค่าได้ที่เน้น GUI) ก็มีให้เห็นเช่นกัน ในเครื่องมือสร้าง AI/ML เราได้ผ่านขั้นตอนของการเขียนโค้ดไปแล้ว และวันนี้เราใช้เฟรมเวิร์กสำหรับการสร้างและฝึกอบรมโมเดล
การปรับปรุงอื่นๆ เช่น ความสามารถในการเผยแพร่โมเดลที่ฝึกไว้ล่วงหน้าโดยที่ผู้ใช้ต้องเสร็จสิ้นการฝึกโมเดลด้วยข้อมูลเฉพาะของตน ทำให้เริ่มใช้แมชชีนเลิร์นนิงได้ง่ายขึ้น ความก้าวหน้าเหล่านี้ทำให้การเรียนรู้ของแมชชีนเลิร์นนิงง่ายขึ้นมาก ทั้งสำหรับมืออาชีพและสำหรับบริษัทโดยรวม
ในทางกลับกัน เรารวบรวมข้อมูลมากขึ้นเรื่อยๆ ด้วยแพลตฟอร์มข้อมูลที่รวมเป็นหนึ่ง เช่น InterSystems IRIS ข้อมูลทั้งหมดนี้สามารถจัดเตรียมและใช้เป็นอินพุตสำหรับโมเดลแมชชีนเลิร์นนิงได้ทันที
เมื่อเปลี่ยนไปใช้ระบบคลาวด์ การเปิดตัวโครงการ AI/ML จึงง่ายกว่าที่เคย เราสามารถใช้ทรัพยากรที่เราต้องการเท่านั้น ยิ่งไปกว่านั้น ต้องขอบคุณการขนานที่นำเสนอโดยแพลตฟอร์มคลาวด์ เราจึงสามารถประหยัดเวลาได้
แต่สิ่งที่เกี่ยวกับผลลัพธ์? นี่คือสิ่งที่ซับซ้อนมากขึ้น มีเครื่องมือมากมายสำหรับการสร้างแบบจำลอง ซึ่งฉันจะกล่าวถึงต่อไป การสร้างแบบจำลองที่ดีนั้นไม่ใช่เรื่องง่าย แต่จะทำอย่างไรต่อไป การหาประโยชน์จากการใช้แบบจำลองโดยธุรกิจก็เป็นงานที่ไม่สำคัญเช่นกัน ต้นตอของปัญหาคือการแยกภาระงานเชิงวิเคราะห์และเชิงธุรกรรมและตัวแบบข้อมูล เมื่อเราฝึกโมเดล เรามักจะฝึกโดยใช้ข้อมูลประวัติ แต่สถานที่สำหรับแบบจำลองที่สร้างขึ้นนั้นอยู่ในการประมวลผลข้อมูลธุรกรรม รูปแบบการตรวจจับธุรกรรมฉ้อฉลที่ดีที่สุดจะดีแค่ไหนหากเราเรียกใช้งานวันละครั้ง พวกสแกมเมอร์ได้ทิ้งเงินไปแล้ว เราจำเป็นต้องฝึกโมเดลจากข้อมูลในอดีต แต่เราต้องนำไปใช้แบบเรียลไทม์กับข้อมูลที่เข้ามาใหม่ด้วย เพื่อให้กระบวนการทางธุรกิจของเราสามารถดำเนินการตามการคาดการณ์ของโมเดล
ML Toolkit เป็นชุดเครื่องมือที่ทำหน้าที่ดังกล่าว: การนำโมเดลมารวมกันและสภาพแวดล้อมในการทำธุรกรรม เพื่อให้สามารถใช้โมเดลที่คุณสร้างได้โดยตรงในกระบวนการทางธุรกิจของคุณโดยตรง Python Gateway เป็นส่วนหนึ่งของ ML Toolkit และให้การรวมกับภาษา Python (คล้ายกับ R Gateway การเป็นส่วนหนึ่งของ ML Toolkit ให้การรวมกับภาษา R)
เครื่องมือ
ก่อนที่เราจะดำเนินการต่อ ฉันต้องการอธิบายเครื่องมือและไลบรารีของ Python สองสามรายการที่เราจะใช้ในภายหลัง
เทคโนโลยี
- Python เป็นภาษาโปรแกรมระดับสูงที่ตีความได้ทั่วไป ข้อได้เปรียบหลักของภาษานี้คือไลบรารีคณิตศาสตร์ ML และ AI ขนาดใหญ่ เช่นเดียวกับ ObjectScript เป็นภาษาเชิงวัตถุ แต่ทุกอย่างถูกกำหนดแบบไดนามิก ไม่ใช่แบบคงที่ ทุกอย่างยังเป็นวัตถุ บทความต่อมาถือว่าเป็นความคุ้นเคยกับภาษา หากคุณอยากเริ่มเรียนรู้ ผมแนะนำให้เริ่มจาก
เอกสาร . - สำหรับแบบฝึกหัดต่อไปของเรา ให้ตั้งค่า
ไพธอน 3.6.7 64 บิต . - ไอดี: ฉันใช้
PyCharm แต่โดยทั่วไปแล้วหลาย . หากคุณใช้ Atelier มีปลั๊กอิน Eclipse สำหรับนักพัฒนา Python หากคุณใช้ VS Code แสดงว่ามีส่วนขยายสำหรับ Python - สมุดบันทึก: แทนที่จะเป็น IDE คุณสามารถเขียนและแบ่งปันสคริปต์ของคุณในสมุดบันทึกออนไลน์ได้ ความนิยมมากที่สุดของพวกเขาคือ
ดาวพฤหัสบดี .
ห้องสมุด
นี่คือรายการ (บางส่วน) ของไลบรารีแมชชีนเลิร์นนิง:
นัมปี้ — แพ็คเกจพื้นฐานสำหรับการคำนวณที่แน่นอนนุ่น — โครงสร้างข้อมูลที่มีประสิทธิภาพสูงและเครื่องมือวิเคราะห์ข้อมูลMatplotlib - การสร้างแผนภูมิทะเล - การแสดงข้อมูลตาม matplotlibสเลิร์น — วิธีการเรียนรู้ของเครื่องXGBoost - อัลกอริทึมการเรียนรู้ของเครื่องภายในวิธีการส่งเสริมการไล่ระดับสีเกนซิม — เอ็นแอลพีKeras - เครือข่ายประสาทเทนเซอร์โฟลว์ เป็นแพลตฟอร์มสำหรับสร้างโมเดลแมชชีนเลิร์นนิงไพทอร์ช เป็นแพลตฟอร์มสำหรับสร้างโมเดลแมชชีนเลิร์นนิงที่เน้น Pythonนโยกา - PMML จากรุ่นต่างๆ
เทคโนโลยี AI/ML ทำให้ธุรกิจมีประสิทธิภาพและปรับเปลี่ยนได้มากขึ้น ยิ่งไปกว่านั้น ทุกวันนี้ เทคโนโลยีเหล่านี้พัฒนาและนำไปใช้ได้ง่ายขึ้น เริ่มเรียนรู้เกี่ยวกับเทคโนโลยี AI/ML และวิธีที่เทคโนโลยีเหล่านี้จะช่วยให้องค์กรของคุณเติบโตได้
การติดตั้ง
มีหลายวิธีในการติดตั้งและใช้ Python Gateway:
- ระบบปฏิบัติการ
- Windows
- ลินุกซ์
- Mac
- นักเทียบท่า
- ใช้ภาพจาก DockerHub
- สร้างภาพของคุณเอง
คุณต้องมีซอร์สโค้ดโดยไม่คำนึงถึงวิธีการติดตั้ง ที่เดียวที่จะดาวน์โหลดรหัสคือ
ระบบปฏิบัติการ
หากคุณกำลังติดตั้ง Python Gateway บนระบบปฏิบัติการ อันดับแรก (ไม่ว่าจะใช้ระบบปฏิบัติการใด) คุณจะต้องติดตั้ง Python สำหรับสิ่งนี้:
ติดตั้ง Python 3.6.7 64 บิต . ขอแนะนำให้ติดตั้ง Python ในไดเร็กทอรีเริ่มต้น- ติดตั้งโมดูล
dill
:pip install dill
. - ดาวน์โหลดโค้ด ObjectScript (เช่น
do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)
) ไปยังพื้นที่ใด ๆ ที่มีผลิตภัณฑ์ ในกรณีที่คุณต้องการพื้นที่ที่มีอยู่เพื่อรองรับการผลิต ให้รัน:write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1)
. - สถานที่
ข้อความเรียก DLL/SO/DYLIB ไปยังโฟลเดอร์bin
อินสแตนซ์ InterSystems IRIS ของคุณ ไฟล์ไลบรารีต้องอยู่ในเส้นทางที่ส่งคืนโดยwrite ##class(isc.py.Callout).GetLib()
.
Windows
- ตรวจสอบให้แน่ใจว่าตัวแปรสภาพแวดล้อมคือ
PYTHONHOME
ชี้ไปที่ Python 3.6.7 - ตรวจสอบให้แน่ใจว่าตัวแปรสภาพแวดล้อมของระบบคือ
PATH
มีตัวแปรPYTHONHOME
(หรือไดเร็กทอรีที่ชี้ไป)
ลินุกซ์ (เดเบียน/อูบุนตู)
- ตรวจสอบว่าตัวแปรสภาพแวดล้อมเป็น
PATH
มี/usr/lib
и/usr/lib/x86_64-linux-gnu
. ใช้ไฟล์/etc/environment
เพื่อตั้งค่าตัวแปรสภาพแวดล้อม - ในกรณีที่มีข้อผิดพลาด
undefined symbol: _Py_TrueStruct
ตั้งการตั้งค่าPythonLib
. เข้าไปด้วยReadme มีส่วนการแก้ไขปัญหา
Mac
- ขณะนี้รองรับเฉพาะ python 3.6.7 จาก
หลาม.org . ตรวจสอบตัวแปรPATH
.
หากคุณเปลี่ยนตัวแปรสภาพแวดล้อม ให้รีสตาร์ทผลิตภัณฑ์ InterSystems ของคุณ
นักเทียบท่า
การใช้คอนเทนเนอร์มีข้อดีหลายประการ:
- ความเบา
- ประสิทธิผล
- ฉนวนกันความร้อน
- ความสว่าง
- เปลี่ยนแปลงไม่ได้
ตรวจสอบสิ่งนี้
การสร้าง Python Gateway ทั้งหมดเป็นแบบคอนเทนเนอร์ 2019.4
.
ภาพที่เสร็จแล้ว
วิ่ง: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latest
เพื่อดาวน์โหลดและเรียกใช้ Python Gateway ด้วย InterSystems IRIS Community Edition นั่นคือทั้งหมด
สร้างภาพของคุณเอง
หากต้องการสร้างอิมเมจนักเทียบท่า ให้รันในรูทของที่เก็บ: 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 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
ว่างเปล่า ตรวจสอบ
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 อักขระ และหากคุณต้องการรันโค้ดที่ยาวขึ้น คุณต้องใช้สตรีม
ต้องใช้สองข้อโต้แย้ง:
code
— สตริงหรือสตรีมของโค้ด Python ที่จะดำเนินการvariable
- (ไม่บังคับ) กำหนดผลลัพธ์ของการดำเนินการcode
ตัวแปร Python นี้
แนะนำให้ใช้:
set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").
ในตัวอย่างนี้ เราคูณ 2 ด้วย 3 และเก็บผลลัพธ์ไว้ในตัวแปร Python y
.
การถ่ายโอนข้อมูล
ส่งข้อมูลไปยังและจาก Python
Python -> InterSystems IRIS
มี 4 วิธีในการรับค่าของตัวแปร Python ใน InterSystems IRIS ขึ้นอยู่กับซีเรียลไลเซชันที่คุณต้องการ:
String
สำหรับประเภทข้อมูลและการดีบักอย่างง่ายRepr
สำหรับการจัดเก็บออบเจกต์อย่างง่ายและการดีบักJSON
เพื่อการจัดการข้อมูลที่ง่ายในฝั่ง InterSystems IRISPickle
เพื่อบันทึกวัตถุ
เมธอดเหล่านี้ช่วยให้คุณรับตัวแปรจาก 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 -> ไพธอน
กำลังโหลดข้อมูลจาก InterSystems IRIS ไปยัง Python
ExecuteQuery(query, variable, type, namespace)
- สร้างชุดข้อมูล (pandasdataframe
หรือlist
) จากแบบสอบถาม sql และตั้งค่าเป็นตัวแปรหลาม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
จากไอดีstart
ไปยังend
ใน Python เป็นตัวแปรประเภทtype
:list
หรือหมีแพนด้าdataframe
.properties
— รายการ (คั่นด้วยเครื่องหมายจุลภาค) ของคุณสมบัติของคลาสที่จะโหลดลงในชุดข้อมูล รองรับหน้ากาก*
и?
. ค่าเริ่มต้น -*
(คุณสมบัติทั้งหมด). คุณสมบัติ%%CLASSNAME
ละเว้นExecuteTable(table, variable, type, start, end, properties, namespace)
- โหลดข้อมูลตารางtable
จากไอดีstart
ไปยังend
ในหลาม
ExecuteQuery
- สากล (แบบสอบถาม SQL ที่ถูกต้องจะถูกส่งผ่านไปยัง Python) อย่างไรก็ตาม, ExecuteGlobal
และผ้าคลุมของเขา ExecuteClass
и ExecuteTable
ทำงานกับข้อ จำกัด หลายประการ เร็วกว่ามาก (เร็วกว่าไดรเวอร์ ODBC 3-5 เท่าและเร็วกว่า 20 เท่า ExecuteQuery
). ข้อมูลเพิ่มเติมใน
วิธีการทั้งหมดนี้รองรับการถ่ายโอนข้อมูลจากพื้นที่ใด ๆ ถุงพลาสติก isc.py
จะต้องมีอยู่ในพื้นที่เป้าหมาย
ดำเนินการแบบสอบถาม
ExecuteQuery(request, variable, type, namespace)
- ส่งผลลัพธ์ของแบบสอบถาม SQL ที่ถูกต้องไปยัง Python นี่เป็นวิธีการถ่ายโอนข้อมูลที่ช้าที่สุด ใช้มันถ้า ExecuteGlobal
และไม่มีเครื่องห่อหุ้ม
อาร์กิวเมนต์:
query
- แบบสอบถาม sqlvariable
- ชื่อของตัวแปร Python ที่เขียนข้อมูลtype
-list
หรือหมีแพนด้าdataframe
.namespace
- พื้นที่ที่คำขอจะดำเนินการ
ดำเนินการทั่วโลก
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 บน Linux จากปี 1900)t
- เวลา ($horolog, วินาทีหลังเที่ยงคืน)m
— การประทับเวลา (ปี-เดือน-วัน ชั่วโมง:นาที:วินาที รูปแบบสตริง)
labels
- % รายชื่อคอลัมน์ องค์ประกอบแรกคือชื่อของตัวห้อยnamespace
- พื้นที่ที่คำขอจะดำเนินการ
ดำเนินการคลาส
ห่อ ExecuteGlobal
. เตรียมการโทรตามคำจำกัดความของคลาส ExecuteGlobal
และโทรหาเขา
ExecuteClass(class, variable, type, start, end, properties, namespace)
- ส่งข้อมูลคลาสไปยัง Python
อาร์กิวเมนต์:
class
- ชื่อชั้นvariable
- ชื่อของตัวแปร Python ที่เขียนข้อมูลtype
-list
หรือหมีแพนด้าdataframe
.start
- รหัสเริ่มต้นend
- รหัสสุดท้ายproperties
— รายการ (คั่นด้วยเครื่องหมายจุลภาค) ของคุณสมบัติของคลาสที่จะโหลดลงในชุดข้อมูล รองรับหน้ากาก*
и?
. ค่าเริ่มต้น -*
(คุณสมบัติทั้งหมด). คุณสมบัติ%%CLASSNAME
ละเว้นnamespace
- พื้นที่ที่คำขอจะดำเนินการ
คุณสมบัติทั้งหมดจะถูกส่งผ่านตามที่เป็น ยกเว้นคุณสมบัติประเภท %Date
, %Time
, %Boolean
и %TimeStamp
- พวกมันจะถูกแปลงเป็นคลาส Python ที่สอดคล้องกัน
ExecuteTable
ห่อ ExecuteClass
. แปลชื่อตารางเป็นชื่อคลาสและเรียก ExecuteClass
. ลายเซ็น:
ExecuteTable(table, variable, type, start, end, properties, namespace)
- ส่งข้อมูลตารางไปยัง Python
อาร์กิวเมนต์:
table
- ชื่อตาราง
ข้อโต้แย้งอื่น ๆ ทั้งหมดจะถูกส่งผ่านตามที่เป็นอยู่ExecuteClass
.
ข้อคิดเห็น
ExecuteGlobal
,ExecuteClass
иExecuteTable
ทำงานเร็วเท่ากันExecuteGlobal
เร็วกว่า 20 เท่าExecuteQuery
บนชุดข้อมูลขนาดใหญ่ (เวลาถ่ายโอน >0.01 วินาที)ExecuteGlobal
,ExecuteClass
иExecuteTable
ทำงานกับ globals ด้วยโครงสร้างนี้:^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
อาร์กิวเมนต์ทั้งหมดยกเว้นแหล่งข้อมูล (ส่วนกลาง คลาส หรือตาราง) และตัวแปรเป็นทางเลือก
ตัวอย่าง
ชั้นเรียนทดสอบ
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()
- รับและลบข้อยกเว้นสุดท้ายในฝั่ง PythonGetModuleInfo(module, .imported, .alias)
— รับตัวแปรโมดูลและสถานะการนำเข้าGetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments)
- รับข้อมูลเกี่ยวกับฟังก์ชั่น
การทำงานร่วมกัน
คุณได้เรียนรู้วิธีเรียก Python Gateway จากเทอร์มินัลแล้ว ตอนนี้มาเริ่มใช้งานจริงกัน พื้นฐานสำหรับการโต้ตอบกับ Python ในโหมดนี้คือ isc.py.ens.Operation
. ช่วยให้เรา:
- รันโค้ด Python
- บันทึก/กู้คืนบริบทของ Python
- โหลดและรับข้อมูลจาก Python
โดยพื้นฐานแล้ว การดำเนินการของไพห์ตันเป็นเพียงส่วนเสริม isc.py.Main
. การดำเนินการ isc.py.ens.Operation
อนุญาตให้มีปฏิสัมพันธ์กับกระบวนการ Python จากผลิตภัณฑ์ InterSystems IRIS รองรับห้าคำขอ:
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
- (Linux เท่านั้น) หากคุณพบข้อผิดพลาดในการบู๊ต ให้ตั้งค่าเป็นlibpython3.6m.so
หรือแม้แต่ในเส้นทางแบบเต็มไปยังไลบรารี Python
การสร้างกระบวนการทางธุรกิจ
มีสองคลาสที่อำนวยความสะดวกในการพัฒนากระบวนการทางธุรกิจ:
isc.py.ens.ProcessUtils
ให้คุณดึงคำอธิบายประกอบจากกิจกรรมที่มีการแทนที่ตัวแปรisc.py.util.BPEmulator
ทำให้ง่ายต่อการทดสอบกระบวนการทางธุรกิจด้วย Python สามารถดำเนินกระบวนการทางธุรกิจ (ส่วน Python) ในกระบวนการปัจจุบัน
การแทนที่ตัวแปร
กระบวนการทางธุรกิจทั้งหมดสืบทอดมาจาก isc.py.ens.ProcessUtils
, สามารถใช้วิธีการ GetAnnotation(name)
เพื่อรับค่าของคำอธิบายประกอบกิจกรรมตามชื่อ คำอธิบายประกอบกิจกรรมอาจมีตัวแปรที่จะถูกประเมินในฝั่ง InterSystems IRIS ก่อนที่จะส่งไปยัง Python นี่คือไวยากรณ์สำหรับการแทนที่ตัวแปร:
${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 หากต้องการใช้:
- ในการรันเทอร์มินัล OS:
pip install pandas matplotlib seaborn
. - ในเทอร์มินัล InterSystems IRIS ให้รัน:
do ##class(isc.py.test.CannibalizationData).Import()
เพื่อเติมข้อมูลการทดสอบ - เปิดตัวผลิตภัณฑ์
isc.py.test.Production
. - ส่งคำขอประเภท
Ens.Request
вisc.py.test.Process
.
เรามาดูกันว่ามันทำงานร่วมกันอย่างไร เปิด isc.py.test.Process
ในโปรแกรมแก้ไข BPL:
การดำเนินการโค้ด
การโทรที่สำคัญที่สุดคือการดำเนินการของรหัส Python:
คำขอที่ใช้ isc.py.msg.ExecutionRequest
นี่คือคุณสมบัติของมัน:
Code
— รหัสหลาม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
:
มันคำนวณ Correlation Matrix ในฝั่ง Python และแยกตัวแปรออกมา corrmat
กลับไปที่ InterSystems IRIS ในรูปแบบ JSON โดยตั้งค่าคุณสมบัติคำขอ:
Variables
:"corrmat"
Serialization
:"JSON"
เราสามารถเห็นผลลัพธ์ใน Visual Trace:
และถ้าเราต้องการค่านี้ใน BP ก็สามารถรับได้ดังนี้: callresponse.Variables.GetAt("corrmat")
.
การถ่ายโอนข้อมูล
ต่อไป เรามาพูดถึงการถ่ายโอนข้อมูลจาก InterSystems IRIS ไปยัง Python คำขอถ่ายโอนข้อมูลทั้งหมดใช้อินเตอร์เฟส isc.py.msg.DataRequest
ซึ่งมีคุณสมบัติดังต่อไปนี้:
Variable
เป็นตัวแปร Python ที่เขียนข้อมูลType
- ประเภทตัวแปร:dataframe
(แพนด้าดาต้าเฟรม) หรือlist
.Namespace
- พื้นที่ที่เรารับข้อมูล ถุงพลาสติกisc.py
ควรจะมีอยู่ในพื้นที่นี้ นี่อาจเป็นพื้นที่ที่ไม่มีการสนับสนุนผลิตภัณฑ์
ตามอินเทอร์เฟซนี้มีการใช้งานคำขอ 4 คลาส:
isc.py.msg.QueryRequest
- ตั้งค่าคุณสมบัติQuery
เพื่อส่งแบบสอบถาม SQLisc.py.msg.ClassRequest
- ตั้งค่าคุณสมบัติClass
เพื่อส่งผ่านข้อมูลชั้นเรียนisc.py.msg.TableRequest
- ตั้งค่าคุณสมบัติTable
เพื่อส่งผ่านข้อมูลตารางisc.py.msg.GlobalRequest
- ตั้งค่าคุณสมบัติGlobal
เพื่อถ่ายโอนข้อมูลทั่วโลก
ในขั้นตอนการทดสอบให้ดูที่กิจกรรม RAW
ที่ไหน isc.py.msg.QueryRequest
แสดงให้เห็นในการกระทำ
การบันทึก/กู้คืนบริบท Python
สุดท้าย เราสามารถจัดเก็บบริบทของ Python ไว้ใน InterSystems IRIS โดยส่ง 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
ส่วนขยายนี้ถือว่าคำอธิบายประกอบมีรหัส Python และใช้ชื่อกิจกรรมเป็นชื่อนำหน้า ขณะนี้สามารถพัฒนากระบวนการทางธุรกิจ PythonGateway ใน Jupyter Notebook ได้แล้ว นี่คือสิ่งที่เป็นไปได้:
- สร้างกระบวนการทางธุรกิจใหม่
- ลบกระบวนการทางธุรกิจ
- สร้างกิจกรรมใหม่
- เปลี่ยนกิจกรรม
- ลบกิจกรรม
ที่นี่
ตัวสำรวจกระบวนการ
ตัวแก้ไขกระบวนการ
การติดตั้ง
- คุณต้องใช้ InterSystems IRIS 2019.2+
- ติดตั้ง PythonGateway v0.8+ (จำเป็นเท่านั้น
isc.py.util.Jupyter
,isc.py.util.JupyterCheckpoints
иisc.py.ens.ProcessUtils
). - อัพเดตโค้ด ObjectScript จากที่เก็บ
- ปฏิบัติตาม
do ##class(isc.py.util.Jupyter).Install()
และปฏิบัติตามคำแนะนำ
ผลการวิจัย
MLToolkit เป็นชุดเครื่องมือที่มีจุดมุ่งหมายเพื่อรวมโมเดลและสภาพแวดล้อมในการทำธุรกรรม เพื่อให้สามารถใช้โมเดลที่สร้างขึ้นโดยตรงในกระบวนการทางธุรกิจของคุณได้โดยตรง Python Gateway เป็นส่วนหนึ่งของ MLToolkit และให้การผสานรวมกับภาษา Python ทำให้คุณสามารถจัดการอัลกอริทึมการเรียนรู้ของเครื่องใดๆ ที่สร้างขึ้นใน Python (สภาพแวดล้อมหลักสำหรับ Data Scientist จำนวนมาก) ใช้ไลบรารี่สำเร็จรูปจำนวนมากเพื่อสร้าง AI เชิงวิเคราะห์แบบหุ่นยนต์ที่ปรับตัวได้อย่างรวดเร็ว / โซลูชัน ML บนแพลตฟอร์ม InterSystems IRIS
การอ้างอิง
บทความก่อนหน้านี้ ไพธอนเกตเวย์ ตัวอย่าง Python Gateway การวิเคราะห์คอนเวอร์เจนต์ ไพธอน 3.6.7 64 บิต เอกสารและหลักสูตร Python
MLToolkit
กลุ่มผู้ใช้ MLToolkit เป็นที่เก็บ GitHub ส่วนตัวที่สร้างขึ้นโดยเป็นส่วนหนึ่งขององค์กร GitHub ของ InterSystems ถูกส่งไปยังผู้ใช้ภายนอกที่กำลังติดตั้ง เรียนรู้ หรือใช้งานคอมโพเนนต์ MLToolkit รวมถึง Python Gateway อยู่แล้ว กลุ่มนี้มีกรณีการใช้งานจำนวนมาก (พร้อมซอร์สโค้ดและข้อมูลทดสอบ) ในด้านการตลาด การผลิต การแพทย์ และอุตสาหกรรมอื่นๆ อีกมากมาย หากต้องการเข้าร่วมกลุ่มผู้ใช้ ML Toolkit โปรดส่งอีเมลสั้นๆ ไปยังที่อยู่ต่อไปนี้:
- ชื่อผู้ใช้ GitHub
- องค์กร (คุณทำงานหรือเรียน)
- ตำแหน่ง (ตำแหน่งจริงของคุณในองค์กรของคุณ ไม่ว่าจะเป็น "นักศึกษา" หรือ "อิสระ")
- ประเทศ
สำหรับผู้ที่ได้อ่านบทความและสนใจ InterSystems IRIS ในฐานะแพลตฟอร์มสำหรับการพัฒนาหรือโฮสต์กลไกปัญญาประดิษฐ์และการเรียนรู้ของเครื่อง เราขอเชิญคุณหารือเกี่ยวกับสถานการณ์ที่เป็นไปได้ที่องค์กรของคุณสนใจ เราจะพร้อมวิเคราะห์ความต้องการขององค์กรของคุณและร่วมกันกำหนดแผนปฏิบัติการ ที่อยู่อีเมลติดต่อของกลุ่มผู้เชี่ยวชาญ AI/ML –
ที่มา: will.com