Vad är en Azure Machine Learning-komponent?

GÄLLER FÖR:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (aktuell)

En Azure Machine Learning-komponent är en fristående kod som utför ett steg i en maskininlärningspipeline. En komponent motsvarar en funktion – den har ett namn, indata, utdata och en brödtext. Komponenter är byggstenarna i Azure Machine Learning-pipelines.

En komponent består av tre delar:

  • Metadata: namn, display_name, version, typ osv.
  • Gränssnitt: specifikationer för indata/utdata (namn, typ, beskrivning, standardvärde osv.).
  • Kommando, kod och miljö: kommando, kod och miljö som krävs för att köra komponenten.

Diagram of what a component looks like and how it looks in a pipeline. In addition to screenshots of a component in the CLI, SDK, and portal UI.

Varför ska jag använda en komponent?

Det är en bra teknisk metod att skapa en maskininlärningspipeline för att dela upp en fullständig maskininlärningsuppgift i ett arbetsflöde i flera steg. Så att alla kan arbeta med det specifika steget oberoende av varandra. I Azure Machine Learning representerar en komponent ett återanvändbart steg i en pipeline. Komponenter är utformade för att hjälpa till att förbättra produktiviteten i pipelinebyggandet. Mer specifikt erbjuder komponenter:

  • Väldefinierat gränssnitt: Komponenter kräver ett väldefinierat gränssnitt (indata och utdata). Med gränssnittet kan användaren enkelt skapa steg och ansluta steg. Gränssnittet döljer också den komplexa logiken i ett steg och tar bort bördan att förstå hur steget implementeras.

  • Dela och återanvända: Som byggstenar i en pipeline kan komponenter enkelt delas och återanvändas mellan pipelines, arbetsytor och prenumerationer. Komponenter som skapats av ett team kan identifieras och användas av ett annat team.

  • Versionskontroll: Komponenterna är versionshanterade. Komponentproducenterna kan fortsätta att förbättra komponenterna och publicera nya versioner. Konsumenter kan använda specifika komponentversioner i sina pipelines. Detta ger dem kompatibilitet och reproducerbarhet.

Enhetstestbar: En komponent är en fristående kod. Det är enkelt att skriva enhetstest för en komponent.

Komponent och pipeline

En maskininlärningspipeline är arbetsflödet för en fullständig maskininlärningsuppgift. Komponenter är byggstenarna i en maskininlärningspipeline. När du tänker på en komponent måste den vara inom ramen för pipelinen.

För att skapa komponenter är det första att definiera maskininlärningspipelinen. Detta kräver att du delar upp den fullständiga maskininlärningsuppgiften i ett arbetsflöde i flera steg. Varje steg är en komponent. Om du till exempel överväger en enkel maskininlärningsuppgift att använda historiska data för att träna en modell för försäljningsprognoser kanske du vill skapa ett sekventiellt arbetsflöde med databearbetning, modellträning och modellutvärderingssteg. För komplexa uppgifter kanske du vill dela upp ytterligare. Du kan till exempel dela upp ett enda steg för databearbetning i datainmatning, datarensning, dataförbearbetning och funktionsframställningssteg.

När stegen i arbetsflödet har definierats är nästa sak att ange hur varje steg ska anslutas i pipelinen. Om du till exempel vill ansluta steget för databearbetning och modellträning kan du definiera en databearbetningskomponent för att mata ut en mapp som innehåller bearbetade data. En träningskomponent tar en mapp som indata och matar ut en mapp som innehåller den tränade modellen. Dessa indata- och utdatadefinitioner blir en del av komponentgränssnittsdefinitionen.

Nu är det dags att utveckla koden för att köra ett steg. Du kan använda önskade språk (python, R osv.). Koden måste kunna köras med ett gränssnittskommando. Under utvecklingen kanske du vill lägga till några indata för att styra hur det här steget ska köras. För ett träningssteg kan du till exempel vilja lägga till inlärningshastighet, antal epoker som indata för att kontrollera träningen. Dessa ytterligare indata plus de indata och utdata som krävs för att ansluta med andra steg är komponentens gränssnitt. Argumentet för ett gränssnittskommando används för att skicka indata och utdata till koden. Miljön för att köra kommandot och koden måste anges. Miljön kan vara en kuraterad Azure Machine Learning-miljö, en docker-avbildning eller en conda-miljö.

Slutligen kan du paketera allt inklusive kod, cmd, miljö, indata, utdata, metadata tillsammans till en komponent. Anslut sedan dessa komponenter till att skapa pipelines för ditt maskininlärningsarbetsflöde. En komponent kan användas i flera pipelines.

Mer information om hur du skapar en komponent finns i:

Nästa steg