Варианты развертывания моделей R в рабочей среде

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

Я понимаю, что PMML с открытым исходным кодом можно использовать для экспорта моделей в виде спецификации XML. Затем это можно использовать для оценки/прогноза в базе данных. Однако кажется, что для этой работы вам нужно использовать плагин PMML от Zementis, что означает, что решение не является действительно открытым исходным кодом. Есть ли более простой открытый способ сопоставления PMML с SQL для подсчета очков?

Другой вариант — использовать JSON вместо XML для вывода прогнозов модели. Но в этом случае, где будет сидеть модель R? Я предполагаю, что его всегда нужно сопоставлять с SQL... если только модель R не может находиться на том же сервере, что и данные, а затем работать с этими входящими данными с помощью R-скрипта?

Есть ли другие варианты?


person Cybernetic    schedule 10.03.2014    source источник
comment
Поскольку большие данные — это просто хранилище данных 2.0, люди не делают ничего особенного, например, классифицируют действительно большие данные. Тогда вы бы не использовали R, потому что он слишком медленный.   -  person Has QUIT--Anony-Mousse    schedule 11.03.2014
comment
Посмотрите на yhathq.com.   -  person Ramnath    schedule 11.03.2014
comment
gist.github.com/shanebutler/5456942 для преобразования gbm в SQL gist.github.com/shanebutler/96f0e78a02c84cdcf558 для преобразования случайного леса в SQL   -  person YCR    schedule 11.01.2016


Ответы (6)


Ответ действительно зависит от вашей производственной среды.

Если ваши «большие данные» находятся в Hadoop, вы можете попробовать этот относительно новый «движок оценки» PMML с открытым исходным кодом, который называется Pattern.

В противном случае у вас нет другого выбора (за исключением написания собственного кода для конкретной модели), кроме как запустить R на вашем сервере. Вы должны использовать save для сохранения подогнанных моделей в файлах .RData, а затем load и запускать соответствующие predict на сервере. (Это должно быть медленным, но вы всегда можете попробовать добавить к нему больше оборудования.)

То, как вы это сделаете, действительно зависит от вашей платформы. Обычно есть способ добавить «пользовательские» функции, написанные на R. Термин — UDF (определяемая пользователем функция). В Hadoop вы можете добавить такие функции в Pig (например, https://github.com/cd-wood/pigaddons) или вы можете использовать RHadoop, чтобы написать простой код уменьшения карты, который загрузит модель и вызовет predict в R. Если ваши данные в Hive вы можете использовать Hive TRANSFORM для вызова внешнего сценария R.

Существуют также способы добавления функций, написанных на R, в различные базы данных SQL, зависящие от поставщика. Снова поищите UDF в документации. Например, в PostgreSQL есть PL/R.

person Alex Vorobiev    schedule 11.03.2014

Ниже приведен список найденных мной альтернатив для развертывания модели R в производственной среде. Обратите внимание, что рабочий процесс использования этих продуктов значительно различается между собой, но все они так или иначе ориентированы на облегчение процесса предоставления обученной модели R как услуги:

person leo9r    schedule 23.11.2014
comment
Вы должны знать, что AzureML не позволяет анализировать дату, если она не находится в какой-либо таблице. Это очень разочаровывающий инструмент, и он очень ограничен, если только у вас нет красивых CSV-файлов и вам нужно использовать только самые простые пакеты. Установка многих полезных пакетов очень сложна, так как R — это версия 3.1, и предустановлено только 400 пакетов. Другие резервные копии должны быть установлены путем понижения версии вашего локального R, установки совместимых пакетов, экспорта их в виде файлов с двойным архивированием, которые должны иметь специальные имена, и все же это работает только иногда. Если вы можете избежать AzureML, я бы сделал это. - person Esben Eickhardt; 30.05.2017

Вы можете создавать RESTful API для своих R-скриптов с помощью plumber (https://github.com/trestletech/plumber). ).

Я написал об этом сообщение в блоге (http://www.knowru.com/blog/how-create-restful-api-for-machine-learning-credit-model-in-r/) на примере развертывания кредитных моделей .

В общем, я не рекомендую PMML, поскольку используемые вами пакеты могут не поддерживать преобразование в PMML.

person Ken Park    schedule 02.03.2017

Обычной практикой является оценка нового/обновленного набора данных в R и перемещение только результатов (идентификаторы, оценки, вероятности и другие необходимые поля) в производственную среду/хранилище данных.

Я знаю, что у этого есть свои ограничения (нечастые обновления, зависимость от ИТ, размер набора данных/ограничения вычислительной мощности) и, возможно, это не самый передовой ответ, который ищут многие (ваши начальники); но во многих случаях это работает хорошо (и недорого!).

person Mark    schedule 16.11.2016

Прошло несколько лет с тех пор, как вопрос был первоначально задан.

Я бы сказал, что для быстрого прототипирования самым простым подходом в настоящее время является использование Jupyter Kernel Gateway. Это позволяет добавлять конечные точки REST в любую ячейку в блокноте Jupyter. Это работает как для R, так и для Python, в зависимости от используемого вами ядра.

Это означает, что вы можете легко вызывать любой код R или Python через веб-интерфейс. При использовании вместе с Docker он подходит для микросервисного подхода к развертыванию и масштабированию вашего приложения.

Вот статья, которая проведет вас от начала до конца, чтобы быстро настроить Jupyter Notebook с Jupyter Kernel Gateway.

Научитесь создавать службы машинного обучения, создавать прототипы реальных приложений и развертывать свою работу для пользователей

Для переноса решений в рабочую среду в 2019 году основным подходом является использование Кубефлоу. Kubeflow был создан и поддерживается Google и максимально упрощает «масштабирование моделей машинного обучения (ML) и их развертывание в производстве».

С их сайта:

Вы адаптируете конфигурацию, чтобы выбрать платформы и службы, которые вы хотите использовать для каждого этапа рабочего процесса машинного обучения: подготовка данных, обучение моделей, обслуживание прогнозов и управление услугами. Вы можете развертывать свои рабочие нагрузки локально или в облачной среде.

person Cybernetic    schedule 16.10.2018

Элиза из Яхата здесь.

Как уже упоминалось @Ramnath и @leo9r, наше программное обеспечение позволяет вам запускать любую модель R (или Python, если на то пошло) непосредственно в производство через конечные точки REST API.

Мы занимаемся в режиме реального времени или в пакетном режиме, а также всем тестированием моделей и версиями + управлением системами, связанными с процессом.

Этот кейс, который мы создали в соавторстве с VIA SMS, может быть полезен, если вы Мы думаем о том, как запустить модели R в производство (их группа специалистов по данным перекодировала PHP до использования Yhat).

Ваше здоровье!

person Elise Breda    schedule 06.10.2016