Delen via


AutoML instellen om Computer Vision-modellen te trainen met Python (v1)

VAN TOEPASSING OP: Python SDK azureml v1

Belangrijk

Sommige Azure CLI-opdrachten in dit artikel gebruiken de azure-cli-mlextensie (of v1) voor Azure Machine Learning. Ondersteuning voor de v1-extensie eindigt op 30 september 2025. U kunt de v1-extensie tot die datum installeren en gebruiken.

U wordt aangeraden vóór 30 september 2025 over te stappen op de mlextensie of v2. Zie de Azure ML CLI-extensie en Python SDK v2 voor meer informatie over de v2-extensie.

Belangrijk

Deze functie is momenteel beschikbaar als openbare preview-versie. Deze preview-versie wordt geleverd zonder een service level agreement. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.

In dit artikel leert u hoe u computer Vision-modellen traint op afbeeldingsgegevens met geautomatiseerde ML in de Azure Machine Learning Python SDK.

Geautomatiseerde ML ondersteunt modeltraining voor Computer Vision-taken zoals afbeeldingsclassificatie, objectdetectie en exemplaarsegmentatie. Het schrijven van AutoML-modellen voor Computer Vision-taken wordt op het moment ondersteund via Azure Machine Learning Python SDK. De resulterende experimentele uitvoeringen, modellen en uitvoer zijn toegankelijk vanuit de gebruikersinterface van Azure Machine Learning-studio. Meer informatie over geautomatiseerde ml voor Computer Vision-taken op afbeeldingsgegevens.

Notitie

Geautomatiseerde ML voor Computer Vision-taken is alleen beschikbaar via de Azure Machine Learning Python SDK.

Vereisten

  • Een Azure Machine Learning-werkruimte. Zie Werkruimtebronnen maken om de werkruimte te maken.

  • De Azure Machine Learning Python SDK is geïnstalleerd. Als u de SDK wilt installeren, kunt u dat ook doen:

    Notitie

    Alleen Python 3.7 en 3.8 zijn compatibel met geautomatiseerde ML-ondersteuning voor computer vision-taken.

Selecteer uw taaktype

Geautomatiseerde ML voor installatiekopieën ondersteunt de volgende taaktypen:

Taaktype Configuratiesyntaxis van AutoMLImage
afbeeldingsclassificatie ImageTask.IMAGE_CLASSIFICATION
afbeeldingsclassificatie met meerdere labels ImageTask.IMAGE_CLASSIFICATION_MULTILABEL
detectie van afbeeldingsobjecten ImageTask.IMAGE_OBJECT_DETECTION
segmentatie van afbeeldingsexemplaren ImageTask.IMAGE_INSTANCE_SEGMENTATION

Dit taaktype is een vereiste parameter en wordt doorgegeven met behulp van de task parameter in de AutoMLImageConfig.

Voorbeeld:

from azureml.train.automl import AutoMLImageConfig
from azureml.automl.core.shared.constants import ImageTask
automl_image_config = AutoMLImageConfig(task=ImageTask.IMAGE_OBJECT_DETECTION)

Trainings- en validatiegegevens

Als u computer Vision-modellen wilt genereren, moet u gelabelde afbeeldingsgegevens als invoer voor modeltraining gebruiken in de vorm van een Azure Machine Learning TabularDataset. U kunt een TabularDataset project gebruiken dat u hebt geëxporteerd uit een gegevenslabelproject of een nieuwe TabularDataset maken met uw gelabelde trainingsgegevens.

Als uw trainingsgegevens een andere indeling hebben (zoals Pascal VOC of COCO), kunt u de helperscripts in de voorbeeldnotitieblokken toepassen om de gegevens te converteren naar JSONL. Meer informatie over het voorbereiden van gegevens voor computer Vision-taken met geautomatiseerde ML.

Waarschuwing

Het maken van TabularDatasets van gegevens in JSONL-indeling wordt alleen ondersteund met behulp van de SDK voor deze mogelijkheid. Het maken van de gegevensset via de gebruikersinterface wordt momenteel niet ondersteund. Vanaf nu herkent de gebruikersinterface het StreamInfo-gegevenstype niet. Dit is het gegevenstype dat wordt gebruikt voor afbeeldings-URL's in JSONL-indeling.

Notitie

De trainingsgegevensset moet ten minste 10 installatiekopieën hebben om een AutoML-uitvoering te kunnen verzenden.

JSONL-schemavoorbeelden

De structuur van de TabularDataset is afhankelijk van de taak die bij de hand is. Voor computer Vision-taaktypen bestaat deze uit de volgende velden:

Veld Beschrijving
image_url Bevat bestandspad als een StreamInfo-object
image_details Informatie over metagegevens van afbeeldingen bestaat uit hoogte, breedte en indeling. Dit veld is optioneel en bestaat dus al dan niet.
label Een json-weergave van het afbeeldingslabel op basis van het taaktype.

Hier volgt een voorbeeld van een JSONL-bestand voor afbeeldingsclassificatie:

{
      "image_url": "AmlDatastore://image_data/Image_01.png",
      "image_details":
      {
          "format": "png",
          "width": "2230px",
          "height": "4356px"
      },
      "label": "cat"
  }
  {
      "image_url": "AmlDatastore://image_data/Image_02.jpeg",
      "image_details":
      {
          "format": "jpeg",
          "width": "3456px",
          "height": "3467px"
      },
      "label": "dog"
  }

De volgende code is een JSONL-voorbeeldbestand voor objectdetectie:

{
    "image_url": "AmlDatastore://image_data/Image_01.png",
    "image_details":
    {
        "format": "png",
        "width": "2230px",
        "height": "4356px"
    },
    "label":
    {
        "label": "cat",
        "topX": "1",
        "topY": "0",
        "bottomX": "0",
        "bottomY": "1",
        "isCrowd": "true",
    }
}
{
    "image_url": "AmlDatastore://image_data/Image_02.png",
    "image_details":
    {
        "format": "jpeg",
        "width": "1230px",
        "height": "2356px"
    },
    "label":
    {
        "label": "dog",
        "topX": "0",
        "topY": "1",
        "bottomX": "0",
        "bottomY": "1",
        "isCrowd": "false",
    }
}

Gegevens gebruiken

Zodra uw gegevens de JSONL-indeling hebben, kunt u een TabularDataset maken met de volgende code:

ws = Workspace.from_config()
ds = ws.get_default_datastore()
from azureml.core import Dataset

training_dataset = Dataset.Tabular.from_json_lines_files(
        path=ds.path('odFridgeObjects/odFridgeObjects.jsonl'),
        set_column_types={'image_url': DataType.to_stream(ds.workspace)})
training_dataset = training_dataset.register(workspace=ws, name=training_dataset_name)

Geautomatiseerde ML legt geen beperkingen op voor trainings- of validatiegegevensgrootte voor Computer Vision-taken. De maximale grootte van de gegevensset wordt alleen beperkt door de opslaglaag achter de gegevensset (bijvoorbeeld blobopslag). Er is geen minimum aantal afbeeldingen of labels. We raden u echter aan om te beginnen met minimaal 10-15 steekproeven per label om ervoor te zorgen dat het uitvoermodel voldoende is getraind. Hoe hoger het totale aantal labels/klassen, hoe meer voorbeelden u per label nodig hebt.

Trainingsgegevens zijn vereist en worden doorgegeven met behulp van de training_data parameter. U kunt desgewenst een andere TabularDataset opgeven als een validatiegegevensset die voor uw model moet worden gebruikt met de validation_data parameter van autoMLImageConfig. Als er geen validatiegegevensset is opgegeven, wordt standaard 20% van uw trainingsgegevens gebruikt voor validatie, tenzij u een argument met een andere waarde doorgeeft validation_size .

Voorbeeld:

from azureml.train.automl import AutoMLImageConfig
automl_image_config = AutoMLImageConfig(training_data=training_dataset)

Compute en uitvoering van het experiment instellen

Geef een rekendoel op voor geautomatiseerde ML om modeltraining uit te voeren. Geautomatiseerde ML-modellen voor computer vision-taken vereisen GPU-SKU's en ondersteunen NC- en ND-families. We raden de NCsv3-serie (met v100 GPU's) aan voor snellere training. Een rekendoel met een SKU met meerdere GPU-VM's maakt gebruik van meerdere GPU's om ook de training te versnellen. Daarnaast kunt u, wanneer u een rekendoel instelt met meerdere knooppunten, sneller modeltraining uitvoeren via parallelle uitvoering bij het afstemmen van hyperparameters voor uw model.

Notitie

Als u een rekenproces als rekendoel gebruikt, moet u ervoor zorgen dat meerdere AutoML-taken niet tegelijkertijd worden uitgevoerd. Zorg er ook voor dat deze max_concurrent_iterations is ingesteld op 1 in uw experimentbronnen.

Het rekendoel is een vereiste parameter en wordt doorgegeven met behulp van de compute_target parameter van de AutoMLImageConfig. Voorbeeld:

from azureml.train.automl import AutoMLImageConfig
automl_image_config = AutoMLImageConfig(compute_target=compute_target)

Modelalgoritmen en hyperparameters configureren

Met ondersteuning voor Computer Vision-taken kunt u het modelalgoritmen beheren en hyperparameters opruimen. Deze modelalgoritmen en hyperparameters worden doorgegeven als de parameterruimte voor de opruimen.

Het modelalgoritmen zijn vereist en worden doorgegeven via model_name de parameter. U kunt één model_name of meerdere opgeven.

Ondersteunde modelalgoritmen

De volgende tabel bevat een overzicht van de ondersteunde modellen voor elke Computer Vision-taak.

Opdracht Modelalgoritmen Letterlijke syntaxis van tekenreeks
default_model* aangeduid met *
Afbeeldingsclassificatie
(meerdere klassen en meerdere labels)
MobileNet: Lichtgewicht modellen voor mobiele toepassingen
ResNet: Restnetwerken
ResNeSt: Aandachtsnetwerken splitsen
SE-ResNeXt50: Squeeze-and-Excitation-netwerken
ViT: Vision-transformatornetwerken
mobilenetv2
resnet18
resnet34
resnet50
resnet101
resnet152
resnest50
resnest101
seresnext
vits16r224 (klein)
vitb16r224* (grondtal)
vitl16r224 (groot)
Objectdetectie YOLOv5: Objectdetectiemodel met één fase
Snellere RCNN ResNet FPN: modellen voor objectdetectie in twee fasen
RetinaNet ResNet FPN: adresklasseonbalans met brandpuntverlies

Opmerking: Raadpleeg model_size hyperparameter voor YOLOv5-modelgrootten.
yolov5*
fasterrcnn_resnet18_fpn
fasterrcnn_resnet34_fpn
fasterrcnn_resnet50_fpn
fasterrcnn_resnet101_fpn
fasterrcnn_resnet152_fpn
retinanet_resnet50_fpn
Instantiesegmentatie MaskRCNN ResNet FPN maskrcnn_resnet18_fpn
maskrcnn_resnet34_fpn
maskrcnn_resnet50_fpn*
maskrcnn_resnet101_fpn
maskrcnn_resnet152_fpn
maskrcnn_resnet50_fpn

Naast het beheren van het modelalgoritmen kunt u ook hyperparameters afstemmen die worden gebruikt voor modeltraining. Hoewel veel van de weergegeven hyperparameters modelneutraal zijn, zijn er exemplaren waarbij hyperparameters taakspecifiek of modelspecifiek zijn. Meer informatie over de beschikbare hyperparameters voor deze exemplaren.

Gegevensvergroting

Over het algemeen kunnen de prestaties van deep learning-modellen vaak worden verbeterd met meer gegevens. Gegevensvergroting is een praktische techniek om de gegevensgrootte en variabiliteit van een gegevensset te vergroten, waardoor overfitting en verbetering van de generalisatiemogelijkheden van het model op niet-gebruikte gegevens kunnen worden voorkomen. Geautomatiseerde ML past verschillende technieken voor gegevensvergroting toe op basis van de computer vision-taak, voordat invoerafbeeldingen aan het model worden ingevoerd. Op dit moment is er geen blootgestelde hyperparameter voor het beheren van gegevensvergrotingen.

Opdracht Betrokken gegevensset Toegepaste techniek(en) voor gegevensvergroting
Afbeeldingsclassificatie (meerdere klassen en meerdere labels) Training


Validatie en test
Willekeurige grootte wijzigen en bijsnijden, horizontale flip, kleur jitter (helderheid, contrast, verzadiging en tint), normalisatie met behulp van kanaalgewijze ImageNet's gemiddelde en standaarddeviatie


Formaat wijzigen, centreren, normaliseren
Objectdetectie, exemplaarsegmentatie Training

Validatie en test
Willekeurig bijsnijden rond begrenzingsvakken, uitvouwen, horizontaal spiegelen, normaliseren, formaat wijzigen


Normalisatie, formaat wijzigen
Objectdetectie met yolov5 Training

Validatie en test
Mozaïek, willekeurige affine (draaiing, vertaling, schaal, shear), horizontaal spiegelen


Formaat van brievenbus wijzigen

Uw experimentinstellingen configureren

Voordat u een grote opschoning uitvoert om te zoeken naar de optimale modellen en hyperparameters, raden we u aan om de standaardwaarden te proberen om een eerste basislijn op te halen. Vervolgens kunt u meerdere hyperparameters voor hetzelfde model verkennen voordat u meerdere modellen en hun parameters overspoelt. Op deze manier kunt u een meer iteratieve benadering gebruiken, omdat met meerdere modellen en meerdere hyperparameters voor elk, de zoekruimte exponentieel toeneemt en u meer iteraties nodig hebt om optimale configuraties te vinden.

Als u de standaard hyperparameterwaarden voor een bepaald algoritme wilt gebruiken (bijvoorbeeld yolov5), kunt u de configuratie voor uw AutoML-installatiekopieën als volgt opgeven:

from azureml.train.automl import AutoMLImageConfig
from azureml.train.hyperdrive import GridParameterSampling, choice
from azureml.automl.core.shared.constants import ImageTask

automl_image_config_yolov5 = AutoMLImageConfig(task=ImageTask.IMAGE_OBJECT_DETECTION,
                                               compute_target=compute_target,
                                               training_data=training_dataset,
                                               validation_data=validation_dataset,
                                               hyperparameter_sampling=GridParameterSampling({'model_name': choice('yolov5')}),
                                               iterations=1)

Zodra u een basislijnmodel hebt gemaakt, kunt u de modelprestaties optimaliseren om het modelalgoritmen en de hyperparameterruimte te overspoelen. U kunt de volgende voorbeeldconfiguratie gebruiken om de hyperparameters voor elk algoritme te verwijderen, te kiezen uit een reeks waarden voor learning_rate, optimizer, lr_scheduler, enzovoort, om een model te genereren met de optimale primaire metriek. Als hyperparameterwaarden niet zijn opgegeven, worden standaardwaarden gebruikt voor het opgegeven algoritme.

Primaire metrische gegevens

De primaire metrische gegevens die worden gebruikt voor modeloptimalisatie en hyperparameterafstemming, zijn afhankelijk van het taaktype. Het gebruik van andere primaire metrische waarden wordt momenteel niet ondersteund.

  • accuracy voor IMAGE_CLASSIFICATION
  • iou voor IMAGE_CLASSIFICATION_MULTILABEL
  • mean_average_precision voor IMAGE_OBJECT_DETECTION
  • mean_average_precision voor IMAGE_INSTANCE_SEGMENTATION

Experimentbudget

U kunt eventueel het maximale tijdsbudget voor uw AutoML Vision-experiment opgeven met behulp experiment_timeout_hours van de hoeveelheid tijd in uren voordat het experiment wordt beëindigd. Als er geen opgegeven is, is de standaardtime-out voor experimenten zeven dagen (maximaal 60 dagen).

Hyperparameters opruimen voor uw model

Bij het trainen van Computer Vision-modellen zijn modelprestaties sterk afhankelijk van de geselecteerde hyperparameterwaarden. Vaak wilt u de hyperparameters afstemmen om optimale prestaties te krijgen. Met ondersteuning voor Computer Vision-taken in geautomatiseerde ML kunt u hyperparameters opruimen om de optimale instellingen voor uw model te vinden. Met deze functie worden de mogelijkheden voor het afstemmen van hyperparameters in Azure Machine Learning toegepast. Meer informatie over het afstemmen van hyperparameters.

De zoekruimte voor parameters definiëren

U kunt de modelalgoritmen en hyperparameters definiëren om in de parameterruimte te vegen.

Samplingmethoden voor de opruimen

Bij het opruimen van hyperparameters moet u de samplingmethode opgeven die moet worden gebruikt voor het opruimen van de gedefinieerde parameterruimte. Momenteel worden de volgende samplingmethoden ondersteund met de hyperparameter_sampling parameter:

Notitie

Momenteel ondersteunen alleen willekeurige en rastersampling voorwaardelijke hyperparameterruimten.

Beleid voor vroegtijdige beëindiging

U kunt automatisch slecht presterende uitvoeringen beëindigen met een beleid voor vroegtijdige beëindiging. Vroegtijdige beëindiging verbetert de rekenefficiëntie, waardoor rekenresources worden bespaard die anders zouden zijn besteed aan minder veelbelovende configuraties. Geautomatiseerde ML voor installatiekopieën ondersteunt het volgende beleid voor vroegtijdige beëindiging met behulp van de early_termination_policy parameter. Als er geen beëindigingsbeleid is opgegeven, worden alle configuraties uitgevoerd tot voltooiing.

Meer informatie over het configureren van het beleid voor vroegtijdige beëindiging voor uw hyperparameter opruimen.

Resources voor de opruimen

U kunt de resources beheren die zijn besteed aan uw hyperparameterveiling door de iterations en de max_concurrent_iterations voor de opruimen op te geven.

Parameter Details
iterations Vereiste parameter voor het maximum aantal configuraties dat moet worden geveegd. Moet een geheel getal tussen 1 en 1000 zijn. Wanneer u alleen de standaardhyperparameters voor een bepaald modelalgoritmen verkent, stelt u deze parameter in op 1.
max_concurrent_iterations Maximum aantal uitvoeringen dat gelijktijdig kan worden uitgevoerd. Als dit niet is opgegeven, worden alle uitvoeringen parallel gestart. Indien opgegeven, moet een geheel getal tussen 1 en 100 zijn.

OPMERKING: Het aantal gelijktijdige uitvoeringen wordt beperkt op de resources die beschikbaar zijn in het opgegeven rekendoel. Zorg ervoor dat het rekendoel de beschikbare resources heeft voor de gewenste gelijktijdigheid.

Notitie

Raadpleeg deze zelfstudie voor een volledig voorbeeld van een sweep-configuratie.

Argumenten

U kunt vaste instellingen of parameters doorgeven die niet worden gewijzigd tijdens het opruimen van de parameterruimte als argumenten. Argumenten worden doorgegeven in naam-waardeparen en de naam moet worden voorafgegaan door een dubbel streepje.

from azureml.train.automl import AutoMLImageConfig
arguments = ["--early_stopping", 1, "--evaluation_frequency", 2]
automl_image_config = AutoMLImageConfig(arguments=arguments)

Incrementele training (optioneel)

Zodra de training is uitgevoerd, hebt u de mogelijkheid om het model verder te trainen door het getrainde modelcontrolepunt te laden. U kunt dezelfde gegevensset of een andere gegevensset gebruiken voor incrementele training.

Er zijn twee beschikbare opties voor incrementele training. U kunt:

  • Geef de uitvoerings-id door van waaruit u het controlepunt wilt laden.
  • Geef de controlepunten door via een FileDataset.

Geef het controlepunt door via de uitvoerings-id

Als u de uitvoerings-id van het gewenste model wilt vinden, kunt u de volgende code gebruiken.

# find a run id to get a model checkpoint from
target_checkpoint_run = automl_image_run.get_best_child()

Als u een controlepunt wilt doorgeven via de uitvoerings-id, moet u de checkpoint_run_id parameter gebruiken.

automl_image_config = AutoMLImageConfig(task='image-object-detection',
                                        compute_target=compute_target,
                                        training_data=training_dataset,
                                        validation_data=validation_dataset,
                                        checkpoint_run_id= target_checkpoint_run.id,
                                        primary_metric='mean_average_precision',
                                        **tuning_settings)

automl_image_run = experiment.submit(automl_image_config)
automl_image_run.wait_for_completion(wait_post_processing=True)

Het controlepunt doorgeven via FileDataset

Als u een controlepunt wilt doorgeven via een FileDataset, moet u de checkpoint_dataset_id en checkpoint_filename parameters gebruiken.

# download the checkpoint from the previous run
model_name = "outputs/model.pt"
model_local = "checkpoints/model_yolo.pt"
target_checkpoint_run.download_file(name=model_name, output_file_path=model_local)

# upload the checkpoint to the blob store
ds.upload(src_dir="checkpoints", target_path='checkpoints')

# create a FileDatset for the checkpoint and register it with your workspace
ds_path = ds.path('checkpoints/model_yolo.pt')
checkpoint_yolo = Dataset.File.from_files(path=ds_path)
checkpoint_yolo = checkpoint_yolo.register(workspace=ws, name='yolo_checkpoint')

automl_image_config = AutoMLImageConfig(task='image-object-detection',
                                        compute_target=compute_target,
                                        training_data=training_dataset,
                                        validation_data=validation_dataset,
                                        checkpoint_dataset_id= checkpoint_yolo.id,
                                        checkpoint_filename='model_yolo.pt',
                                        primary_metric='mean_average_precision',
                                        **tuning_settings)

automl_image_run = experiment.submit(automl_image_config)
automl_image_run.wait_for_completion(wait_post_processing=True)

De uitvoering verzenden

Wanneer u het AutoMLImageConfig object gereed hebt, kunt u het experiment indienen.

ws = Workspace.from_config()
experiment = Experiment(ws, "Tutorial-automl-image-object-detection")
automl_image_run = experiment.submit(automl_image_config)

Metrische gegevens voor uitvoer en evaluatie

De geautomatiseerde ML-trainingsuitvoeringen genereren uitvoermodelbestanden, metrische evaluatiegegevens, logboeken en implementatieartefacten, zoals het scorebestand en het omgevingsbestand dat kan worden weergegeven op het tabblad uitvoer en logboeken en metrische gegevens van de onderliggende uitvoeringen.

Tip

Controleer hoe u naar de taakresultaten navigeert vanuit de sectie Uitvoeringsresultaten weergeven .

Zie De resultaten van geautomatiseerde machine learning-experimenten evalueren voor definities en voorbeelden van de prestatiegrafieken en metrische gegevens voor elke uitvoering

Model registreren en implementeren

Zodra de uitvoering is voltooid, kunt u het model registreren dat is gemaakt op basis van de beste uitvoering (configuratie die heeft geresulteerd in de beste primaire metrische waarde)

best_child_run = automl_image_run.get_best_child()
model_name = best_child_run.properties['model_name']
model = best_child_run.register_model(model_name = model_name, model_path='outputs/model.pt')

Nadat u het model hebt geregistreerd dat u wilt gebruiken, kunt u het implementeren als een webservice in Azure Container Instances (ACI) of Azure Kubernetes Service (AKS). ACI is de perfecte optie voor het testen van implementaties, terwijl AKS beter geschikt is voor grootschalige productiegebruik.

In dit voorbeeld wordt het model geïmplementeerd als een webservice in AKS. Als u in AKS wilt implementeren, maakt u eerst een AKS-rekencluster of gebruikt u een bestaand AKS-cluster. U kunt GPU- of CPU-VM-SKU's gebruiken voor uw implementatiecluster.


from azureml.core.compute import ComputeTarget, AksCompute
from azureml.exceptions import ComputeTargetException

# Choose a name for your cluster
aks_name = "cluster-aks-gpu"

# Check to see if the cluster already exists
try:
    aks_target = ComputeTarget(workspace=ws, name=aks_name)
    print('Found existing compute target')
except ComputeTargetException:
    print('Creating a new compute target...')
    # Provision AKS cluster with GPU machine
    prov_config = AksCompute.provisioning_configuration(vm_size="STANDARD_NC6", 
                                                        location="eastus2")
    # Create the cluster
    aks_target = ComputeTarget.create(workspace=ws, 
                                      name=aks_name, 
                                      provisioning_configuration=prov_config)
    aks_target.wait_for_completion(show_output=True)

Vervolgens kunt u de deductieconfiguratie definiëren, waarin wordt beschreven hoe u de webservice instelt die uw model bevat. U kunt het scorescript en de omgeving van de trainingsuitvoering gebruiken in de deductieconfiguratie.

from azureml.core.model import InferenceConfig

best_child_run.download_file('outputs/scoring_file_v_1_0_0.py', output_file_path='score.py')
environment = best_child_run.get_environment()
inference_config = InferenceConfig(entry_script='score.py', environment=environment)

Vervolgens kunt u het model implementeren als een AKS-webservice.

# Deploy the model from the best run as an AKS web service
from azureml.core.webservice import AksWebservice
from azureml.core.webservice import Webservice
from azureml.core.model import Model
from azureml.core.environment import Environment

aks_config = AksWebservice.deploy_configuration(autoscale_enabled=True,                                                    
                                                cpu_cores=1,
                                                memory_gb=50,
                                                enable_app_insights=True)

aks_service = Model.deploy(ws,
                           models=[model],
                           inference_config=inference_config,
                           deployment_config=aks_config,
                           deployment_target=aks_target,
                           name='automl-image-test',
                           overwrite=True)
aks_service.wait_for_deployment(show_output=True)
print(aks_service.state)

U kunt het model ook implementeren vanuit de gebruikersinterface van Azure Machine Learning-studio. Navigeer naar het model dat u wilt implementeren op het tabblad Modellen van de geautomatiseerde ML-uitvoering en selecteer de implementatie.

Select model from the automl runs in studio UI

U kunt de naam van het eindpunt voor de modelimplementatie en het deductiecluster configureren dat moet worden gebruikt voor uw modelimplementatie in het deelvenster Een model implementeren.

Deploy configuration

Deductieconfiguratie bijwerken

In de vorige stap hebben we het scorebestand outputs/scoring_file_v_1_0_0.py van het beste model gedownload naar een lokaal score.py bestand en we hebben het bestand gebruikt om een InferenceConfig object te maken. Dit script kan zo nodig worden gewijzigd om de modelspecifieke deductie-instellingen te wijzigen nadat het is gedownload en voordat het InferenceConfigwordt gemaakt. Dit is bijvoorbeeld de codesectie waarmee het model in het scorebestand wordt geïnitialiseerd:

...
def init():
    ...
    try:
        logger.info("Loading model from path: {}.".format(model_path))
        model_settings = {...}
        model = load_model(TASK_TYPE, model_path, **model_settings)
        logger.info("Loading successful.")
    except Exception as e:
        logging_utilities.log_traceback(e, logger)
        raise
...

Elk van de taken (en sommige modellen) heeft een set parameters in de model_settings woordenlijst. Standaard gebruiken we dezelfde waarden voor de parameters die zijn gebruikt tijdens de training en validatie. Afhankelijk van het gedrag dat we nodig hebben bij het gebruik van het model voor deductie, kunnen we deze parameters wijzigen. Hieronder vindt u een lijst met parameters voor elk taaktype en elk model.

Opdracht Parameternaam Standaard
Afbeeldingsclassificatie (meerdere klassen en meerdere labels) valid_resize_size
valid_crop_size
256
224
Objectdetectie min_size
max_size
box_score_thresh
nms_iou_thresh
box_detections_per_img
600
1333
0,3
0,5
100
Objectdetectie met yolov5 img_size
model_size
box_score_thresh
nms_iou_thresh
640
 Normaal
0,1
0,5
Instantiesegmentatie min_size
max_size
box_score_thresh
nms_iou_thresh
box_detections_per_img
mask_pixel_score_threshold
max_number_of_polygon_points
export_as_image
image_type
600
1333
0,3
0,5
100
0,5
100
Onwaar
JPG

Raadpleeg Hyperparameters voor computer vision-taken in geautomatiseerde machine learning voor een gedetailleerde beschrijving van taakspecifieke hyperparameters.

Als u tiling wilt gebruiken en het gedrag van de tegel wilt beheren, zijn de volgende parameters beschikbaar: tile_grid_sizeen tile_overlap_ratiotile_predictions_nms_thresh. Raadpleeg een klein objectdetectiemodel trainen met Behulp van AutoML voor meer informatie over deze parameters.

Voorbeeldnotebooks

Bekijk gedetailleerde codevoorbeelden en gebruiksvoorbeelden in de GitHub notebookopslagplaats voor geautomatiseerde machine learning voorbeelden. Controleer de mappen met het voorvoegsel 'image-' voor voorbeelden die specifiek zijn voor het bouwen van Computer Vision-modellen.

Volgende stappen