Lier des espaces de travail Azure Synapse Analytics et Azure Machine Learning et attacher des pools Apache Spark (déconseillé)

S’APPLIQUE À : SDK Python azureml v1

Avertissement

L’intégration d’Azure Synapse Analytics à Azure Machine Learning disponible dans le SDK Python v1 est déconseillée. Les utilisateurs peuvent continuer à utiliser l’espace de travail Synapse, inscrit auprès d’Azure Machine Learning, en tant que service lié. Toutefois, un nouvel espace de travail Synapse ne peut plus être inscrit auprès d’Azure Machine Learning en tant que service lié. Nous vous recommandons d’utiliser le calcul serverless Spark et les pools Spark Synapse attachés, disponibles dans l’interface CLI v2 et le kit de développement logiciel (SDK) Python v2. Pour plus d’informations, consultez https://aka.ms/aml-spark.

Dans cet article, vous allez découvrir comment créer un service lié qui relie votre espace de travail Azure Synapse Analytics et votre espace de travail Azure Machine Learning.

Avec un espace de travail Azure Machine Learning, lié à un espace de travail Azure Synapse, vous pouvez attacher un pool Apache Spark, à technologie Azure Synapse Analytics, en tant que ressource de calcul dédiée. Vous pouvez utiliser cette ressource pour le data wrangling à grande échelle, ou vous pouvez effectuer un entraînement de modèles, le tout à partir du même notebook Python.

Vous pouvez lier votre espace de travail ML et votre espace de travail Synapse avec le kit SDK Python ou Azure Machine Learning studio. Vous pouvez aussi lier des espaces de travail, et attacher un pool Synapse Spark, avec un modèle Azure Resource Manager (ARM) unique.

Prérequis

Important

Pour établir correctement une liaison à l’espace de travail Synapse, vous devez disposer du rôle Propriétaire dans cet espace de travail. Vérifiez votre accès dans le portail Azure.

Si vous n’êtes que Contributeur à l’espace de travail Synapse et que vous n’avez pas de Propriétaire pour cet espace de travail Synapse, vous ne pouvez utiliser que des services liés existants. Pour plus d’informations, consultez Récupérer et utiliser un service lié existant.

Ce code utilise les classes LinkedService et SynapseWorkspaceLinkedServiceConfiguration pour

  • Lier votre espace de travail de Machine Learning ws à votre espace de travail Azure Synapse.
  • Inscrire votre espace de travail Synapse auprès d’Azure Machine Learning en tant que service lié.
import datetime  
from azureml.core import Workspace, LinkedService, SynapseWorkspaceLinkedServiceConfiguration

# Azure Machine Learning workspace
ws = Workspace.from_config()

#link configuration 
synapse_link_config = SynapseWorkspaceLinkedServiceConfiguration(
    subscription_id=ws.subscription_id,
    resource_group= 'your resource group',
    name='mySynapseWorkspaceName')

# Link workspaces and register Synapse workspace in Azure Machine Learning
linked_service = LinkedService.register(workspace = ws,              
                                            name = 'synapselink1',    
                                            linked_service_config = synapse_link_config)

Important

L’identité managée system_assigned_identity_principal_id est créée pour chaque service lié. Vous devez accorder à cette identité managée le rôle Administrateur Synapse Apache Spark de l’espace de travail Synapse avant de démarrer votre session Synapse. Pour plus d’informations, consultez Guide pratique pour gérer les attributions de rôles RBAC Azure Synapse dans Synapse Studio.

Pour rechercher le system_assigned_identity_principal_id d’un service lié spécifique, utilisez LinkedService.get('<your-mlworkspace-name>', '<linked-service-name>').

Gérer des services liés

Affichez tous les services liés associés à votre espace de travail de Machine Learning :

LinkedService.list(ws)

Pour dissocier vos espaces de travail, utilisez la méthode unregister() :

linked_service.unregister()

Liez votre espace de travail de Machine Learning et votre espace de travail Synapse par le biais d’Azure Machine Learning studio :

  1. Connectez-vous à Azure Machine Learning Studio.

  2. Sélectionnez Services liés dans la section Gérer du volet gauche.

  3. Sélectionnez Ajouter une intégration.

  4. Renseignez les champs du formulaire Lier l’espace de travail.

    Champ Description
    Nom Fournissez un nom pour votre service lié. Les références à ce service lié spécifique utilisent ce nom.
    Nom d’abonnement Sélectionnez le nom de votre abonnement associé à votre espace de travail de Machine Learning.
    Espace de travail Synapse Sélectionnez l’espace de travail Synapse vers lequel vous souhaitez établir un lien.
  5. Sélectionnez Suivant pour ouvrir le formulaire Sélectionner des pools Spark (facultatif) . Dans ce formulaire, vous sélectionnez le pool Synapse Spark à attacher à votre espace de travail.

  6. Sélectionnez Suivant pour ouvrir le formulaire Vérifier, et vérifiez vos sélections.

  7. Sélectionnez Créer pour achever le processus de création du service lié.

Obtenir un service lié existant

Avant de pouvoir attacher un calcul dédié au data wrangling, vous devez disposer d’un espace de travail Machine Learning lié à un espace de travail Azure Synapse Analytics. Nous employons le terme « service lié » pour faire référence à cet espace de travail. La récupération et l’utilisation d’un service lié existant nécessitent des autorisations Utilisateur ou Contributeur sur l’espace de travail Azure Synapse Analytics.

Cet exemple récupère un service lié existant, synapselink1, à partir de l’espace de travail, ws, avec la méthode get() :

from azureml.core import LinkedService

linked_service = LinkedService.get(ws, 'synapselink1')

Attacher un pool Synapse Spark en tant que calcul

Après avoir récupéré le service lié, attachez un pool Synapse Apache Spark en tant que ressource de calcul dédiée à vos tâches de data wrangling. Vous pouvez attacher des pools Apache Spark avec

Attacher un pool par le biais du studio

  1. Connectez-vous à Azure Machine Learning Studio.
  2. Sélectionnez Services liés dans la section Gérer du volet gauche.
  3. Sélectionnez votre espace de travail Synapse.
  4. Sélectionnez Pools Spark attachés en haut à gauche.
  5. Sélectionnez Attacher.
  6. Sélectionnez votre pool Apache Spark dans la liste et indiquez un nom.
    1. Cette liste identifie les pools Synapse Spark disponibles qui peuvent être attachés à votre calcul.
    2. Pour créer un pool Synapse Spark, consultez Démarrage rapide : Créer un pool Apache Spark serverless avec le portail Azure.
  7. Sélectionnez Attacher l’élément sélectionné.

Attacher un pool à l’aide du kit SDK Python

Vous pouvez également utiliser le SDK Python pour attacher un pool Apache Spark, comme illustré dans cet exemple de code :

from azureml.core.compute import SynapseCompute, ComputeTarget

attach_config = SynapseCompute.attach_configuration(linked_service, #Linked synapse workspace alias
                                                    type='SynapseSpark', #Type of assets to attach
                                                    pool_name=synapse_spark_pool_name) #Name of Synapse spark pool 

synapse_compute = ComputeTarget.attach(workspace= ws,                
                                       name= synapse_compute_name, 
                                       attach_configuration= attach_config
                                      )

synapse_compute.wait_for_completion()

Vérifiez que le pool Apache Spark est attaché.

ws.compute_targets['Synapse Spark pool alias']

Ce code

  1. Configure le SynapseCompute avec

    1. Le LinkedService, linked_service que vous avez créé ou récupéré à l’étape précédente.
    2. Le type de cible de calcul que vous souhaitez attacher, en l’occurrence SynapseSpark.
    3. Le nom du pool Apache Spark. Ce nom doit correspondre à un pool Apache Spark existant qui se trouve dans votre espace de travail Azure Synapse Analytics.
  2. Crée un ComputeTarget de Machine Learning en passant

    1. L’espace de travail de Machine Learning que vous souhaitez utiliser, ws
    2. Le nom que vous souhaitez utiliser pour faire référence au calcul dans l’espace de travail Azure Machine Learning.
    3. Le paramètre attach_configuration que vous avez spécifié lorsque vous avez configuré votre calcul Synapse.
      1. L’appel à ComputeTarget.attach() étant asynchrone, l’exécution de l’exemple est bloquée jusqu’à la fin de l’appel.

Étapes suivantes