Службы машинного обучения SQL Server 2016: работа для одиночных значений. Исходный тип данных в R
SQL Server 2016 и 2017 позволяют разработчикам SQL писать в аналитике базы данных в виде хранимых процедур. Идеальный поток событий описан ниже в визуальной форме. Обратите внимание, что хранимые процедуры в визуальной вставке отображаются непосредственно в таблицах.
Ключевым шагом, который мы хотели бы выделить на диаграмме, является третий шаг. Когда мы готовим модель машинного обучения, мы сохраняем ее как varbinary (max) в таблице SQL Server. Чтобы сохранить его как двоичный тип данных binary, мы должны преобразовать модель для ввода raw в R до вывода ее в SQL. Однако, когда исходный тип данных возвращается из R внутри SQL Server 2016, хранимая процедура может возвращать только одно значение. Это делает невозможным описанный выше поток событий.
Приведенная выше диаграмма не работает для хранения модели машинного обучения, потому что мы хотели бы отслеживать окружающие ее метаданные. В нашей таблице хранения моделей, вероятно, будут представлены модели из всех типов решений для машинного обучения, которые мы развертываем в базе данных SQL Server, поэтому метаданные, окружающие модель, позволяют нам отслеживать эволюцию нашего решения с течением времени. Например, нам может понадобиться знать дату создания модели, показатели производительности и название модели.
Альтернативный поток, который я предлагаю клиентам в качестве решения этой проблемы, приведен ниже:
Вышеприведенная диаграмма просто вставляет один шаг в поток событий. Раньше хранимая процедура обучаемой модели имела только выходное значение varbinary (max), содержащее модель. Теперь мы все равно сериализуем модель в нашем R-скрипте, однако мы выводим модель из хранимой процедуры в виде varchar (max). Это позволяет нам выводить более одного значения, чтобы мы могли сохранить эту информацию в таблице. Добавленная хранимая процедура выполняет хранимую процедуру обучаемой модели, которая возвращает набор результатов, затем исходная хранимая процедура передает varchar (max) в varbinary (max) и вставляет набор результатов в таблицу SQL, которая будет использоваться позже.