Interroger les journaux d’épisodes

Bonsai peut collecter des données sur les épisodes, les itérations et les simulations en cours de formation et d’évaluation. Bonsai approvisionne un espace de travail Azure Log Analytics chaque fois que vous créez un espace de travail Bonsai, puis écrit des données de journal dans Azure Log Analytics afin que vous puissiez interroger les informations à côté d’autres données de journal que vous pouvez collecter.

Avant de commencer

Conseil

Bonsai journalise automatiquement les informations d’épisodes pour une instance de simulateur unique pendant l’apprentissage, et toutes les instances de simulateur pendant l’évaluation personnalisée. Si vous n’avez pas besoin de remplacer le comportement de journalisation par défaut, vous pouvez passer à l’étape 2.

Étape 1 : activer la journalisation pour plusieurs instances de simulateur

Pour activer la journalisation sur plusieurs instances de simulateur pour un cerveau déjà en cours d’apprentissage, utilisez la commande brain version start-logging :

$ bonsai brain version start-logging \
  --name='HiveMind'                  \
  --managed-simulator                \
  --log-session-count=2

Pour démarrer l’apprentissage avec la journalisation activée pour plusieurs instances de simulateur, utilisez l’indicateur --log-session-count avec brain version start-training :

$ bonsai brain version start-training    \
  --name='HiveMind'                      \
  --version=5                            \
  --simulator-package-name='Apiary-HVAC' \
  --instance-count=16                    \
  --log-session-count=8

Vous trouverez des informations supplémentaires sur les commandes start-logging et stop-logging dans la référence sur l’interface de ligne de commande de Bonsai.

Étape 2 : ouvrir votre espace de travail Log Analytics

  1. Connectez-vous au portail Azure.
  2. Ouvrez la liste des espaces de travail Bonsai associés à votre compte.
  3. Cliquez sur l’espace de travail pour lequel vous souhaitez interroger les journaux.

    Lien d’espace de travail des journaux dans le portail Azure

  4. Sélectionnez Journaux dans la section Général de la navigation du portail.

Notes

La première fois que vous ouvrez la page Journaux, Azure vous présente une superposition pleine de requêtes de pré-package. Pour éviter de voir ce panneau à chaque fois, assurez-vous que le curseur en haut du panneau libellé « Show every time » (Afficher à chaque fois) est désactivé.

Étape 3 : écrire une requête de journal Azure

Les données de Bonsai sont stockées dans les journaux personnalisés suivants :

  • EpisodeLog_CL : données de niveau épisode. Une exécution d’apprentissage aura plusieurs entrées d’épisode.
  • IterationLog_CL : données de niveau itération. Un épisode aura plusieurs entrées d’itération.
  • ContainerEvent_CL : données de niveau système relatives aux interactions entre Azure Container Registry et les instances de conteneur utilisées pour la simulation. Disponibles uniquement quand l’indicateur include-system-logs est utilisé.
  • ContainerInstanceLog_CL : données de niveau système relatives aux instances de simulateur individuelles journalisées pendant l’apprentissage. Disponibles uniquement quand l’indicateur include-system-logs est utilisé.

Les colonnes de journal Bonsai les plus importantes pour chaque table sont indiquées ci-dessous.

EpisodeLog_CL

Nom de la colonne Description
AssessmentId_s ID d’objet Azure de l’évaluation dont l’épisode faisait partie. Défini uniquement si la journalisation s’est produite pendant une évaluation.
AssessmentName_s Nom personnalisé de l’évaluation dont l’épisode faisait partie. Défini uniquement si la journalisation s’est produite pendant une évaluation.
BrainDisplayName_s Nom respectant la casse du cerveau Bonsai. Également répertorié dans l’interface utilisateur de Bonsai.
BrainName_s Nom ne respectant pas la casse du cerveau Bonsai. Également utilisé pour référencer des cerveaux avec l’interface de ligne de commande de Bonsai.
BrainVersionId_g ID d’objet Azure de la version de cerveau.
BrainVersion_d Version de cerveau sous forme d’entier.
ConceptName_s Concept Inkling formé.
CumulativeReward_d Score de récompense final pour l’épisode.
EndTime_t Horodatage UTC de fin de l’épisode.
EpisodeId_g ID d’objet Azure de l’objet de données contenant les données d’épisode brutes.
EpisodeType_s Indique si l’épisode a été journalisé au cours de l’apprentissage ou de l’évaluation (non spécifié).
FinishReason_s Indique la raison pour laquelle l’épisode s’est terminé.
GoalMetrics_s Objet JSON avec des métriques de niveau itération pour des objectifs Inkling avoid, drive et reach. Les objectifs non utilisés sont vides.
LessonIndex_d Index croissant de la leçon pour la session de formation ou d’évaluation donnée, à partir de 1.
SessionId_s ID d’objet Azure du simulateur géré.
SimConfig_s Objet JSON avec les informations de configuration sim de départ pour cet épisode.
SimId_s Adresse IP de conteneur du simulateur géré.
StartTime_t Horodatage UTC de début de l’épisode.
TenantId Locataire Azure sous lequel l’entrée de journal a été générée.
TimeGenerated Horodateur UTC de l’entrée de journal.
Type Type d’entrée de journal. Toujours défini sur « EpisodeLog_CL ».
WorkspaceId_g ID d’objet Azure de l’espace de travail Bonsai.

IterationLog_CL

Nom de la colonne Description
BrainAction_s Actions par itération retournées par le cerveau, après transformation SimState.
BrainDisplayName_s Nom d’affichage du cerveau Bonsai. Affiché dans l’interface utilisateur de Bonsai.
BrainName_s Nom interne du cerveau Bonsai. Utilisé pour référencer des cerveaux avec l’interface de ligne de commande de Bonsai.
BrainVersionId_g ID d’objet Azure de la version de cerveau.
BrainVersion_d Version de cerveau affichée dans l’interface utilisateur de Bonsai.
EpisodeId_g ID d’objet Azure de l’objet de données contenant les données d’épisode brutes.
EpisodeIndex_d Index croissant de l’épisode pour la leçon donnée, à partir de 1.
Halted_b Indique si l’épisode associé a été arrêté par l’utilisateur.
IterationIndex_d Index croissant de l’itération pour l’épisode donné, à partir de 1.
ObservableState_s Valeurs d’état transmises au cerveau pour l’itération, après transformation SimState.
Reward_d Récompense incrémentielle attribuée au cerveau pour l’itération.
SessionId_s ID d’objet Azure du simulateur géré.
SimAction_s Valeurs d’action envoyées par le cerveau au simulateur.
SimState_s Valeurs d’état envoyées par le simulateur au cerveau.
TenantId Locataire Azure sous lequel l’espace de travail Bonsai a été approvisionné.
Terminal_b Booléen indiquant si l’itération donnée était une itération terminale.
TimeGenerated Horodateur UTC défini automatiquement par Log Analytics au moment de l’entrée de journal.
Timestamp_t Horodateur UTC de la génération de données de journal par Bonsai.
Type Type d’entrée de journal. Toujours défini sur « IterationLog_CL ».
WorkspaceId_g ID d’objet Azure de l’espace de travail Bonsai.

ContainerEvent_CL

Nom de la colonne Description
ContainerGroupInstanceId_g ID d’objet Azure de l’instance de groupe de conteneurs ACR utilisée pour la simulation.
ContainerGroup_s Nom respectant la casse de l’instance de groupe de conteneurs ACR utilisée pour la simulation.
ContainerName_s Nom respectant la casse du conteneur ACR individuel pour l’instance de simulateur associée.
Location_s Région de service Microsoft dans laquelle le conteneur a été déployé.
Message Message journalisé à partir du registre de conteneurs Azure.
OSType_s Type de système d’exploitation des instances de conteneur associées.
Reason_s Événement ACR qui a déclenché un message système.
ResourceGroup ID d’objet Azure du groupe de ressources auquel appartient le groupe de conteneurs.
SubscriptionId ID d’abonnement Azure auquel le coût d’exécution du groupe de conteneurs a été facturé.
TimeGenerated Horodateur UTC de l’entrée de journal.
Type Type d’entrée de journal. Toujours défini sur « ContainerEvent_CL ».

ContainerInstanceLog_CL

Nom de la colonne Description
ContainerGroup_s Nom respectant la casse de l’instance de groupe de conteneurs ACR associée dans ContainerEvent_CL.
ContainerID_s ID d’objet Azure de l’instance de conteneur ACR.
ContainerImage_s Nom Azure Container Registry de l’instance de conteneur.
ContainerName_s Nom court de l’instance de conteneur.
Location_s Région de service Microsoft dans laquelle l’instance a été déployée.
Message Message journalisé de l’instance de conteneur.
OSType_s Type de système d’exploitation de l’instance de conteneur (par exemple, Linux).
ResourceGroup ID d’objet Azure du groupe de ressources auquel l’instance de conteneur appartient.
Source_s Indique comment les données de journal ont été capturées.
SubscriptionId ID d’abonnement Azure auquel le coût d’exécution de l’instance de conteneur a été facturé.
TimeGenerated Horodateur UTC de l’entrée de journal.
Type Type d’entrée de journal. Toujours défini sur « ContainerEvent_CL ».

Exemples de requêtes

Répertorier tous les ID de session uniques dans les données des itérations :

IterationLog_CL | distinct SessionId_s

Lier les données d’épisode de haut niveau avec les itérations associées à l’aide de l’ID de session :

IterationLog_CL |
join kind = leftouter (
  EpisodeLog_CL |
  project
    BrainName_s,
    CumulativeReward_d,
    SimConfig_s,
    GoalMetrics_s,
    EpisodeType_s,
    EpisodeId_g
) on EpisodeId_g |
project
  WorkspaceId = WorkspaceId_g, 
  BrainName = BrainName_s,
  BrainVersion = BrainVersion_d, 
  Timestamp = Timestamp_t, 
  SimAction = parse_json(SimAction_s),
  SimState = parse_json(SimState_s), 
  IterationIndex = IterationIndex_d, 
  EpisodeIndex = EpisodeIndex_d, 
  Reward = Reward_d, 
  CumulativeReward = CumulativeReward_d, 
  SimConfig = parse_json(SimConfig_s), 
  GoalMetrics = parse_json(EpisodeType_s), 
  EpisodeType = EpisodeType_s, 
  EpisodeId = EpisodeId_g1 |
order by
  EpisodeIndex asc,
  IterationIndex asc,
  BrainName asc

Étapes suivantes

Pour en savoir plus sur les colonnes de journal Azure standard et la syntaxe de requête de journal Azure, consultez la Documentation Azure Log Analytics.