Spouštění skriptů strojového učení Pythonu v nástroji Machine Learning Studio (classic)

PLATÍ PRO:Platí pro. Machine Learning Studio (classic) se nevztahuje na.Azure Machine Learning

Důležité

Podpora studia Machine Learning (Classic) skončí 31. srpna 2024. Doporučujeme do tohoto data přejít na službu Azure Machine Learning.

Od 1. prosince 2021 nebude možné vytvářet nové prostředky studia Machine Learning (Classic). Do 31. srpna 2024 můžete pokračovat v používání stávajících prostředků studia Machine Learning (Classic).

Dokumentace ke studiu ML (Classic) se vyřazuje z provozu a v budoucnu se nemusí aktualizovat.

Python je cenný nástroj v hrudi mnoha datových vědců. Používá se v každé fázi typických pracovních postupů strojového učení, včetně zkoumání dat, extrakce funkcí, trénování modelu a ověřování a nasazení.

Tento článek popisuje, jak můžete pomocí modulu Spustit skript Pythonu použít kód Pythonu v experimentech a webových službách machine Learning Studia (classic).

Použití modulu Spustit skript Pythonu

Primární rozhraní pythonu v sadě Studio (classic) je prostřednictvím modulu Execute Python Script . Přijímá až tři vstupy a vytváří až dva výstupy, podobně jako modul Execute R Script . Kód Pythonu je zadán do pole parametru prostřednictvím speciálně pojmenované vstupní-bod funkce s názvem azureml_main.

Spuštění modulu Skript Pythonu

Ukázkový kód Pythonu v poli parametru modulu

Vstupní parametry

Vstupy do modulu Python jsou zpřístupněny jako datové rámce Pandas. Funkce azureml_main přijímá jako parametry až dva volitelné datové rámce Pandas.

Mapování mezi vstupními porty a parametry funkce je poziční:

  • První připojený vstupní port je namapován na první parametr funkce.
  • Druhý vstup (pokud je připojen) je namapován na druhý parametr funkce.
  • Třetí vstup se používá k importu dalších modulů Pythonu.

Podrobnější sémantiku způsobu mapování vstupních portů na parametry azureml_main funkce najdete níže.

Tabulka konfigurací vstupních portů a výsledného podpisu Pythonu

Výstupní návratové hodnoty

Funkce azureml_main musí vrátit jeden datový rámec Pandas zabalený v sekvenci Pythonu, jako je řazená kolekce členů, seznam nebo pole NumPy. První prvek této sekvence se vrátí na první výstupní port modulu. Druhý výstupní port modulu se používá pro vizualizace a nevyžaduje návratovou hodnotu. Toto schéma je znázorněno níže.

Mapování vstupních portů na parametry a návratová hodnota na výstupní port

Překlad vstupních a výstupních datových typů

Datové sady studio nejsou stejné jako datové rámce Panda. V důsledku toho se vstupní datové sady v sadě Studio (classic) převedou na datový rámec Pandas a výstupní datové rámce se převedou zpět na datové sady Studio (classic). Během tohoto procesu převodu se provádějí také následující překlady:

Datový typ Pythonu Postup překladu studia
Řetězce a číselné hodnoty Přeloženo tak, jak je
Pandas 'NA' Přeloženo jako Chybějící hodnota
Vektory indexu Nepodporováno*
Názvy sloupců bez řetězce Volání str názvů sloupců
Duplicitní názvy sloupců Přidejte číselnou příponu: (1), (2), (3) atd.

*Všechny vstupní datové rámce ve funkci Pythonu mají vždy 64bitový číselný index od 0 do počtu řádků minus 1.

Import existujících modulů skriptů Pythonu

Back-end použitý ke spuštění Pythonu je založený na Anacondě, široce používané vědecké distribuci Pythonu. Součástí je téměř 200 nejběžnějších balíčků Pythonu používaných v úlohách orientovaných na data. Studio (classic) v současné době nepodporuje použití systémů pro správu balíčků, jako je Pip nebo Conda k instalaci a správě externích knihoven. Pokud zjistíte, že je potřeba začlenit další knihovny, použijte jako vodítko následující scénář.

Běžným případem použití je začlenění existujících skriptů Pythonu do experimentů sady Studio (classic). Modul Execute Python Script přijímá soubor ZIP obsahující moduly Pythonu na třetím vstupním portu. Soubor se rozbalí rozhraním spouštění za běhu a obsah se přidá do cesty knihovny interpretu Pythonu. Funkce vstupního azureml_main bodu pak může tyto moduly importovat přímo.

Představte si například soubor Hello.py obsahující jednoduchou funkci Hello, World.

Uživatelem definovaná funkce v souboru Hello.py

Dále vytvoříme soubor Hello.zip, který obsahuje Hello.py:

Soubor ZIP obsahující uživatelem definovaný kód Pythonu

Nahrajte soubor ZIP jako datovou sadu do studia (classic). Pak vytvořte a spusťte experiment, který používá kód Pythonu v souboru Hello.zip tak, že ho připojíte k třetímu vstupnímu portu modulu Spustit skript Pythonu , jak je znázorněno na následujícím obrázku.

Ukázkový experiment s Hello.zip jako vstupem do modulu Execute Python Script

Uživatelem definovaný kód Pythonu nahraný jako soubor ZIP

Výstup modulu ukazuje, že soubor ZIP byl rozbalen a že funkce print_hello byla spuštěna.

Výstup modulu znázorňující uživatelem definovanou funkci

Přístup k objektům blob služby Azure Storage

K datům uloženým v účtu Azure Blob Storage můžete přistupovat pomocí následujícího postupu:

  1. Stáhněte balíček Azure Blob Storage pro Python místně.
  2. Nahrajte soubor ZIP do pracovního prostoru Studia (Classic) jako datovou sadu.
  3. Vytvoření objektu BlobService pomocí 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. Zakázání zabezpečeného přenosu požadovaného na kartě Nastavení konfigurace úložiště

Zakázání zabezpečeného přenosu požadovaného v Azure Portal

Zprovoznění skriptů Pythonu

Všechny moduly spustit skript Pythonu používané v experimentu s hodnocením se volají při publikování jako webová služba. Například na následujícím obrázku je vidět bodovací experiment, který obsahuje kód pro vyhodnocení jednoho výrazu Pythonu.

Pracovní prostor studio pro webovou službu

Výraz Python Pandas

Webová služba vytvořená z tohoto experimentu by řídila následující akce:

  1. Použití výrazu Pythonu jako vstupu (jako řetězce)
  2. Odeslání výrazu Pythonu do interpretu Pythonu
  3. Vrátí tabulku obsahující výraz i vyhodnocený výsledek.

Práce s vizualizacemi

Grafy vytvořené pomocí knihovny MatplotLib mohou být vráceny spuštěním skriptu Pythonu. Grafy se ale při použití jazyka R automaticky nepřesměrují na obrázky. Uživatel proto musí explicitně uložit všechny grafy do souborů PNG.

Pokud chcete generovat image z knihovny MatplotLib, musíte provést následující kroky:

  1. Přepněte back-end na AGG z výchozího vykreslovacího modulu založeného na Qt.
  2. Vytvořte nový objekt obrázku.
  3. Získejte osu a vygenerujte do ní všechny grafy.
  4. Uložte obrázek do souboru PNG.

Tento proces je znázorněn na následujících obrázcích, které vytvářejí bodovou matici grafu pomocí funkce scatter_matrix v Pandas.

Kód pro uložení obrázků matplotLib

Kliknutím na vizualizovat modul Spustit skript Pythonu zobrazíte obrázky.

Vizualizace grafů pro ukázkový experiment pomocí kódu Pythonu

Více obrázků je možné vrátit tak, že je uložíte do různých obrázků. Modul runtime Studia (Classic) převezme všechny image a zřetězí je pro vizualizaci.

Pokročilé příklady

Prostředí Anaconda nainstalované v sadě Studio (Classic) obsahuje běžné balíčky, jako jsou NumPy, SciPy a Scikits-Learn. Tyto balíčky lze efektivně použít ke zpracování dat v kanálu strojového učení.

Například následující experiment a skript ilustrují použití posluchačů souboru v Scikits-Learn k výpočtu skóre důležitosti funkcí pro datovou sadu. Skóre je možné použít k provedení výběru funkce pod dohledem před tím, než se do jiného modelu zasadí.

Tady je funkce Pythonu, která slouží k výpočtu skóre důležitosti a pořadí funkcí na základě skóre:

Funkce pro pořadí funkcí podle skóre

Následující experiment pak vypočítá a vrátí skóre důležitosti funkcí v datové sadě Pima Indian Diabetes v nástroji Machine Learning Studio (classic):

Experimentování s pořadím funkcí v datové sadě Pima Indian Diabetes pomocí Pythonu

Vizualizace výstupu modulu Execute Python Script

Omezení

Modul Spustit skript Pythonu má aktuálně následující omezení:

Spuštění v izolovaném prostoru (sandbox)

Modul runtime Pythonu je aktuálně v izolovaném prostoru (sandbox) a trvale neumožňuje přístup k síti nebo místnímu systému souborů. Všechny soubory uložené místně jsou izolované a odstraněné po dokončení modulu. Kód Pythonu nemá přístup k většině adresářů na počítači, na kterém běží, výjimka je aktuální adresář a jeho podadresáře.

Nedostatek sofistikované podpory vývoje a ladění

Modul Python v současné době nepodporuje funkce IDE, jako je intellisense a ladění. Pokud modul selže za běhu, je k dispozici úplné trasování zásobníku Pythonu. Musí se ale zobrazit ve výstupním protokolu modulu. V současné době doporučujeme vyvíjet a ladit skripty Pythonu v prostředí, jako je IPython, a pak kód naimportovat do modulu.

Výstup s jedním datovým rámcem

Vstupní bod Pythonu je povolený pouze k vrácení jednoho datového rámce jako výstupu. V současné době není možné vracet libovolné objekty Pythonu, jako jsou natrénované modely přímo zpět do modulu runtime Studio (Classic). Stejně jako spustit skript jazyka R, který má stejné omezení, je možné v mnoha případech vybrat objekty do pole bajtů a vrátit ho uvnitř datového rámce.

Nemožnost přizpůsobit instalaci Pythonu

V současné době je jediným způsobem, jak přidat vlastní moduly Pythonu, prostřednictvím mechanismu souboru ZIP popsaného výše. I když je to možné pro malé moduly, je obtížné pro velké moduly (zejména moduly s nativními knihovny DLL) nebo velký počet modulů.

Další kroky

Další informace naleznete ve Středisku pro vývojáře Python.