Hoe angsten te overwinnen en te beginnen met Azure Machine Learning

Ik ken veel Data Scientists — en ik beschouw mezelf misschien ook als een van hen — die werken op machines met GPU's, lokaal of virtueel, geplaatst in de cloud, of via Jupyter Notebook, of in een andere Python-ontwikkelomgeving. Gedurende twee jaar, als expert-ontwikkelaar in AI/ML, heb ik het precies zo gedaan, waarbij ik gegevens voorbereide op een gewone server of werkstation en het leren uitvoerde op een virtuele machine met GPU in Azure.

Zeker, we hebben allemaal gehoord over Azure Machine Learning — een speciaal cloudplatform voor machine learning. Maar na de eerste blik op inleidende artikelen, krijg je de indruk dat Azure ML je meer problemen zal geven dan het oplost. Bijvoorbeeld, in het eerder genoemde opleidingsvoorbeeld wordt de training op Azure ML gestart vanuit Jupyter Notebook, terwijl het trainingsscript wordt voorgesteld om te worden gemaakt en bewerkt als een tekstbestand in een van de cellen — en waarbij geen gebruik gemaakt wordt van autocompletion, syntaxhighlighting en andere voordelen van een normale ontwikkelomgeving. Om deze reden hebben we Azure ML lange tijd niet serieus in ons werk gebruikt.

Recentelijk ontdekte ik echter een manier om Azure ML efficiënt in mijn werk te gebruiken! Ben je geïnteresseerd in de details?

Hoe angsten te overwinnen en te beginnen met Azure Machine Learning

Het belangrijkste geheim is de Visual Studio Code extensie voor Azure ML. Hiermee kun je trainingsscripts ontwikkelen direct in VS Code, gebruikmakend van alle voordelen van de omgeving — en je kunt zelfs het script lokaal uitvoeren en het dan met slechts een paar muisklikken naar Azure ML sturen voor training. Handig, toch?

Hierdoor krijg je de volgende voordelen van het gebruik van Azure ML:

  • Je kunt het grootste deel van de tijd lokaal op je machine werken in een handige IDE, en alleen GPU gebruiken voor modeltraining. Bovendien kan de pool van trainingsresources zich automatisch aanpassen aan de vereiste belasting, en door het minimale aantal knooppunten op 0 in te stellen, kun je automatisch een virtuele machine "op aanvraag" starten wanneer er trainingsopdrachten zijn.
  • Je kunt alle trainingsresultaten op ƩƩn plek opslaan, inclusief de behaalde metrics en de verkregen modellen — er is geen noodzaak om zelf een systeem of volgorde voor het opslaan van alle resultaten te bedenken.
  • Tegelijkertijd kunnen meerdere mensen aan hetzelfde project werken Aan een project kunnen meerdere mensen werken — ze kunnen dezelfde rekenc cluster gebruiken, waarbij alle experimenten in een wachtrij worden geplaatst, en ze kunnen ook elkaars experimentele resultaten bekijken. Een van dergelijke scenario's is het gebruik van Azure ML in het onderwijs van Deep Learning, wanneer je in plaats van elke student een virtuele machine met GPU te geven, ƩƩn cluster kunt creĆ«ren dat door iedereen centraal wordt gebruikt. Bovendien kan een gezamenlijke resultatenlijst met modelnauwkeurigheid dienen als een goed competitief element.
  • Met Azure ML kunnen eenvoudig series van experimenten worden uitgevoerd, bijvoorbeeld voor hyperparameteroptimalisatie — dit kan met een paar regels code worden gedaan, zonder handmatig series van experimenten uit te voeren.

Ik hoop dat ik je heb overtuigd om Azure ML te proberen! Hier is hoe je kunt beginnen:

Azure ML Workspace en Azure ML Portal

Azure ML is georganiseerd rond het concept van een werkruimte — Workspace. In de werkruimte kunnen gegevens worden opgeslagen, experimenten voor training worden ingestuurd, en daar worden ook de trainingsresultaten opgeslagen — de verkregen metrics en modellen. Je kunt zien wat zich in de werkruimte bevindt via de Azure ML portal — en van daaruit kun je veel bewerkingen uitvoeren, van het uploaden van gegevens tot het monitoren van experimenten en het implementeren van modellen.

Een werkruimte kan worden aangemaakt via de webinterface Azure Portal (zie stapsgewijze instructies), of met behulp van de Azure CLI commandolijn (handleiding,):

az extension add -n azure-cli-ml
az group create -n myazml -l northeurope
az ml workspace create -w myworkspace -g myazml

Er zijn ook enkele aan de werkruimte gekoppelde rekenresources (Compute). Nadat je een script hebt gemaakt voor het trainen van een model, kun je een experiment indienen voor uitvoering in de werkruimte en een compute target opgeven — het script zal worden verpakt, uitgevoerd in de juiste rekensomgeving, en daarna zullen alle experimentresultaten in de werkruimte worden opgeslagen voor verdere analyse en gebruik.

Trainingsscript voor MNIST

Laten we de klassieke taak bekijken van het herkennen van handgeschreven cijfers met behulp van de MNIST-dataset. Op dezelfde manier kunt u later al uw eigen trainingsscripts uitvoeren.

In onze repository staat een script train_local.py, dat een eenvoudige lineaire regressiemodel traint met de SkLearn-bibliotheek. Natuurlijk begrijp ik dat dit niet de beste manier is om de taak op te lossen — we gebruiken het als voorbeeld omdat het de eenvoudigste is.

Het script downloadt eerst de MNIST-gegevens van OpenML en gebruikt vervolgens de klasse LogisticRegression om het model te trainen en drukt vervolgens de verkrijgbare nauwkeurigheid af:

mnist = fetch_openml('mnist_784')
mnist['target'] = np.array([int(x) for x in mnist['target']])

shuffle_index = np.random.permutation(len(mnist['data']))
X, y = mnist['data'][shuffle_index], mnist['target'][shuffle_index]

X_train, X_test, y_train, y_test = 
  train_test_split(X, y, test_size = 0.3, random_state = 42)

lr = LogisticRegression()
lr.fit(X_train, y_train)
y_hat = lr.predict(X_test)
acc = np.average(np.int32(y_hat == y_test))

print('Algemene nauwkeurigheid:', acc)

U kunt het script op uw computer uitvoeren en na een paar seconden het resultaat krijgen.

We voeren het script uit in Azure ML

Als we het script voor training via Azure ML uitvoeren, hebben we twee belangrijke voordelen:

  • Training op willekeurige rekenkracht, die meestal krachtiger is dan een lokale computer. Azure ML zorgt ervoor dat ons script samen met alle bestanden uit de huidige directory in een docker-container wordt verpakt, de vereiste afhankelijkheden instelt en het ter uitvoering verzendt.
  • Het opslaan van resultaten in een centrale register binnen de Azure ML-werkruimte. Om gebruik te maken van deze mogelijkheid, moeten we een paar regels code aan ons script toevoegen om de resulterende nauwkeurigheid op te slaan:

from azureml.core.run import Run
...
try:    
    run = Run.get_submitted_run()
    run.log('nauwkeurigheid', acc)
except:
    pass

De bijbehorende versie van het script heet train_universal.py (het is iets geavanceerder dan hierboven beschreven, maar niet veel). Dit script kan zowel lokaal als op een externe rekenkracht worden uitgevoerd.

Om het in Azure ML vanuit VS Code uit te voeren, moet u het volgende doen:

  1. Zorg ervoor dat de Azure-extensie is verbonden met uw abonnement. Selecteer het Azure-pictogram in het linker menu. Als u niet verbonden bent, verschijnt er een melding rechtsonder (dit type), waarop u kunt klikken om in te loggen via uw browser. U kunt ook druk op Ctrl-Shift-P om de opdrachtregel van VS Code op te roepen en typ Azure Sign In.

  2. Daarna vindt u in het Azure-gedeelte (pictogram links) de sectie MACHINE LEARNING:

Hoe angsten te overwinnen en te beginnen met Azure Machine Learning
Hier zou u verschillende groepen objecten binnen de werkruimte moeten zien: rekenbronnen, experimenten, enzovoort.

  1. Ga naar de bestandslijst, klik met de rechtermuisknop op het script train_universal.py en kies Azure ML: Voer uit als experiment in Azure.

Hoe angsten te overwinnen en te beginnen met Azure Machine Learning

  1. Daarna volgt een reeks dialoogvensters in de VS Code-opdrachtregel: bevestig het gebruikte abonnement en de Azure ML-werkruimte, en kies Nieuw experiment aanmaken:

Hoe angsten te overwinnen en te beginnen met Azure Machine Learning
Hoe angsten te overwinnen en te beginnen met Azure Machine Learning
Hoe angsten te overwinnen en te beginnen met Azure Machine Learning

  1. Kies nieuw rekenresource aanmaken Nieuwe rekenmachine aanmaken:

    • Compute bepaalt de rekenresource waarop de training zal plaatsvinden. U kunt kiezen voor een lokale computer of een cloudcluster AmlCompute. Ik raad aan een schaalbaar cluster machines te maken STANDARD_DS3_v2, met een minimum aantal machines van 0 (en het maximum kan 1 of meer zijn, afhankelijk van uw wensen). Dit kan worden gedaan via de VS Code-interface, of vooraf via ML Portal.

    Hoe angsten te overwinnen en te beginnen met Azure Machine Learning

  2. Vervolgens moet u de configuratie kiezen Rekenconfiguratie, die de parameters definieert voor de container die wordt aangemaakt voor training, met name alle benodigde bibliotheken. In ons geval, aangezien we Scikit Learn gebruiken, kiezen we SkLearn, en bevestigen vervolgens eenvoudig de voorgestelde lijst met bibliotheken door op Enter te drukken. Als u extra bibliotheken gebruikt, moeten deze hier worden vermeld.

    Hoe angsten te overwinnen en te beginnen met Azure Machine Learning
    Hoe angsten te overwinnen en te beginnen met Azure Machine Learning

  3. Daarna opent er een venster met een JSON-bestand dat het experiment beschrijft. Hierin kunt u enkele parameters corrigeren, bijvoorbeeld de naam van het experiment. Klik daarna op de link Experiment indienen rechtstreeks binnen dit bestand:

Hoe angsten te overwinnen en te beginnen met Azure Machine Learning

  1. Na succesvolle indiening van het experiment via VS Code, ziet u aan de rechterkant in het notificatiegebied een link naar Azure ML Portal, waar u de status en resultaten van het experiment kunt volgen.

Hoe angsten te overwinnen en te beginnen met Azure Machine Learning
U kunt het later altijd vinden in de sectie Experimenten Azure ML Portal, of in de sectie Azure Machine Learning in de lijst met experimenten:

Hoe angsten te overwinnen en te beginnen met Azure Machine Learning

  1. Als u daarna wijzigingen in de code heeft aangebracht of parameters heeft veranderd, zal het opnieuw uitvoeren van het experiment veel sneller en eenvoudiger zijn. Door met de rechtermuisknop op het bestand te klikken, ziet u een nieuw menu-item Herhaal laatste uitvoering — kies dit eenvoudig en het experiment zal direct worden uitgevoerd:

Hoe angsten te overwinnen en te beginnen met Azure Machine Learning
De resultaten van de metrics van alle uitvoeringen kunt u altijd vinden op het Azure ML Portal, het is niet nodig deze op te schrijven.

U weet nu dat het uitvoeren van experimenten met Azure ML eenvoudig en pijnloos is, en u krijgt een aantal prettige voordelen.

Maar u heeft misschien ook de nadelen opgemerkt. Bijvoorbeeld, het kostte aanzienlijk meer tijd om het script uit te voeren. Natuurlijk kost het tijd om het script in een container te verpakken en dit op de server uit te rollen. Als het cluster op dat moment is beperkt tot 0 knooppunten, kost het nog meer tijd om de virtuele machine te starten, en dit is duidelijk merkbaar wanneer we experimenteren met eenvoudige taken zoals MNIST, die in enkele seconden kunnen worden opgelost. In het echte leven, wanneer de training enkele uren, dagen of zelfs weken duurt, wordt deze extra tijd echter onbelangrijk, vooral gezien de veel hogere prestaties die een rekend cluster kan bieden.

Wat nu?

Ik hoop dat u na het lezen van dit artikel Azure ML in uw werk kunt en zult gebruiken voor het uitvoeren van scripts, het beheren van rekenresources en het gecentraliseerd opslaan van resultaten. Azure ML kan u echter nog meer voordelen bieden!

Binnen de werkruimte kunt u gegevens opslaan, waardoor u een gecentraliseerde opslag voor al uw taken creƫert, die gemakkelijk toegankelijk is. Bovendien kunt u experimenten uitvoeren niet vanuit Visual Studio Code, maar met behulp van de API - dit kan bijzonder nuttig zijn als u hyperparameters moet optimaliseren en het script meerdere keren met verschillende parameters moet uitvoeren. Bovendien is er in Azure ML een speciale technologie ingebouwd. Hyperdrive, die een slimmere zoektocht en optimalisatie van hyperparameters mogelijk maakt. Ik zal deze mogelijkheden in mijn volgende artikel bespreken.

Nuttige bronnen

Voor een meer gedetailleerde studie van Azure ML kunnen de volgende Microsoft Learn-cursussen nuttig zijn:

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster