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éldaszkriptek az írisz virágképeinek besorolására szolgálnak a scikit-learn íriszadatkészlete alapján történő gépi tanulási modell létrehozásához.

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 a saját Jupyter Notebook futtathatja:

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

    • A számítási példány létrehozásához végezze el a gyors útmutatót: Ismerkedés az Azure Machine Learning szolgáltatással . 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 a jegyzetfüzet fület a Azure Machine Learning stúdió. A minta betanítási mappájában keresse meg a befejezett és kibontott jegyzetfüzetet a következő könyvtárban: 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 található előre kitöltött kódot.
  • Hozzon létre egy Jupyter Notebook-kiszolgálót, és futtassa a kódot az alábbi 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 definiálá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 egy objektum létrehozásával érheti el a munkaterület összetevőit workspace .

Hozzon létre egy munkaterület-objektumot az config.jsonelő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 train_iris.py betanítási szkript már meg van adva. A gyakorlatban bármilyen egyéni betanítási szkriptet el kell tudnia végeznie, és anélkül kell futtatnia az Azure Machine Learningben, hogy módosítania kellene a kódot.

Megjegyzés

  • A megadott betanítási szkript bemutatja, hogyan naplózhat néhány metrikát az Azure Machine Learning-futtatásban a Run szkript objektumával.
  • A megadott betanítási szkript a iris = datasets.load_iris() függvényből származó példaadatokat használja. A saját adatainak használatához és eléréséhez tekintse meg, hogyan taníthat be adathalmazokkal az adatok elérhetővé tétele a betanítás során.

A környezet meghatározása

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

Válogatott környezet használata

Ha nem szeretné definiálni saját környezetét, az Azure Machine Learning előre összeállított, válogatott környezeteket is biztosí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. 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ó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 egy 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)

A 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ásakor a következő szakaszokon megy keresztül:

  • Előkészítés: A rendszer létrehoz egy docker-lemezké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 válogatott környezetet ad meg, a rendszer a gyorsítótárazott rendszerképet fogja használni a válogatott környezethez.

  • 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 vagy másolva lesznek, és a rendszer végrehajtja a script parancsot. Az stdout és a ./logs mappából származó kimenetek streamelhetők a futtatási előzményekbe, é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 tárolását és verziószámozását a munkaterületen 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 model_frameworkmegadásával a , model_framework_version, és resource_configuration, kód nélküli modell üzembe helyezése elérhetővé válik. 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))

Üzembe helyezés

Az imént regisztrált modell ugyanúgy üzembe helyezhető, 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 a(z) [compute targethow-to-deploy-and-where.md#choose-a-compute-target] elemre ugorhat 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, éles számítási feladatokhoz nem ajánljuk. 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. A modellnek a model_framework, model_framework_versionresource_configuration és paraméterekkel való regisztrálásával egyszerűen üzembe helyezheti a modellt a deploy() statikus függvénnyel.

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

Megjegyzés

Ezek a függőségek az előre elkészített 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 Learning üzembe helyezését.

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.