Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku se dozvíte o distribuovaném trénování a o tom, jak ho Azure Machine Learning podporuje pro modely hlubokého učení.
V distribuovaném trénování rozdělíte úlohu tak, aby trénoval model a sdílel ho mezi několik miniprocesorů označovaných jako pracovní uzly. Tyto pracovní uzly fungují paralelně a urychlují trénování modelu. Distribuované trénování můžete použít pro tradiční modely strojového učení, ale je vhodnější pro výpočetní a časově náročné úlohy, jako je hluboké učení pro trénování hlubokých neurálních sítí.
Hluboké učení a distribuované trénování
Existují dva hlavní typy distribuovaného trénování: datový paralelismus a paralelismus modelu. Pro distribuované trénování modelů hlubokého učení podporuje sada Azure Machine Learning SDK v Pythonu integraci s PyTorchem a TensorFlowem. Obě jsou oblíbené architektury, které využívají datový paralelismus pro distribuované trénování a můžou pomocí Horovodu optimalizovat výpočetní rychlosti.
Modely strojového učení, které nevyžadují distribuované trénování, najdete v tématu Trénování modelů pomocí služby Azure Machine Learning , kde najdete různé způsoby trénování modelů pomocí sady Python SDK.
Datový paralelismus
Datový paralelismus je nejjednodušší implementovat dva distribuované přístupy trénování a je dostačující pro většinu případů použití.
V tomto přístupu rozdělíte data do oddílů, kde se počet oddílů rovná celkovému počtu dostupných uzlů ve výpočetním clusteru nebo bezserverovém výpočetním prostředí. Model zkopírujete v každém z těchto pracovních uzlů a každý uzel funguje na vlastní podmnožině dat. Mějte na paměti, že každý uzel musí mít kapacitu pro podporu trénovaného modelu, to znamená, že celý model se musí vejít do každého uzlu.
Tento přístup je znázorněný na následujícím schématu.
Každý uzel nezávisle vypočítá chyby mezi predikcemi pro své trénovací vzorky a označenými výstupy. Každý uzel pak aktualizuje svůj model na základě chyb a musí sdělit všechny jeho změny ostatním uzlům, aby se aktualizovaly jejich odpovídající modely. Pracovní uzly musí synchronizovat parametry modelu nebo gradienty na konci dávkového výpočtu, aby zajistily, že trénují konzistentní model.
Modelový paralelismus
V modelu paralelismu, označované také jako síťový paralelismus, segmentujete model do různých částí, které běží souběžně na různých uzlech. Každá část běží na stejných datech. Škálovatelnost této metody závisí na stupni paralelizace úloh algoritmu. Implementace je složitější než paralelismus dat.
Při modelové paralelizaci musí pracovní uzly synchronizovat sdílené parametry, obvykle jen jednou pro každý krok dopředné nebo zpětné propagace. Větší modely nejsou problémem, protože každý uzel pracuje na části modelu na stejných trénovacích datech.