Chargement depuis un dossier de données
Configurez Potato pour charger les instances d'annotation depuis un dossier : motifs glob, surveillance en direct des nouveaux fichiers et parcours récursif des sous-dossiers avec filtres.
Plutôt que de lister les fichiers un par un avec data_files, vous pouvez indiquer à Potato un dossier contenant vos données. Tous les fichiers pris en charge y seront chargés automatiquement, avec une surveillance facultative des fichiers ajoutés ou modifiés.
Vue d'ensemble
C'est utile quand :
- Vous avez beaucoup de fichiers de données et ne voulez pas tous les énumérer
- Vous voulez ajouter de nouveaux fichiers pendant que le serveur tourne
- Vos données arrivent d'un processus externe qui écrit dans un dossier partagé
Configuration
Utilisation de base (chargement statique)
Pour charger tous les fichiers d'un dossier au démarrage :
# Load all supported files from this directory
data_directory: "./data/incoming"
# data_files can be empty when using data_directory
data_files: []
# Required: item_properties must still be configured
item_properties:
id_key: "id"
text_key: "text"Surveillance en direct du dossier
Pour détecter et charger automatiquement les fichiers ajoutés ou modifiés pendant que le serveur tourne :
data_directory: "./data/incoming"
data_files: []
# Enable live watching (default: false)
watch_data_directory: true
# Optional: how often to check for changes in seconds (default: 5.0)
watch_poll_interval: 10.0
item_properties:
id_key: "id"
text_key: "text"Options de configuration
| Option | Type | Valeur par défaut | Description |
|---|---|---|---|
data_directory | chaîne | - | Chemin du dossier contenant les fichiers de données |
watch_data_directory | booléen | false | Surveiller ou non les fichiers ajoutés ou modifiés |
watch_poll_interval | nombre | 5.0 | Secondes entre deux parcours du dossier (min : 1.0) |
Formats de fichiers pris en charge
Le surveillant de dossier accepte les mêmes formats que data_files :
- JSON (
.json) - Un objet JSON par ligne, ou un tableau JSON - JSONL (
.jsonl) - Format JSON Lines, un objet par ligne - CSV (
.csv) - Valeurs séparées par des virgules avec ligne d'en-tête - TSV (
.tsv) - Valeurs séparées par des tabulations avec ligne d'en-tête
Fonctionnement
Au démarrage
- Tous les fichiers du dossier
data_directoryayant une extension prise en charge sont parcourus - Chaque fichier est analysé selon son extension
- Les instances sont ajoutées à la file d'annotation
- Si
watch_data_directoryest activé, un fil d'exécution en arrière-plan démarre la surveillance
Pendant l'exécution (si la surveillance est activée)
- Toutes les
watch_poll_intervalsecondes, le dossier est parcouru - Les nouveaux fichiers sont analysés et leurs instances ajoutées
- Les fichiers modifiés sont réanalysés :
- Les nouvelles instances sont ajoutées
- Les instances existantes sont mises à jour (les annotations sont conservées)
- Fichiers supprimés : les instances restent dans le système (pour préserver les annotations)
Exemple d'arborescence
my_project/
├── configs/
│ └── config.yaml
└── data/
└── incoming/
├── batch_001.jsonl
├── batch_002.jsonl
└── new_data.json # Added while server is running
Exemples de fichiers de données
Format JSONL (batch_001.jsonl)
{"id": "item_001", "text": "First document to annotate."}
{"id": "item_002", "text": "Second document to annotate."}
{"id": "item_003", "text": "Third document to annotate."}Format JSON (batch_002.json)
[
{"id": "item_004", "text": "Fourth document."},
{"id": "item_005", "text": "Fifth document."}
]Format CSV (batch_003.csv)
id,text,category
item_006,Sixth document to annotate.,news
item_007,Seventh document to annotate.,blogCombiner avec data_files
Vous pouvez utiliser data_directory et data_files ensemble :
# Load specific files first
data_files:
- "data/important_batch.jsonl"
# Then load everything from the directory
data_directory: "./data/incoming"
watch_data_directory: trueMise à jour des instances
Quand un fichier est modifié alors que la surveillance est active :
- Les nouvelles instances (identifiants inédits) sont ajoutées à la file d'annotation
- Les instances existantes (mêmes identifiants) sont mises à jour, mais les annotations sont conservées
- Les instances supprimées restent dans le système pour préserver les annotations
Les annotateurs ne perdent donc pas leur travail si vous mettez à jour un fichier de données.
Gestion des erreurs
- Les fichiers qui ne s'analysent pas sont journalisés et ignorés (les autres se chargent quand même)
id_keyabsent d'une instance : cette instance est ignorée avec un avertissementtext_keyabsent d'une instance : l'instance se charge avec un avertissement- Les erreurs de permissions sur le dossier sont journalisées
Points de performance
- Intervalle de scrutation : une valeur élevée réduit la charge CPU mais retarde la détection des nouveaux fichiers
- Gros dossiers : les fichiers sont parcourus à chaque intervalle ; pensez à répartir les fichiers dans des sous-dossiers
- Gros fichiers : un fichier modifié est réanalysé entièrement ; préférez des lots plus petits
Journalisation
Le surveillant de dossier journalise son activité au niveau INFO :
INFO: Loaded 150 instances from data_directory: ./data/incoming
INFO: Directory watching enabled (poll interval: 5.0s)
INFO: Directory scan: 25 instances added, 0 updated
INFO: Directory watcher stopped
Activez la journalisation DEBUG pour voir le détail du traitement de chaque fichier.
Pour aller plus loin
- Formats de données - Formats de données pris en charge
- Bases de la configuration - Configuration générale
Pour les détails d'implémentation, consultez la documentation source.