Konfigurace a odeslání trénovacích úloh
PLATÍ PRO:Python SDK azureml v1
V tomto článku se dozvíte, jak nakonfigurovat a odeslat úlohy azure machine Učení pro trénování modelů. Fragmenty kódu vysvětlují klíčové části konfigurace a odeslání trénovacího skriptu. Pak pomocí jednoho z ukázkových poznámkových bloků vyhledejte kompletní kompletní funkční příklady.
Při trénování je běžné začít na místním počítači a později škálovat na cloudový cluster. Pomocí služby Azure Machine Učení můžete skript spustit na různých výpočetních cílech, aniž byste museli změnit trénovací skript.
Stačí definovat prostředí pro každý cílový výpočetní objekt v rámci konfigurace úlohy skriptu. Potom, když chcete spustit trénovací experiment na jiném cílovém výpočetním objektu, zadejte konfiguraci úlohy pro tento výpočetní objekt.
Požadavky
- Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet. Vyzkoušejte si bezplatnou nebo placenou verzi služby Azure Machine Učení ještě dnes
- Sada Azure Machine Učení SDK pro Python (v1) (>= 1.13.0)
- Pracovní prostor azure machine Učení
ws
- Cílový
my_compute_target
výpočetní objekt . Vytvoření cílového výpočetního objektu
Co je konfigurace spuštění skriptu?
ScriptRunConfig slouží ke konfiguraci informací potřebných k odeslání trénovací úlohy v rámci experimentu.
Svůj trénovací experiment odešlete pomocí objektu ScriptRunConfig. Tento objekt zahrnuje:
- source_directory: Zdrojový adresář, který obsahuje trénovací skript
- script: Trénovací skript ke spuštění
- compute_target: Cílový výpočetní objekt, na který se má spustit
- prostředí: Prostředí, které se má použít při spuštění skriptu
- a další konfigurovatelné možnosti (další informace najdete v referenční dokumentaci )
Trénování vašeho modelu
Vzor kódu pro odeslání trénovací úlohy je stejný pro všechny typy výpočetních cílů:
- Vytvoření experimentu ke spuštění
- Vytvoření prostředí, ve kterém se skript spouští
- Vytvoření ScriptRunConfig, který určuje cílový výpočetní objekt a prostředí
- Odeslání úlohy
- Čekání na dokončení úlohy
Nebo můžete:
- Odešlete spuštění HyperDrivu pro ladění hyperparametrů.
- Odešlete experiment prostřednictvím rozšíření VS Code.
Vytvoření experimentu
Vytvořte v pracovním prostoru experiment . Experiment je lehký kontejner, který pomáhá organizovat odesílání úloh a sledovat kód.
PLATÍ PRO:Python SDK azureml v1
from azureml.core import Experiment
experiment_name = 'my_experiment'
experiment = Experiment(workspace=ws, name=experiment_name)
Výběr cílového výpočetního objektu
Vyberte cílový výpočetní objekt, na kterém se bude trénovací skript spouštět. Pokud není v souboru ScriptRunConfig zadán žádný cílový výpočetní objekt, nebo pokud compute_target='local'
Učení azure machine Učení spustí váš skript místně.
Ukázkový kód v tomto článku předpokládá, že jste již vytvořili cílový výpočetní objekt my_compute_target
z části Požadavky.
Poznámka:
- Azure Databricks se nepodporuje jako cílový výpočetní objekt pro trénování modelu. Azure Databricks můžete použít k úlohám přípravy a nasazení dat.
- Pokud chcete vytvořit a připojit cílový výpočetní objekt pro trénování v clusteru Kubernetes s podporou Azure Arc, přečtěte si téma Konfigurace Učení počítačů s podporou Azure Arc.
Vytvořit prostředí
Prostředí Azure Machine Učení jsou zapouzdřením prostředí, ve kterém probíhá trénování strojového učení. Kolem trénovacích a bodovacích skriptů určují balíčky Pythonu, image Dockeru, proměnné prostředí a nastavení softwaru. Zadávají také moduly runtime (Python, Spark nebo Docker).
Můžete definovat vlastní prostředí nebo použít Učení kurátorované prostředí Azure Machine. Kurátorovaná prostředí jsou předdefinovaná prostředí, která jsou ve výchozím nastavení dostupná ve vašem pracovním prostoru. Tato prostředí jsou podporována imagemi Dockeru uloženými v mezipaměti, což snižuje náklady na přípravu úloh. Úplný seznam dostupných kurátorovaných prostředí najdete v tématu Azure Machine Učení Kurátorovaná prostředí.
Pro vzdálený cílový výpočetní objekt můžete začít jedním z těchto oblíbených kurátorovaných prostředí:
PLATÍ PRO:Python SDK azureml v1
from azureml.core import Workspace, Environment
ws = Workspace.from_config()
myenv = Environment.get(workspace=ws, name="AzureML-Minimal")
Další informace a podrobnosti o prostředích najdete v tématu Vytváření a používání softwarových prostředí ve službě Azure Machine Učení.
Místní cílový výpočetní objekt
Pokud je vaším cílovým výpočetním prostředím místní počítač, zodpovídáte za zajištění dostupnosti všech potřebných balíčků v prostředí Pythonu, kde se skript spouští. Slouží python.user_managed_dependencies
k použití aktuálního prostředí Pythonu (nebo Pythonu na zadané cestě).
PLATÍ PRO:Python SDK azureml v1
from azureml.core import Environment
myenv = Environment("user-managed-env")
myenv.python.user_managed_dependencies = True
# You can choose a specific Python environment by pointing to a Python path
# myenv.python.interpreter_path = '/home/johndoe/miniconda3/envs/myenv/bin/python'
Vytvoření konfigurace úlohy skriptu
Teď, když máte cílový výpočetní objekt (my_compute_target
viz Požadavky a prostředí (myenv
viz Vytvoření prostředí), vytvořte konfiguraci úlohy skriptu, která spouští trénovací skript (train.py
) umístěný v project_folder
adresáři:
PLATÍ PRO:Python SDK azureml v1
from azureml.core import ScriptRunConfig
src = ScriptRunConfig(source_directory=project_folder,
script='train.py',
compute_target=my_compute_target,
environment=myenv)
Pokud nezadáte prostředí, vytvoří se pro vás výchozí prostředí.
Pokud máte argumenty příkazového řádku, které chcete předat trénovacímu skriptu, můžete je zadat pomocí arguments
parametru konstruktoru ScriptRunConfig, arguments=['--arg1', arg1_val, '--arg2', arg2_val]
například .
Pokud chcete přepsat výchozí maximální povolenou dobu pro úlohu, můžete to provést prostřednictvím parametru max_run_duration_seconds
. Systém se pokusí úlohu automaticky zrušit, pokud trvá déle, než je tato hodnota.
Zadání konfigurace distribuované úlohy
Pokud chcete spustit distribuovanou trénovací úlohu, zadejte do parametru konfiguraci specifickou pro distribuovanou distributed_job_config
úlohu. Mezi podporované typy konfigurace patří MpiConfiguration, TensorflowConfiguration a PyTorchConfiguration.
Další informace a příklady spouštění distribuovaných úloh Horovod, TensorFlow a PyTorch najdete tady:
Odeslání experimentu
PLATÍ PRO:Python SDK azureml v1
run = experiment.submit(config=src)
run.wait_for_completion(show_output=True)
Důležité
Když odešlete trénovací úlohu, vytvoří se snímek adresáře, který obsahuje vaše trénovací skripty, a odešle se do cílového výpočetního objektu. Uloží se také jako součást experimentu ve vašem pracovním prostoru. Pokud změníte soubory a odešlete úlohu znovu, nahrají se jenom změněné soubory.
Chcete-li zabránit zahrnutí nepotřebných souborů do snímku, proveďte v adresáři ignorovaný soubor (.gitignore
nebo .amlignore
). Do tohoto souboru přidejte soubory a adresáře, které se mají vyloučit. Další informace o syntaxi pro použití v tomto souboru naleznete v syntaxi a vzory pro .gitignore
. Soubor .amlignore
používá stejnou syntaxi. Pokud existují oba soubory, .amlignore
použije se soubor a .gitignore
soubor se nepoužívá.
Další informace o snímcích najdete v tématu Snímky.
Důležité
Zvláštní složky Dvě složky, výstupy a protokoly, přijímají zvláštní zacházení se službou Azure Machine Učení. Když během trénování zapíšete soubory do složek pojmenovaných výstupů a protokolů , které jsou relativní k kořenovému adresáři (./outputs
a ./logs
v uvedeném pořadí), soubory se automaticky nahrají do historie úloh, abyste k nim měli přístup po dokončení úlohy.
Pokud chcete vytvořit artefakty během trénování (například soubory modelu, kontrolní body, datové soubory nebo vykreslené obrázky), zapište je do ./outputs
složky.
Podobně můžete do složky zapsat všechny protokoly z trénovací úlohy ./logs
. Pokud chcete využít integraci TensorBoardu služby Azure Machine Učení, ujistěte se, že do této složky napíšete protokoly TensorBoardu. Během probíhající úlohy budete moct spustit TensorBoard a streamovat tyto protokoly. Později budete moct také obnovit protokoly z některé z předchozích úloh.
Pokud chcete například stáhnout soubor zapsaný do výstupní složky do místního počítače po vzdálené úloze trénování:run.download_file(name='outputs/my_output_file', output_file_path='my_destination_path')
Sledování a integrace Gitu
Když spustíte trénovací úlohu, ve které je zdrojovým adresářem místní úložiště Git, uloží se informace o úložišti v historii úloh. Další informace najdete v tématu Integrace Gitu pro azure machine Učení.
Příklady poznámkových bloků
Příklady konfigurace úloh pro různé scénáře trénování najdete v těchto poznámkových blocích:
- Trénování na různých výpočetních cílech
- Trénování s využitím architektur ML
- tutorials/img-classification-part1-training.ipynb
Postupujte podle pokynů v článku věnovaném využití poznámkových bloků Jupyter k prozkoumání této služby a zjistěte, jak provozovat poznámkové bloky.
Řešení problému
AttributeError: Objekt RoundTripLoader nemá žádný atribut comment_handling: Tato chyba pochází z nové verze (v0.17.5)
ruamel-yaml
,azureml-core
závislost, která představuje zásadní změnuazureml-core
. Pokud chcete tuto chybu opravit, odinstalujteruamel-yaml
spuštěnímpip uninstall ruamel-yaml
a instalací jiné verzeruamel-yaml
. Podporované verze jsou verze v0.15.35 až v0.17.4 (včetně). Můžete to provést spuštěnímpip install "ruamel-yaml>=0.15.35,<0.17.5"
příkazu .Úloha selže s
jwt.exceptions.DecodeError
: Přesná chybová zpráva:jwt.exceptions.DecodeError: It is required that you pass in a value for the "algorithms" argument when calling decode()
.Zvažte upgrade na nejnovější verzi azureml-core:
pip install -U azureml-core
.Pokud. Dochází k tomuto problému pro místní úlohy, zkontrolujte verzi PyJWT nainstalovanou ve vašem prostředí, kde . spouštíte úlohy. Podporované verze PyJWT jsou < 2.0.0. Odinstalujte PyJWT z prostředí, pokud je >verze = 2.0.0. Můžete zkontrolovat verzi PyJWT, odinstalovat a nainstalovat správnou verzi následujícím způsobem:
- Spusťte příkazové prostředí a aktivujte prostředí Conda, ve kterém je nainstalované azureml-core.
- Zadejte a vyhledejte
pip freeze
PyJWT
, pokud se najde, měla by < být uvedená verze 2.0.0. - Pokud uvedená verze není podporovaná,
pip uninstall PyJWT
zadejte v příkazovém prostředí a zadejte y pro potvrzení. - Dá se nainstalovat pomocí
pip install 'PyJWT<2.0.0'
.
Pokud. odesíláte prostředí vytvořené uživatelem s vaší úlohou, zvažte použití nejnovější verze azureml-core v daném prostředí. Verze >= 1.18.0 azureml-core již pin PyJWT < 2.0.0. Pokud potřebujete v prostředí, které odešlete, použít verzi azureml-core < 1.18.0, nezapomeňte ve závislostech pip zadat PyJWT < 2.0.0.
ModuleErrors (žádný modul s názvem): Pokud . Při odesílání experimentů ve službě Azure Machine Učení dochází k chybě ModuleErrors, trénovací skript očekává instalaci balíčku, ale nepřidá se. Jakmile zadáte název balíčku, Azure Machine Učení nainstaluje balíček do prostředí použitého pro vaši trénovací úlohu.
Pokud. K odesílání experimentů používáte estimátory. V nástroji pro odhadce můžete zadat název
pip_packages
balíčku neboconda_packages
parametr podle toho, ze kterého zdroje chcete balíček nainstalovat. Můžete také zadat soubor yml se všemi závislostmi pomocíconda_dependencies_file
nebo vypsat všechny požadavky pip v souboru txt pomocípip_requirements_file
parametru. Pokud máte vlastní objekt prostředí Azure Machine Učení, který chcete přepsat výchozí image používanou odhadcem, můžete toto prostředí zadat pomocíenvironment
parametru konstruktoru estimátoru.Azure Machine Učení udržovat image Dockeru a jejich obsah je možné vidět v kontejnerech Azure Machine Učení. Závislosti specifické pro architekturu jsou uvedeny v příslušné dokumentaci k rozhraní:
Poznámka:
Pokud si myslíte, že je konkrétní balíček dostatečně běžný, abyste ho mohli přidat do služby Azure Machine Učení udržované image a prostředí, vytvořte problém s GitHubem ve službě Azure Machine Učení Containers.
NameError (název není definovaný), AttributeError (objekt nemá žádný atribut): Tato výjimka by měla pocházet z trénovacích skriptů. Pokud chcete získat další informace o konkrétním názvu, který není definovaný nebo chyba atributu, můžete se podívat na soubory protokolu z webu Azure Portal. V sadě SDK se můžete
run.get_details()
podívat na chybovou zprávu. Zobrazí se také seznam všech souborů protokolu vygenerovaných pro vaši úlohu. Než úlohu znovu odešlete, nezapomeňte se podívat na trénovací skript a chybu opravit.Úloha nebo odstranění experimentu: Experimenty je možné archivovat pomocí metody Experiment.archive nebo ze zobrazení karty Experiment v studio Azure Machine Learning klientovi pomocí tlačítka Archivovat experiment. Tato akce skryje experiment ze seznamu dotazů a zobrazení, ale neodstraní ho.
Trvalé odstranění jednotlivých experimentů nebo úloh se v současné době nepodporuje. Další informace o odstraňování prostředků pracovního prostoru najdete v tématu Export nebo odstranění dat pracovního prostoru služby Učení počítače.
Dokument metriky je příliš velký: Služba Azure Machine Učení má interní omezení velikosti objektů metrik, které je možné protokolovat najednou z trénovací úlohy. Pokud při protokolování metriky hodnot seznamu dojde k chybě Dokument metriky je příliš velký, zkuste seznam rozdělit na menší části, například:
run.log_list("my metric name", my_metric[:N]) run.log_list("my metric name", my_metric[N:])
Azure Machine Učení interně zřetězí bloky se stejným názvem metriky do souvislého seznamu.
Spuštění cílového výpočetního objektu trvá dlouho: Image Dockeru pro cílové výpočetní objekty se načítají ze služby Azure Container Registry (ACR). Azure Machine Učení ve výchozím nastavení vytvoří službu ACR, která používá úroveň služby Basic. Změna ACR pro váš pracovní prostor na úroveň Standard nebo Premium může zkrátit dobu potřebnou k vytváření a načítání imagí. Další informace najdete v článku Úrovně služby Azure Container Registry.
Další kroky
- Kurz: Trénování a nasazení modelu používá spravovaný cílový výpočetní objekt k trénování modelu.
- Podívejte se, jak trénovat modely s konkrétními architekturami ML, jako jsou Scikit-learn, TensorFlow a PyTorch.
- Zjistěte, jak efektivně ladit hyperparametry pro vytváření lepších modelů.
- Jakmile máte natrénovaný model, zjistěte , jak a kde nasazovat modely.
- Prohlédněte si referenční informace k sadě SDK třídy ScriptRunConfig.
- Použití služby Azure Machine Učení s virtuálními sítěmi Azure