Расширение языка R в Службах машинного обучения SQL Server

Область применения: SQL Server 2016 (13.x) и более поздних версий

В этой статье описывается расширение R для выполнения внешних скриптов Python с помощью Службы машинного обучения SQL Server и служб SQL Server 2016 Services. Расширение добавляет следующее.

  • Динамическая среда выполнения R
  • Базовое распределение R с помощью стандартных библиотек и средств
  • Библиотеки Microsoft R:
    • RevoScaleR для аналитики в большом масштабе
    • MicrosoftML для алгоритмов машинного обучения. Область применения: только SQL Server 2016, SQL Server 2017 и SQL Server 2019.
    • Другие библиотеки для доступа к данным или коду R в SQL Server

Компоненты R

SQL Server содержит как пакеты с открытым исходным кодом, так и проприетарные пакеты. Базовые библиотеки R устанавливаются с помощью дистрибутива R с открытым исходным кодом: Microsoft R Open (MRO). Текущие пользователи R должны иметь возможность перенести код R и выполнить его как внешний процесс на SQL Server с незначительными изменениями или без них. MRO устанавливается независимо от инструментов SQL и выполняется вне базовых процессов ядра на платформе расширяемости. Во время установки необходимо принять условия лицензии на использование ПО с открытым исходным кодом. После этого можно выполнять стандартные пакеты R без изменений так же, как и в других дистрибутивах R с открытым исходным кодом.

SQL Server 2016 (13.x), SQL Server 2017 (14.x) и SQL Server 2019 (15.x) SQL Server не изменяют базовые исполняемые файлы R, однако необходимо использовать именно ту версию R, которая была установлена программой установки, так как на базе этой версии устанавливаются и тестируются проприетарные пакеты. Дополнительные сведения о том, чем MRO отличается от базового дистрибутива R, который можно получить из CRAN, см. в статье Взаимодействие с языком R и продуктами и компонентами Microsoft R.

Базовый дистрибутив пакета R, устанавливаемый программой установки, можно найти в папке, связанной с экземпляром. Например, если вы установили службы R в экземпляре SQL Server по умолчанию, библиотеки R по умолчанию будут находиться в папке C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library. Точно так же средства R, связанные с экземпляром по умолчанию, по умолчанию будут находиться в папке C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\bin.

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

Библиотека Description
RevoScaleR Поддерживает объекты источников данных и просмотр, обработку, преобразование и визуализацию данных. Поддерживает создание удаленных контекстов вычислений, а также различные масштабируемые модели машинного обучения, такие как rxLinMod. API-интерфейсы оптимизированы для анализа наборов данных, которые слишком велики для размещения в памяти, и для выполнения вычислений, распределенных по нескольким ядрам или процессорам. Пакеты RevoScaleR также поддерживают формат файлов XDF для быстрого перемещения и сохранения данных, используемых для анализа. XDF-файлы используют хранилище столбцов, их можно переносить и использовать для загрузки и обработки данных из различных источников, включая текст, SPSS или подключения ODBC.
MicrosoftML Содержит алгоритмы машинного обучения, оптимизированные для достижения высокой скорости и точности, а также встроенные преобразования для работы с текстом и изображениями. Дополнительные сведения см. в статье MicrosoftML в SQL Server. Область применения: только SQL Server 2016, SQL Server 2017 и SQL Server 2019.

Начиная с SQL Server 2022 (16.x), среды выполнения для R, Python и Java больше не устанавливаются с помощью программы установки SQL. Желаемые пользовательские среды и пакеты R и (или) Python необходимо устанавливать самостоятельно. Дополнительные сведения см. в статье Установка служб машинного обучения SQL Server 2022 в Windows или Установка служб машинного обучения SQL Server (Python и R) в Linux.

Использование R в SQL Server

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

К поддерживаемым источникам данных относятся базы данных ODBC, SQL Server и формат файлов XDF для обмена данными с другими источниками или с решениями R. Входные данные должны иметь табличный формат. Все результаты R должны возвращаться в виде кадра данных.

Поддерживаемые контексты вычислений включают локальный и удаленный контексты вычислений SQL Server. Удаленный контекст вычислений относится к выполнению кода, которое начинается на одном компьютере, например на рабочей станции, но затем выполнение сценария переключается на удаленный компьютер. Для переключения контекста вычислений необходимо, чтобы в обеих системах использовалась одна и та же библиотека RevoScaleR.

Локальный контекст вычислений, как и можно было бы ожидать, включает выполнение кода R на том же сервере, на котором находится экземпляр ядра СУБД, причем код располагается в T-SQL или включается в хранимую процедуру. Также можно запустить код из локальной интегрированной среды разработки R и сделать так, что сценарий будет выполнен на компьютере SQL Server, задав удаленный контекст вычислений.

Архитектура выполнения

На следующих схемах показано взаимодействие компонентов SQL Server со средой выполнения R в каждом из поддерживаемых сценариев: выполнение сценария в базе данных и удаленное выполнение из командной строки R с использованием контекста вычислений SQL Server.

Скрипты R, выполняемые из SQL Server в базе данных

Код R, который запускается "внутри" SQL Server, выполняется с помощью вызова хранимой процедуры. Таким образом, любое приложение, которое может сделать вызов хранимой процедуры, может также инициировать выполнение кода R. После этого SQL Server управляет выполнением кода R, как показано на следующей схеме.

rsql_indb780-01

  1. Запрос к среде выполнения R, указанный с помощью параметра @language='R', передается хранимой процедуре sp_execute_external_script. SQL Server отправляет этот запрос в службу панели запуска. В Linux SQL использует службу панели запуска для взаимодействия с отдельным процессом панели запуска для каждого пользователя. Дополнительные сведения см. на схеме архитектуры расширяемости.
  2. Служба панели запуска запускает соответствующее средство запуска, в данном случае RLauncher.
  3. RLauncher запускает внешний процесс R.
  4. BxlServer взаимодействует со средой выполнения R для управления обменом данными между SQL Server и хранилищем результатов работы.
  5. Вспомогательное соединение SQL контролирует взаимодействие связанных задач и процессов с SQL Server.
  6. BxlServer использует вспомогательное соединение SQL для передачи состояния и результатов в SQL Server.
  7. SQL Server получает результаты и закрывает связанные задачи и процессы.

Скрипты R, выполняемые из удаленного клиента

При подключении из удаленного клиента обработки и анализа данных, поддерживающего Microsoft R, можно выполнять функции R в контексте SQL Server с помощью функций RevoScaleR. Этот рабочий процесс отличается от предыдущего и показан на следующей схеме.

rsql_fromR2db-01

  1. Для функций RevoScaleR среда выполнения R вызывает связующую функцию, которая, в свою очередь, вызывает BxlServer.
  2. BxlServer входит в состав Microsoft R и выполняется в процессе, отдельном от среды выполнения R.
  3. BxlServer определяет целевой объект подключения и инициирует подключение с использованием ODBC, передавая учетные данные, предоставленные в виде части строки подключения в объекте источника данных R.
  4. BxlServer устанавливает подключение к экземпляру SQL Server.
  5. Для вызова R вызывается служба панели запуска, которая, в свою очередь, запускает соответствующее средство запуска — RLauncher. После этого обработка кода R происходит аналогично процессу выполнения кода R из T-SQL.
  6. RLauncher вызывает экземпляр среды выполнения R, установленный на компьютере SQL Server.
  7. Результаты возвращаются в BxlServer.
  8. Вспомогательное соединение SQL управляет взаимодействием с SQL Server и очисткой связанных объектов задания.
  9. SQL Server передает результаты клиенту.

См. также