Подтвердить что ты не робот

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

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

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

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

Какие-нибудь другие варианты?

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

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

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

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

Ура!

Ответ 5

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

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

Ответ 6

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

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

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

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

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

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

С их сайта:

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