Extension du langage R dans SQL Server Machine Learning Services

S’applique à : SQL Server 2016 (13.x) et ultérieur

Cet article décrit une extension R permettant d’exécuter des scripts R externes avec SQL Server Machine Learning Services et SQL Server 2016 R Services. Elle ajoute les éléments suivants :

  • un environnement d’exécution R
  • Une distribution R de base comportant des bibliothèques et des outils standard
  • Des bibliothèques Microsoft R :
    • RevoScaleR pour l’analytique à grande échelle
    • MicrosoftML pour les algorithmes de Machine Learning S’applique uniquement à SQL Server 2016, SQL Server 2017 et SQL Server 2019.
    • D’autres bibliothèques permettant d’accéder aux données ou au code R dans SQL Server

Composants R

SQL Server comporte des packages open source et propriétaires. Les bibliothèques R de base sont installées via la distribution de R open source de Microsoft : Microsoft R Open (MRO). Les utilisateurs actuels de R doivent pouvoir porter leur code R et l’exécuter en tant que processus externe dans SQL Server avec peu ou pas de modifications. MRO est installé indépendamment des outils SQL et s’exécute en dehors des processus du moteur de base, dans le framework d’extensibilité. Pendant l’installation, vous devez accepter les termes de la licence open source. Cela vous donne le droit d’exécuter ensuite les packages R standard sans autre modification, comme dans n’importe quelle autre distribution open source de R.

Pour SQL Server 2016 (13.x), SQL Server 2017 (14.x) et SQL Server 2019 (15.x), SQL Server ne modifie pas les exécutables R de base, mais vous devez utiliser la version de R qui est installée par le programme d’installation, car c’est à partir de cette version que les packages propriétaires sont créés et testés. Pour savoir ce qui distingue MRO d’une distribution de base de R que vous pouvez obtenir via CRAN, consultez Interopérabilité avec le langage R et les produits et fonctionnalités Microsoft R.

La distribution de packages de base R qui est installée par le programme d’installation se trouve dans le dossier associé à l’instance. Par exemple, si vous avez installé R Services sur une instance SQL Server par défaut, les bibliothèques R se trouvent par défaut dans le dossier C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library. De la même façon, les outils R associés à l’instance par défaut se trouvent par défaut dans le dossier C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\bin.

Les packages R ajoutés par Microsoft pour les charges de travail parallèles et distribuées incluent les bibliothèques suivantes.

Bibliothèque Description
RevoScaleR Prend en charge les objets de source de données ainsi que l’exploration, la manipulation, la transformation et la visualisation des données. Prend en charge la création de contextes de calcul distants ainsi qu’un certain nombre de modèles de Machine Learning scalables, comme rxLinMod. Les API ont été optimisées pour analyser les jeux de données qui sont trop volumineux pour être stockés en mémoire et pour effectuer des calculs distribués entre plusieurs cœurs ou processeurs. Le package RevoScaleR prend aussi en charge le format de fichier XDF pour accélérer le transfert et le stockage des données utilisées pour l’analyse. Le format XDF est un format portable qui utilise le stockage en colonnes. Il permet de charger et manipuler des données de différentes sources, y compris une connexion texte, SPSS ou ODBC.
MicrosoftML Contient des algorithmes de Machine Learning qui ont été optimisés pour la vitesse et la précision ainsi que des transformations en ligne pour permettre l’utilisation de texte et d’images. Pour plus d’informations, consultez MicrosoftML dans SQL Server. S’applique uniquement à SQL Server 2016, SQL Server 2017 et SQL Server 2019.

À compter de SQL Server 2022 (16.x), les runtimes pour R, Python et Java ne sont plus installés avec le programme d’installation de SQL. Au lieu de cela, installez le(s) runtime(s) et les packages personnalisés R et/ou Python souhaités. Pour plus d’informations, consultez Installer SQL Server 2022 Machine Learning Services sur Windows ou Installer SQL Server Machine Learning Services (Python et R) sur Linux.

Utilisation de R dans SQL Server

Vous pouvez écrire un script R en utilisant les fonctions de base, mais pour tirer parti du multitraitement, vous devez importer les modules RevoScaleR et MicrosoftML dans votre code R, puis appeler ses fonctions pour créer des modèles qui s’exécutent en parallèle.

Parmi les sources de données prises en charge figurent les bases de données ODBC, SQL Server et le format de fichier XDF pour l’échange de données avec d’autres sources ou avec des solutions R. Les données d’entrée doivent être tabulaires. Tous les résultats de R doivent être retournés sous forme de trame de données.

Parmi les contextes de calcul pris en charge figurent le contexte de calcul SQL Server local ou distant. Un contexte de calcul distant fait référence à une exécution de code qui commence sur un ordinateur, par exemple une station de travail, avant que l’exécution du script bascule sur un ordinateur distant. Pour que le basculement du contexte de calcul s’opère, les deux systèmes doivent avoir la même bibliothèque RevoScaleR.

Comme vous pouvez le comprendre, le contexte de calcul local exécute notamment le code R sur le même serveur que l’instance du moteur de base de données, avec le code à l’intérieur de T-SQL ou incorporé dans une procédure stockée. Vous pouvez aussi exécuter le code à partir d’un IDE R local et faire en sorte que le script s’exécute sur l’ordinateur SQL Server, en définissant un contexte de calcul distant.

Architecture d’exécution

Les schémas ci-dessous décrivent l’interaction des composants SQL Server avec le runtime R dans chacun des scénarios pris en charge suivants : exécution de script dans la base de données et exécution à distance à partir d’une ligne de commande R, en utilisant un contexte de calcul SQL Server.

Scripts R exécutés à partir de SQL Server dans la base de données

Le code R lancé de « l’intérieur » de SQL Server est exécuté en appelant une procédure stockée. Par conséquent, toute application qui peut appeler une procédure stockée peut lancer l’exécution du code R. SQL Server gère ensuite l’exécution du code R comme résumé dans le schéma suivant.

rsql_indb780-01

  1. Une demande du runtime R est indiquée par le paramètre @language='R' passé à la procédure stockée sp_execute_external_script. SQL Server envoie cette demande au service launchpad. Dans Linux, SQL utilise un service launchpad pour communiquer avec un processus launchpad distinct pour chaque utilisateur. Pour plus d’informations, consultez le schéma de l’architecture d’extensibilité.
  2. Le service launchpad démarre le lanceur approprié (en l’occurrence, RLauncher).
  3. RLauncher démarre le processus R externe.
  4. En coordination avec le runtime R, BxlServer gère les échanges de données avec SQL Server et le stockage des résultats du travail.
  5. SQL Satellite gère les communications avec SQL Server sur les tâches et les processus associés.
  6. BxlServer utilise SQL Satellite pour communiquer l’état et les résultats à SQL Server.
  7. SQL Server obtient les résultats et ferme les tâches et les processus associés.

Scripts R exécutés à partir d’un client distant

Si vous vous connectez à partir d’un client de science des données distant qui prend en charge Microsoft R, vous pouvez exécuter des fonctions R dans le contexte de SQL Server en utilisant les fonctions RevoScaleR. Ce flux de travail, qui est différent du précédent, est résumé dans le diagramme suivant.

rsql_fromR2db-01

  1. Pour les fonctions RevoScaleR, le runtime R appelle une fonction de liaison qui, à son tour, appelle BxlServer.
  2. BxlServer est fourni avec Microsoft R et s’exécute dans un processus distinct du runtime R.
  3. BxlServer détermine la cible de la connexion et démarre une connexion à l’aide d’ODBC, en passant les informations d’identification fournies dans la chaîne de connexion de l’objet de source de données R.
  4. BxlServer ouvre une connexion à l’instance SQL Server.
  5. Pour un appel R, le service launchpad est appelé, lequel démarre ad le lanceur approprié, c’est-à-dire RLauncher. Le traitement du code R est ensuite semblable au processus d’exécution du code R à partir de T-SQL.
  6. RLauncher effectue un appel à l’instance du runtime R qui est installé sur l’ordinateur SQL Server.
  7. Les résultats sont retournés à BxlServer.
  8. SQL Satellite gère la communication avec SQL Server et le nettoyage des objets de travail associés.
  9. SQL Server transmet en retour les résultats au client.

Voir aussi