Gerbang Python di InterSystems IRIS

Artikel ini membahas tentang Python Gateway, proyek komunitas sumber terbuka untuk platform data InterSystems IRIS. Proyek ini memungkinkan Anda untuk mengatur algoritme pembelajaran mesin apa pun yang dibuat dengan Python (lingkungan utama bagi banyak Ilmuwan Data), menggunakan banyak perpustakaan siap pakai untuk dengan cepat membuat solusi AI/ML analitik robotik yang adaptif pada platform InterSystems IRIS. Dalam artikel ini, saya akan menunjukkan bagaimana InterSystems IRIS dapat mengatur proses dengan Python, mengkomunikasikan data dua arah secara efisien, dan menciptakan proses bisnis yang cerdas.

Rencana

  1. Pendahuluan
  2. Peralatan.
  3. Instalasi
  4. API.
  5. Interoperabilitas.
  6. Buku Catatan Jupyter.
  7. Kesimpulan.
  8. Tautan.
  9. Perangkat ML.

pengenalan

Python adalah bahasa pemrograman tujuan umum tingkat tinggi yang bertujuan untuk meningkatkan produktivitas pengembang dan keterbacaan kode. Dalam rangkaian artikel ini, saya akan membahas kemungkinan penggunaan Python pada platform InterSystems IRIS, dengan fokus utama artikel ini adalah penggunaan Python sebagai bahasa untuk membuat dan menjalankan model pembelajaran mesin.

Pembelajaran mesin (ML) adalah salah satu kelas metode kecerdasan buatan, yang ciri khasnya bukanlah penyelesaian langsung suatu masalah, melainkan pembelajaran dalam proses penyelesaian banyak masalah serupa.

Algoritme dan model pembelajaran mesin menjadi lebih umum. Ada banyak alasan untuk hal ini, namun semuanya bermuara pada aksesibilitas, kesederhanaan, dan pencapaian hasil praktis. Apakah pengelompokan atau bahkan pemodelan jaringan saraf merupakan teknologi baru?

Tentu saja tidak, namun saat ini tidak perlu menulis ratusan ribu baris kode untuk menjalankan satu model, dan biaya pembuatan dan penggunaan model menjadi semakin berkurang.

Alat-alat terus berkembang - meskipun kami belum memiliki alat AI/ML yang sepenuhnya berpusat pada GUI, kemajuan yang telah kita lihat pada banyak kelas sistem informasi lainnya, seperti BI (mulai dari penulisan kode hingga penggunaan kerangka kerja dan solusi yang dapat dikonfigurasi yang berpusat pada GUI), adalah juga diamati pada alat untuk membuat AI/ML. Kami telah melewati tahap penulisan kode dan hari ini kami menggunakan kerangka kerja untuk membangun dan melatih model.

Peningkatan lainnya, seperti kemampuan untuk mendistribusikan model terlatih di mana pengguna akhir hanya perlu menyelesaikan pelatihan model pada data spesifik mereka, juga mempermudah memulai pembelajaran mesin. Kemajuan ini membuat pembelajaran mesin pembelajaran menjadi lebih mudah baik bagi para profesional maupun perusahaan pada umumnya.

Di sisi lain, kami mengumpulkan lebih banyak data. Dengan platform data terpadu seperti InterSystems IRIS, semua informasi ini dapat segera disiapkan dan digunakan sebagai masukan pada model pembelajaran mesin.

Dengan peralihan ke cloud, peluncuran proyek AI/ML menjadi lebih mudah dari sebelumnya. Kita hanya dapat mengkonsumsi sumber daya yang kita butuhkan. Selain itu, berkat paralelisasi yang ditawarkan oleh platform cloud, kami dapat menghemat waktu yang dihabiskan.

Tapi bagaimana dengan hasilnya? Di sinilah segalanya menjadi lebih rumit. Ada banyak alat untuk membangun model, yang akan saya bahas selanjutnya. Membangun model yang baik tidaklah mudah, tapi bagaimana selanjutnya? Mendapatkan keuntungan dari penggunaan model bisnis juga merupakan tugas yang tidak sepele. Akar masalahnya adalah pemisahan beban kerja analitis dan transaksional, serta model data. Saat kami melatih model, kami biasanya melakukannya berdasarkan data historis. Namun tempat model yang dibangun adalah pada pengolahan data transaksional. Apa gunanya model deteksi transaksi penipuan terbaik jika kita menjalankannya sekali sehari? Para penipu sudah lama meninggalkan uangnya. Kita perlu melatih model pada data historis, namun kita juga perlu menerapkannya secara real time pada data baru yang masuk sehingga proses bisnis kita dapat bertindak berdasarkan prediksi yang dibuat oleh model tersebut.

ML Toolkit adalah seperangkat alat yang bertujuan untuk melakukan hal tersebut: menyatukan model dan lingkungan transaksional sehingga model yang dibangun dapat dengan mudah digunakan secara langsung dalam proses bisnis Anda. Python Gateway adalah bagian dari ML Toolkit dan menyediakan integrasi dengan bahasa Python (mirip dengan R Gateway, menjadi bagian dari ML Toolkit menyediakan integrasi dengan bahasa R).

Toolkit

Sebelum melanjutkan, saya ingin menjelaskan beberapa alat dan pustaka Python yang akan kita gunakan nanti.

Teknologi

  • Python adalah bahasa pemrograman tujuan umum yang ditafsirkan, tingkat tinggi. Keuntungan utama bahasa ini adalah perpustakaan matematika, ML, dan AI yang besar. Seperti ObjectScript, ini adalah bahasa berorientasi objek, tetapi semuanya didefinisikan secara dinamis, bukan statis. Juga semuanya adalah sebuah objek. Artikel selanjutnya mengasumsikan keakraban dengan bahasa tersebut. Jika Anda ingin mulai belajar, saya sarankan memulai dengan dokumentasi.
  • Untuk latihan kita selanjutnya, set Python 3.6.7 64bit.
  • IDE: Saya menggunakan PyCharm, tetapi secara umum mereka много. Jika Anda menggunakan Atelier, ada plugin Eclipse untuk pengembang Python. Jika Anda menggunakan VS Code, ada ekstensi untuk Python.
  • Notebook: Daripada menggunakan IDE, Anda dapat menulis dan membagikan skrip Anda di buku catatan online. Yang paling populer adalah jupyter.

Perpustakaan

Berikut adalah daftar (tidak lengkap) perpustakaan pembelajaran mesin:

  • lumpuh — paket dasar untuk perhitungan yang tepat.
  • Panda — struktur data dan alat analisis data berkinerja tinggi.
  • Matplotlib — pembuatan grafik.
  • Yg keturunan dr laut — visualisasi data berdasarkan matplotlib.
  • Sklearn — metode pembelajaran mesin.
  • XGBoost — algoritma pembelajaran mesin dalam kerangka metodologi peningkatan gradien.
  • Gensim – NLP.
  • Keras - jaringan saraf.
  • aliran tensor — sebuah platform untuk membuat model pembelajaran mesin.
  • PyTorch adalah platform untuk membuat model pembelajaran mesin, dengan fokus pada Python.
  • nyoka - PMML dari berbagai model.

Teknologi AI/ML menjadikan bisnis lebih efisien dan mudah beradaptasi. Terlebih lagi, saat ini teknologi tersebut semakin mudah untuk dikembangkan dan diterapkan. Mulailah mempelajari teknologi AI/ML dan bagaimana teknologi tersebut dapat membantu organisasi Anda berkembang.

Instalasi

Ada beberapa cara untuk menginstal dan menggunakan Python Gateway:

  • ОС
    • Windows
    • Linux
    • Mac
  • Buruh pelabuhan
    • Gunakan gambar dari DockerHub
    • Ciptakan tampilan Anda sendiri

Apa pun metode instalasinya, Anda memerlukan kode sumber. Satu-satunya tempat untuk mengunduh kode adalah halaman rilis. Ini berisi rilis stabil yang teruji, ambil saja yang terbaru. Saat ini 0.8, tapi lama kelamaan akan ada yang baru. Jangan mengkloning/mengunduh repositori, unduh rilis terbaru.

ОС

Jika Anda menginstal Python Gateway pada sistem operasi, maka pertama-tama (apa pun sistem operasinya) Anda perlu menginstal Python. Untuk ini:

  1. Instal Python 3.6.7 64-bit. Disarankan untuk menginstal Python di direktori default.
  2. Pasang modul dill: pip install dill.
  3. Unduh kode ObjectScript (mis. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) ke area mana pun yang memiliki produk. Jika Anda ingin area yang ada mendukung produk, jalankan: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Tempat info DLL/SO/DYLIB ke folder bin instans InterSystems IRIS Anda. File perpustakaan harus tersedia di jalur yang dikembalikan write ##class(isc.py.Callout).GetLib().

Windows

  1. Pastikan variabel lingkungan PYTHONHOME menunjuk ke Python 3.6.7.
  2. Pastikan variabel lingkungan sistem adalah PATH berisi variabel PYTHONHOME (atau direktori yang ditunjuknya).

Linux (Debian/Ubuntu)

  1. Periksa apakah variabel lingkungannya adalah PATH berisi /usr/lib и /usr/lib/x86_64-linux-gnu. Gunakan berkas /etc/environment untuk mengatur variabel lingkungan.
  2. Jika terjadi kesalahan undefined symbol: _Py_TrueStruct atur pengaturannya PythonLib. juga di Bacalah aku ada bagian Pemecahan Masalah.

Mac

  1. Saat ini hanya Python 3.6.7 yang didukung python.org. Periksa variabelnya PATH.

Jika Anda mengubah variabel lingkungan, mulai ulang produk InterSystems Anda.

Buruh pelabuhan

Menggunakan kontainer memiliki sejumlah keuntungan:

  • Portabilitas
  • Efektivitas
  • Isolasi
  • Keringanan
  • Kekekalan

Lihat ini serangkaian artikel untuk informasi lebih lanjut tentang penggunaan Docker dengan produk InterSystems.

Semua build Python Gateway saat ini berbasis kontainer 2019.4.

Gambar siap

Berlari: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestuntuk mengunduh dan menjalankan Python Gateway dengan InterSystems IRIS Community Edition. Itu saja.

Ciptakan tampilan Anda sendiri

Untuk membuat image buruh pelabuhan, jalankan di root repositori: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Secara default, gambar dibuat berdasarkan gambar store/intersystems/iris-community:2019.4.0.383.0, namun Anda dapat mengubahnya dengan menyetel variabel IMAGE.
Untuk membangun dari InterSystems IRIS, jalankan: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest ".

Setelah ini, Anda dapat menjalankan image buruh pelabuhan:

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

Jika Anda menggunakan gambar berdasarkan InterSystems IRIS Community Edition, Anda dapat menghilangkan kuncinya.

Komentar

  • Proses pengujian isc.py.test.Process menyimpan sejumlah gambar ke direktori sementara. Anda mungkin ingin mengubah jalur ini ke direktori terpasang. Untuk melakukan ini, edit pengaturannya WorkingDir menentukan direktori yang dipasang.
  • Untuk mengakses terminal, jalankan: docker exec -it irispy sh.
  • Akses ke Portal Manajemen Sistem dengan login SuperUser/SYS.
  • Untuk menghentikan container, jalankan: docker stop irispy && docker rm --force irispy.

Memverifikasi instalasi

Setelah Anda menginstal Python Gateway, ada baiknya memeriksa apakah itu berfungsi. Jalankan kode ini di terminal InterSystems IRIS:

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

Hasilnya seharusnya: HELLO — Nilai variabel Python x. Jika status pengembalian sc adalah kesalahan atau var kosong, periksa Readme - Bagian pemecahan masalah.

API

Python Gateway telah diinstal dan Anda telah memverifikasi bahwa itu berfungsi. Saatnya untuk mulai menggunakannya!
Antarmuka utama ke Python adalah isc.py.Main. Ia menawarkan kelompok metode berikut (semua return %Status):

  • Eksekusi Kode
  • Transfer data
  • Bantu

Eksekusi Kode

Metode ini memungkinkan Anda mengeksekusi kode Python arbitrer.

String Sederhana

SimpleString - ini adalah metode utama. Dibutuhkan 4 argumen opsional:

  • code — baris kode yang akan dieksekusi. Karakter umpan baris: $c(10).
  • returnVariable — nama variabel yang akan dikembalikan.
  • serialization - cara membuat serial returnVariable. 0 — string (default), 1 — repr.
  • result — Referensi ByRef ke variabel tempat nilai ditulis returnVariable.

Di atas kami melakukan:

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

Dalam contoh ini, kami menetapkan variabel Python x nilai Hello dan ingin mengembalikan nilai variabel Python x ke variabel ObjectScript var.

Kode Jalankan

ExecuteCode adalah alternatif yang lebih aman dan tidak terlalu membatasi SimpleString.
Baris di platform InterSystems IRIS dibatasi hingga 3 karakter, dan jika Anda ingin mengeksekusi kode yang lebih panjang, Anda perlu menggunakan utas.
Dua argumen diterima:

  • code — baris atau aliran kode Python yang akan dieksekusi.
  • variable — (opsional) menetapkan hasil eksekusi code variabel Python ini.

Contoh penggunaan:

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

Dalam contoh ini, kita mengalikan 2 dengan 3 dan menulis hasilnya ke variabel Python y.

Transfer data

Meneruskan data ke dan dari Python.

Python -> InterSistem IRIS

Ada 4 cara untuk mendapatkan nilai variabel Python di InterSystems IRIS, bergantung pada serialisasi yang Anda perlukan:

  • String untuk tipe data sederhana dan debugging.
  • Repr untuk menyimpan objek sederhana dan debugging.
  • JSON untuk memudahkan manipulasi data di sisi InterSystems IRIS.
  • Pickle untuk menyimpan objek.

Metode ini memungkinkan Anda mengambil variabel dari Python sebagai string atau aliran.

  • GetVariable(variable, serialization, .stream, useString) - mendapatkan serialization variabel variable в stream. Jika useString adalah 1 dan serialisasi ditempatkan pada sebuah string, kemudian sebuah string dikembalikan dan bukan aliran.
  • GetVariableJson(variable, .stream, useString) — dapatkan serialisasi JSON dari suatu variabel.
  • GetVariablePickle(variable, .stream, useString, useDill) -dapatkan serialisasi Pickle (atau Dill) dari suatu variabel.

Mari kita coba untuk mendapatkan variabel kita y.

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

IRIS AntarSistem -> Python

Memuat data dari InterSystems IRIS ke Python.

  • ExecuteQuery(query, variable, type, namespace) - membuat kumpulan data (pandas dataframe или list) dari kueri sql dan menyetelnya ke variabel Python variable. Kantong plastik isc.py harus tersedia di daerah tersebut namespace — permintaan akan dieksekusi di sana.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - memuat data global global dari subskrip start untuk end dengan Python sebagai variabel tipe type: list, atau panda dataframe. Deskripsi argumen opsional mask dan labels tersedia di dokumentasi kelas dan repositori Dokumen Transfer Data.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - memuat data kelas class dari identitas start untuk end dengan Python sebagai variabel tipe type: list, atau panda dataframe. properties — daftar (dipisahkan dengan koma) properti kelas yang perlu dimuat ke dalam kumpulan data. Masker didukung * и ?. Bawaan - * (semua properti). Properti %%CLASSNAME diabaikan.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - memuat data tabel table dari identitas start untuk end dengan Python.

ExecuteQuery — universal (permintaan SQL apa pun yang benar akan diteruskan ke Python). Namun, ExecuteGlobal dan pembungkusnya ExecuteClass и ExecuteTable bekerja dengan sejumlah batasan. Mereka jauh lebih cepat (3-5 kali lebih cepat dari driver ODBC dan 20 kali lebih cepat ExecuteQuery). Informasi lebih lanjut di Dokumen Transfer Data.
Semua metode ini mendukung transfer data dari area mana pun. Kantong plastik isc.py harus tersedia di daerah sasaran.

Jalankan Kueri

ExecuteQuery(request, variable, type, namespace) — mentransfer hasil kueri SQL yang benar ke Python. Ini adalah metode transfer data paling lambat. Gunakan jika ExecuteGlobal dan pembungkusnya tidak tersedia.

Argumen:

  • query - permintaan sql.
  • variable — nama variabel Python tempat data ditulis.
  • type - list atau Panda dataframe.
  • namespace — area di mana permintaan akan dieksekusi.

JalankanGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - melewati global dengan Python.

Argumen:

  • global - nama global tanpa ^
  • variable — nama variabel Python tempat data ditulis.
  • type - list atau Panda dataframe.
  • start — subskrip pertama dari global. Perlu %Integer.
  • end — subskrip terakhir dari global. Perlu %Integer.
  • mask — topeng nilai global. Mask bisa lebih pendek dari jumlah field di global (dalam hal ini field di akhir akan dilewati). Cara memformat topeng:
    • + meneruskan nilai apa adanya.
    • - lewati nilai.
    • b — Tipe Boolean (0 - False, sisanya - True).
    • d — Tanggal (dari $horolog, di Windows sejak tahun 1970, di Linux sejak tahun 1900).
    • t — Waktu ($horolog, detik setelah tengah malam).
    • m — Stempel waktu (format string TAHUN-BULAN-HARI JAM:MENIT:DETIK).
  • labels — %Daftar nama kolom. Elemen pertama adalah nama subskrip.
  • namespace — area di mana permintaan akan dieksekusi.

Jalankan Kelas

Bungkus ExecuteGlobal. Berdasarkan definisi kelas, siapkan panggilan ExecuteGlobal dan memanggilnya.

ExecuteClass(class, variable, type, start, end, properties, namespace) - meneruskan data kelas dengan Python.

Argumen:

  • class - nama kelas
  • variable — nama variabel Python tempat data ditulis.
  • type - list atau Panda dataframe.
  • start — ID awal.
  • end — ID akhir
  • properties — daftar (dipisahkan dengan koma) properti kelas yang perlu dimuat ke dalam kumpulan data. Masker didukung * и ?. Bawaan - * (semua properti). Properti %%CLASSNAME diabaikan.
  • namespace — area di mana permintaan akan dieksekusi.

Semua properti diteruskan apa adanya kecuali properti tipe %Date, %Time, %Boolean и %TimeStamp - mereka diubah menjadi kelas Python yang sesuai.

Jalankan Tabel

Bungkus ExecuteClass. Menerjemahkan nama tabel menjadi nama kelas dan panggilan ExecuteClass. Tanda tangan:

ExecuteTable(table, variable, type, start, end, properties, namespace) - meneruskan data tabel ke Python.

Argumen:

  • table — nama tabel.
    Semua argumen lainnya diteruskan apa adanya ExecuteClass.

Catatan

  • ExecuteGlobal, ExecuteClass и ExecuteTable bekerja sama cepatnya.
  • ExecuteGlobal 20 kali lebih cepat dari ExecuteQuery pada kumpulan data besar (waktu transfer >0.01 detik).
  • ExecuteGlobal, ExecuteClass и ExecuteTable bekerja pada global dengan struktur ini: ^global(key) = $lb(prop1, prop2, ..., propN) dimana key — bilangan bulat.
  • Untuk ExecuteGlobal, ExecuteClass и ExecuteTable rentang nilai yang didukung %Date sesuai dengan jangkauan mktime dan tergantung pada OS (Windows: 1970-01-01, linux 1900-01-01, mac). Menggunakan %TimeStampuntuk mentransfer data di luar rentang ini atau menggunakan kerangka data pandas karena ini adalah batasan hanya daftar.
  • Untuk ExecuteGlobal, ExecuteClass и ExecuteTable semua argumen kecuali sumber data (global, kelas atau tabel) dan variabel bersifat opsional.

contoh

Kelas ujian isc.py.test.Orang berisi metode yang menunjukkan semua opsi transfer data:

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)

Panggil metodenya do ##class(isc.py.test.Person).Test() untuk melihat cara kerja semua metode transfer data.

Metode pembantu

  • GetVariableInfo(variable, serialization, .defined, .type, .length) — mendapatkan informasi tentang variabel: apakah variabel tersebut didefinisikan, kelasnya, dan panjang serialisasinya.
  • GetVariableDefined(variable, .defined) — apakah variabel didefinisikan.
  • GetVariableType(variable, .type) — dapatkan kelas variabel.
  • GetStatus() - dapatkan dan hapus pengecualian terakhir di sisi Python.
  • GetModuleInfo(module, .imported, .alias) — dapatkan variabel modul dan status impor.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) — mendapatkan informasi tentang fungsinya.

Interoperabilitas

Anda telah mempelajari cara memanggil Python Gateway dari terminal, sekarang mari mulai menggunakannya dalam produksi. Dasar untuk berinteraksi dengan Python dalam mode ini adalah isc.py.ens.Operation. Ini memungkinkan kita:

  • Jalankan kode dengan Python
  • Simpan/Pulihkan konteks Python
  • Memuat dan menerima data dari Python

Pada dasarnya, operasi Python adalah penutup isc.py.Main. Operasi isc.py.ens.Operation memberikan kemampuan untuk berinteraksi dengan proses Python dari produk InterSystems IRIS. Lima kueri didukung:

  • isc.py.msg.ExecutionRequest untuk mengeksekusi kode Python. Kembali isc.py.msg.ExecutionResponse dengan hasil eksekusi dan nilai variabel yang diminta.
  • isc.py.msg.StreamExecutionRequest untuk mengeksekusi kode Python. Kembali isc.py.msg.StreamExecutionResponse hasil eksekusi dan nilai variabel yang diminta. Analog isc.py.msg.ExecutionRequest, tetapi menerima dan mengembalikan aliran, bukan string.
  • isc.py.msg.QueryRequest untuk mengirimkan hasil mengeksekusi query SQL. Kembali Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest untuk meneruskan data global/kelas/tabel. Kembali Ens.Response.
  • isc.py.msg.SaveRequest untuk menyimpan konteks Python. Kembali Ens.StringResponse dengan ID konteks.
  • isc.py.msg.RestoreRequest untuk memulihkan konteks Python.

    Selain itu, isc.py.ens.Operation memiliki dua pengaturan:

    • Initializer — memilih kelas yang mengimplementasikan antarmuka isc.py.init.Abstract. Ini dapat digunakan untuk memuat fungsi, modul, kelas, dll. Ini dijalankan satu kali ketika proses dimulai.
    • PythonLib - (Khusus Linux) jika Anda melihat kesalahan saat memuat, setel nilainya menjadi libpython3.6m.so atau bahkan di jalur lengkap ke perpustakaan Python.

Penciptaan proses bisnis

Ada dua kelas yang tersedia yang memfasilitasi pengembangan proses bisnis:

  • isc.py.ens.ProcessUtils memungkinkan Anda mengekstrak anotasi dari aktivitas dengan substitusi variabel.
  • isc.py.util.BPEmulator memudahkan pengujian proses bisnis dengan Python. Itu dapat menjalankan proses bisnis (bagian Python) dalam proses saat ini.

Substitusi Variabel

Semua proses bisnis diwarisi dari isc.py.ens.ProcessUtils, bisa menggunakan metode tersebut GetAnnotation(name) untuk mendapatkan nilai anotasi aktivitas berdasarkan namanya. Anotasi aktivitas dapat berisi variabel yang akan dihitung di sisi InterSystems IRIS sebelum diteruskan ke Python. Berikut ini sintaks substitusi variabel:

  • ${class:method:arg1:...:argN} - panggilan metode
  • #{expr} — mengeksekusi kode dalam bahasa ObjectScript.

Contohnya tersedia dalam proses bisnis pengujian isc.py.test.Process, misalnya dalam aktivitas Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Dalam contoh ini:

  • #{process.WorkDirectory} mengembalikan properti WorkDirectory objek process, yang merupakan turunan dari kelas isc.py.test.Process itu. proses bisnis saat ini.
  • ${%PopulateUtils:Integer:1:100} memanggil sebuah metode Integer kelas %PopulateUtils, menyampaikan argumen 1 и 100, mengembalikan bilangan bulat acak dalam rentang tersebut 1...100.

Uji proses bisnis

Produk pengujian dan proses bisnis pengujian tersedia secara default sebagai bagian dari Python Gateway. Untuk menggunakannya:

  1. Di terminal OS, jalankan: pip install pandas matplotlib seaborn.
  2. Di terminal InterSystems IRIS, jalankan: do ##class(isc.py.test.CannibalizationData).Import() untuk mengisi data uji.
  3. Luncurkan produk isc.py.test.Production.
  4. Kirim jenis permintaan Ens.Request в isc.py.test.Process.

Mari kita lihat bagaimana semuanya bekerja sama. Membuka isc.py.test.Process di editor BPL:

Gerbang Python di InterSystems IRIS

Eksekusi Kode

Tantangan yang paling penting adalah mengeksekusi kode Python:

Gerbang Python di InterSystems IRIS

Kueri digunakan isc.py.msg.ExecutionRequest, berikut propertinya:

  • Code — Kode piton.
  • SeparateLines — apakah akan membagi kode menjadi beberapa baris untuk dieksekusi. $c(10) (n) digunakan untuk memisahkan string. Harap dicatat bahwa TIDAK disarankan untuk memproses seluruh pesan sekaligus, fungsi ini hanya dimaksudkan untuk memproses def dan ekspresi multiline serupa. Bawaan 0.
  • Variables — daftar variabel yang dipisahkan koma yang akan ditambahkan ke respons.
  • Serialization — Cara membuat serialisasi variabel yang ingin kita kembalikan. Pilihan: Str, Repr, JSON, Pickle и Dill, bawaan Str.

Dalam kasus kami, kami hanya mengatur properti Code, jadi semua properti lainnya menggunakan nilai default. Kami mengaturnya dengan menelepon process.GetAnnotation("Import pandas"), yang pada saat runtime mengembalikan anotasi setelah substitusi variabel dilakukan. Lagi pula, kodenya import pandas as pd akan diteruskan ke Python. GetAnnotation mungkin berguna untuk mendapatkan skrip Python multi-baris, tetapi tidak ada batasan pada metode mendapatkan kode ini. Anda dapat mengatur propertinya Code dengan cara apa pun yang nyaman bagi Anda.

Mendapatkan Variabel

Tantangan menarik lainnya dalam menggunakan isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Gerbang Python di InterSystems IRIS

Ini menghitung Matriks Korelasi di sisi Python dan mengekstrak variabel corrmat kembali ke InterSystems IRIS dalam format JSON dengan mengatur properti permintaan:

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

Kita bisa melihat hasilnya di Visual Trace:

Gerbang Python di InterSystems IRIS

Dan jika kita membutuhkan nilai ini di BP, kita bisa mendapatkannya seperti ini: callresponse.Variables.GetAt("corrmat").

Transfer data

Selanjutnya, mari kita bicara tentang mentransfer data dari InterSystems IRIS ke Python; semua permintaan transfer data mengimplementasikan antarmuka isc.py.msg.DataRequestyang menyediakan properti berikut:

  • Variable — variabel Python tempat data ditulis.
  • Type — tipe variabel: dataframe (kerangka data panda) atau list.
  • Namespace — area dari mana kami menerima data. Kantong plastik isc.py harus tersedia di area ini. Ini mungkin merupakan area tanpa dukungan produk.

Berdasarkan antarmuka ini, 4 kelas permintaan diimplementasikan:

  • isc.py.msg.QueryRequest - atur propertinya Query untuk mengirim kueri SQL.
  • isc.py.msg.ClassRequest - atur propertinya Class untuk melewatkan data kelas.
  • isc.py.msg.TableRequest - mengatur properti Table untuk mentransfer data tabel.
  • isc.py.msg.GlobalRequest - mengatur properti Global untuk transfer data global.

Dalam proses tes, lihat aktivitasnya RAWDimana isc.py.msg.QueryRequest ditunjukkan dalam tindakan.

Gerbang Python di InterSystems IRIS

Menyimpan/Memulihkan Konteks Python

Akhirnya, kita dapat menyimpan konteks Python di InterSystems IRIS, untuk melakukan ini kami akan mengirimkannya isc.py.msg.SaveRequest dengan argumen:

  • Mask — Hanya variabel yang cocok dengan mask yang disimpan. Didukung * и ?. Contoh: "Data*, Figure?". Bawaan *.
  • MaxLength — Panjang maksimum variabel yang disimpan. Jika serialisasi suatu variabel lebih panjang, maka akan diabaikan. Setel ke 0 untuk mendapatkan variabel dengan panjang berapa pun. Bawaan $$$MaxStringLength.
  • Name — Nama konteks (opsional).
  • Description — Deskripsi konteks (opsional).

Kembali Ens.StringResponse с Id konteks yang disimpan. Dalam proses tes, lihat aktivitasnya Save Context.

Permintaan terkait isc.py.msg.RestoreRequest memuat konteks dari InterSystems IRIS ke Python:

  • ContextId — pengidentifikasi konteks.
  • Clear — hapus konteksnya sebelum memulihkan.

Notebook Jupyter

Notebook Jupyter adalah aplikasi web sumber terbuka yang memungkinkan Anda membuat dan menerbitkan buku catatan yang berisi kode, visualisasi, dan teks. Python Gateway memungkinkan Anda melihat dan mengedit proses BPL dalam bentuk Notebook Jupyter. Harap dicatat bahwa eksekutor Python 3 normal saat ini digunakan.

Ekstensi ini mengasumsikan bahwa anotasi berisi kode Python dan menggunakan nama aktivitas sebagai judul sebelumnya. Sekarang dimungkinkan untuk mengembangkan proses bisnis PythonGateway di Jupyter Notebook. Inilah yang mungkin:

  • Buat proses bisnis baru
  • Hapus proses bisnis
  • Buat aktivitas baru
  • Ubah aktivitas
  • Hapus aktivitas

di sini adalah video demo. Dan beberapa tangkapan layar:

Penjelajah Proses

Gerbang Python di InterSystems IRIS

Editor proses

Gerbang Python di InterSystems IRIS

Instalasi

  1. Anda memerlukan InterSystems IRIS 2019.2+.
  2. Instal PythonGateway v0.8+ (hanya diperlukan isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Perbarui kode ObjectScript dari repositori.
  4. Menjalankan do ##class(isc.py.util.Jupyter).Install() dan ikuti petunjuknya.

Документация.

Temuan

MLToolkit adalah seperangkat alat yang tujuannya adalah untuk menggabungkan model dan lingkungan transaksional sehingga model yang dibangun dapat dengan mudah digunakan langsung dalam proses bisnis Anda. Python Gateway adalah bagian dari MLToolkit dan menyediakan integrasi dengan bahasa Python, memungkinkan Anda mengatur algoritme pembelajaran mesin apa pun yang dibuat dengan Python (lingkungan utama bagi banyak Ilmuwan Data), menggunakan banyak perpustakaan siap pakai untuk dengan cepat membuat AI analitik robotik yang adaptif / Solusi ML pada platform InterSystems IRIS.

referensi

Perangkat ML

Grup pengguna MLToolkit adalah repositori GitHub pribadi yang dibuat sebagai bagian dari organisasi GitHub perusahaan InterSystems. Hal ini ditujukan untuk pengguna eksternal yang menginstal, mempelajari, atau sudah menggunakan komponen MLToolkit, termasuk Python Gateway. Grup ini memiliki sejumlah kasus yang diimplementasikan (dengan kode sumber dan data pengujian) di bidang pemasaran, manufaktur, kedokteran, dan banyak industri lainnya. Untuk bergabung dengan Grup Pengguna ML Toolkit, silakan kirim email singkat ke alamat berikut: [email dilindungi] dan sertakan informasi berikut dalam surat Anda:

  • Nama pengguna GitHub
  • Organisasi (Anda bekerja atau belajar)
  • Posisi (posisi Anda yang sebenarnya di organisasi Anda, baik "Mahasiswa" atau "Independen").
  • Negara

Bagi mereka yang telah membaca artikel dan tertarik dengan kemampuan InterSystems IRIS sebagai platform untuk mengembangkan atau menghosting kecerdasan buatan dan mesin pembelajaran mesin, kami mengundang Anda untuk mendiskusikan kemungkinan skenario yang menarik bagi perusahaan Anda. Kami akan dengan senang hati menganalisis kebutuhan perusahaan Anda dan bersama-sama menentukan rencana tindakan; Hubungi alamat email tim ahli AI/ML kami – [email dilindungi].

Sumber: www.habr.com

Tambah komentar