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


Scikit-learn modellek nagy léptékű betanítása az Azure Machine Learning (SDK v1) használatával

A KÖVETKEZŐKRE VONATKOZIK: Python SDK azureml v1

Ebből a cikkből megtudhatja, hogyan futtathatja scikit-learn betanítási szkripteit az Azure Machine Learning használatával.

A cikkben szereplő példaszkriptekkel írisz virágképeket osztályozunk, hogy gépi tanulási modellt építsünk ki a scikit-learn íriszadatkészlete alapján.

Akár gépi tanulási scikit-learn modellt tanít be az alapoktól kezdve, akár meglévő modellt hoz a felhőbe, az Azure Machine Learning használatával rugalmas felhőalapú számítási erőforrások használatával skálázhatja fel a nyílt forráskódú betanítási feladatokat. Az Azure Machine Learning használatával éles üzemű modelleket hozhat létre, helyezhet üzembe, futtathat és monitorozhat.

Előfeltételek

Ezt a kódot egy Azure Machine Learning számítási példányban vagy egy saját Jupyter Notebookban futtathatja:

  • Azure Machine Learning számítási példány

    • Végezze el a gyors útmutatót: Ismerkedés az Azure Machine Learning szolgáltatással egy számítási példány létrehozásához. Minden számítási példány tartalmaz egy dedikált jegyzetfüzet-kiszolgálót, amely előre be van töltve az SDK-val és a jegyzetfüzetek mintaadattárával.
    • Válassza ki a jegyzetfüzet fület az Azure Machine Learning Studióban. A minták betanítási mappájában keressen egy befejezett és bővített jegyzetfüzetet a következő könyvtárra navigálva: how-to-use-azureml > ml-frameworks > scikit-learn > train-hyperparameter-tune-deploy-with-sklearn mappa.
    • Az oktatóanyag elvégzéséhez használhatja a minta betanítási mappájában lévő előre kitöltött kódot.
  • Hozzon létre egy Jupyter Notebook-kiszolgálót, és futtassa a kódot a következő szakaszokban.

A kísérlet beállítása

Ez a szakasz a szükséges Python-csomagok betöltésével, egy munkaterület inicializálásával, a betanítási környezet meghatározásával és a betanítási szkript előkészítésével állítja be a betanítási kísérletet.

Munkaterület inicializálása

Az Azure Machine Learning-munkaterület a szolgáltatás legfelső szintű erőforrása. Központosított helyet biztosít a létrehozott összetevőkkel való munkához. A Python SDK-ban objektum létrehozásával érheti el a munkaterület összetevőit workspace .

Hozzon létre egy munkaterület-objektumot az config.json előfeltételek szakaszban létrehozott fájlból.

from azureml.core import Workspace

ws = Workspace.from_config()

Szkriptek előkészítése

Ebben az oktatóanyagban a betanítási szkript train_iris.py már meg van adva. A gyakorlatban képesnek kell lennie bármilyen egyéni betanítási szkriptet használni, és anélkül futtatni az Azure Machine Learningben, hogy módosítania kellene a kódot.

Feljegyzés

  • A megadott betanítási szkript bemutatja, hogyan naplózhat néhány metrikát az Azure Machine Learning-futtatásba a Run szkripten belüli objektummal.
  • A megadott betanítási szkript példaadatokat használ a iris = datasets.load_iris() függvényből. A saját adatainak használatához és eléréséhez tekintse meg , hogyan taníthat be adatkészletekkel az adatok elérhetővé tétele érdekében a betanítás során.

A környezet meghatározása

A betanítási szkript függőségeit magában foglaló Azure Machine Learning-környezet meghatározásához definiálhat egyéni környezetet, vagy használhat és Azure Machine Learning-válogatott környezetet.

Válogatott környezet használata

Az Azure Machine Learning igény szerint előre összeállított, válogatott környezeteket is biztosít, ha nem szeretné definiálni a saját környezetét.

Ha válogatott környezetet szeretne használni, futtassa helyette a következő parancsot:

from azureml.core import Environment

sklearn_env = Environment.get(workspace=ws, name='AzureML-Tutorial')

Egyéni környezet létrehozása

Saját egyéni környezetet is létrehozhat. A conda-függőségek definiálása YAML-fájlban; ebben a példában a fájl neve conda_dependencies.yml.

dependencies:
  - python=3.7
  - scikit-learn
  - numpy
  - pip:
    - azureml-defaults

Hozzon létre egy Azure Machine Learning-környezetet ebből a Conda-környezet specifikációjából. A környezet futásidőben egy Docker-tárolóba lesz csomagolva.

from azureml.core import Environment

sklearn_env = Environment.from_conda_specification(name='sklearn-env', file_path='conda_dependencies.yml')

További információ a környezetek létrehozásáról és használatáról: Szoftverkörnyezetek létrehozása és használata az Azure Machine Learningben.

A betanítási futtatás konfigurálása és elküldése

ScriptRunConfig létrehozása

Hozzon létre egy ScriptRunConfig objektumot a betanítási feladat konfigurációs részleteinek megadásához, beleértve a betanítási szkriptet, a használandó környezetet és a futtatandó számítási célt. A betanítási szkripthez tartozó argumentumok parancssoron keresztül lesznek átadva, ha a arguments paraméter meg van adva.

Az alábbi kód egy ScriptRunConfig objektumot konfigurál a feladat helyi gépen való végrehajtásához való elküldéséhez.

from azureml.core import ScriptRunConfig

src = ScriptRunConfig(source_directory='.',
                      script='train_iris.py',
                      arguments=['--kernel', 'linear', '--penalty', 1.0],
                      environment=sklearn_env)

Ha ehelyett távoli fürtön szeretné futtatni a feladatot, megadhatja a kívánt számítási célt a compute_target ScriptRunConfig paraméteréhez.

from azureml.core import ScriptRunConfig

compute_target = ws.compute_targets['<my-cluster-name>']
src = ScriptRunConfig(source_directory='.',
                      script='train_iris.py',
                      arguments=['--kernel', 'linear', '--penalty', 1.0],
                      compute_target=compute_target,
                      environment=sklearn_env)

Futtatás elküldése

from azureml.core import Experiment

run = Experiment(ws,'Tutorial-TrainIRIS').submit(src)
run.wait_for_completion(show_output=True)

Figyelmeztetés

Az Azure Machine Learning a teljes forráskönyvtár másolásával futtat betanítási szkripteket. Ha olyan bizalmas adatokkal rendelkezik, amelyeket nem szeretne feltölteni, használjon .ignore fájlt , vagy ne vegye fel azokat a forráskönyvtárba. Ehelyett egy Azure Machine Learning-adatkészlet használatával érheti el az adatokat.

Mi történik a futtatás végrehajtása során?

A futtatás végrehajtása során a következő szakaszokon megy keresztül:

  • Előkészítés: A rendszer létrehoz egy Docker-rendszerképet a megadott környezetnek megfelelően. A rendszerképet a rendszer feltölti a munkaterület tárolóregisztrációs adatbázisára, és gyorsítótárazza a későbbi futtatásokhoz. A naplók a futtatási előzményekbe is streamelhetők, és megtekinthetők a folyamat figyeléséhez. Ha ehelyett egy válogatott környezet van megadva, a rendszer a gyorsítótárazott rendszerképet fogja használni, amely a válogatott környezetet használja.

  • Skálázás: A fürt megkísérli a vertikális felskálázást, ha a Batch AI-fürtnek több csomópontra van szüksége a futtatás végrehajtásához, mint amennyi jelenleg elérhető.

  • Futtatás: A szkriptmappában lévő összes szkript fel lesz töltve a számítási célra, az adattárak csatlakoztatva vannak vagy másolódnak, és a rendszer végrehajtja azokat script . Az stdout és a ./logs mappa kimenetei a futtatási előzményekbe kerülnek, és a futtatás figyelésére használhatók.

  • Feldolgozás utáni: A futtatás ./outputs mappája át lesz másolva a futtatási előzményekbe.

A modell mentése és regisztrálása

A modell betanítása után mentheti és regisztrálhatja a munkaterületen. A modellregisztráció lehetővé teszi a modellek munkaterületen való tárolását és verziószámozását a modellkezelés és az üzembe helyezés egyszerűsítése érdekében.

A modell mentéséhez adja hozzá a következő kódot a betanítási szkripthez train_iris.py.

import joblib

joblib.dump(svm_model_linear, 'model.joblib')

Regisztrálja a modellt a munkaterületen az alábbi kóddal. A paraméterek megadásával a kód nélküli modell üzembe helyezése elérhetővé válikmodel_frameworkmodel_framework_versionresource_configuration. A kód nélküli modell üzembe helyezése lehetővé teszi a modell webszolgáltatásként való közvetlen üzembe helyezését a regisztrált modellből, és az ResourceConfiguration objektum határozza meg a webszolgáltatás számítási erőforrását.

from azureml.core import Model
from azureml.core.resource_configuration import ResourceConfiguration

model = run.register_model(model_name='sklearn-iris', 
                           model_path='outputs/model.joblib',
                           model_framework=Model.Framework.SCIKITLEARN,
                           model_framework_version='0.19.1',
                           resource_configuration=ResourceConfiguration(cpu=1, memory_in_gb=0.5))

Telepítés

Az imént regisztrált modell ugyanúgy telepíthető, mint bármely más regisztrált modell az Azure Machine Learningben. Az üzembe helyezési útmutató tartalmaz egy szakaszt a modellek regisztrálásáról, de közvetlenül átugorhatja a (számítási célhely-üzembe helyezéshez-és-where.md#choose-a-compute-target) létrehozásához az üzembe helyezéshez, mivel már rendelkezik regisztrált modellel.

(Előzetes verzió) Kód nélküli modell üzembe helyezése

Fontos

Ez a funkció jelenleg nyilvános előzetes verzióban érhető el. Ez az előzetes verzió szolgáltatásszintű szerződés nélkül érhető el, és éles számítási feladatokhoz nem javasoljuk. Előfordulhat, hogy néhány funkció nem támogatott, vagy korlátozott képességekkel rendelkezik.

További információ: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.

A hagyományos üzembehelyezési útvonal helyett a kód nélküli üzembehelyezési funkciót (előzetes verzió) is használhatja a scikit-learnhez. A kód nélküli modell üzembe helyezése minden beépített scikit-learn modelltípus esetében támogatott. Ha a modellt a fenti módon regisztrálja a model_framework, model_framework_versionés resource_configuration paraméterekkel, egyszerűen használhatja a deploy() statikus függvényt a modell üzembe helyezéséhez.

web_service = Model.deploy(ws, "scikit-learn-service", [model])

Feljegyzés

Ezek a függőségek az előre összeállított scikit-learn következtetési tárolóban találhatók.

    - azureml-defaults
    - inference-schema[numpy-support]
    - scikit-learn
    - numpy

A teljes útmutató részletesebben ismerteti az Azure Machine Learningben való üzembe helyezést.

Következő lépések

Ebben a cikkben betanított és regisztrált egy scikit-learn modellt, és megismerkedett az üzembe helyezési lehetőségekkel. Az Azure Machine Learningről további információt az alábbi cikkekben talál.