Python Gateway в InterSystems IRIS
- четверг, 6 февраля 2020 г. в 00:23:58
Эта статья посвящена Python Gateway — комьюнити-проекту с открытым исходным кодом для платформы данных InterSystems IRIS. Этот проект позволяет оркестрировать любые алгоритмы машинного обучения, созданные на языке Python (основная среда для многих Data Scientists), использовать многочисленные готовые библиотеки для быстрого создания адаптивных, роботизированных аналитических AI/ML-решений на платформе InterSystems IRIS. В этой статье я покажу как InterSystems IRIS может оркестровать процессы на языке Python, эффективно осуществлять двустороннюю передачу данных и создавать интеллектуальные бизнес-процессы.
Python — высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. В данной серии статей я расскажу о возможностях применения языка Python на платформе InterSystems IRIS, при этом основным фокусом данной статьи является применение Python как языка создания и применения моделей машинного обучения.
Машинное обучение (ML) — класс методов искусственного интеллекта, характерной чертой которых является не прямое решение задачи, а обучение в процессе решения множества сходных задач.
Алгоритмы и модели машинного обучения становятся все более распространенными. Причин тому множество, но все сводится к доступности, простоте и достижению практических результатов. Является ли кластеризация или даже нейросетевое моделирование новой технологией?
Конечно нет, но в настоящее время нет необходимости писать сотни тысяч строк кода, чтобы запустить одну модель, а затраты на создание и применение моделей становятся всё меньше и меньше.
Инструменты развиваются — в то время как у нас нет полностью GUI-ориентированных AI/ML-инструментов, тот прогресс, который мы наблюдали со многими другими классами информационных систем, например, BI (от написания кода до использования фреймворков и GUI-ориентированных конфигурируемых решений), наблюдается и в инструментах для создания AI/ML. Мы уже прошли этап написания кода и сегодня используем фреймворки для построения и обучения моделей.
Другие улучшения, например, возможность распространения предобученной модели, когда конечный пользователь должен просто закончить обучение модели на его специфических данных также упрощают начало применения машинного обучения. Эти достижения значительно облегчают изучение машинного обучения как непосредственно для специалистов, так и для компаний в целом.
С другой стороны, мы собираем всё больше данных. Благодаря унифицированной платформе данных, такой как InterSystems IRIS, вся эта информация может быть немедленно подготовлена и использована в качестве исходных данных для моделей машинного обучения.
С переходом на облако запуск AI/ML-проектов становится легче, чем когда-либо. Мы можем потреблять только те ресурсы, которые нам необходимы. Более того, благодаря параллелизации, предлагаемой облачными платформами, мы можем сэкономить затрачиваемое время.
Но как насчет результатов? Здесь все становится сложнее. Существует множество инструментов для построения моделей, о которых я расскажу далее. Построить хорошую модель непросто, но что дальше? Получение прибыли от использования модели бизнесом также является нетривиальной задачей. Корень проблемы в разделении аналитических и транзакционных нагрузок, и моделей данных. Когда мы обучаем модель, мы обычно делаем это на исторических данных. Но место для построенной модели — в транзакционной обработке данных. Что хорошего в лучшей модели обнаружения мошеннических транзакций, если мы запускаем ее раз в день? Мошенники уже давно ушли с деньгами. Нам нужно тренировать модель на исторических данных, но мы также должны применять её в реальном времени на новых поступающих данных, чтобы наши бизнес-процессы могли действовать в соответствии с прогнозами, сделанными моделью.
ML Toolkit — набор инструментов, целью которого является именно это: объединение моделей и транзакционной среды, чтобы построенные модели можно было легко использовать прямо в ваших бизнес-процессах. Python Gateway является частью ML Toolkit и обеспечивает интеграцию с языком Python (аналогично как R Gateway, являясь частью ML Toolkit обеспечивает интеграцию с языком R).
Прежде чем мы продолжим, я хотел бы описать несколько инструментов и библиотек для Python, которые мы будем использовать позже.
Вот (неполный) список библиотек для машинного обучения:
Технологии AI/ML позволяют сделать бизнес более эффективным и адаптируемым. Более того, сегодня эти технологии становятся проще в разработке и внедрении. Начните изучать AI/ML-технологии и то, как они могут помочь вашей организации расти.
Существует несколько способов установки и использования Python Gateway:
Независимо от способа установки, вам понадобится исходный код. Единственное место для скачивания кода — страница релизов. Она содержит протестированные стабильные релизы, просто берите последний. На данный момент это 0.8, но со временем будут и новые. Не клонируйте/загружайте репозиторий, скачайте последний релиз.
Если вы устанавливаете Python Gateway в операционную систему, то сначала (вне зависимости от операционной системы) вам необходимо установить Python. Для этого:
dill
: pip install dill
.do $system.OBJ.ImportDir("C:\InterSystems\Repos\Python\isc\py\", "*.cls", "c",,1)
) в любую область с продукциями. В случае, если вы хотите, чтобы существующая область поддерживала продукции, выполните: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1)
.bin
вашего инстанса InterSystems IRIS. Файл библиотеки должен быть доступен по пути, возвращаемом write ##class(isc.py.Callout).GetLib()
. PYTHONHOME
указывает на Python 3.6.7.PATH
содержит переменную PYTHONHOME
(или директорию, на которую она указывает).PATH
содержит /usr/lib
и /usr/lib/x86_64-linux-gnu
. Используйте файл /etc/environment
для установки переменных окружения.undefined symbol: _Py_TrueStruct
установите настройку PythonLib
. Также в Readme есть раздел Troubleshooting.PATH
.Если вы изменяли переменные окружения, перезапустите ваш продукт InterSystems.
Использование контейнеров имеет ряд преимуществ:
Ознакомьтесь с этой серией статей для получения более подробной информации об использовании Docker с продуктами 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
пусто, проверьте Readme — Troubleshooting section.
Python Gateway установлен, и вы убедились, что он работает. Пора начинать его использовать!
Главный интерфейс к Python это isc.py.Main
. Он предлагает следующие группы методов (все возвращают %Status
):
Эти методы позволяют исполнять произвольный Python-код.
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
значение Hello
и хотим вернуть значение Python переменной x
в ObjectScript переменную var
.
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
.
Передавайте данные в Python и обратно.
Есть 4 способа получить значение Python переменной в InterSystems IRIS, в зависимости от сериализации, которая вам нужна:
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.
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
, либо pandas dataframe
. Описание опциональных аргументов mask
and labels
доступно в документации класса и репозитории Data Transfer docs.ExecuteClass(class, variable, type, start, end, properties, namespace)
— загружает данные класса class
от id start
до end
в Python как переменную типа type
: list
, либо pandas dataframe
. properties
— список (разделитель — запятая) свойств класса, которые нужно загрузить в набор данных. Поддерживаются маски *
и ?
. По умолчанию — *
(все свойства). Свойство %%CLASSNAME
игнорируется.ExecuteTable(table, variable, type, start, end, properties, namespace)
— загружает данные таблицы table
от id start
до end
в Python.ExecuteQuery
— универсален (любой корректный SQL-запрос будет передан в Python). Однако, ExecuteGlobal
и его обёртки ExecuteClass
и ExecuteTable
работают с рядом ограничений. Они намного быстрее (в 3-5 раз быстрее ODBC-драйвера и в 20 раз быстрее ExecuteQuery
). Дополнительная информация в Data Transfer docs.
Все эти методы поддерживают передачу данных из любой области. Пакет isc.py
должен быть доступен в целевой области.
ExecuteQuery(request, variable, type, namespace)
— передача результатов любого корректного SQL-запроса на Python. Это самый медленный метод передачи данных. Используйте его, если ExecuteGlobal
и его обёртки недоступны.
Аргументы:
query
— sql запрос.variable
— название Python переменной в которую записываются данные.type
— list
или Pandas dataframe
.namespace
— область в которой будет исполняться запрос.ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace)
— передача глобала в Python.
Аргументы:
global
— имя глобала без ^
variable
— название Python переменной в которую записываются данные.type
— list
или Pandas dataframe
.start
— первый сабскрипт глобала. Обязательно %Integer
.end
— последний сабскрипт глобала. Обязательно %Integer
.mask
— маска значений глобала. Маска может быть короче, чем количество полей в глобале (в этом случае поля в конце будут пропущены). Как форматировать маску:+
передать значение как есть.-
пропустить значение.b
— Логический тип (0
— False
, всё остальное — True
).d
— Дата (из $horolog, на Windows от 1970, на Linux от 1900).t
— Время ($horolog, секунды после полуночи).m
— Метка времени (строка формата YEAR-MONTH-DAY HOUR:MINUTE:SECOND).labels
— %List названий колонок. Первый элемент — название сабскрипта.namespace
— область в которой будет исполняться запрос.Обертка над ExecuteGlobal
. На основе определения класса подготавливает вызов ExecuteGlobal
и вызывает его.
ExecuteClass(class, variable, type, start, end, properties, namespace)
— передача данных класса в Python.
Аргументы:
class
— имя классаvariable
— название Python переменной в которую записываются данные.type
— list
или Pandas dataframe
.start
— стартовый Id.end
— конечный Idproperties
— список (разделитель — запятая) свойств класса, которые нужно загрузить в набор данных. Поддерживаются маски *
и ?
. По умолчанию — *
(все свойства). Свойство %%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
и зависит от ОС (windows: 1970-01-01, linux 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
. Он позволяет нам:
В принципе, Pyhton операция это обертка над 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
с идентификатором контекста.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. Для их использования:
pip install pandas matplotlib seaborn
. 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
— 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
:
Он вычисляет Матрицу Корреляции на стороне Python и извлекает переменную corrmat
обратно в InterSystems IRIS в формате JSON, путем установки свойств запроса:
Variables
: "corrmat"
Serialization
: "JSON"
Мы можем видеть результаты в Visual Trace:
И если нам это значение понадобится в БП, его можно получить так: 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
показан в действии.
Наконец, мы можем сохранить 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 Notebook — это веб-приложение с открытым исходным кодом, позволяющее создавать ноутбуки, содержащие код, визуализации и текст и публиковать их. Python Gateway позволяет просматривать и редактировать BPL-процессы в виде Jupyter Notebook. Обратите внимание, что в настоящее время используется обычный executor Python 3.
Это расширение предполагает, что аннотации содержат код Python и используют названия активностей в качестве предшествующих заголовков. Теперь возможно разрабатывать бизнес-процессы PythonGateway в Jupyter Notebook. Вот что возможно:
Вот демо-видео. И несколько скриншотов:
isc.py.util.Jupyter
, isc.py.util.JupyterCheckpoints
и isc.py.ens.ProcessUtils
).do ##class(isc.py.util.Jupyter).Install()
и следуйте подсказкам.MLToolkit — набор инструментов, целью которого является объединение моделей и транзакционной среды, чтобы построенные модели можно было легко использовать прямо в ваших бизнес-процессах. Python Gateway является частью MLToolkit и обеспечивает интеграцию с языком Python позволяя оркестрировать любые алгоритмы машинного обучения, созданные на языке Python (основная среда для многих Data Scientists), использовать многочисленные готовые библиотеки для быстрого создания адаптивных, роботизированных аналитических AI/ML-решений на платформе InterSystems IRIS.
Группа пользователей MLToolkit — это частный GitHub-репозиторий, созданный как часть корпоративной GitHub-организации InterSystems. Она адресована внешним пользователям, которые устанавливают, изучают или уже используют компоненты MLToolkit, включая Python Gateway. В группе доступен ряд реализованных кейсов (с исходным кодом и тестовыми данными) в сферах маркетинга, производства, медицины и многих других отраслях. Чтобы присоединиться к группе пользователей ML Toolkit, пожалуйста, отправьте короткое сообщение по электронной почте по следующему адресу: MLToolkit@intersystems.com и укажите в своем письме следующие данные:
Тем, кто прочитал статью и заинтересовался возможностями InterSystems IRIS как платформы для разработки или размещения механизмов искусственного интеллекта и машинного обучения, мы предлагаем обсудить возможные сценарии, представляющие интерес для вашего предприятия. Мы с готовностью проанализируем потребности вашего предприятия и совместно определим план действий; контактный адрес электронной почты нашей экспертной группы AI/ML – MLToolkit@intersystems.com.