Utiliser des packages Python privés avec Azure Machine Learning

S’APPLIQUE À :SDK Python azureml v1

Cet article explique comment utiliser des packages Python privés en toute sécurité au sein d'Azure Machine Learning. Les cas d'usage des packages Python privés sont les suivants :

  • Vous avez développé un package privé que vous ne souhaitez pas partager publiquement.
  • Vous souhaitez utiliser un référentiel organisé de packages stockés dans un pare-feu d'entreprise.

L'approche recommandée varie selon que vous disposez d'un petit nombre de packages destinés à un seul espace de travail Azure Machine Learning ou d'un référentiel complet de packages destinés à tous les espaces de travail d'une organisation.

Les packages privés sont utilisés par le biais de la classe Environment. Au sein d'un environnement, vous déclarez les packages Python à utiliser, y compris les packages privés. Pour en savoir plus sur l'utilisation des environnements dans Azure Machine Learning en général, consultez Utiliser des environnements.

Prérequis

Utiliser un petit nombre de packages à des fins de développement et de test

Pour un petit nombre de packages privés destinés à un seul espace de travail, utilisez la méthode statique Environment.add_private_pip_wheel(). Cette approche vous permet d'ajouter rapidement un package privé à l'espace de travail et peut parfaitement être utilisée à des fins de développement et de test.

Pointez l'argument filepath vers un fichier wheel local et exécutez la commande add_private_pip_wheel. La commande renvoie une URL qui permet de suivre l'emplacement du package dans votre espace de travail. Capturez l'URL de stockage et transmettez-la à la méthode add_pip_package().

whl_url = Environment.add_private_pip_wheel(workspace=ws,file_path = "my-custom.whl")
myenv = Environment(name="myenv")
conda_dep = CondaDependencies()
conda_dep.add_pip_package(whl_url)
myenv.python.conda_dependencies=conda_dep

En interne, le service Azure Machine Learning remplace l'URL par une URL SAS sécurisée afin que votre fichier wheel reste privé et sécurisé.

Utiliser un référentiel de packages du flux Azure DevOps

Si vous développez activement des packages Python pour votre application de Machine Learning, vous pouvez les héberger dans un référentiel Azure DevOps sous forme d'artefacts et les publier en tant que flux. Cette approche vous permet d'intégrer le flux de travail DevOps pour créer des packages avec votre espace de travail Azure Machine Learning. Pour apprendre à configurer des flux Python à l'aide d'Azure DevOps, consultez la page Bien démarrer avec les packages Python dans Azure Artifacts.

Cette approche utilise un jeton d'accès personnel pour l'authentification auprès du référentiel. La même approche est applicable à d'autres référentiels avec authentification basée sur un jeton, comme les référentiels GitHub privés.

  1. Créez un PAT (jeton d'accès personnel) pour votre instance d'Azure DevOps. Définissez l'étendue du jeton sur Empaquetage > Lire.

  2. Ajoutez l'URL et le PAT Azure DevOps en tant que propriétés de l'espace de travail, en utilisant la méthode Workspace.set_connection.

    from azureml.core import Workspace
    
    pat_token = input("Enter secret token")
    ws = Workspace.from_config()
    ws.set_connection(name="connection-1", 
       category = "PythonFeed",
       target = "https://pkgs.dev.azure.com/<MY-ORG>", 
       authType = "PAT", 
       value = pat_token) 
    
  3. Créez un environnement Azure Machine Learning et ajoutez des packages Python à partir du flux.

    from azureml.core import Environment
    from azureml.core.conda_dependencies import CondaDependencies
    
    env = Environment(name="my-env")
    cd = CondaDependencies()
    cd.add_pip_package("<my-package>")
    cd.set_pip_option("--extra-index-url https://pkgs.dev.azure.com/<MY-ORG>/_packaging/<MY-FEED>/pypi/simple")")
    env.python.conda_dependencies=cd
    

L'environnement est maintenant prêt à être utilisé à des fins d'apprentissage ou de déploiement de points de terminaison de service web. Lors de la création de l'environnement, le service Azure Machine Learning utilise le PAT pour s'authentifier auprès du flux avec l'URL de base correspondante.

Utiliser un référentiel de packages d’un stockage privé

Vous pouvez utiliser des packages à partir d'un compte de stockage Azure du pare-feu de votre organisation. Un tel compte de stockage peut contenir un ensemble organisé de packages ou un miroir interne de packages publiquement disponibles.

Pour configurer ce type de stockage privé, consultez Sécuriser un espace de travail Azure Machine Learning et les ressources associées. Vous devez également placer Azure Container Registry (ACR) derrière le réseau virtuel.

Important

Vous devez accomplir cette étape pour pouvoir effectuer l’apprentissage ou le déploiement de modèles à l’aide du référentiel de packages privé.

Une fois ces configurations effectuées, vous pouvez référencer les packages dans la définition de l’environnement Azure Machine Learning par leur URL complète dans le stockage d’objets blob Azure.

Étapes suivantes