Självstudie: Skapa en utvärderingskonfigurationsfil

Följande innehåll stöder TRAIN-fasen i Bonsai användarresan

Följ den här självstudien för att lära dig:

  • Så här utformar du anpassade utvärderingar.
  • Så här skriver du en utvärderingskonfigurationsfil.
  • Så här översätter SimConfig du typer till avsnittskonfigurationer.

Om du vill följa den här självstudien måste du ha ett Microsoft- eller Azure-konto och en Bonsai arbetsyta etablerad i Azure. Om du behöver ett konto eller en Utvärderingsversion av Azure följer du anvisningarna i Microsoft-kontokonfigurationen innan Bonsai du fortsätter.

Lägga till anpassad utvärdering

visningsnamn, beskrivning och en uppmaning om att ladda upp en JSON-fil.

Utforma en anpassad utvärdering

I Maskinundervisning innebär utvärdering att utvärdera hur väl din AI implementerar en princip i en uppsättning scenarier (avsnittskonfigurationer).

Med utvärdering kan du fastställa kvaliteten och robustheten i det inlärda beteendet i simuleringen med dataloggning och, för simuleringar som stöder det, realtidsvisualiseringar.

Tänk på följande när du utformar en anpassad utvärdering:

  • Börja med att identifiera de specifika element som du vill utvärdera om din principprestanda och utveckla utvärderingsplaner för vart och ett av dessa element.
  • Om du har en mängd olika scenarier som du vill utvärdera bör du överväga att dela upp dem i separata utvärderingar för enklare dataanalys.
  • Testa en mängd olika scenarier, inklusive vanliga fall, optimala fall och värsta fall.
  • Överväg scenarier som är extrema eller inträffar sällan (kantfall och hörnfall).
  • Om principen tillåter oväntade eller ogiltiga starttillstånd kan du inkludera ogiltiga scenarier i utvärderingen.
  • Om simuleringen innehåller slumpmässiga sannolikhetsfördelningar (en stokastisk simulator) och du vill köra ett visst scenario flera gånger måste du ha flera poster i samma avsnittskonfiguration.

Skapa en tom utvärderingskonfigurationsfil

Bonsai använder utvärderingskonfigurationsfiler för att initiera simuleringsmiljön som används för att utvärdera målhjärnan. Utvärderingskonfigurationsfiler är enkla JSON-filer med tre fält: version, contextoch episodeConfigurations:

{
  "version": "ASSESSMENT_SCHEMA_VERSION",
  "context": {},
  "episodeConfigurations": []
}

Huvudelementet i utvärderingskonfigurationsfilen är fältet episodeConfigurations . episodeConfiguration är en matris med en eller flera poster som representerar startsimuleringskonfigurationer för din utvärdering baserat på SimConfig typen av Inkling-fil. Om du inte anger explicita startvärden i konfigurationsfilen Bonsai använder standardvärdet enligt definitionen i träningssimuleringen.

Så här skapar du en ny utvärderingskonfiguration:

  1. Öppna önskad oformaterad textredigerare (Visual Studio Code, Atom osv.)
  2. Skapa en ny .json fil och namnge den med datumet och syftet med utvärderingen. Till exempel "BadTerrain-2021-01-21.json" eller "HighTemps-2021-02-05.json".
  3. Kopiera konfigurationsmallen nedan till den nya filen.
{
  "version": "1.0.0",
  "context": {},
  "episodeConfigurations": []
}

Tips

Du kan använda användargränssnittet Bonsai för att skapa en grundläggande konfigurationsfil:

  1. Öppna användargränssnittetBonsai.
  2. Välj den hjärnversion som du vill utvärdera.
  3. Välj på fliken Träna .
  4. Välj knappen + Ny utvärdering i utvärderingspanelen.
  5. Ange antalet avsnitt för utvärderingen.
  6. Ange ett värde, en uppsättning värden eller ett värdeintervall för alla konfigurerbara variabler som du vill begränsa med hjälp av Inkling-syntax.
  7. Klicka på Generera.
  8. Kopiera den genererade JSON-filen till en textredigerare och spara filen med filnamnstillägget .json.
  9. Följ resten av självstudien för att göra ytterligare anpassningar.

Översätta din SimConfig typ till avsnittskonfigurationer

Den viktigaste delen av utvärderingskonfigurationsfilen är matrisen med avsnittskonfigurationer. Avsnittskonfigurationer visar Bonsai hur du konfigurerar simuleringen när utvärderingen startar. Varje utvärderingskonfigurationsfil måste ha minst en avsnittskonfiguration.

Avsnittskonfigurationer måste ha samma struktur som SimConfig typen i Inkling-filen för den hjärnversion som du vill utvärdera.

Följande Inkling-typ:

type SimConfig {
  ConfigField_1: Field_1_Type,
  ConfigField_2: {
    TypeSubField_1: SubField_1_Type,
    TypeSubField_2: SubField_2_Type,
  }
  ...
  ConfigField_N: Field_N_Type,
}

Översätts till följande avsnittsdefinition i utvärderingskonfigurationen:

{
  "ConfigField_1": "Value_1",
  "ConfigField_2": {
    "TypeSubField_1": "SubValue_1",
    "TypeSubField_2": "SubValue_2",
  },
  ...
  "ConfigField_N": "Value_N",
}

Viktigt

De flesta talfält skickas som tal i konfigurationsfilen, men uppräknade nummertyper måste skickas som strängar.

Översättning av enfältstyper SimConfig

SimConfig Anta att typen i Inkling-filen innehåller ett enda fält med namnet Drive av typen Direction:

type Direction number<Left = 0, Right = 1, Straight = 2, Back = 3>
type SimConfig { Drive: Direction }

Varje post i episodens konfigurationsmatris måste ange ett giltigt värde för Drive enligt definitionen av Direction typen . Ett exempel:

[
  {"Drive": "Left"},
  {"Drive": "Right"},
  {"Drive": "Back"}
]

Eftersom simuleringskonfigurationsinformationen är ett enda värde Bonsai kan mappa värdena till fältet Drive utan ett explicit fältnamn. Därför kan posterna i matrisen för episodkonfiguration utesluta fältnamnet för enkelhetens skull, om du föredrar följande:

[
  "Left",
  "Right",
  "Back"
]

Översätta enkla SimConfig typer

SimConfig Anta att typen i Inkling-filen innehåller två värden som heter Drive och RoadCondition av typen Direction och Terrain:

type Direction number<Left = 0, Right = 1, Straight = 2, Back = 3>
type Terrain string<Bad = "B", Rough = "R", Clear = "C">

type SimConfig {
  Drive: Direction,
  RoadCondition: Terrain
}

Varje post i episodens konfigurationsmatris måste ange Drive fält och RoadCondition med giltiga värden som definieras av typerna Direction och Terrain .

Anta till exempel att du vill utvärdera den drivande hjärnan mot följande två scenarier:

  • Börja med att köra vänster på en tuff väg.
  • Börja med att köra vänster på en klar väg.

Konfigurationsfilen skulle ha två avsnittskonfigurationer. En som anger startvärdena till {Left, Rough} och en som anger startvärdena till {Left, Clear}:

[
  {
    "Drive": "Left",
    "RoadCondition": "Rough"
  },
  {
    "Drive": "Left",
    "RoadCondition": "Clear"
  }

Översätta SimConfig med kapslade ordlistor

SimConfig Anta att typen i Inkling-filen innehåller tre fält:

Namn Typ Syfte
Drive Movement anger aktuell orientering och vägförhållanden för en elbil.
BatteryLevel number<0 .. 1> anger den aktuella laddningen av bilbatteriet i procent.
AmbientTemp Temperature anger temperaturen i det omgivande området i Celsius.
type Direction number<Left = 0, Right = 1, Straight = 2, Back = 3>
type Terrain string<Bad = "B", Rough = "R", Clear = "C">
type Movement {
  Orientation: Direction,
  RoadCondition: Terrain
}
type Temperature number<-90 .. 60>

type SimConfig {
  Drive: Movement,
  BatteryLevel: number<0 .. 1>,
  AmbientTemp: Temperature
}

Varje post i episodens konfigurationsmatris måste ange giltiga startvärden för Drive, BatteryLeveloch AmbientTemp enligt definitionen av motsvarande typer.

Anta till exempel att du vill utvärdera den drivande hjärnan mot följande scenarier:

  • Börja med att köra vänster på en tuff väg med ett fullt batteri på en vinterdag i Berkeley, CA.
  • Börja med att köra bakåt på en klar väg med ett nästan tomt batteri på en sommardag i Berkeley, CA.
  • Börja med att köra rakt på en dålig väg med ett halvt batteri på en vårdag i Berkeley, CA.

Konfigurationsfilen skulle ha tre avsnittskonfigurationer:

[
  {
    "Drive": {
      "Orientation": "Left",
      "RoadCondition": "Rough"
    },
    "BatteryLevel": 1,
    "AmbientTemp": 14
  },
  {
    "Drive": {
      "Orientation": "Back",
      "RoadCondition": "Clear"
    },
    "BatteryLevel": 0.1,
    "AmbientTemp": 22
  },
  {
    "Drive": {
      "Orientation": "Straight",
      "RoadCondition": "Bad"
    },
    "BatteryLevel": 0.5,
    "AmbientTemp": 18
  },

Nästa steg

Nu när du vet hur du skapar konfigurationsfiler för utvärdering kan du prova att använda en för att utvärdera en tränad hjärna.