Betanítási feladatok konfigurálása és elküldése
A KÖVETKEZŐKRE VONATKOZIK: Python SDK azureml v1
Ebből a cikkből megtudhatja, hogyan konfigurálhatja és küldheti el az Azure Machine Learning-feladatokat a modellek betanítása érdekében. A kódrészletek bemutatják a betanítási szkriptek konfigurálásának és beküldésének legfontosabb részeit. Ezután a példajegyzetfüzetek egyikével keresse meg a teljes körű munka példákat.
Betanításkor gyakori, hogy a helyi számítógépen indul el, majd később felskálázható egy felhőalapú fürtre. Az Azure Machine Learning segítségével a szkriptet különböző számítási célokon futtathatja anélkül, hogy módosítania kellene a betanítási szkriptet.
Mindössze annyit kell tennie, hogy definiálja a környezetet az egyes számítási célokhoz egy szkriptfeladat-konfigurációban. Ezután, ha egy másik számítási célon szeretné futtatni a betanítási kísérletet, adja meg az adott számítás feladatkonfigurációját.
Előfeltételek
- Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot. Próbálja ki ma az Azure Machine Learning ingyenes vagy fizetős verzióját
- A Pythonhoz készült Azure Machine Learning SDK (v1) (>= 1.13.0)
- Azure Machine Learning-munkaterület,
ws
- Számítási cél,
my_compute_target
. Számítási cél létrehozása
Mi az a szkriptfuttatási konfiguráció?
A ScriptRunConfig a betanítási feladatok kísérlet részeként történő beküldéséhez szükséges információk konfigurálására szolgál.
A betanítási kísérletet egy ScriptRunConfig objektummal küldi el. Ez az objektum a következőket tartalmazza:
- source_directory: A betanítási szkriptet tartalmazó forráskönyvtár
- szkript: A futtatandó betanítási szkript
- compute_target: A futtatandó számítási cél
- környezet: A szkript futtatásakor használni kívánt környezet
- és néhány további konfigurálható lehetőség (további információkért tekintse meg a referenciadokumentációt )
Saját modell betanítása
A betanítási feladat elküldéséhez használt kódminta minden számítási céltípus esetében megegyezik:
- Kísérlet létrehozása futtatáshoz
- Környezet létrehozása, ahol a szkript fut
- Hozzon létre egy ScriptRunConfigot, amely megadja a számítási célt és a környezetet
- Feladat küldése
- Várakozás a feladat befejeződésére
Vagy a következőt teheti:
- HyperDrive-futtatás elküldése hiperparaméter-finomhangoláshoz.
- Küldjön be egy kísérletet a VS Code bővítményen keresztül.
Kísérlet létrehozása
Hozzon létre egy kísérletet a munkaterületen. A kísérlet egy könnyű tároló, amely segít a feladatbeküldések rendszerezésében és a kód nyomon követésében.
A KÖVETKEZŐKRE VONATKOZIK: Python SDK azureml v1
from azureml.core import Experiment
experiment_name = 'my_experiment'
experiment = Experiment(workspace=ws, name=experiment_name)
Számítási cél kiválasztása
Válassza ki azt a számítási célt, amelyen a betanítási szkript futni fog. Ha nincs megadva számítási cél a ScriptRunConfigban, vagy ha, az compute_target='local'
Azure Machine Learning helyileg hajtja végre a szkriptet.
A cikkben szereplő példakód feltételezi, hogy már létrehozott egy számítási célt my_compute_target
az "Előfeltételek" szakaszból.
Feljegyzés
- Az Azure Databricks nem támogatott számítási célként a modell betanításához. Az Azure Databrickset adat-előkészítési és üzembehelyezési feladatokhoz használhatja.
- Az Azure Arc-kompatibilis Kubernetes-fürtön végzett betanításhoz számítási cél létrehozásához és csatolásához lásd: Azure Arc-kompatibilis Machine Learning konfigurálása
Környezet létrehozása
Az Azure Machine Learning-környezetek annak a környezetnek a beágyazása, ahol a gépi tanulás betanítása történik. Megadják a Python-csomagokat, a Docker-rendszerképet, a környezeti változókat és a szoftverbeállításokat a betanítási és pontozási szkriptek köré. Futtatókörnyezeteket is meghatároznak (Python, Spark vagy Docker).
Definiálhatja a saját környezetét, vagy használhat egy Azure Machine Learning-válogatott környezetet. A válogatott környezetek előre definiált környezetek, amelyek alapértelmezés szerint elérhetők a munkaterületen. Ezeket a környezeteket gyorsítótárazott Docker-rendszerképek készítik, amelyek csökkentik a feladatok előkészítésének költségeit. Az elérhető válogatott környezetek teljes listájáért tekintse meg az Azure Machine Learning válogatott környezeteit.
Távoli számítási cél esetén az alábbi népszerű válogatott környezetek egyikével kezdheti a következőket:
A KÖVETKEZŐKRE VONATKOZIK: Python SDK azureml v1
from azureml.core import Workspace, Environment
ws = Workspace.from_config()
myenv = Environment.get(workspace=ws, name="AzureML-Minimal")
A környezetekkel kapcsolatos további információkért és részletekért lásd: Szoftverkörnyezetek létrehozása és használata az Azure Machine Learningben.
Helyi számítási cél
Ha a számítási cél a helyi gép, önnek kell gondoskodnia arról, hogy az összes szükséges csomag elérhető legyen abban a Python-környezetben, ahol a szkript fut. Az aktuális Python-környezet (vagy a megadott elérési úton lévő Python) használatára használható python.user_managed_dependencies
.
A KÖVETKEZŐKRE VONATKOZIK: 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'
A szkriptfeladat konfigurációjának létrehozása
Most, hogy rendelkezik számítási céllal (my_compute_target
lásd : Előfeltételek és környezet (myenv
lásd : Környezet létrehozása), hozzon létre egy szkriptfeladat-konfigurációt, amely a címtárban található betanítási szkriptet (train.py
) futtatja project_folder
:
A KÖVETKEZŐKRE VONATKOZIK: 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)
Ha nem ad meg környezetet, a rendszer létrehoz egy alapértelmezett környezetet.
Ha parancssori argumentumokat szeretne átadni a betanítási szkriptnek, megadhatja őket a ScriptRunConfig konstruktor paraméterén keresztül arguments
, például arguments=['--arg1', arg1_val, '--arg2', arg2_val]
.
Ha felül szeretné bírálni a feladathoz engedélyezett alapértelmezett maximális időt, ezt a max_run_duration_seconds
paraméteren keresztül teheti meg. A rendszer megpróbálja automatikusan megszakítani a feladatot, ha ennél az értéknél tovább tart.
Elosztott feladat konfigurációjának megadása
Ha elosztott betanítási feladatot szeretne futtatni, adja meg az elosztott feladatspecifikus konfigurációt a distributed_job_config
paraméternek. A támogatott konfigurációtípusok közé tartozik az MpiConfiguration, a TensorflowConfiguration és a PyTorchConfiguration.
Az elosztott Horovod-, TensorFlow- és PyTorch-feladatok futtatásával kapcsolatos további információkért és példákért lásd:
A kísérlet elküldése
A KÖVETKEZŐKRE VONATKOZIK: Python SDK azureml v1
run = experiment.submit(config=src)
run.wait_for_completion(show_output=True)
Fontos
A betanítási feladat elküldésekor a rendszer létrehoz egy pillanatképet a betanítási szkripteket tartalmazó könyvtárról, és elküldi a számítási célnak. A rendszer a kísérlet részeként is tárolja a munkaterületen. Ha módosítja a fájlokat, és újra elküldi a feladatot, csak a módosított fájlok lesznek feltöltve.
Ha meg szeretné akadályozni, hogy a szükségtelen fájlok bekerüljenek a pillanatképbe, hozzon létre egy figyelmen kívül hagyott fájlt (.gitignore
vagy .amlignore
) a könyvtárban. Adja hozzá a kizárni kívánt fájlokat és könyvtárakat ehhez a fájlhoz. A fájlban használandó szintaxissal kapcsolatos további információkért lásd a szintaxist és a minták helyét .gitignore
. A .amlignore
fájl ugyanazt a szintaxist használja. Ha mindkét fájl létezik, a rendszer a .amlignore
fájlt használja, és a .gitignore
fájl nincs használatban.
A pillanatképekről további információt a Pillanatképek című témakörben talál.
Fontos
Speciális mappák Két mappa, kimenet és napló, speciális kezelést kap az Azure Machine Learning. A betanítás során, amikor fájlokat ír a gyökérkönyvtárhoz (és más néven a gyökérkönyvtárhoz) kapcsolódó mappákba , a fájlok automatikusan feltöltődnek a feladatelőzményekbe, így a feladat befejezése után hozzáférhet hozzájuk../logs
./outputs
Ha a betanítás során összetevőket (például modellfájlokat, ellenőrzőpontokat, adatfájlokat vagy ábrázolt képeket) szeretne létrehozni, írja be ezeket a ./outputs
mappába.
Hasonlóképpen bármilyen naplót írhat a betanítási feladatból a ./logs
mappába. Az Azure Machine Learning TensorBoard-integrációjának használatához mindenképpen ebbe a mappába kell írnia a TensorBoard-naplókat. Amíg a feladat folyamatban van, elindíthatja a TensorBoardot, és streamelheti ezeket a naplókat. Később bármely korábbi feladat naplóit is visszaállíthatja.
Például a távoli betanítási feladat után töltse le a kimeneti mappába írt fájlt a helyi gépre: run.download_file(name='outputs/my_output_file', output_file_path='my_destination_path')
Git nyomon követése és integrációja
Amikor elindít egy betanítási feladatot, amelyben a forráskönyvtár egy helyi Git-adattár, a rendszer a feladatelőzményekben tárolja az adattár adatait. További információ: Git-integráció az Azure Machine Learninghez.
Jegyzetfüzet-példák
Az alábbi jegyzetfüzetekben példákat talál a feladatok különböző betanítási forgatókönyvekhez való konfigurálására:
- Betanítás különböző számítási célokhoz
- Betanítás ml-keretrendszerekkel
- oktatóanyagok/img-classification-part1-training.ipynb
A szolgáltatás megismerése Jupyter-notebookok használatával cikk útmutatását követve megtanulhatja, hogyan futtathat notebookokat.
Hibaelhárítás
AttributeError: "RoundTripLoader" objektum nem rendelkezik "comment_handling" attribútummal: Ez a hiba a függőség új (0.17.5-ös)
ruamel-yaml
azureml-core
verziójából származik, amely kompatibilitástörő változástazureml-core
eredményez. A hiba kijavítása érdekében távolítsa el az eltávolítástruamel-yaml
egy másik verzió futtatásávalpip uninstall ruamel-yaml
és telepítésévelruamel-yaml
; a támogatott verziók a 0.15.35-ös verziótól a 0.17.4-es verzióig (a teljes verziót is beleértve). Ezt a parancs futtatásávalpip install "ruamel-yaml>=0.15.35,<0.17.5"
teheti meg.A feladat a következővel meghiúsul
jwt.exceptions.DecodeError
: Pontos hibaüzenet:jwt.exceptions.DecodeError: It is required that you pass in a value for the "algorithms" argument when calling decode()
.Érdemes lehet frissíteni az azureml-core legújabb verziójára:
pip install -U azureml-core
.Ha. A helyi feladatok esetében a probléma megoldásához ellenőrizze, hogy a környezetben telepített PyJWT-verzió hol található. elkezdi a feladatokat. A PyJWT támogatott verziói a < 2.0.0. Távolítsa el a PyJWT-t a környezetből, ha a verzió >= 2.0.0. Az alábbiak szerint ellenőrizheti a PyJWT verzióját, eltávolíthatja és telepítheti a megfelelő verziót:
- Indítsa el a parancshéjat, aktiválja a Conda-környezetet, ahol az Azureml-Core telepítve van.
- Adja meg
pip freeze
és keresse megPyJWT
a 2.0.0-s verziót < , ha megtalálható - Ha a felsorolt verzió nem támogatott verzió,
pip uninstall PyJWT
a parancshéjban adja meg az y értéket a megerősítéshez. - Végezze el a telepítést a
pip install 'PyJWT<2.0.0'
paranccsal
Ha. felhasználó által létrehozott környezetet küld a feladatával, fontolja meg az azureml-core legújabb verziójának használatát ebben a környezetben. Az azureml-core 1.18.0-s verziói >már rögzítik a PyJWT < 2.0.0-s verzióját. Ha az azureml-core < 1.18.0-s verzióját kell használnia a beküldött környezetben, mindenképpen adja meg a PyJWT < 2.0.0-s verzióját a pipfüggőségek között.
ModuleErrors (Nincs megnevezett modul): Ha. Az Azure Machine Learningben végzett kísérletek elküldése közben a ModuleErrors alkalmazásba fut, a betanítási szkript egy csomag telepítésére számít, de nincs hozzáadva. Miután megadta a csomag nevét, az Azure Machine Learning telepíti a csomagot a betanítási feladathoz használt környezetben.
Ha. Kísérletek beküldéséhez az Estimatorst használja, a becslőben megadhat egy csomagnevet
pip_packages
vagyconda_packages
paramétert annak alapján, hogy melyik forrásból szeretné telepíteni a csomagot. Megadhat egy yml-fájlt is, amely az összes függőségét tartalmazzaconda_dependencies_file
, vagy paraméterrelpip_requirements_file
listázhatja az összes pipkövetelményt egy txt fájlban. Ha saját Azure Machine Learning Environment-objektummal rendelkezik, amelyet felül szeretne bírálni a becslő által használt alapértelmezett rendszerképen, ezt aenvironment
környezetet a becslő konstruktor paraméterével adhatja meg.Az Azure Machine Learning által karbantartott Docker-rendszerképek és azok tartalma az Azure Machine Learning-tárolókban tekinthető meg. A keretrendszerspecifikus függőségek a megfelelő keretrendszerdokumentációban találhatók:
NameError (Name not defined), AttributeError (Az objektum nem rendelkezik attribútummal): Ez a kivétel a betanítási szkriptekből származik. A naplófájlokat az Azure Portalon tekintheti meg, ha további információt szeretne kapni a nem definiált névvel vagy attribútumhibával kapcsolatban. Az SDK-ból
run.get_details()
megtekintheti a hibaüzenetet. Ez a feladathoz létrehozott összes naplófájlt is listázni fogja. A feladat újbóli elküldése előtt ellenőrizze a betanítási szkriptet, és javítsa ki a hibát.Feladat vagy kísérlet törlése: A kísérletek archiválhatók az Experiment.archive metódussal, vagy az Azure Machine Learning Studio-ügyfél Kísérlet lap nézetéből az "Archív kísérlet" gombbal. Ez a művelet elrejti a kísérletet a listalekérdezések és nézetek elől, de nem törli.
Az egyes kísérletek vagy feladatok végleges törlése jelenleg nem támogatott. A Munkaterület-objektumok törléséről további információt a Machine Learning-szolgáltatás munkaterületadatainak exportálása vagy törlése című témakörben talál.
A metrikadokumentum túl nagy: az Azure Machine Learning belső korlátozásokkal rendelkezik a betanítási feladatból egyszerre naplózható metrikaobjektumok méretére vonatkozóan. Ha „a metrikadokumentum túl nagy” hibát észlel egy értéklistát tartalmazó metrika naplózásakor, próbálja meg felosztani a listát kisebb tömbökre, például:
run.log_list("my metric name", my_metric[:N]) run.log_list("my metric name", my_metric[N:])
Az Azure Machine Learning belsőleg összefűzi az azonos metrikanévvel rendelkező blokkokat egy összefüggő listába.
A számítási cél létrehozása hosszú időt vesz igénybe: A számítási célok Docker-rendszerképei az Azure Container Registryből (ACR) töltődnek be. Az Azure Machine Learning alapértelmezés szerint létrehoz egy ACR-t, amely az alapszintű szolgáltatási szintet használja. Ha a munkaterület ACR-ét Standard vagy Prémium szintre módosítja, azzal csökkentheti a rendszerképek létrehozásához és betöltéséhez szükséges időt. További információ: az Azure Container Registry szolgáltatásszintjei.
Következő lépések
- Oktatóanyag: A modellek betanítása és üzembe helyezése felügyelt számítási célt használ a modellek betanítása érdekében.
- Megtudhatja, hogyan taníthat be modelleket adott ML-keretrendszerekkel, például Scikit-learn, TensorFlow és PyTorch használatával.
- Megtudhatja, hogyan hangolhatja hatékonyan a hiperparamétereket a jobb modellek létrehozásához.
- Ha már rendelkezik betanított modellel, megtudhatja , hogyan és hol helyezhet üzembe modelleket.
- Tekintse meg a ScriptRunConfig osztály SDK-referenciáját.
- Az Azure Machine Learning használata azure-beli virtuális hálózatokkal