Nastavení automatického strojového učení pro trénování modelů počítačového zpracování obrazu
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
Sada Python SDK azure-ai-ml v2 (aktuální)
V tomto článku se dozvíte, jak trénovat modely počítačového zpracování obrazu na datech obrázků pomocí automatizovaného strojového učení s rozšířením Azure Machine Learning CLI v2 nebo sadou Azure Machine Learning Python SDK v2.
Automatizované strojové učení podporuje trénování modelů pro úlohy počítačového zpracování obrazu, jako jsou klasifikace obrázků, rozpoznávání objektů nebo segmentace instancí. Vytváření modelů automatizovaného strojového učení pro úlohy počítačového zpracování obrazu se v současné době podporuje prostřednictvím sady Python SDK služby Azure Machine Learning. Výsledné zkušební verze experimentování, modely a výstupy jsou přístupné z uživatelského rozhraní studio Azure Machine Learning. Přečtěte si další informace o automatizovaném ml pro úlohy počítačového zpracování obrazu o obrazových datech.
Předpoklady
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
- Pracovní prostor služby Azure Machine Learning. Informace o vytvoření pracovního prostoru najdete v tématu Vytvoření prostředků pracovního prostoru.
- Nainstalujte a nastavte rozhraní příkazového řádku (v2) a ujistěte se, že jste nainstalovali
ml
rozšíření.
Vyberte typ úkolu.
Automatizované strojové učení pro image podporuje následující typy úloh:
Typ úkolu | Syntaxe úlohy AutoML |
---|---|
klasifikace obrázků | ROZHRANÍ PŘÍKAZOVÉHO ŘÁDKU v2: image_classification SDK v2: image_classification() |
klasifikace obrázků s více popisky | ROZHRANÍ PŘÍKAZOVÉHO ŘÁDKU v2: image_classification_multilabel SDK v2: image_classification_multilabel() |
Rozpoznávání objektů obrázků | ROZHRANÍ PŘÍKAZOVÉHO ŘÁDKU v2: image_object_detection SDK v2: image_object_detection() |
Segmentace instance image | ROZHRANÍ PŘÍKAZOVÉHO ŘÁDKU v2: image_instance_segmentation SDK v2: image_instance_segmentation() |
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
Tento typ úlohy je povinný parametr a dá se nastavit pomocí task
klíče.
Příklad:
task: image_object_detection
Trénovací a ověřovací data
Chcete-li generovat modely počítačového MLTable
zpracování obrazu, musíte jako vstup pro trénování modelu přenést data obrázků označená jako vstup ve formě . Můžete vytvořit MLTable
z trénovacích dat ve formátu JSONL.
Pokud jsou vaše trénovací data v jiném formátu (například Pascal VOC nebo COCO), můžete použít pomocné skripty, které jsou součástí ukázkových poznámkových bloků, a převést data na JSONL. Přečtěte si další informace o tom, jak připravit data pro úlohy počítačového zpracování obrazu pomocí automatizovaného strojového učení.
Poznámka
Aby bylo možné odeslat úlohu AutoML, musí trénovací data obsahovat alespoň 10 obrázků.
Upozornění
MLTable
Vytváření dat z dat ve formátu JSONL se pro tuto funkci podporuje pouze pomocí sady SDK a rozhraní příkazového řádku. MLTable
Vytváření přes uživatelské rozhraní není v tuto chvíli podporováno.
Ukázky schématu JSONL
Struktura objektu TabularDataset závisí na úkolu, který se má provést. Pro typy úloh počítačového zpracování obrazu se skládá z následujících polí:
Pole | Description |
---|---|
image_url |
Obsahuje cestu k souboru jako objekt StreamInfo. |
image_details |
Informace o metadatech obrázku se skládají z výšky, šířky a formátu. Toto pole je volitelné, a proto může nebo nemusí existovat. |
label |
Reprezentace popisku obrázku ve formátu JSON na základě typu úlohy |
Následuje ukázkový soubor JSONL pro klasifikaci obrázků:
{
"image_url": "azureml://subscriptions/<my-subscription-id>/resourcegroups/<my-resource-group>/workspaces/<my-workspace>/datastores/<my-datastore>/paths/image_data/Image_01.png",
"image_details":
{
"format": "png",
"width": "2230px",
"height": "4356px"
},
"label": "cat"
}
{
"image_url": "azureml://subscriptions/<my-subscription-id>/resourcegroups/<my-resource-group>/workspaces/<my-workspace>/datastores/<my-datastore>/paths/image_data/Image_02.jpeg",
"image_details":
{
"format": "jpeg",
"width": "3456px",
"height": "3467px"
},
"label": "dog"
}
Následující kód je ukázkový soubor JSONL pro detekci objektů:
{
"image_url": "azureml://subscriptions/<my-subscription-id>/resourcegroups/<my-resource-group>/workspaces/<my-workspace>/datastores/<my-datastore>/paths/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": "azureml://subscriptions/<my-subscription-id>/resourcegroups/<my-resource-group>/workspaces/<my-workspace>/datastores/<my-datastore>/paths/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",
}
}
Využívání dat
Jakmile budou vaše data ve formátu JSONL, můžete vytvořit trénování a ověřování MLTable
, jak je znázorněno níže.
paths:
- file: ./train_annotations.jsonl
transformations:
- read_json_lines:
encoding: utf8
invalid_lines: error
include_path_column: false
- convert_column_types:
- columns: image_url
column_type: stream_info
Automatizované strojové učení nemá pro úlohy počítačového zpracování obrazu žádná omezení pro trénování nebo ověřování dat. Maximální velikost datové sady je omezená pouze vrstvou úložiště za datovou sadou (tj. úložištěm objektů blob). Neexistuje minimální počet obrázků nebo popisků. Doporučujeme však začít s minimálně 10 až 15 vzorky na popisek, aby byl výstupní model dostatečně natrénovaný. Čím vyšší je celkový počet popisků/tříd, tím více vzorků na popisek potřebujete.
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
Trénovací data jsou povinný parametr a předávají se pomocí training_data
klíče. Volitelně můžete pomocí klíče zadat jinou tabulku MLtable jako ověřovací data validation_data
. Pokud nejsou zadána žádná ověřovací data, použije se k ověření ve výchozím nastavení 20 % trénovacích dat, pokud nepředáte validation_data_size
argument s jinou hodnotou.
Název cílového sloupce je povinný parametr a používá se jako cíl pro úlohu strojového učení pod dohledem. Předává se pomocí target_column_name
klíče. Třeba
target_column_name: label
training_data:
path: data/training-mltable-folder
type: mltable
validation_data:
path: data/validation-mltable-folder
type: mltable
Výpočetní prostředí pro spuštění experimentu
Zadejte cílový výpočetní objekt pro automatizované strojové učení, který bude provádět trénování modelu. Modely automatizovaného strojového učení pro úlohy počítačového zpracování obrazu vyžadují skladové položky GPU a podporují rodiny nc a ND. Pro rychlejší trénování doporučujeme řadu NCsv3 (s grafickými procesory v100). Cílový výpočetní objekt se skladovou položkou virtuálního počítače s více GPU využívá více grafických procesorů k urychlení trénování. Pokud navíc nastavíte cílový výpočetní objekt s více uzly, můžete při ladění hyperparametrů pro váš model provádět rychlejší trénování modelu prostřednictvím paralelismu.
Poznámka
Pokud jako cílový výpočetní objekt používáte výpočetní instanci , ujistěte se, že není spuštěno více úloh Automatizovaného strojového učení současně. Ujistěte se také, že max_concurrent_trials
je v limitech úloh nastavená hodnota 1.
Cílový výpočetní objekt se předává pomocí parametru compute
. Příklad:
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
compute: azureml:gpu-cluster
Konfigurace experimentů
Pro úlohy počítačového zpracování obrazu můžete spustit individuální zkušební verze, ruční úklid nebo automatické úklidy. Doporučujeme začít s automatickým úklidem, abyste získali první základní model. Pak můžete vyzkoušet individuální zkušební verze s určitými modely a konfiguracemi hyperparametrů. Pomocí ručních úklidů můžete prozkoumat více hodnot hyperparametrů v blízkosti slibnějších modelů a konfigurací hyperparametrů. Tento třístupňový pracovní postup (automatické uklidení, individuální pokusy, ruční úklid) zabraňuje prohledávání celého prostoru hyperparametrů, který exponenciálně roste v počtu hyperparametrů.
Automatické úklidy můžou přinést konkurenční výsledky pro mnoho datových sad. Navíc nevyžadují pokročilou znalost architektur modelů, berou v úvahu korelace hyperparametrů a bezproblémově fungují napříč různými hardwarovými nastaveními. Všechny tyto důvody z nich dělají silnou volbu pro počáteční fázi procesu experimentování.
Primární metrika
Úloha trénování Automatizovaného strojového učení používá primární metriku pro optimalizaci modelu a ladění hyperparametrů. Primární metrika závisí na typu úkolu, jak je znázorněno níže. Jiné hodnoty primárních metrik se v současné době nepodporují.
- Přesnost klasifikace obrázků
- Průnik nad sjednocením pro více popisky klasifikace obrázků
- Střední průměrná přesnost pro detekci objektu obrázku
- Průměrná přesnost segmentace instance obrázku
Limity úloh
Prostředky vynaložené na trénovací timeout_minutes
úlohu image Automatizovaného strojového učení můžete řídit tak, max_trials
že pro úlohu zadáte , a pro úlohu v nastavení limitu max_concurrent_trials
, jak je popsáno v následujícím příkladu.
Parametr | Podrobnosti |
---|---|
max_trials |
Parametr pro maximální počet pokusů, které se mají uklidit. Musí to být celé číslo mezi 1 a 1 000. Při zkoumání pouze výchozích hyperparametrů pro danou architekturu modelu nastavte tento parametr na hodnotu 1. Výchozí hodnota je 1. |
max_concurrent_trials |
Maximální počet zkušebních verzí, které můžou běžet souběžně. Pokud je zadáno, musí se jednat o celé číslo v rozmezí od 1 do 100. Výchozí hodnota je 1. POZNÁMKA: max_concurrent_trials je interně omezený max_trials . Pokud například uživatel nastaví max_concurrent_trials=4 , max_trials=2 hodnoty se interně aktualizují jako max_concurrent_trials=2 , max_trials=2 . |
timeout_minutes |
Doba v minutách před ukončením experimentu. Pokud není zadán žádný parametr, výchozí timeout_minutes experimentu je sedm dnů (maximálně 60 dnů). |
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
limits:
timeout_minutes: 60
max_trials: 10
max_concurrent_trials: 2
Automatické úklidové hyperparametry modelu (Automatický režim)
Důležité
Tato funkce je v současné době ve verzi Public Preview. Tato verze Preview se poskytuje bez smlouvy o úrovni služeb. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.
Obecně je obtížné předpovědět nejlepší architekturu modelu a hyperparametry pro datovou sadu. V některých případech může být také omezený lidský čas přidělený k ladění hyperparametrů. Pro úlohy počítačového zpracování obrazu můžete zadat počet pokusů a systém automaticky určí oblast prostoru hyperparametrů, který se má uklidit. Nemusíte definovat prostor pro vyhledávání hyperparametrů, metodu vzorkování nebo zásady předčasného ukončení.
Aktivace automatického režimu
Automatické úklidy můžete spustit tak, že nastavíte max_trials
hodnotu větší než 1 in limits
a nezadáte vyhledávací prostor, metodu vzorkování a zásady ukončení. Tuto funkci nazýváme AutoMode; Podívejte se na příklad níže.
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
limits:
max_trials: 10
max_concurrent_trials: 2
Řada pokusů mezi 10 a 20 bude pravděpodobně dobře fungovat u mnoha datových sad. Časový rozpočet pro úlohu Automatizovaného strojového učení je stále možné nastavit, ale doporučujeme to udělat jenom v případě, že může každé zkušební období trvat dlouho.
Upozornění
Spouštění automatických úklidů prostřednictvím uživatelského rozhraní se v tuto chvíli nepodporuje.
Zkušební verze pro jednotlivce
Ve zkušebních verzích pro jednotlivce přímo řídíte architekturu modelu a hyperparametry. Architektura modelu se předává prostřednictvím parametru model_name
.
Podporované architektury modelů
Následující tabulka shrnuje podporované modely pro jednotlivé úlohy počítačového zpracování obrazu.
Úkol | architektury modelů | Syntaxe řetězcového literáludefault_model * označeno * |
---|---|---|
Klasifikace obrázků (více tříd a více popisků) |
MobileNet: Odlehčené modely pro mobilní aplikace ResNet: Zbytkové sítě ResNeSt: Rozdělte sítě pozornosti SE-ResNeXt50: Sítě se zmáčknutím a buzením ViT: Sítě obrazových transformátorů |
mobilenetv2 resnet18 resnet34 resnet50 resnet101 resnet152 resnest50 resnest101 seresnext vits16r224 (malý)vitb16r224 * (základní)vitl16r224 (velký) |
Detekce objektů | YOLOv5: Jednofázový model detekce objektů Rychlejší RCNN ResNet FPN: Dvoufázové modely detekce objektů RetinaNet ResNet FPN: nerovnovážná třída adres s fokální ztrátou Poznámka: Pro velikosti modelů YOLOv5 se podívejte na model_size hyperparametr . |
yolov5 * fasterrcnn_resnet18_fpn fasterrcnn_resnet34_fpn fasterrcnn_resnet50_fpn fasterrcnn_resnet101_fpn fasterrcnn_resnet152_fpn retinanet_resnet50_fpn |
Segmentace instancí | Hlavní název FPN pro MaskRCNN z resnetu | maskrcnn_resnet18_fpn maskrcnn_resnet34_fpn maskrcnn_resnet50_fpn * maskrcnn_resnet101_fpn maskrcnn_resnet152_fpn |
Kromě řízení architektury modelu můžete také ladit hyperparametry používané pro trénování modelu. I když jsou mnohé z vystavených hyperparametrů nezávislé na modelu, existují instance, ve kterých jsou hyperparametry specifické pro úlohu nebo model. Přečtěte si další informace o dostupných hyperparametrech pro tyto instance.
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
Pokud chcete pro danou architekturu použít výchozí hodnoty hyperparametrů (například yolov5), můžete je zadat pomocí klíče model_name v části training_parameters. Třeba
training_parameters:
model_name: yolov5
Ruční úklid hyperparametrů modelu
Při trénování modelů počítačového zpracování obrazu závisí výkon modelu do značné míry na vybraných hodnotách hyperparametrů. Často můžete chtít vyladit hyperparametry, abyste získali optimální výkon. U úloh počítačového zpracování obrazu můžete zametat hyperparametry a najít tak optimální nastavení pro váš model. Tato funkce využívá možnosti ladění hyperparametrů ve službě Azure Machine Learning. Zjistěte, jak ladit hyperparametry.
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
search_space:
- model_name:
type: choice
values: [yolov5]
learning_rate:
type: uniform
min_value: 0.0001
max_value: 0.01
model_size:
type: choice
values: [small, medium]
- model_name:
type: choice
values: [fasterrcnn_resnet50_fpn]
learning_rate:
type: uniform
min_value: 0.0001
max_value: 0.001
optimizer:
type: choice
values: [sgd, adam, adamw]
min_size:
type: choice
values: [600, 800]
Definování prostoru pro vyhledávání parametrů
Můžete definovat architektury modelu a hyperparametry, které se mají v prostoru parametrů zamést. Můžete zadat jednu architekturu modelu nebo několik architektur.
- Seznam podporovaných architektur modelů pro jednotlivé typy úloh najdete v tématu Zkušební verze pro jednotlivce.
- Hyperparametry pro úlohy počítačového zpracování obrazu najdete v tématu Hyperparametry pro každý typ úlohy počítačového zpracování obrazu.
- Projděte si podrobnosti o podporovaných distribucích pro diskrétní a průběžné hyperparametry.
Metody vzorkování pro úklid
Při zametání hyperparametrů je potřeba zadat metodu vzorkování, která se má použít k úklidu definovaného prostoru parametrů. V současné době se s parametrem sampling_algorithm
podporují následující metody vzorkování:
Typ vzorkování | Syntaxe úloh Automatizovaného strojového učení |
---|---|
Náhodné vzorkování | random |
Vzorkování mřížky | grid |
Bayesovské vzorkování | bayesian |
Poznámka
V současné době podmíněné prostory hyperparametrů podporují pouze náhodné vzorkování a vzorkování mřížky.
Zásady předčasného ukončení
Se zásadami předčasného ukončení můžete automaticky ukončit pokusy s nízkým výkonem. Předčasné ukončení zlepšuje efektivitu výpočtů a šetří výpočetní prostředky, které by se jinak utratily za méně slibné pokusy. Automatizované strojové učení pro image podporuje následující zásady předčasného ukončení pomocí parametru early_termination
. Pokud nejsou zadané žádné zásady ukončení, všechny pokusy se spustí až do dokončení.
Zásady předčasného ukončení | Syntaxe úloh Automatizovaného strojového učení |
---|---|
Zásady banditů | ROZHRANÍ PŘÍKAZOVÉHO ŘÁDKU v2: bandit SDK v2: BanditPolicy() |
Zásady zastavení mediánu | ROZHRANÍ PŘÍKAZOVÉHO ŘÁDKU v2: median_stopping SDK v2: MedianStoppingPolicy() |
Zásady výběru zkrácení | ROZHRANÍ PŘÍKAZOVÉHO ŘÁDKU v2: truncation_selection SDK v2: TruncationSelectionPolicy() |
Přečtěte si další informace o tom, jak nakonfigurovat zásady předčasného ukončení pro úklid hyperparametrů.
Poznámka
Kompletní ukázku konfigurace úklidu najdete v tomto kurzu.
Můžete nakonfigurovat všechny parametry související s úklidem, jak je znázorněno v následujícím příkladu.
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
sweep:
sampling_algorithm: random
early_termination:
type: bandit
evaluation_interval: 2
slack_factor: 0.2
delay_evaluation: 6
Opravená nastavení
Můžete předat pevná nastavení nebo parametry, které se během úklidu prostoru parametrů nemění, jak je znázorněno níže.
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
training_parameters:
early_stopping: True
evaluation_frequency: 1
Rozšíření dat
Obecně platí, že výkon modelu hlubokého učení se může často zlepšit s větším objemem dat. Rozšíření dat je praktická technika pro zesílení velikosti dat a variability datové sady, která pomáhá zabránit přeurčení a zlepšit schopnost modelu generalizace u neviditelných dat. Automatizované strojové učení používá různé techniky rozšíření dat na základě úlohy počítačového zpracování obrazu před tím, než do modelu vloží vstupní obrázky. V současné době není k dispozici žádný vystavený hyperparametr pro řízení rozšíření dat.
Úkol | Ovlivněná datová sada | Použité techniky rozšíření dat |
---|---|---|
Klasifikace obrázků (s více třídami a více popisky) | Školení Ověřovací & test |
Náhodná změna velikosti a oříznutí, vodorovné překlopení, kolísání barev (jas, kontrast, sytost a odstín), normalizace pomocí střední a směrodatné odchylky ImageNetu pro kanály Změna velikosti, oříznutí na střed, normalizace |
Detekce objektů, segmentace instancí | Školení Ověřovací & test |
Náhodné oříznutí kolem ohraničujícího rámečku, rozbalení, vodorovné překlopení, normalizace, změna velikosti Normalizace, změna velikosti |
Rozpoznávání objektů pomocí yolov5 | Školení Ověřovací & test |
Mozaika, náhodná afinní (rotace, překlad, měřítko, smyk), vodorovný překlopení Změna velikosti poštovní schránky |
V současné době se rozšíření definovaná výše používají ve výchozím nastavení pro automatizované strojové učení pro úlohu image. Kvůli zajištění kontroly nad rozšířeními automatizované strojové učení pro obrázky zveřejňuje pod dvěma příznaky vypnutí určitých rozšíření. V současné době jsou tyto příznaky podporovány pouze pro úlohy detekce objektů a segmentace instancí.
- apply_mosaic_for_yolo: Tento příznak je specifický pouze pro model Yolo. Nastavení na Hodnotu False vypne rozšíření dat mozaiky, které se použije v době trénování.
- apply_automl_train_augmentations: Nastavením tohoto příznaku na false vypnete rozšíření použité během trénování pro modely rozpoznávání objektů a segmentace instancí. Informace o rozšíření najdete v podrobnostech ve výše uvedené tabulce.
- Pro model detekce objektů a modely segmentace instancí, které nejsou yolo, tento příznak vypne pouze první tři rozšíření, tj. náhodné oříznutí kolem ohraničující rámečky, rozbalení, vodorovné překlopení. Normalizace a změna velikosti rozšíření se stále používají bez ohledu na tento příznak.
- U modelu Yolo tento příznak vypne náhodné rozšíření afin a vodorovného překlopení.
Tyto dva příznaky jsou podporovány prostřednictvím advanced_settings v rámci training_parameters a lze je řídit následujícím způsobem.
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
training_parameters:
advanced_settings: >
{"apply_mosaic_for_yolo": false}
training_parameters:
advanced_settings: >
{"apply_automl_train_augmentations": false}
Upozorňujeme, že tyto dva příznaky jsou nezávislé na sobě a dají se také použít v kombinaci pomocí následujících nastavení.
training_parameters:
advanced_settings: >
{"apply_automl_train_augmentations": false, "apply_mosaic_for_yolo": false}
V našich experimentech jsme zjistili, že tato rozšíření pomáhají modelu lépe generalizovat. Proto, když jsou tato rozšíření vypnutá, doporučujeme uživatelům, aby je zkombinovali s dalšími rozšířeními offline, aby získali lepší výsledky.
Přírůstkové trénování (volitelné)
Po dokončení trénovací úlohy máte možnost model dále trénovat načtením natrénovaného kontrolního bodu modelu. Pro přírůstkové trénování můžete použít buď stejnou datovou sadu, nebo jinou datovou sadu.
Předání kontrolního bodu přes ID úlohy
Můžete předat ID úlohy, ze které chcete načíst kontrolní bod.
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
training_parameters:
checkpoint_run_id : "target_checkpoint_run_id"
Odeslání úlohy AutoML
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
Pokud chcete odeslat úlohu automatizovaného strojového učení, spusťte následující příkaz rozhraní příkazového řádku v2 s cestou k souboru .yml, názvem pracovního prostoru, skupinou prostředků a ID předplatného.
az ml job create --file ./hello-automl-job-basic.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Výstupy a metriky vyhodnocení
Automatizované trénovací úlohy ML generují výstupní soubory modelu, metriky vyhodnocení, protokoly a artefakty nasazení, jako je soubor bodování a soubor prostředí, které je možné zobrazit na kartě výstupy, protokoly a metriky podřízených úloh.
Tip
V části Zobrazit výsledky úlohy zkontrolujte, jak přejít k výsledkům úlohy .
Definice a příklady grafů výkonu a metrik poskytovaných pro jednotlivé úlohy najdete v tématu Vyhodnocení výsledků experimentů automatizovaného strojového učení.
Registrace a nasazení modelu
Po dokončení úlohy můžete zaregistrovat model vytvořený z nejlepší zkušební verze (konfigurace, která vedla k nejlepší primární metrikě). Model můžete zaregistrovat buď po stažení, nebo zadáním cesty azureml s odpovídajícím ID úlohy. Poznámka: Pokud chcete změnit nastavení odvozování, které je popsáno níže, musíte stáhnout model a změnit soubor settings.json a zaregistrovat se pomocí aktualizované složky modelu.
Získání nejlepší zkušební verze
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
CLI example not available, please use Python SDK.
zaregistrovat model
Zaregistrujte model pomocí cesty azureml nebo místně stažené cesty.
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
az ml model create --name od-fridge-items-mlflow-model --version 1 --path azureml://jobs/$best_run/outputs/artifacts/outputs/mlflow-model/ --type mlflow_model --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Po registraci modelu, který chcete použít, ho můžete nasadit pomocí spravovaného online koncového bodu deploy-managed-online-endpoint.
Konfigurace online koncového bodu
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: od-fridge-items-endpoint
auth_mode: key
Vytvoření koncového bodu
Pomocí dříve vytvořeného koncového MLClient
bodu teď vytvoříme koncový bod v pracovním prostoru. Tento příkaz spustí vytváření koncového bodu a vrátí potvrzovací odpověď, zatímco bude vytváření koncového bodu pokračovat.
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
az ml online-endpoint create --file .\create_endpoint.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Konfigurace online nasazení
Nasazení je sada prostředků vyžadovaná pro hostování modelu, který provádí skutečné odvozování. Vytvoříme nasazení pro náš koncový bod pomocí ManagedOnlineDeployment
třídy . Pro cluster nasazení můžete použít skladové položky virtuálních počítačů gpu nebo procesoru.
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
name: od-fridge-items-mlflow-deploy
endpoint_name: od-fridge-items-endpoint
model: azureml:od-fridge-items-mlflow-model@latest
instance_type: Standard_DS3_v2
instance_count: 1
liveness_probe:
failure_threshold: 30
success_threshold: 1
timeout: 2
period: 10
initial_delay: 2000
readiness_probe:
failure_threshold: 10
success_threshold: 1
timeout: 10
period: 10
initial_delay: 2000
Vytvoření nasazení
Pomocí dříve vytvořeného MLClient
nasazení teď vytvoříme v pracovním prostoru. Tento příkaz spustí vytváření nasazení a vrátí potvrzovací odpověď, zatímco vytváření nasazení bude pokračovat.
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
az ml online-deployment create --file .\create_deployment.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
přenosy aktualizací:
Ve výchozím nastavení je aktuální nasazení nastaveno tak, aby přijímalo 0 % provozu. můžete nastavit procento provozu, které má aktuální nasazení přijímat. Součet procent provozu všech nasazení s jedním koncovým bodem by neměl překročit 100 %.
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
az ml online-endpoint update --name 'od-fridge-items-endpoint' --traffic 'od-fridge-items-mlflow-deploy=100' --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Případně můžete model nasadit z uživatelského rozhraní studio Azure Machine Learning. Na kartě Modely úlohy automatizovaného strojového učení přejděte k modelu, který chcete nasadit, vyberte Deploy (Nasadit ) a pak deploy to real-time endpoint (Nasadit do koncového bodu v reálném čase ).
takhle vypadá vaše stránka s recenzemi. můžeme vybrat typ instance, počet instancí a nastavit procento provozu pro aktuální nasazení.
Aktualizace nastavení odvození
V předchozím kroku jsme stáhli soubor mlflow-model/artifacts/settings.json
z nejlepšího modelu. který lze použít k aktualizaci nastavení odvozování před registrací modelu. Pro zajištění nejlepšího výkonu se ale doporučuje používat stejné parametry jako u trénování.
Každý úkol (a některé modely) má sadu parametrů. Ve výchozím nastavení používáme stejné hodnoty pro parametry, které se použily při trénování a ověřování. V závislosti na chování, které potřebujeme při použití modelu k odvozování, můžeme tyto parametry změnit. Níže najdete seznam parametrů pro jednotlivé typy úloh a modely.
Úkol | Název parametru | Výchozí |
---|---|---|
Klasifikace obrázků (s více třídami a více popisky) | valid_resize_size valid_crop_size |
256 224 |
Detekce objektů | min_size max_size box_score_thresh nms_iou_thresh box_detections_per_img |
600 1333 0.3 0,5 100 |
Rozpoznávání objektů pomocí yolov5 |
img_size model_size box_score_thresh nms_iou_thresh |
640 střední 0.1 0,5 |
Segmentace instancí | 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 Ne JPG |
Podrobný popis hyperparametrů specifických pro konkrétní úlohy najdete v tématu Hyperparametry pro úlohy počítačového zpracování obrazu v automatizovaném strojovém učení.
Pokud chcete použít dlaždici a chcete řídit chování dlaždic, jsou k dispozici následující parametry: tile_grid_size
, tile_overlap_ratio
a tile_predictions_nms_thresh
. Další podrobnosti o těchto parametrech najdete v tématu trénování modelu detekce malých objektů pomocí automatizovaného strojového učení.
Otestování nasazení
Pokud chcete otestovat nasazení a vizualizovat detekce z modelu, projděte si část Testování nasazení .
Generování vysvětlení predikcí
Důležité
Tato nastavení jsou aktuálně ve verzi Public Preview. Jsou poskytovány bez smlouvy o úrovni služeb. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.
Upozornění
Vysvětlitelnost modelu je podporována pouze pro klasifikaci s více třídami a klasifikaci s více popisky.
Některé z výhod použití vysvětlitelné AI (XAI) s AutoML pro obrázky:
- Zlepšuje transparentnost predikcí komplexního modelu zpracování obrazu.
- Pomáhá uživatelům pochopit důležité funkce nebo pixely na vstupním obrázku, které přispívají k predikcím modelu.
- Pomoc při řešení potíží s modely
- Pomáhá při zjišťování předsudků
Vysvětlení
Vysvětlení jsou přisuzování funkcí nebo váhy jednotlivým pixelům vstupního obrázku na základě jeho příspěvku k predikci modelu. Každá váha může být záporná (negativně korelovaná s predikcí) nebo kladná (pozitivně korelovaná s predikcí). Tyto atribuce se počítají na základě předpovězené třídy. Pro klasifikaci s více třídami se pro každý vzorek vygeneruje přesně jedna matice atribuce velikosti [3, valid_crop_size, valid_crop_size]
, zatímco pro klasifikaci s více popisky se pro každý predikovaný popisek nebo třídu pro každý vzorek vygeneruje matice atribuce velikosti [3, valid_crop_size, valid_crop_size]
.
Pomocí vysvětlitelné umělé inteligence v Automatizovaném strojovém učení pro obrázky na nasazený koncový bod můžou uživatelé získat vizualizace vysvětlení (atribuce překrývající vstupní obrázek) a/nebo atribuce (multidimenzionální pole velikosti [3, valid_crop_size, valid_crop_size]
) pro každý obrázek. Kromě vizualizací můžou uživatelé získat také atribuční matice, aby získali větší kontrolu nad vysvětleními (například generování vlastních vizualizací pomocí atribucí nebo zkoumání segmentů atribucí). Všechny algoritmy vysvětlení budou pro generování zdrojů používat oříznuté čtvercové obrázky o velikosti valid_crop_size
.
Vysvětlení je možné vygenerovat buď z online koncového bodu , nebo z dávkového koncového bodu. Po dokončení nasazení je možné tento koncový bod použít k vygenerování vysvětlení předpovědí. V případě online nasazení nezapomeňte předat request_settings = OnlineRequestSettings(request_timeout_ms=90000)
parametr ManagedOnlineDeployment
a nastavit request_timeout_ms
jeho maximální hodnotu, abyste se při generování vysvětlení vyhnuli problémům s vypršením časového limitu (viz část registrace a nasazení modelu). Některé metody vysvětlitelnosti (XAI) například xrai
spotřebovávají více času (zejména pro klasifikaci s více popisky, protože potřebujeme vygenerovat atribuce a/nebo vizualizace pro každý predikovaný popisek). Pro rychlejší vysvětlení proto doporučujeme jakoukoli instanci GPU. Další informace o schématu vstupu a výstupu pro generování vysvětlení najdete v dokumentaci ke schématům.
Podporujeme následující nejmodernější algoritmy pro vysvětlení v Automatizovaném strojovém učení pro obrázky:
- XRAI (xrai)
- Integrované přechody (integrated_gradients)
- GradCAM s asistencí (guided_gradcam)
- BackPropagation s asistencí (guided_backprop)
Následující tabulka popisuje parametry ladění specifické pro algoritmus vysvětlení pro XRAI a integrované přechody. Backpropagation s asistencí a gradcam s asistencí nevyžadují žádné parametry ladění.
Algoritmus XAI | Parametry specifické pro algoritmus | Výchozí hodnoty |
---|---|---|
xrai |
1. n_steps : Počet kroků použitých metodou aproximace. Větší počet kroků vede k lepšímu aproximaci přisuzování (vysvětlení). Rozsah n_steps je [2, inf), ale výkon atribucí začne konvergovat po 50 krocích. Optional, Int 2. xrai_fast : Zda použít rychlejší verzi XRAI. Pokud True , je výpočet doby pro vysvětlení rychlejší, ale vede k méně přesným vysvětlením (přiřazením)Optional, Bool |
n_steps = 50 xrai_fast = True |
integrated_gradients |
1. n_steps : Počet kroků použitých metodou aproximace. Větší počet kroků vede k lepším atribucím (vysvětlením). Rozsah n_steps je [2, inf), ale výkon atribucí začne konvergovat po 50 krocích.Optional, Int 2. approximation_method : Metoda aproximování integrálu. Dostupné metody aproximace jsou riemann_middle a gausslegendre .Optional, String |
n_steps = 50 approximation_method = riemann_middle |
Interně algoritmus XRAI používá integrované přechody. Proto je parametr vyžadován jak integrovanými přechody, n_steps
tak algoritmy XRAI. Větší počet kroků spotřebovává více času na přibližné vysvětlení a může vést k problémům s vypršením časového limitu na online koncovém bodu.
Pro lepší vysvětlení doporučujeme používat algoritmy XRAI Guided GradCAM > Integrated Gradients > Guided BackPropagation, zatímco pro rychlejší vysvětlení v zadaném pořadí se doporučuje použít integrované gradienty > XRAI s asistencí BackPropagation > Guided GradCAM>.>
Ukázkový požadavek na online koncový bod vypadá takto. Tento požadavek generuje vysvětlení, pokud model_explainability
je nastavená na True
hodnotu . Následující požadavek vygeneruje vizualizace a atribuce pomocí rychlejší verze algoritmu XRAI s 50 kroky.
import base64
import json
def read_image(image_path):
with open(image_path, "rb") as f:
return f.read()
sample_image = "./test_image.jpg"
# Define explainability (XAI) parameters
model_explainability = True
xai_parameters = {"xai_algorithm": "xrai",
"n_steps": 50,
"xrai_fast": True,
"visualizations": True,
"attributions": True}
# Create request json
request_json = {"input_data": {"columns": ["image"],
"data": [json.dumps({"image_base64": base64.encodebytes(read_image(sample_image)).decode("utf-8"),
"model_explainability": model_explainability,
"xai_parameters": xai_parameters})],
}
}
request_file_name = "sample_request_data.json"
with open(request_file_name, "w") as request_file:
json.dump(request_json, request_file)
resp = ml_client.online_endpoints.invoke(
endpoint_name=online_endpoint_name,
deployment_name=deployment.name,
request_file=request_file_name,
)
predictions = json.loads(resp)
Další informace o generování vysvětlení najdete v úložišti poznámkových bloků GitHubu pro ukázky automatizovaného strojového učení.
Interpretace vizualizací
Nasazený koncový bod vrátí řetězec image s kódováním Base64, pokud jsou obě model_explainability
hodnoty nastavené na True
hodnotu i visualizations
. Dekódujte řetězec base64 tak, jak je popsáno v poznámkových blocích , nebo použijte následující kód k dekódování a vizualizaci řetězců obrázků base64 v predikci.
import base64
from io import BytesIO
from PIL import Image
def base64_to_img(base64_img_str):
base64_img = base64_img_str.encode("utf-8")
decoded_img = base64.b64decode(base64_img)
return BytesIO(decoded_img).getvalue()
# For Multi-class classification:
# Decode and visualize base64 image string for explanations for first input image
# img_bytes = base64_to_img(predictions[0]["visualizations"])
# For Multi-label classification:
# Decode and visualize base64 image string for explanations for first input image against one of the classes
img_bytes = base64_to_img(predictions[0]["visualizations"][0])
image = Image.open(BytesIO(img_bytes))
Následující obrázek popisuje vizualizaci vysvětlení ukázkového vstupního obrázku.
Dekódovaný obrázek base64 bude mít čtyři části obrázku v mřížce 2 x 2.
- Obrázek v levém horním rohu (0, 0) je oříznutý vstupní obrázek.
- Obrázek v pravém horním rohu (0, 1) je heat mapa atribucí na barevné škále bgyw (modrá zelená žlutá), kde příspěvek bílých pixelů na předpovězenou třídu je nejvyšší a modré pixely nejnižší.
- Obrázek v levém dolním rohu (1, 0) je smíšená heat mapa atribucí na oříznutý vstupní obrázek.
- Obrázek v pravém dolním rohu (1, 1) je oříznutý vstupní obrázek s horními 30 procenty pixelů na základě skóre přisuzování.
Interpretace atribucí
Nasazený koncový bod vrátí atribuce, pokud jsou i model_explainability
attributions
nastavené na True
. Další podrobnosti najdete v poznámkových blocích s více třídami a klasifikaci s více popisky.
Tyto zdroje poskytují uživatelům větší kontrolu nad generováním vlastních vizualizací nebo kontrolou skóre přisuzování na úrovni pixelů. Následující fragment kódu popisuje způsob generování vlastních vizualizací pomocí matice atribuce. Další informace o schématu atribucí pro klasifikaci s více třídami a klasifikaci s více popisky najdete v dokumentaci ke schématům.
K vygenerování vysvětlení použijte přesné valid_resize_size
hodnoty a valid_crop_size
vybraného modelu (výchozí hodnoty jsou 256 a 224). Následující kód používá funkci vizualizace Captum ke generování vlastních vizualizací. Uživatelé můžou ke generování vizualizací využít jakoukoli jinou knihovnu. Další podrobnosti najdete v nástrojích pro vizualizaci captum.
import colorcet as cc
import numpy as np
from captum.attr import visualization as viz
from PIL import Image
from torchvision import transforms
def get_common_valid_transforms(resize_to=256, crop_size=224):
return transforms.Compose([
transforms.Resize(resize_to),
transforms.CenterCrop(crop_size)
])
# Load the image
valid_resize_size = 256
valid_crop_size = 224
sample_image = "./test_image.jpg"
image = Image.open(sample_image)
# Perform common validation transforms to get the image used to generate attributions
common_transforms = get_common_valid_transforms(resize_to=valid_resize_size,
crop_size=valid_crop_size)
input_tensor = common_transforms(image)
# Convert output attributions to numpy array
# For Multi-class classification:
# Selecting attribution matrix for first input image
# attributions = np.array(predictions[0]["attributions"])
# For Multi-label classification:
# Selecting first attribution matrix against one of the classes for first input image
attributions = np.array(predictions[0]["attributions"][0])
# visualize results
viz.visualize_image_attr_multiple(np.transpose(attributions, (1, 2, 0)),
np.array(input_tensor),
["original_image", "blended_heat_map"],
["all", "absolute_value"],
show_colorbar=True,
cmap=cc.cm.bgyw,
titles=["original_image", "heatmap"],
fig_size=(12, 12))
Velké datové sady
Pokud k trénování velkých datových sad používáte AutoML, může být užitečné několik experimentálních nastavení.
Důležité
Tato nastavení jsou aktuálně ve verzi Public Preview. Jsou poskytovány bez smlouvy o úrovni služeb. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.
Trénování s více GPU a více uzly
Ve výchozím nastavení se každý model trénuje na jednom virtuálním počítači. Pokud trénování modelu trvá příliš dlouho, může vám pomoct použití virtuálních počítačů, které obsahují více GPU. Doba trénování modelu na velkých datových sadách by se měla snížit přibližně lineárním poměrem k počtu použitých GPU. (Model by například měl na virtuálním počítači se dvěma grafickými procesory trénovat přibližně dvakrát rychleji než na virtuálním počítači s jedním GPU.) Pokud je čas na trénování modelu na virtuálním počítači s více grafickými procesory stále vysoký, můžete zvýšit počet virtuálních počítačů používaných k trénování jednotlivých modelů. Podobně jako u trénování s více GPU by se měla zkrátit i doba trénování modelu na velkých datových sadách v přibližně lineárním poměru k počtu použitých virtuálních počítačů. Při trénování modelu napříč několika virtuálními počítači nezapomeňte použít skladovou položku výpočetních prostředků, která podporuje InfiniBand . Počet virtuálních počítačů používaných k trénování jednoho modelu můžete nakonfigurovat nastavením node_count_per_trial
vlastnosti úlohy AutoML.
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
properties:
node_count_per_trial: "2"
Streamování souborů obrázků z úložiště
Ve výchozím nastavení se všechny soubory obrázků stáhnou na disk před trénováním modelu. Pokud je velikost souborů bitové kopie větší než dostupné místo na disku, úloha selže. Místo stahování všech imagí na disk můžete zvolit streamování souborů imagí z úložiště Azure podle potřeby během trénování. Soubory obrázků se streamují z úložiště Azure přímo do systémové paměti a obcházejí disk. Současně se na disku ukládá co nejvíce souborů z úložiště, aby se minimalizoval počet požadavků na úložiště.
Poznámka
Pokud je povolené streamování, ujistěte se, že se účet úložiště Azure nachází ve stejné oblasti jako výpočetní prostředky, aby se minimalizovaly náklady a latence.
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
training_parameters:
advanced_settings: >
{"stream_image_files": true}
Příklady poznámkových bloků
Podrobné příklady kódu a případy použití najdete v ukázkách automatizovaného strojového učení v úložišti poznámkových bloků na GitHubu. Podívejte se prosím do složek s předponou automl-image-, kde najdete ukázky specifické pro vytváření modelů počítačového zpracování obrazu.
Příklady kódu
Projděte si podrobné příklady kódu a případy použití v úložišti azureml-examples pro ukázky automatizovaného strojového učení.