Udostępnij za pomocą


Wykonywanie skryptów uczenia maszynowego w języku Python w usłudze Machine Learning Studio (wersja klasyczna)

DOTYCZY:Dotyczy.Machine Learning Studio (wersja klasyczna) Nie dotyczy.Azure Machine Learning

Ważne

Obsługa programu Machine Learning Studio (wersja klasyczna) zakończy się 31 sierpnia 2024 r. Zalecamy przejście do usługi Azure Machine Learning przed tym terminem.

Od 1 grudnia 2021 r. nie będzie można tworzyć nowych zasobów programu Machine Learning Studio (wersja klasyczna). Do 31 sierpnia 2024 r. można będzie nadal korzystać z istniejących zasobów programu Machine Learning Studio (wersja klasyczna).

Dokumentacja programu ML Studio (wersja klasyczna) jest wycofywana i może nie być aktualizowana w przyszłości.

Python to cenne narzędzie w klatce narzędzi wielu analityków danych. Jest on używany na każdym etapie typowych przepływów pracy uczenia maszynowego, w tym eksploracji danych, wyodrębniania funkcji, trenowania i walidacji modelu oraz wdrażania.

W tym artykule opisano sposób użycia modułu Execute Python Script (Wykonywanie skryptu języka Python) do używania kodu języka Python w eksperymentach usługi Machine Learning Studio (klasycznych) i usługach internetowych.

Korzystanie z modułu Execute Python Script (Wykonywanie skryptu języka Python)

Podstawowym interfejsem języka Python w programie Studio (klasycznym) jest moduł Execute Python Script (Wykonywanie skryptu języka Python). Akceptuje maksymalnie trzy dane wejściowe i generuje maksymalnie dwa dane wyjściowe, podobnie jak w module Execute R Script (Wykonywanie skryptu języka R). Kod języka Python jest wprowadzany w polu parametrów za pomocą specjalnie nazwanej funkcji punktu wejścia o nazwie azureml_main.

Wykonywanie modułu skryptu języka Python

Przykładowy kod języka Python w polu parametru modułu

Parametry wejściowe

Dane wejściowe modułu Python są udostępniane jako ramki danych Pandas. Funkcja azureml_main akceptuje maksymalnie dwa opcjonalne ramki danych Pandas jako parametry.

Mapowanie między portami wejściowymi i parametrami funkcji jest pozycyjne:

  • Pierwszy połączony port wejściowy jest mapowany na pierwszy parametr funkcji.
  • Drugie dane wejściowe (jeśli połączono) są mapowane na drugi parametr funkcji.
  • Trzecie dane wejściowe są używane do importowania dodatkowych modułów języka Python.

Bardziej szczegółowa semantyka mapowania portów wejściowych na parametry funkcji azureml_main jest przedstawiona poniżej.

Tabela konfiguracji portów wejściowych i wynikowy podpis języka Python

Wyjściowe wartości zwracane

Funkcja azureml_main musi zwrócić pojedynczą ramkę danych Pandas opakowaną w sekwencję języka Python, taką jak krotka, lista lub tablica NumPy. Pierwszy element tej sekwencji jest zwracany do pierwszego portu wyjściowego modułu. Drugi port wyjściowy modułu jest używany do wizualizacji i nie wymaga wartości zwracanej. Ten schemat jest pokazany poniżej.

Mapowanie portów wejściowych na parametry i zwracanie wartości do portu wyjściowego

Tłumaczenie typów danych wejściowych i wyjściowych

Zestawy danych Studio nie są takie same jak Panda DataFrames. W związku z tym wejściowe zestawy danych w programie Studio (klasycznym) są konwertowane na ramkę danych Biblioteki Pandas, a wyjściowe ramki danych są konwertowane z powrotem na zestawy danych programu Studio (klasyczne). Podczas tego procesu konwersji wykonywane są również następujące tłumaczenia:

Typ danych języka Python Procedura tłumaczenia w programie Studio
Ciągi i cyfry Przetłumaczone bez zmian
Pandas 'NA' Przetłumaczone jako "Brak wartości"
Wektory indeksu Nieobsługiwane*
Nazwy kolumn niezawierające ciągi znaków Wywołaj str na nazwach kolumn
Zduplikowane nazwy kolumn Dodaj sufiks liczbowy: (1), (2), (3) itd.

* Wszystkie ramki danych wejściowych w funkcji języka Python zawsze mają 64-bitowy indeks liczbowy z zakresu od 0 do liczby wierszy minus 1

Importowanie istniejących modułów skryptów języka Python

Zaplecze używane do wykonywania języka Python jest oparte na anaconda, powszechnie używanej dystrybucji języka Python. Zawiera blisko 200 najpopularniejszych pakietów języka Python używanych w obciążeniach skoncentrowanych na danych. Program Studio (wersja klasyczna) nie obsługuje obecnie używania systemów zarządzania pakietami, takich jak lub Conda, do instalowania bibliotek zewnętrznych i zarządzania nimi. Jeśli okaże się, że konieczne jest dołączenie dodatkowych bibliotek, skorzystaj z poniższego scenariusza jako przewodnika.

Typowym przypadkiem użycia jest dołączenie istniejących skryptów języka Python do eksperymentów programu Studio (klasycznych). Moduł Execute Python Script (Wykonywanie skryptu języka Python) akceptuje plik zip zawierający moduły języka Python na trzecim porcie wejściowym. Plik jest rozpakowywany przez framework wykonawczy w czasie pracy, a zawartość jest dodawana do ścieżki biblioteki interpretera języka Python. azureml_main Funkcja punktu wejścia może następnie bezpośrednio zaimportować te moduły.

Rozważmy na przykład plik Hello.py zawierający prostą funkcję "Hello, World".

Funkcja zdefiniowana przez użytkownika w pliku Hello.py

Następnie utworzymy plik Hello.zip, który zawiera plik Hello.py.

Plik zip zawierający kod języka Python zdefiniowany przez użytkownika

Przekaż plik zip jako zestaw danych do programu Studio (wersja klasyczna). Następnie utwórz i uruchom eksperyment, który używa kodu języka Python w pliku Hello.zip, dołączając go do trzeciego portu wejściowego modułu Execute Python Script (Wykonywanie skryptu języka Python), jak pokazano na poniższej ilustracji.

Przykładowy eksperyment z Hello.zip jako dane wejściowe do modułu Execute Python Script

Kod języka Python zdefiniowany przez użytkownika przekazany jako plik zip

Dane wyjściowe modułu pokazują, że plik zip został rozpakowany i że funkcja print_hello została uruchomiona.

Dane wyjściowe modułu przedstawiające funkcję zdefiniowaną przez użytkownika

Uzyskiwanie dostępu do obiektów blob usługi Azure Storage

Dostęp do danych przechowywanych na koncie usługi Azure Blob Storage można uzyskać, wykonując następujące kroki:

  1. Pobierz lokalnie pakiet usługi Azure Blob Storage dla języka Python.
  2. Przekaż plik zip do obszaru roboczego programu Studio (wersja klasyczna) jako zestaw danych.
  3. Tworzenie obiektu BlobService za pomocą polecenia 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. Wyłącz wymagany bezpieczny transfer na karcie Konfiguracja ustawień magazynu

Wyłącz bezpieczny transfer w Azure Portal

Operacjonalizacja skryptów języka Python

Wszystkie moduły Execute Python Script używane w eksperymencie oceny są uruchamiane po opublikowaniu jako usługa internetowa. Na przykład na poniższej ilustracji przedstawiono eksperyment oceniania zawierający kod do oceny pojedynczego wyrażenia języka Python.

Obszar roboczy programu Studio dla usługi internetowej

Wyrażenie biblioteki Pandas języka Python

Usługa internetowa utworzona na podstawie tego eksperymentu podejmie następujące działania:

  1. Weź wyrażenie języka Python jako dane wejściowe (jako ciąg)
  2. Wysyłanie wyrażenia języka Python do interpretera języka Python
  3. Zwraca tabelę zawierającą zarówno wyrażenie, jak i obliczony wynik.

Praca z wizualizacjami

Wykresy utworzone przy użyciu biblioteki MatplotLib mogą być zwracane przez Execute Python Script. Jednak wykresy nie są automatycznie przekierowywane do obrazów, jak ma to miejsce w programie R. Dlatego użytkownik musi samodzielnie zapisać wszelkie wykresy w plikach PNG.

Aby wygenerować obrazy z biblioteki MatplotLib, należy wykonać następujące czynności:

  1. Przełącz zaplecze na "AGG" z domyślnego renderera opartego na Qt.
  2. Utwórz nowy obiekt figury.
  3. Pobierz oś i wygeneruj do niej wszystkie wykresy.
  4. Zapisz rysunek w pliku PNG.

Ten proces został zilustrowany na poniższych obrazach, które tworzą macierz wykresów rozrzutu z użyciem funkcji scatter_matrix w bibliotece Pandas.

Kod zapisywania rysunków biblioteki MatplotLib na obrazach

Kliknij pozycję Visualize (Wizualizacja) w module Execute Python Script (Wykonywanie skryptu języka Python), aby wyświetlić rysunki

Wizualizowanie wykresów dla przykładowego eksperymentu przy użyciu kodu w języku Python

Można zwrócić wiele wykresów, zapisując je jako osobne pliki graficzne. Środowisko uruchomieniowe programu Studio (wersja klasyczna) pobiera wszystkie obrazy i łączy je w celu wizualizacji.

Zaawansowane przykłady

Środowisko Anaconda zainstalowane w programie Studio (klasycznym) zawiera typowe pakiety, takie jak NumPy, SciPy i Scikits-Learn. Te pakiety mogą być skutecznie wykorzystywane do przetwarzania danych w potoku uczenia maszynowego.

Na przykład poniższy eksperyment i skrypt ilustrują użycie uczących się zespołów w Scikit-Learn w celu obliczenia wartości ważności cech dla zestawu danych. Wyniki mogą służyć do przeprowadzania wyboru nadzorowanych funkcji przed wprowadzeniem ich do innego modelu.

Oto funkcja języka Python służąca do obliczania ocen ważności i porządkowania funkcji na podstawie wyników:

Funkcja klasyfikacji funkcji według wyników

Następnie poniższy eksperyment oblicza i zwraca wyniki ważności funkcji w zestawie danych "Pima Indian Diabetes" w usłudze Machine Learning Studio (wersja klasyczna):

Eksperymentowanie w celu klasyfikacji funkcji w zestawie danych Pima Indian Diabetes przy użyciu języka Python

Wizualizacja danych wyjściowych modułu Execute Python Script (Wykonywanie skryptu języka Python)

Ograniczenia

Moduł Execute Python Script (Wykonywanie skryptu języka Python) ma obecnie następujące ograniczenia:

Wykonanie w piaskownicy

Środowisko uruchomieniowe Python jest obecnie odizolowane (sandboxed) i nie pozwala na trwały dostęp do sieci ani lokalnego systemu plików. Wszystkie pliki zapisane lokalnie są izolowane i usuwane po zakończeniu modułu. Kod języka Python nie może uzyskać dostępu do większości katalogów na maszynie, na której działa, wyjątek jest bieżącym katalogiem i jego podkatalogami.

Brak zaawansowanej obsługi programowania i debugowania

Moduł języka Python obecnie nie obsługuje funkcji IDE, takich jak intellisense i debugowanie. Ponadto jeśli moduł ulegnie awarii w czasie wykonywania, dostępny jest pełny ślad stosu języka Python. Należy jednak wyświetlić go w dzienniku danych wyjściowych modułu. Obecnie zalecamy opracowywanie i debugowanie skryptów języka Python w środowisku, takim jak IPython, a następnie importowanie kodu do modułu.

Dane wyjściowe pojedynczej ramki danych

Punkt wejścia języka Python może zwracać tylko jedną ramkę danych jako dane wyjściowe. Obecnie nie można zwrócić dowolnych obiektów języka Python, takich jak wytrenowane modele bezpośrednio do środowiska uruchomieniowego programu Studio (klasycznego). Podobnie jak Execute R Script, które ma to samo ograniczenie, w wielu przypadkach można serializować obiekty do tablicy bajtów, a następnie zwrócić je wewnątrz ramki danych.

Brak możliwości dostosowywania instalacji języka Python

Obecnie jedynym sposobem dodawania niestandardowych modułów języka Python jest mechanizm plików zip opisany wcześniej. Chociaż jest to możliwe w przypadku małych modułów, jest to kłopotliwe w przypadku dużych modułów (zwłaszcza modułów z natywnymi bibliotekami DLL) lub dużą liczbą modułów.

Następne kroki

Więcej informacji możesz znaleźć w Centrum deweloperów języka Python.