Машинное обучение в базе данных
Когда SQL Server добавил возможность выполнения R-кода, решение, похоже, разделило клиентскую базу на две группы. Одна группа была впечатлена и подумала, что идея выполнения кода R для анализа данных в базе данных была хорошей идеей. Они были взволнованы и впечатлены демо классификации займов. Если вы не читали об этом или не видели демо, это очень интересно, и вы можете выделить несколько минут, чтобы прочитать или посмотреть его.
Другая группа клиентов считала, что это плохое использование циклов процессора для очень дорогостоящей лицензии на процессор SQL Server. Выполнение сложного анализа, учебных моделей и других функций, обычно связанных с R-сценариями, не является хорошим использованием ограниченных ресурсов. Они предпочли бы, чтобы R-код выполнялся на отдельном сервере, так же как любая большая рабочая нагрузка обмена сообщениями могла бы лучше обслуживаться службой, например, Simple Queue Service - службой простой очереди AWS, а не Service Broker.
Я ближе к первой группе, как и доктор Лоу. Он пишет, что есть случаи, где услуги машинного обучения (MLS), как с R, так и с Python, являются хорошим использованием ресурсов. Не во всех случаях, и, конечно, не для всех. Трудные части моделей обучения и упорная работа по разработке новых способов проведения анализа определенно лучше оставляют на рабочих станциях и ученых по данным. Эти действия могут не стоить тех ресурсов, которые они затрачивают.
Однако, как только модели проходят обучение, исполняемая загрузка отправки параметров в модель и получение прогноза снижается.. SQL Server позволяет загружать предварительно подготовленные модели в базу данных и просто вызывать их по мере необходимости. Кроме того, модели R работают в многопоточном режиме, в отличие от однопоточного исполнения в таких клиентах, как R Studio.
Как и в любой функции SQL Server, важно протестировать и оценить влияние нового кода на новый бизнес на рабочие нагрузки. Мало того, что вы хотите измерить нагрузку на выполнение вашей модели, но вы также должны измерить любые изменения в вашей рабочей нагрузке с помощью дополнительной загрузки кода R или Python. Хотя я бы не стал препятствовать использованию MLS в SQL Server, точно так же, как SQL CLR-код, я был бы осторожен в том, чтобы вводить без тщательного тестирования, включая темные развертывания и моделируемые нагрузки.
Стив Джонс