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í)

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 MLTablezpracová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í.

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:
  • Počet souběžných pokusů se vztahuje na prostředky dostupné v zadaném cílovém výpočetním objektu. Ujistěte se, že cílový výpočetní objekt má dostupné prostředky pro požadovanou souběžnost.
  • max_concurrent_trials je interně omezený max_trials . Pokud například uživatel nastaví max_concurrent_trials=4, max_trials=2hodnoty 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álu
    default_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.

    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í.

    1. 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í.
    2. 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 ).

    Snímek obrazovky se stránkou Nasazení po výběru možnosti Nasadit

    takhle vypadá vaše stránka s recenzemi. můžeme vybrat typ instance, počet instancí a nastavit procento provozu pro aktuální nasazení.

    Snímek obrazovky znázorňující, jak po výběru možností nasazení vypadá horní část stránky revizí Snímek obrazovky znázorňující, jak vypadá dolní část stránky revizí po výběru možností 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:

    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 Truehodnotu . 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 Truehodnotu 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. Snímek obrazovky s vizualizacemi vygenerovanými XAI pro AutoML pro obrázky

    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_explainabilityattributions 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

    Další kroky