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-ml
extensie (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 ml
extensie of v2. Zie de Azure Machine Learning 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:
Maak een rekenproces, waarmee de SDK automatisch wordt geïnstalleerd en vooraf is geconfigureerd voor ML-werkstromen. Zie Een Azure Machine Learning-rekenproces maken en beheren voor meer informatie.
Installeer het
automl
pakket zelf, inclusief de standaardinstallatie van de SDK.
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 tekenreeksdefault_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.
- Zie Modelalgoritmen en hyperparameters configureren voor de lijst met ondersteunde modelalgoritmen voor elk taaktype.
- Zie Hyperparameters voor Computer Vision-taken hyperparameters voor elk type Computer Vision-taak.
- Zie de details over ondersteunde distributies voor discrete en continue hyperparameters.
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 | Detail |
---|---|
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.
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.
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 InferenceConfig
wordt 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 | Standaardinstelling |
---|---|---|
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_size
en tile_overlap_ratio
tile_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.