Az Azure Machine Learning többféle módot kínál az ML-betanítási feladatok beküldésére. Ebben a cikkben megtanulhatja, hogyan küldhet be feladatokat az alábbi módszerekkel:
Azure CLI-bővítmény gépi tanuláshoz: A ml bővítmény, más néven CLI v2.
Python SDK v2 az Azure Machine Learninghez.
REST API: A CLI és az SDK által létrehozott API.
Előfeltételek
Azure-előfizetés. Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot. Próbálja ki az Azure Machine Learning ingyenes vagy fizetős verzióját.
Egy Azure Machine Learning-munkaterület. Ha nincs ilyenje, az erőforrások létrehozása című cikk lépéseit követve kezdheti el a cikket.
A REST API-információk használatához a következő elemekre van szüksége:
Egy szolgáltatásnév a munkaterületen. A rendszergazdai REST-kérelmek szolgáltatásnév-hitelesítést használnak.
Szolgáltatásnév hitelesítési jogkivonata. A jogkivonat lekéréséhez kövesse a Szolgáltatásnév-hitelesítési jogkivonat lekérése című témakör lépéseit.
A curl segédprogram. A curl program elérhető a Linuxos Windows-alrendszer vagy bármely UNIX-disztribúcióban.
Tipp.
A PowerShellben curl a Invoke-WebRequest curl -d "key=val" -X POST uri/> aliasa.Invoke-WebRequest -Body "key=val" -Method POST -Uri uri
Bár a REST API meghívható a PowerShellből, a cikkben szereplő példák feltételezik, hogy Basht használ.
A JSON feldolgozására szolgáló jq segédprogram. Ez a segédprogram a REST API-hívásokból visszaadott JSON-dokumentumok értékeinek kinyerésére szolgál.
A példák adattárának klónozása
A jelen cikkben szereplő kódrészletek az Azure Machine Learning-példák GitHub-adattárában található példákon alapulnak. Az adattár fejlesztői környezetbe való klónozásához használja a következő parancsot:
Csak a legújabb véglegesítés klónozására használható --depth 1 az adattárban, ami csökkenti a művelet befejezéséhez szükséges időt.
Példafeladat
A cikkben szereplő példák az íriszvirág-adatkészletet használják egy MLFlow-modell betanítása érdekében.
Betanítása a felhőben
A felhőbe való betanításkor csatlakoznia kell az Azure Machine Learning-munkaterülethez, és ki kell választania egy számítási erőforrást, amely a betanítási feladat futtatásához lesz használva.
1. Csatlakozás a munkaterülethez
Tipp.
Az alábbi fülekkel kiválaszthatja a modell betanítása során használni kívánt módszert. Ha kiválaszt egy lapot, a cikk összes lapja automatikusan ugyanarra a lapra vált. Bármikor kijelölhet egy másik lapot.
A munkaterülethez való csatlakozáshoz azonosító paraméterekre van szükség – előfizetésre, erőforráscsoportra és munkaterület nevére. Ezeket a részleteket a MLClientazure.ai.ml névtérben fogja használni, hogy lekérje a leírót a szükséges Azure Machine Learning-munkaterületre. A hitelesítéshez az alapértelmezett Azure-hitelesítést kell használnia. Ebben a példában további részleteket talál a hitelesítő adatok konfigurálásáról és a munkaterülethez való csatlakozásról.
#import required libraries
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
#Enter details of your Azure Machine Learning workspace
subscription_id = '<SUBSCRIPTION_ID>'
resource_group = '<RESOURCE_GROUP>'
workspace = '<AZUREML_WORKSPACE_NAME>'
#connect to the workspace
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace)
Az Azure CLI használatakor azonosító paraméterekre van szüksége – egy előfizetésre, egy erőforráscsoportra és a munkaterület nevére. Bár minden parancshoz megadhatja ezeket a paramétereket, beállíthatja az összes parancshoz használt alapértelmezett értékeket is. Az alapértelmezett értékek beállításához használja az alábbi parancsokat. Cserélje le <subscription ID>a , <Azure Machine Learning workspace name>és <resource group> a konfiguráció értékeit:
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
A cikkben szereplő REST API-példák a helyőrzőket $RESOURCE_GROUP$LOCATIONés $WORKSPACE a helyőrzőket használják$SUBSCRIPTION_ID. Cserélje le a helyőrzőket a saját értékeire az alábbiak szerint:
$SUBSCRIPTION_ID: Az Azure-előfizetés azonosítója.
$RESOURCE_GROUP: A munkaterületet tartalmazó Azure-erőforráscsoport.
$LOCATION: Az Azure-régió, ahol a munkaterület található.
$WORKSPACE: Az Azure Machine Learning-munkaterület neve.
$COMPUTE_NAME: Az Azure Machine Learning számítási fürt neve.
A rendszergazdai REST szolgáltatásnév-hitelesítési jogkivonatot kér. A következő paranccsal lekérhet egy jogkivonatot. A jogkivonat a $TOKEN környezeti változóban van tárolva:
A szolgáltató az argumentum használatával biztosítja a api-version kompatibilitást. Az api-version argumentum szolgáltatásonként eltérő. Állítsa be az API-verziót változóként a jövőbeli verziókhoz:
API_VERSION="2022-05-01"
A REST API használatával végzett betanításkor az adatokat és a betanítási szkripteket fel kell tölteni egy tárfiókba, amelyhez a munkaterület hozzáférhet. Az alábbi példa lekéri a munkaterület tárolási adatait, és változókba menti, hogy később használhassuk:
Az Azure Machine Learning számítási fürt egy teljes mértékben felügyelt számítási erőforrás, amely a betanítási feladat futtatására használható. Az alábbi példákban létrejön egy nevesített cpu-compute számítási fürt.
Bár a rendszer néhány másodperc múlva választ ad vissza, ez csak azt jelzi, hogy a létrehozási kérelmet elfogadták. A fürt létrehozása több percet is igénybe vehet.
A szkript futtatásához olyan command parancsot fog használni, amely a ./sdk/python/jobs/egylépéses/lightgbm/iris/src/ területen található main.py Python-szkriptet hajtja végre. A parancs az Azure Machine Learningbe való elküldésével job lesz futtatva.
Feljegyzés
A kiszolgáló nélküli számítás használatához törölje compute="cpu-cluster" ezt a kódot.
# submit the command
returned_job = ml_client.jobs.create_or_update(command_job)
# get a URL for the status of the job
returned_job.studio_url
A fenti példákban a következőt konfigurálta:
code - elérési út, ahol a parancs futtatásához szükséges kód található
command - futtatandó parancs
environment - a betanítási szkript futtatásához szükséges környezet. Ebben a példában az Azure Machine Learning által AzureML-lightgbm-3.2-ubuntu18.04-py37-cpubiztosított, válogatott vagy kész környezetet használjuk. Ennek a környezetnek a legújabb verzióját használjuk az @latest irányelv használatával. Egyéni környezeteket is használhat egy alap docker-rendszerkép megadásával és egy conda yaml megadásával.
inputs - a parancshoz névérték párokat használó bemenetek szótára. A kulcs a feladat környezetében lévő bemenet neve, az érték pedig a bemeneti érték. A bemenetekre a command kifejezés hivatkozik ${{inputs.<input_name>}} . Ha fájlokat vagy mappákat szeretne bemenetként használni, használhatja az osztályt Input . További információ: SDK és CLI v2 kifejezések.
További információkért tekintse meg a referenciadokumentációt.
A feladat elküldésekor a rendszer egy URL-címet ad vissza a feladat állapotához az Azure Machine Learning Studióban. A feladat előrehaladásának megtekintéséhez használja a studio felhasználói felületét. A feladat aktuális állapotát is returned_job.status ellenőrizheti.
A az ml job create példában használt parancshoz YAML-feladatdefiníciós fájl szükséges. A példában használt fájl tartalma a következő:
Feljegyzés
A kiszolgáló nélküli számítás használatához törölje compute: azureml:cpu-cluster" ezt a kódot.
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
python main.py
--iris-csv ${{inputs.iris_csv}}
inputs:
iris_csv:
type: uri_file
path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment: azureml:AzureML-lightgbm-3.3@latest
compute: azureml:cpu-cluster
display_name: lightgbm-iris-example
experiment_name: lightgbm-iris-example
description: Train a LightGBM model on the Iris dataset.
A fentiekben a következőt konfigurálta:
code - elérési út, ahol a parancs futtatásához szükséges kód található
command - futtatandó parancs
inputs - a parancshoz névérték párokat használó bemenetek szótára. A kulcs a feladat környezetében lévő bemenet neve, az érték pedig a bemeneti érték. A bemenetekre a command kifejezés hivatkozik ${{inputs.<input_name>}} . További információ: SDK és CLI v2 kifejezések.
environment - a betanítási szkript futtatásához szükséges környezet. Ebben a példában az Azure Machine Learning által AzureML-lightgbm-3.3biztosított, válogatott vagy kész környezetet használjuk. Ennek a környezetnek a legújabb verzióját használjuk az @latest irányelv használatával. Egyéni környezeteket is használhat egy alap docker-rendszerkép megadásával és egy conda yaml megadásával.
A feladat elküldéséhez használja az alábbi parancsot. A betanítási feladat futtatási azonosítója (neve) a $run_id változóban van tárolva:
run_id=$(az ml job create -f jobs/single-step/lightgbm/iris/job.yml --query name -o tsv)
A tárolt futtatási azonosítóval adatokat adhat vissza a feladatról. A --web paraméter megnyitja az Azure Machine Learning Studio webes felhasználói felületét, ahol részletezheti a feladat részleteit:
az ml job show -n $run_id --web
A feladatbeküldés részeként a betanítási szkripteket és az adatokat fel kell tölteni egy felhőbeli tárolóba, amelyhez az Azure Machine Learning-munkaterület hozzáférhet.
A betanítási szkript feltöltéséhez használja az alábbi Azure CLI-parancsot. A parancs azt a könyvtárat adja meg, amely a betanításhoz szükséges fájlokat tartalmazza, nem pedig az egyes fájlokat. Ha inkább a REST használatával szeretné feltölteni az adatokat, tekintse meg a Blob elhelyezése hivatkozást:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/testjob -s cli/jobs/single-step/lightgbm/iris/src/ --account-name $AZURE_STORAGE_ACCOUNT
Hozzon létre egy verziószámozott hivatkozást a betanítási adatokra. Ebben a példában az adatok már a felhőben találhatók, és a következő helyen https://azuremlexamples.blob.core.windows.net/datasets/iris.csvtalálhatók: . További információ az adatokra való hivatkozásról: Adatok az Azure Machine Learningben:
Regisztráljon egy verziószámozott hivatkozást a betanítási szkriptre a feladattal való használathoz. Ebben a példában a szkript helye az 1. lépésben feltöltött alapértelmezett tárfiók és tároló. A verziószámozott betanítási kód azonosítója a változóban $TRAIN_CODE lesz visszaadva és tárolva:
Hozza létre azt a környezetet, amelyet a fürt használni fog a betanítási szkript futtatásához. Ebben a példában az Azure Machine Learning által AzureML-lightgbm-3.2-ubuntu18.04-py37-cpubiztosított, válogatott vagy kész környezetet használjuk. Az alábbi parancs lekéri a környezeti verziók listáját, a legújabb pedig a gyűjtemény tetején található. jq A rendszer a legújabb ([0]) verzió azonosítójának lekérésére szolgál, amelyet aztán a $ENVIRONMENT változóba tárol.
Végül küldje el a feladatot. Az alábbi példa bemutatja, hogyan küldheti el a feladatot, hivatkozhat a betanítási kód azonosítójára, a környezetazonosítóra, a bemeneti adatok URL-címére és a számítási fürt azonosítójára. A feladat kimeneti helye a $JOB_OUTPUT változóban lesz tárolva:
Tipp.
A feladat nevének egyedinek kell lennie. Ebben a példában uuidgen a név egyedi értékének létrehozására szolgál.
Feljegyzés
Kiszolgáló nélküli számítás használatához törölje a \"computeId\": kód sorát.
A name betanítási feladat által visszaadott tulajdonság a modell elérési útjának részeként használatos.
from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes
run_model = Model(
path="azureml://jobs/{}/outputs/artifacts/paths/model/".format(returned_job.name),
name="run-model-example",
description="Model created from run.",
type=AssetTypes.MLFLOW_MODEL
)
ml_client.models.create_or_update(run_model)
Tipp.
A rendszer a $run_id (változóban tárolt) nevet használja a modell elérési útjának részeként.
az ml model create -n sklearn-iris-example -v 1 -p runs:/$run_id/model --type mlflow_model
Tipp.
A rendszer a $run_id (változóban tárolt) nevet használja a modell elérési útjának részeként.
A cikkben használt Azure CLI-parancsokkal, Python SDK-osztályokkal vagy REST API-kkal kapcsolatos további információkért tekintse meg a következő referenciadokumentációt: