Comprendre la structure des fichiers de sauvegarde TensorFlow

Lors de l'entraînement d'un modèle avec TensorFlow, l'enregistrement de l'état (checkpointing) génère une série de fichiers spécifiques. Ces fichiers sont essentiels pour reprendre un entraînement interrompu, déployer un modèle en production ou visualiser les performances dans TensorBoard. On peut généralement les classer en deux catégories : les fichiers de monitoring et les fichiers de structure du modèle.

Fichiers dédiés à la visualisation (TensorBoard)

Ces fichiers permettent de suivre l'évolution des métriques et d'inspecter l'architecture logique du réseau.

  • events.out.tfevents.* : Ce fichier binaire contient les journaux d'entraînement, tels que l'évolution de la perte (loss) ou de la précision (accuracy) au fil des itérations. TensorBoard utilise ces données pour générer des graphiques temporels.
  • graph.pbtxt : Il s'agit d'une représentation textuelle (Protocol Buffer) du graphe de calcul. Contrairement aux fichiers binaires, il est lisible par l'homme et décrit l'agencement des opérations.
node {
  name: "Dense_Layer/weights/Initializer/random_normal"
  op: "RandomNormal"
  device: "/device:GPU:0"
  attr {
    key: "dtype"
    value {
      type: DT_FLOAT
    }
  }
  attr {
    key: "stddev"
    value {
      f: 0.05
    }
  }
}
node {
  name: "Dense_Layer/BiasAdd"
  op: "BiasAdd"
  input: "Dense_Layer/MatMul"
  input: "Dense_Layer/bias"
}

Fichiers de sauvegarde du modèle (Checkpoints)

La persistance d'un modèle TensorFlow repose sur un ensemble de fichiers complémentaires qui séparent la structure des données numériques.

  • checkpoint : C'est un simple fichier texte qui agit comme un index. Il indique à TensorFlow quel est le point de contrôle le plus récent ainsi qu'une liste des sauvegardes disponibles.
model_checkpoint_path: "neural_net.ckpt-2500"
all_model_checkpoint_paths: "neural_net.ckpt-1000"
all_model_checkpoint_paths: "neural_net.ckpt-2500"
  • model.ckpt-*.meta : Ce fichier contient la structure complète du graphe de calcul au format binaire (GraphDef). Il inclut les métadonnées nécessaires pour reconstruire le réseau (opérations, variables, SaverDef) sans avoir à redéfinir le code Python original.
  • model.ckpt-*.index : Il s'agit d'une table de correspondance (key-value store). La clé est le nom du tenseur et la valeur est un objet BundleEntryProto sérialisé. Ce fichier indique où se trouve chaque paramètre dans les fichiers de données (offset, taille, etc.).
  • model.ckpt-*.data-*-of-* : Ce fichier volumineux contient les valeurs réelles de tous les poids, biais et variables du modèle. C'est ici que sont stockées les données numériques apprises durant l'entraînement.

En résumé, pour restaurer un modèle complet, TensorFlow a besoin du fichier .meta pour comprendre l'architecture et des fichiesr .index et .data pour injecter les poids correspondants dans cette architecture.

Étiquettes: TensorFlow deep-learning Checkpoints Model-Deployment data-persistence

Publié le 17 juillet à 12h19