Convertisseur JSON Lines (JSONL) ⇔ tableau JSON
Convertit entre le format JSON Lines (un objet JSON par ligne) et un tableau JSON standard. Pratique pour vérifier des jeux de données de machine learning et des sorties de journaux (logs).
Astuces d'utilisation
- JSON Lines (JSONL) est un format qui aligne un objet JSON indépendant par ligne ; il est notamment utilisé par défaut dans les jeux de données de fine-tuning d'OpenAI et dans les sorties de journaux d'outils comme Elasticsearch/Logstash.
- En mode « JSONL → Tableau JSON », chaque ligne doit être un objet JSON analysable individuellement. Les lignes vides sont ignorées automatiquement.
- En mode « Tableau JSON → JSONL », l'ensemble de l'entrée doit être un unique tableau JSON (`[ ... ]`). Chaque élément du tableau est généré sous la forme d'une ligne JSONL.
- Convertir un gros fichier de journal de JSONL vers un tableau JSON permet de le manipuler plus facilement avec la commande `jq` ou l'analyseur de tableau JSON standard de votre langage de programmation.
Questions fréquentes
Anecdote — Pourquoi le format « un enregistrement par ligne » est-il né ?
Le format JSON Lines (aussi appelé JSONL) est né du constat qu'un tableau JSON classique impose une contrainte fondamentale : impossible d'extraire ne serait-ce qu'un seul enregistrement tant que l'ensemble du tableau n'a pas été chargé en mémoire et entièrement analysé. Traiter des données de journaux ou des jeux d'entraînement de machine learning comptant plusieurs millions de lignes comme un unique tableau JSON obligeait à charger le fichier entier en mémoire, ce qui posait des problèmes de manque de mémoire et de temps d'analyse démesurés pour les fichiers volumineux.
JSON Lines résout ce problème avec une règle simple : une ligne équivaut à un objet JSON complet. Le fichier pouvant être lu et analysé ligne par ligne au fur et à mesure, il n'est pas nécessaire de le charger entièrement en mémoire, ce qui le rend particulièrement adapté au traitement en flux et en parallèle. Cette philosophie de conception s'accorde également bien avec la culture Unix traditionnelle du texte « un enregistrement par ligne » (des commandes comme `grep`, `awk` et `sed` fonctionnent ligne par ligne), ce qui constitue un avantage pratique important puisqu'elle s'intègre directement aux chaînes d'outils en ligne de commande existantes.
Aujourd'hui, il est largement adopté comme format de distribution de jeux de données dans les domaines de l'IA et du machine learning, et il est désormais courant que les données d'entraînement des grands modèles de langage ainsi que les paires prompt/réponse destinées au fine-tuning soient distribuées au format JSON Lines.