Zephyrnet-logo

Verbeter de productiviteit van ML-ontwikkelaars met Weights & Biases: een voorbeeld van computervisie op Amazon SageMaker

Datum:

De inhoud en meningen in dit bericht zijn die van de externe auteur en AWS is niet verantwoordelijk voor de inhoud of nauwkeurigheid van dit bericht.

Naarmate meer organisaties deep learning-technieken gebruiken, zoals computervisie en natuurlijke taalverwerking, heeft de ontwikkelaar van machine learning (ML) schaalbare tools nodig rond het volgen van experimenten, afstamming en samenwerking. Het volgen van experimenten omvat metadata zoals besturingssysteem, gebruikte infrastructuur, bibliotheek en invoer- en uitvoergegevenssets, die vaak handmatig in een spreadsheet worden bijgehouden. Lineage omvat het volgen van de datasets, transformaties en algoritmen die worden gebruikt om een ​​ML-model te maken. Samenwerking omvat ML-ontwikkelaars die aan één project werken en ook ML-ontwikkelaars die hun resultaten delen met teams en met zakelijke belanghebbenden - een proces dat gewoonlijk wordt gedaan via e-mail, screenshots en PowerPoint-presentaties.

In deze post trainen we een model om objecten te identificeren voor een autonoom voertuig use case met behulp van Weights & Biases (W&B) en Amazon Sage Maker. We laten zien hoe de gezamenlijke oplossing het handmatige werk voor de ML-ontwikkelaar vermindert, meer transparantie creëert in het modelontwikkelingsproces en teams in staat stelt samen te werken aan projecten.

We voeren dit voorbeeld uit op Amazon SageMaker Studio voor u om het zelf uit te proberen.

Overzicht van gewichten en vooroordelen

Weights & Biases helpt ML-teams om sneller betere modellen te bouwen. Met slechts een paar regels code in uw SageMaker-notebook kunt u direct debuggen, vergelijken en uw modellen reproduceren - architectuur, hyperparameters, git-commits, modelgewichten, GPU-gebruik, datasets en voorspellingen - en dat alles terwijl u samenwerkt met uw teamgenoten.

W&B wordt vertrouwd door meer dan 200,000 ML-beoefenaars van enkele van de meest innovatieve bedrijven en onderzoeksorganisaties ter wereld. Om het gratis te proberen, meld je aan op Gewichten en afwijkingen, Of bezoek de W&B AWS Marketplace-vermelding.

Aan de slag met SageMaker Studio

SageMaker Studio is de eerste volledig geïntegreerde ontwikkelomgeving (IDE) voor ML. Studio biedt een enkele webgebaseerde interface waar ML-beoefenaars en datawetenschappers met een paar klikken modellen kunnen bouwen, trainen en implementeren, allemaal op één plek.

Om met Studio aan de slag te gaan, heb je een AWS-account en een AWS Identiteits- en toegangsbeheer (IAM) gebruiker of rol met machtigingen om een ​​Studio-domein te maken. Verwijzen naar Aan boord van Amazon SageMaker Domain om een ​​domein aan te maken, en de Studiodocumentatie voor een overzicht van het gebruik van de visuele interface van Studio en notebooks.

Stel de omgeving in

Voor dit bericht zijn we geïnteresseerd in het uitvoeren van onze eigen code, dus laten we wat notebooks importeren van GitHub. We gebruiken het volgende: GitHub repo als voorbeeld, dus laten we laden dit notitieboekje.

U kunt een repository klonen via de terminal of de gebruikersinterface van Studio. Om een ​​repository via de terminal te klonen, opent u een systeemterminal (op de Dien in menu, kies New en terminal) en voer het volgende commando in:

git clone https://github.com/wandb/SageMakerStudio

Om een ​​repository te klonen vanuit de Studio UI, zie Kloon een Git-repository in SageMaker Studio.

Kies om te beginnen de 01_data_processing.ipynb notitieboekje. U wordt gevraagd met een kernelswitcher-prompt. Dit voorbeeld gebruikt PyTorch, dus we kunnen de pre-built . kiezen PyTorch 1.10 Python 3.8 GPU geoptimaliseerd afbeelding om onze notebook te starten. U kunt de app zien starten en wanneer de kernel gereed is, toont deze het instantietype en de kernel rechtsboven in uw notebook.

Onze notebook heeft wat extra afhankelijkheden nodig. Deze repository biedt een requirements.txt met de extra afhankelijkheden. Voer de eerste cel uit om de vereiste afhankelijkheden te installeren:

%pip install -r requirements.txt

U kunt ook een levenscyclusconfiguratie maken om de pakketten automatisch te installeren telkens wanneer u de PyTorch-app start. Zien Pas Amazon SageMaker Studio aan met behulp van levenscyclusconfiguraties voor instructies en een voorbeeldimplementatie.

Gewichten en vooroordelen gebruiken in SageMaker Studio

Gewichten en vooroordelen (wandb) is een standaard Python-bibliotheek. Eenmaal geïnstalleerd, is het zo eenvoudig als het toevoegen van een paar regels code aan uw trainingsscript en bent u klaar om experimenten te loggen. We hebben het al geïnstalleerd via ons requirements.txt-bestand. Je kunt het ook handmatig installeren met de volgende code:

! pip install wandb

Casestudy: semantische segmentatie van autonome voertuigen

dataset

We maken gebruik van de Cambridge-driving gelabelde videodatabase (CamVid) voor dit voorbeeld. Het bevat een verzameling video's met semantische labels van objectklassen, compleet met metadata. De database biedt grondwaarheidslabels die elke pixel associëren met een van de 32 semantische klassen. We kunnen onze dataset versie als a wandb.Artefact, op die manier kunnen we er later naar verwijzen. Zie de volgende code:

with wandb.init(project="sagemaker_camvid_demo", job_type="upload"):
   artifact = wandb.Artifact(
       name='camvid-dataset',
       type='dataset',
       metadata={
           "url": 'https://s3.amazonaws.com/fast-ai-imagelocal/camvid.tgz',
           "class_labels": class_labels
       },
       description="The Cambridge-driving Labeled Video Database (CamVid) is the first collection of videos with object class semantic labels, complete with metadata. The database provides ground truth labels that associate each pixel with one of 32 semantic classes."
   )
   artifact.add_dir(path)
   wandb.log_artifact(artifact)

Je kunt volgen in de 01_data_processing.ipynb notebook.

We loggen ook een tafel van de dataset. Tabellen zijn uitgebreide en krachtige DataFrame-achtige entiteiten waarmee u tabelgegevens kunt opvragen en analyseren. U kunt uw datasets begrijpen, modelvoorspellingen visualiseren en inzichten delen in een centraal dashboard.

Weights & Biases-tabellen ondersteunen veel rich media-indelingen, zoals afbeelding, audio en golfvormen. Voor een volledige lijst van mediaformaten, zie: Gegevenstypen.

De volgende schermafbeelding toont een tabel met onbewerkte afbeeldingen met de segmentaties van de grondwaarheid. U kunt ook een interactieve versie van deze tafel.

beeld

Train een model

We kunnen nu een model maken en dit trainen op onze dataset. We gebruiken PyTorch en vasten om snel een prototype van een baseline te maken en vervolgens te gebruiken wandb.Sweeps om onze hyperparameters te optimaliseren. Volg mee in de 02_semantische_segmentatie.ipynb notitieboekje. Wanneer u bij het openen van de notebook om een ​​kernel wordt gevraagd, kiest u dezelfde kernel uit onze eerste notebook, PyTorch 1.10 Python 3.8 GPU geoptimaliseerd. Je pakketten zijn al geïnstalleerd omdat je dezelfde app gebruikt.

Het model zou een annotatie per pixel moeten leren van een scène die is vastgelegd vanuit het oogpunt van de autonome agent. Het model moet elke pixel van een bepaalde scène categoriseren of segmenteren in 32 relevante categorieën, zoals weg, voetganger, trottoir of auto's. U kunt elk van de gesegmenteerde afbeeldingen op de tafel kiezen en toegang krijgen tot deze interactieve interface voor toegang tot de segmentatieresultaten en categorieën.

Omdat de vasten bibliotheek heeft integratie met wandb, u kunt gewoon de . doorgeven WandbCallback aan de cursist:

from fastai.callback.wandb import WandbCallback

loss_func=FocalLossFlat(axis=1)
model = SegmentationModel(backbone, hidden_dim, num_classes=num_classes)
wandb_callback = WandbCallback(log_preds=True)
   learner = Learner(
        data_loader,
        model,
        loss_func=loss_func,
        metrics=metrics,
        cbs=[wandb_callback],
    )

learn.fit_one_cycle(TRAIN_EPOCHS, LEARNING_RATE)

Voor de baseline-experimenten hebben we besloten om een ​​eenvoudige architectuur te gebruiken die is geïnspireerd op de UNet papier met verschillende ruggengraat van tim. We hebben onze modellen getraind met Focaal verlies als criterium. Met Weights & Biases kun je eenvoudig dashboards maken met samenvattingen van je experimenten om snel trainingsresultaten te analyseren, zoals te zien is in de volgende schermafbeelding. Je kan ook dit dashboard interactief bekijken.

Hyperparameter zoeken met sweeps

Om de prestaties van het basislijnmodel te verbeteren, moeten we het beste model en de beste set hyperparameters selecteren om te trainen. W&B maakt dit gemakkelijk voor ons met behulp van sweeps.

We voeren een Bayesiaanse hyperparameter zoeken met als doel de voorgrondnauwkeurigheid van het model op de validatiegegevensset te maximaliseren. Om de sweep uit te voeren, definiëren we het configuratiebestand sweep.yaml. In dit bestand geven we de gewenste methode door om te gebruiken: bayes en de parameters en hun bijbehorende waarden om te zoeken. In ons geval proberen we verschillende backbones, batchgroottes en verliesfuncties. We onderzoeken ook verschillende optimalisatieparameters zoals leersnelheid en gewichtsafname. Omdat dit continue waarden zijn, nemen we steekproeven uit een verdeling. Er zijn meerdere configuratie-opties beschikbaar voor sweeps.

program: train.py
project: sagemaker_camvid_demo
method: bayes
metric:
    name: foreground_acc
    goal: maximize
early_terminate:
    type: hyperband
    min_iter: 5
parameters:
    backbone:
        values: ["mobilenetv2_100","mobilenetv3_small_050","mobilenetv3_large_100","resnet18","resnet34","resnet50","vgg19"]
    batch_size: 
        values: [8, 16]
    image_resize_factor: 
        value: 4
    loss_function: 
        values: ["categorical_cross_entropy", "focal", "dice"]
    learning_rate: 
        distribution: uniform 
        min: 1e-5
        max: 1e-2
    weight_decay: 
        distribution: uniform
        min: 0.0 
        max: 0.05

Daarna start je in een terminal de sweep met de wandb-opdrachtregel:

$ wandb sweep sweep.yaml —-project="sagemaker_camvid_demo"

En start vervolgens een sweep-agent op deze machine met de volgende code:

$ wandb agent <sweep_id>

Wanneer de sweep is voltooid, kunnen we een parallelle coördinatenplot gebruiken om de prestaties van de modellen met verschillende backbones en verschillende sets hyperparameters te onderzoeken. Op basis daarvan kunnen we zien welk model het beste presteert.

De volgende schermafbeelding toont de resultaten van de sweeps, inclusief een parallelle coördinatengrafiek en parametercorrelatiegrafieken. Je kan ook bekijk dit sweeps-dashboard interactief.

We kunnen de volgende belangrijke inzichten uit de sweep afleiden:

  • Lagere leersnelheid en lager gewichtsverval resulteert in betere voorgrondnauwkeurigheid en dobbelstenenscores.
  • Batchgrootte heeft een sterke positieve correlatie met de statistieken.
  • De Op VGG gebaseerde backbones is misschien geen goede optie om ons uiteindelijke model te trainen, omdat ze de neiging hebben om te resulteren in a verdwijnend verloop. (Ze worden eruit gefilterd naarmate het verlies uiteenliep.)
  • De ResNet backbones resulteren in de beste algehele prestaties met betrekking tot de statistieken.
  • De ResNet34- of ResNet50-backbone moet worden gekozen voor het uiteindelijke model vanwege hun sterke prestaties op het gebied van metrische gegevens.

Gegevens en modellijn

W&B-artefacten zijn ontworpen om moeiteloos een versie van uw datasets en modellen te maken, ongeacht of u uw bestanden bij W&B wilt opslaan of dat u al een bucket heeft die W&B moet bijhouden. Nadat u uw datasets of modelbestanden hebt bijgehouden, logt W&B automatisch elke wijziging, waardoor u een volledige en controleerbare geschiedenis van wijzigingen aan uw bestanden krijgt.

In ons geval worden de dataset, modellen en verschillende tabellen die tijdens de training zijn gegenereerd, vastgelegd in de werkruimte. U kunt deze afstamming snel bekijken en visualiseren door naar de Artifacts pagina.

beeld

Modelvoorspellingen interpreteren

Gewicht en vooroordelen is vooral handig bij het beoordelen van modelprestaties door gebruik te maken van de kracht van wandb.Tafels om te visualiseren waar ons model het slecht doet. In dit geval zijn we vooral geïnteresseerd in het correct detecteren van kwetsbare gebruikers zoals fietsen en voetgangers.

We hebben de voorspelde maskers samen met de dobbelstenenscore-coëfficiënt per klasse in een tabel vastgelegd. We hebben vervolgens gefilterd op rijen met de gewenste klassen en gesorteerd op oplopende volgorde op de Dice-score.

In de volgende tabel filteren we eerst door te kiezen waar de Dice-score positief is (voetgangers zijn aanwezig in de afbeelding). Vervolgens sorteren we in oplopende volgorde om onze slechtst gedetecteerde voetgangers te identificeren. Houd er rekening mee dat een dobbelsteenscore gelijk aan 1 betekent dat de voetgangersklasse correct is gesegmenteerd. Je kan ook bekijk deze tafel interactief.

beeld

We kunnen deze analyse herhalen met andere kwetsbare klassen, zoals fietsen of verkeerslichten.

Deze functie is een zeer goede manier om afbeeldingen te identificeren die niet correct zijn gelabeld en ze te taggen om ze opnieuw te annoteren.

Conclusie

In dit bericht werd het Weights & Biases MLOps-platform getoond, hoe je W&B in SageMaker Studio opzet en hoe je een inleidend notebook op de gezamenlijke oplossing kunt draaien. Vervolgens hebben we een use-case voor semantische segmentatie van autonome voertuigen doorgenomen en hebben we trackingtrainingen gedemonstreerd met W&B-experimenten, hyperparameteroptimalisatie met behulp van W&B-sweeps en het interpreteren van resultaten met W&B-tabellen.

Als je meer wilt weten, heb je toegang tot de live W&B rapport. Om Weights & Biases gratis te proberen, meld je aan bij Gewichten en afwijkingen, Of bezoek de W&B AWS Marketplace-vermelding.


Over de auteurs

Thomas Kapelle is Machine Learning Engineer bij Weights and Biases. Hij is verantwoordelijk voor het live en up-to-date houden van de www.github.com/wandb/examples-repository. Hij bouwt ook inhoud op MLOPS, toepassingen van W&B voor industrieën en leuk deep learning in het algemeen. Voorheen gebruikte hij deep learning om kortetermijnvoorspellingen voor zonne-energie op te lossen. Hij heeft een achtergrond in stadsplanning, combinatorische optimalisatie, transporteconomie en toegepaste wiskunde.

Durga Sury is een ML Solutions Architect in het Amazon SageMaker Service SA-team. Ze heeft een passie om machine learning voor iedereen toegankelijk te maken. In haar 3 jaar bij AWS heeft ze geholpen bij het opzetten van AI/ML-platforms voor zakelijke klanten. Als ze niet aan het werk is, houdt ze van motorritten, mysterieromans en wandelingen met haar vierjarige husky.

Karthik Bharathy is de productleider voor Amazon SageMaker met meer dan tien jaar ervaring op het gebied van productbeheer, productstrategie, uitvoering en lancering.

spot_img

Laatste intelligentie

spot_img