Megosztás a következőn keresztül:


PyTorch-modell betanítása

Ez a cikk bemutatja, hogyan taníthatja be a PyTorch-modelleket az Azure Machine Learning designerBen a PyTorch-modell betanítása összetevőjével, például a DenseNet-et. A betanítás a modell definiálása és paramétereinek megadása után történik, és címkézett adatokat igényel.

Jelenleg a PyTorch-modell betanítása összetevő támogatja az egyetlen csomópontot és az elosztott betanítást is.

PyTorch-modell betanítása

  1. A tervezőben adja hozzá a DenseNet összetevőt vagy a ResNetet a folyamatvázlathoz.

  2. Adja hozzá a PyTorch-modell betanítása összetevőt a folyamathoz. Ezt az összetevőt a Modell betanítása kategóriában találja. Bontsa ki a Betanítás elemet, majd húzza a PyTorch-modell betanítása összetevőt a folyamatba.

    Megjegyzés

    A PyTorch-modell összetevő betanítása nagyobb adathalmazok GPU-típusú számítása esetén jobb, ha a folyamat sikertelen lesz. Az összetevő jobb oldali paneljén válassza ki az adott összetevő számítását a Másik számítási cél használata beállítással.

  3. A bal oldali bemeneten csatoljon egy nem betanított modellt. Csatolja a betanítási és érvényesítési adatkészletet a PyTorch-modell betanításának középső és jobb oldali bemenetéhez.

    Nem betanított modell esetén pyTorch-modellnek kell lennie, például a DenseNetnek; ellenkező esetben egy "InvalidModelDirectoryError" lesz dobva.

    Adatkészlet esetén a betanítási adatkészletnek egy címkézett képkönyvtárnak kell lennie. A címkézett képkönyvtár beszerzéséről a Konvertálás képkönyvtárba című témakörben tájékozódhat. Ha nincs címkézve, a rendszer egy "NotLabeledDatasetError" értéket ad.

    A betanítási adatkészlet és az érvényesítési adatkészlet címkéi azonosak, ellenkező esetben egy InvalidDatasetError elem jelenik meg.

  4. Az Epochs beállításnál adja meg, hogy hány korszakot szeretne betaníteni. A teljes adatkészletet a rendszer minden korszakban meg fogja jeleníteni, alapértelmezés szerint 5.

  5. A Batch méretéhez adja meg, hogy egy kötegben hány példány legyen betanítása alapértelmezés szerint 16.

  6. A Bemelegítési lépés száma mezőben adja meg, hogy hány korszakban szeretné bemelegíteni a betanítást abban az esetben, ha a kezdeti tanulási arány kissé túl nagy a konvergens kezdéshez, alapértelmezés szerint 0.

  7. A Tanulási arány beállításnál adjon meg egy értéket a tanulási arányhoz, az alapértelmezett érték pedig 0,001. A tanulási sebesség határozza meg az optimalizálóban használt lépés méretét, például az sgd-t minden alkalommal, amikor a modellt tesztelik és kijavítják.

    A sebesség kisebbre állításával gyakrabban teszteli a modellt, és fennáll annak a kockázata, hogy elakad egy helyi fennsíkon. A nagyobb sebesség beállításával gyorsabban konvergálhat, és fennáll annak a veszélye, hogy túllépi a valódi minimumot.

    Megjegyzés

    Ha a betanítás során a vonatvesztés nanná válik, amelyet a túl nagy tanulási arány okozhat, a tanulási arány csökkentése segíthet. Az elosztott betanításban a színátmenetes süllyedés stabilan tartásához a tényleges tanulási arányt az határozza meg lr * torch.distributed.get_world_size() , hogy a folyamatcsoport kötegmérete az egyetlen folyamathoz képest világméret-idő. A polinomiális tanulási sebesség romlása alkalmazható, és jobb teljesítményű modellt eredményezhet.

  8. Véletlenszerű magok esetén megadhat egy egész számértéket, amelyet magként szeretne használni. A mag használata akkor ajánlott, ha biztosítani szeretné a kísérlet reprodukálhatóságát a feladatok között.

  9. A Türelem beállításnál adja meg, hogy hány idő után állítsa le a betanítást, ha az érvényesítési veszteség nem csökken egymás után. alapértelmezés szerint 3.

  10. A Nyomtatási gyakoriság beállításnál adja meg a betanítási naplók nyomtatási gyakoriságát minden egyes korszakban, alapértelmezés szerint 10.

  11. Küldje el a folyamatot. Ha az adathalmaz mérete nagyobb, az eltarthat egy ideig, és a GPU-számítás ajánlott.

Elosztott betanítás

Az elosztott betanítás során a modell betanításához használt számítási feladat fel van osztva és megosztva több miniprocesszor között, úgynevezett feldolgozó csomópontok között. Ezek a munkavégző csomópontok párhuzamosan működnek a modell betanításának felgyorsítása érdekében. A tervező jelenleg támogatja az elosztott betanítást a PyTorch-modell összetevő betanításához .

Betanítási idő

Az elosztott betanítás lehetővé teszi, hogy a PyTorch-modell betanításával néhány óra alatt betanítsunk egy nagy adatkészletet, például az ImageNetet (1000 osztály, 1,2 millió kép). Az alábbi táblázat betanítási időt és teljesítményt mutat be az ImageNeten futó Resnet50 50 éves betanítása során, különböző eszközök alapján.

Eszközök Betanítási idő Betanítási átviteli sebesség Első 1. ellenőrzési pontosság Első 5 érvényesítési pontosság
16 V100 GPU 6h22min ~3200 kép/mp 68.83% 88.84%
8 V100 GPU 12h21min ~1670 kép/mp 68.84% 88.74%

Kattintson erre az összetevő "Metrikák" fülére, és tekintse meg a betanítási metrikák grafikonjait, például a "Képek betanítása másodpercenként" és a "Top 1 pontosság" elemet.

Képernyőkép a betanítási metrikákról

Elosztott betanítás engedélyezése

Ha engedélyezni szeretné az elosztott betanítást a PyTorch-modell betanítása összetevőhöz, az összetevő jobb oldali paneljén a Feladatbeállítások területen állíthatja be. Elosztott betanításhoz csak az AML Compute-fürt támogatott.

Megjegyzés

Az elosztott betanítás aktiválásához több GPU-ra van szükség, mivel az NCCL háttérrendszere, a PyTorch-modell betanítása összetevőnek cuda-ra van szüksége.

  1. Jelölje ki az összetevőt, és nyissa meg a jobb oldali panelt. Bontsa ki a Feladatbeállítások szakaszt .

    Az elosztott betanítás beállítását bemutató képernyőkép a runsettingban

  2. Győződjön meg arról, hogy az AML-számítás lehetőséget választja a számítási célhoz.

  3. Az Erőforrás elrendezése szakaszban a következő értékeket kell megadnia:

    • Csomópontok száma : A betanításhoz használt számítási cél csomópontjainak száma. Ennek kisebbnek vagy egyenlőnek kell lennie a számítási fürt maximális csomópontjainak számánál . Alapértelmezés szerint 1, ami egy csomópontos feladatot jelent.

    • Folyamatszám csomópontonként: Csomópontonként aktivált folyamatok száma. Ennek kisebbnek vagy egyenlőnek kell lennie a számítás feldolgozási egységével . Alapértelmezés szerint 1, ami egyetlen folyamatfeladatot jelent.

    A számítási adatok lapon a számítási névre kattintva ellenőrizheti a csomópontok maximális számát és a számítási egység feldolgozási egységét .

    Képernyőkép a számítási fürt ellenőrzéséről

Az Azure Machine Learning elosztott betanításáról itt tudhat meg többet.

Elosztott betanítás hibaelhárítása

Ha engedélyezi az elosztott betanítást ehhez az összetevőhöz, az egyes folyamatokhoz illesztőprogram-naplók lesznek. 70_driver_log_0 a főfolyamathoz tartozik. A jobb oldali panel Kimenetek+naplók lapján ellenőrizheti az egyes folyamatok hibaadatait az illesztőprogram-naplókban.

Képernyőkép az illesztőprogram-naplóról

Ha az összetevő által engedélyezett elosztott betanítás naplók nélkül 70_driver meghiúsul, ellenőrizheti 70_mpi_log a hiba részleteit.

Az alábbi példa egy gyakori hibát mutat be, amely szerint a csomópontonkénti folyamatszám nagyobb, mint a számítási egység.

Képernyőkép az mpi-naplóról

Az összetevők hibaelhárításával kapcsolatos további részletekért tekintse meg ezt a cikket .

Results (Eredmények)

A folyamatfeladat befejezése után a modell pontozáshoz való használatához csatlakoztassa a PyTorch-modell betanítása a képmodell pontozásához, hogy előrejelezhesse az új bemeneti példák értékeit.

Technikai megjegyzések

Várt bemenetek

Név Típus Description
Nem betanított modell Nem betanítottModelDirectory Nem betanított modell, a PyTorch megkövetelése
Betanítási adatkészlet ImageDirectory Betanítási adatkészlet
Érvényesítési adatkészlet ImageDirectory Érvényesítési adatkészlet minden alapidőszakban kiértékelésre

Összetevő paraméterei

Name Tartomány Típus Alapértelmezett Description
Korszakok >0 Egész szám 5 Jelölje ki a címkét vagy az eredmény oszlopot tartalmazó oszlopot
Köteg mérete >0 Egész szám 16 Hány példányt kell betaníteni egy kötegben
Bemelegítési lépés száma >=0 Egész szám 0 Hány alapidőszakot kell bemelegíteni a bemelegítéshez?
Tanulási sebesség >=dupla. Epsilon Float 0.1 A sztochasztikus színátmenet-optimalizáló kezdeti tanulási sebessége.
Véletlenszerű mag Bármelyik Egész szám 1 A modell által használt véletlenszerű számgenerátor magja.
Türelem >0 Egész szám 3 Hány alapidőszakot kell korai leállítani a betanításhoz?
Nyomtatási gyakoriság >0 Egész szám 10 A betanítási napló nyomtatási gyakorisága az egyes alapidőszakok iterációinál

Kimenetek

Név Típus Description
Betanított modell ModelDirectory Betanított modell

Következő lépések

Tekintse meg az Azure Machine Learning számára elérhető összetevőket .