Share via


Python Machine Learning-scripts uitvoeren in Machine Learning Studio (klassiek)

VAN TOEPASSING OP:Van toepassing op. Machine Learning Studio (klassiek) is niet van toepassing op.Azure Machine Learning

Belangrijk

De ondersteuning voor Azure Machine Learning-studio (klassiek) eindigt op 31 augustus 2024. U wordt aangeraden om vóór die datum over te stappen naar Azure Machine Learning.

Vanaf 1 december 2021 kunt u geen nieuwe resources voor Azure Machine Learning-studio (klassiek) meer maken. Tot en met 31 augustus 2024 kunt u de bestaande resources van Azure Machine Learning-studio (klassiek) blijven gebruiken.

De documentatie van ML-studio (klassiek) wordt buiten gebruik gesteld en wordt in de toekomst mogelijk niet meer bijgewerkt.

Python is een waardevol hulpmiddel in de borst van veel gegevenswetenschappers. Deze wordt gebruikt in elke fase van typische machine learning-werkstromen, waaronder gegevensverkenning, functieextractie, modeltraining en validatie en implementatie.

In dit artikel wordt beschreven hoe u de Python-scriptmodule uitvoeren kunt gebruiken om Python-code te gebruiken in uw Machine Learning Studio-experimenten (klassiek) en webservices.

De Python-scriptmodule uitvoeren gebruiken

De primaire interface voor Python in Studio (klassiek) is via de module Python-script uitvoeren . Het accepteert maximaal drie invoerwaarden en produceert maximaal twee uitvoerwaarden, vergelijkbaar met de execute R Script-module . Python-code wordt ingevoerd in het parametervak via een speciaal benoemde invoerpuntfunctie met de naam azureml_main.

Python Script-module uitvoeren

Python-voorbeeldcode in moduleparametervak

Invoerparameters

Invoer voor de Python-module wordt weergegeven als Pandas DataFrames. De azureml_main functie accepteert maximaal twee optionele Pandas DataFrames als parameters.

De toewijzing tussen invoerpoorten en functieparameters is positioneel:

  • De eerste verbonden invoerpoort wordt toegewezen aan de eerste parameter van de functie.
  • De tweede invoer (indien verbonden) wordt toegewezen aan de tweede parameter van de functie.
  • De derde invoer wordt gebruikt om extra Python-modules te importeren.

Gedetailleerdere semantiek over hoe de invoerpoorten worden toegewezen aan parameters van de azureml_main functie, worden hieronder weergegeven.

Tabel met configuraties van invoerpoorten en resulterende Python-handtekening

Retourwaarden voor uitvoer

De azureml_main functie moet één Pandas DataFrame retourneren die is verpakt in een Python-reeks , zoals een tuple, lijst of NumPy-matrix. Het eerste element van deze reeks wordt geretourneerd naar de eerste uitvoerpoort van de module. De tweede uitvoerpoort van de module wordt gebruikt voor visualisaties en vereist geen retourwaarde. Dit schema wordt hieronder weergegeven.

Invoerpoorten toewijzen aan parameters en retourwaarde naar uitvoerpoort

Vertaling van invoer- en uitvoergegevenstypen

Studio-gegevenssets zijn niet hetzelfde als Panda DataFrames. Als gevolg hiervan worden invoergegevenssets in Studio (klassiek) geconverteerd naar Pandas DataFrame en worden de uitvoergegevenssets weer geconverteerd naar Studio-gegevenssets (klassiek). Tijdens dit conversieproces worden ook de volgende vertalingen uitgevoerd:

Python-gegevenstype Procedure voor vertaling van Studio
Tekenreeksen en numerieke tekst Vertaald als is
Pandas 'NA' Vertaald als 'Ontbrekende waarde'
Indexvectoren Niet-ondersteund*
Niet-tekenreekskolomnamen Kolomnamen aanroepen str
Dubbele kolomnamen Voeg numeriek achtervoegsel toe: (1), (2), (3), enzovoort.

*Alle invoergegevensframes in de Python-functie hebben altijd een 64-bits numerieke index van 0 tot het aantal rijen min 1

Bestaande Python-scriptmodules importeren

De back-end die wordt gebruikt om Python uit te voeren, is gebaseerd op Anaconda, een veelgebruikte wetenschappelijke Python-distributie. Het wordt geleverd met bijna 200 van de meest voorkomende Python-pakketten die worden gebruikt in gegevensgerichte workloads. Studio (klassiek) biedt momenteel geen ondersteuning voor het gebruik van pakketbeheersystemen zoals Pip of Conda voor het installeren en beheren van externe bibliotheken. Als u aanvullende bibliotheken nodig hebt, gebruikt u het volgende scenario als richtlijn.

Een veelvoorkomende use-case is het opnemen van bestaande Python-scripts in Studio-experimenten (klassiek). De Module Python Script uitvoeren accepteert een zip-bestand met Python-modules op de derde invoerpoort. Het bestand wordt tijdens runtime uitgepakt door het uitvoeringsframework en de inhoud wordt toegevoegd aan het bibliotheekpad van de Python-interpreter. De azureml_main invoerpuntfunctie kan deze modules vervolgens rechtstreeks importeren.

Bekijk bijvoorbeeld het bestand Hello.py met een eenvoudige 'Hallo wereld'-functie.

Door de gebruiker gedefinieerde functie in Hello.py bestand

Vervolgens maken we een bestand Hello.zip dat Hello.py bevat:

Zip-bestand met door de gebruiker gedefinieerde Python-code

Upload het zip-bestand als een gegevensset naar Studio (klassiek). Maak en voer vervolgens een experiment uit dat gebruikmaakt van de Python-code in het Hello.zip-bestand door het te koppelen aan de derde invoerpoort van de Module Python-script uitvoeren , zoals wordt weergegeven in de volgende afbeelding.

Voorbeeldexperiment met Hello.zip als invoer voor een Python-scriptmodule uitvoeren

Door de gebruiker gedefinieerde Python-code die is geüpload als een zip-bestand

De uitvoer van de module laat zien dat het zip-bestand is uitgepakt en dat de functie print_hello is uitgevoerd.

Module-uitvoer met door de gebruiker gedefinieerde functie

Toegang tot Azure Storage-blobs

U hebt toegang tot gegevens die zijn opgeslagen in een Azure Blob Storage-account met behulp van de volgende stappen:

  1. Download het Azure Blob Storage-pakket voor Python lokaal.
  2. Upload het zip-bestand naar uw Studio-werkruimte (klassiek) als een gegevensset.
  3. Uw BlobService-object maken met protocol='http'
from azure.storage.blob import BlockBlobService

# Create the BlockBlockService that is used to call the Blob service for the storage account
block_blob_service = BlockBlobService(account_name='account_name', account_key='account_key', protocol='http')
  1. Veilige overdracht uitschakelen die vereist is op het tabblad Opslagconfiguratie

Beveiligde overdracht uitschakelen die vereist is in de Azure Portal

Python-scripts operationeel maken

Alle Execute Python Script-modules die worden gebruikt in een scoreexperiment, worden aangeroepen wanneer ze worden gepubliceerd als een webservice. In de onderstaande afbeelding ziet u bijvoorbeeld een scoreexperiment dat de code bevat om één Python-expressie te evalueren.

Studio-werkruimte voor een webservice

Python Pandas-expressie

Een webservice die is gemaakt op basis van dit experiment, zou de volgende acties uitvoeren:

  1. Een Python-expressie als invoer gebruiken (als een tekenreeks)
  2. De Python-expressie verzenden naar de Python-interpreter
  3. Retourneert een tabel met zowel de expressie als het geëvalueerde resultaat.

Werken met visualisaties

Plots die zijn gemaakt met MatplotLib, kunnen worden geretourneerd door het Python-script uitvoeren. Plots worden echter niet automatisch omgeleid naar afbeeldingen zoals ze zijn bij het gebruik van R. De gebruiker moet dus expliciet eventuele diagrammen opslaan in PNG-bestanden.

Als u afbeeldingen wilt genereren vanuit MatplotLib, moet u de volgende stappen uitvoeren:

  1. Schakel de back-end over naar AGG vanuit de standaardweergave op qtbasis.
  2. Maak een nieuw afbeeldingsobject.
  3. Haal de as op en genereer alle diagrammen erin.
  4. Sla de afbeelding op in een PNG-bestand.

Dit proces wordt geïllustreerd in de volgende afbeeldingen die een spreidingsmatrix maken met behulp van de functie scatter_matrix in Pandas.

Code om MatplotLib-afbeeldingen op te slaan in afbeeldingen

Klik op Visualiseren op een Python-scriptmodule uitvoeren om de afbeeldingen weer te geven

Grafieken visualiseren voor een voorbeeldexperiment met behulp van Python-code

Het is mogelijk om meerdere afbeeldingen te retourneren door ze op te slaan in verschillende afbeeldingen. De Studio-runtime (klassiek) haalt alle afbeeldingen op en voegt deze samen voor visualisatie.

Geavanceerde voorbeelden

De Anaconda-omgeving die in Studio (klassiek) is geïnstalleerd, bevat algemene pakketten zoals NumPy, SciPy en Scikits-Learn. Deze pakketten kunnen effectief worden gebruikt voor gegevensverwerking in een machine learning-pijplijn.

Het volgende experiment en script illustreren bijvoorbeeld het gebruik van ensembleleerders in Scikits-Learn om belangrijke scores voor functies voor een gegevensset te berekenen. De scores kunnen worden gebruikt om selectie van functies onder supervisie uit te voeren voordat ze worden ingevoerd in een ander model.

Dit is de Python-functie die wordt gebruikt om de urgentiescores te berekenen en de functies te orden op basis van de scores:

Functie om functies te rangschikken op scores

Het volgende experiment berekent en retourneert vervolgens de urgentiescores van functies in de gegevensset Pima Indian Diabetes in Machine Learning Studio (klassiek):

Experimenteren met het rangschikken van functies in de Gegevensset Pima Indian Diabetes met behulp van Python

Visualisatie van de uitvoer van de module Python-script uitvoeren

Beperkingen

De module Python-script uitvoeren heeft momenteel de volgende beperkingen:

Uitvoering in sandbox

De Python-runtime is momenteel in de sandbox geplaatst en staat geen toegang toe tot het netwerk of het lokale bestandssysteem op een permanente manier. Alle bestanden die lokaal zijn opgeslagen, worden geïsoleerd en verwijderd zodra de module is voltooid. De Python-code heeft geen toegang tot de meeste mappen op de computer waarop deze wordt uitgevoerd, de uitzondering is de huidige map en de bijbehorende submappen.

Gebrek aan geavanceerde ondersteuning voor ontwikkeling en foutopsporing

De Python-module biedt momenteel geen ondersteuning voor IDE-functies zoals intellisense en foutopsporing. Als de module tijdens runtime mislukt, is ook de volledige Python-stacktracering beschikbaar. Maar deze moet worden weergegeven in het uitvoerlogboek voor de module. We raden u momenteel aan Python-scripts te ontwikkelen en fouten op te sporen in een omgeving zoals IPython en vervolgens de code in de module te importeren.

Uitvoer van één gegevensframe

Het Python-toegangspunt mag slechts één gegevensframe retourneren als uitvoer. Het is momenteel niet mogelijk om willekeurige Python-objecten, zoals getrainde modellen, rechtstreeks terug te sturen naar de Studio-runtime (klassiek). Net zoals Execute R Script, dat dezelfde beperking heeft, is het in veel gevallen mogelijk om objecten te kiezen in een bytematrix en die vervolgens binnen een gegevensframe te retourneren.

De Installatie van Python kan niet worden aangepast

Momenteel is de enige manier om aangepaste Python-modules toe te voegen via het zip-bestandsmechanisme dat eerder is beschreven. Hoewel dit haalbaar is voor kleine modules, is het lastig voor grote modules (met name modules met systeemeigen DLL's) of een groot aantal modules.

Volgende stappen

Raadpleeg het Python Developer Center voor meer informatie.