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

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

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

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

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

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.

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

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

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

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

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

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

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

https://towardsdatascience.com/learn-to-build-machine-learning-services-prototype-real-applications-and-deploy-your-work-to-aa97b2b09e0c?source=linkShare-c06551b485e5-1539718766

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

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

Элиза от Йата здесь.

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

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

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

Ура!

Другие вопросы по тегам