Carga de Datos desde Directorio
Carga instancias de anotación desde un directorio con monitoreo en vivo opcional.
En lugar de especificar archivos de datos individuales con data_files, puedes apuntar Potato a un directorio que contenga tus archivos de datos. Todos los archivos compatibles se cargarán automáticamente, con monitoreo en vivo opcional para archivos nuevos o modificados.
Descripción General
Esto es útil cuando:
- Tienes muchos archivos de datos y no quieres listarlos individualmente
- Quieres agregar nuevos archivos dinámicamente mientras el servidor está en ejecución
- Estás recibiendo datos de un proceso externo que escribe en un directorio compartido
Configuración
Uso Básico (Carga Estática)
Para cargar todos los archivos de un directorio al iniciar:
# 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"Monitoreo en Vivo del Directorio
Para detectar y cargar automáticamente archivos nuevos o modificados mientras el servidor está en ejecución:
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"Opciones de Configuración
| Opción | Tipo | Predeterminado | Descripción |
|---|---|---|---|
data_directory | string | - | Ruta al directorio que contiene los archivos de datos |
watch_data_directory | boolean | false | Si se deben monitorear archivos nuevos/modificados |
watch_poll_interval | number | 5.0 | Segundos entre escaneos del directorio (mín: 1.0) |
Formatos de Archivo Compatibles
El monitor de directorio admite los mismos formatos que data_files:
- JSON (
.json) - Un objeto JSON por línea, o un arreglo JSON - JSONL (
.jsonl) - Formato JSON Lines, un objeto por línea - CSV (
.csv) - Valores separados por comas con fila de encabezado - TSV (
.tsv) - Valores separados por tabulaciones con fila de encabezado
Cómo Funciona
Al Iniciar
- Se escanean todos los archivos con extensiones compatibles en
data_directory - Cada archivo se analiza según su extensión
- Las instancias se agregan a la cola de anotación
- Si
watch_data_directoryestá habilitado, un hilo en segundo plano comienza a monitorear
Durante la Ejecución (cuando el monitoreo está habilitado)
- Cada
watch_poll_intervalsegundos, se escanea el directorio - Los archivos nuevos se analizan y sus instancias se agregan
- Los archivos modificados se vuelven a analizar:
- Las instancias nuevas se agregan
- Las instancias existentes se actualizan (las anotaciones se preservan)
- Archivos eliminados: las instancias permanecen en el sistema (para preservar las anotaciones)
Ejemplo de Estructura de Directorio
my_project/
├── configs/
│ └── config.yaml
└── data/
└── incoming/
├── batch_001.jsonl
├── batch_002.jsonl
└── new_data.json # Added while server is running
Ejemplos de Archivos de Datos
Formato 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."}Formato JSON (batch_002.json)
[
{"id": "item_004", "text": "Fourth document."},
{"id": "item_005", "text": "Fifth document."}
]Formato CSV (batch_003.csv)
id,text,category
item_006,Sixth document to annotate.,news
item_007,Seventh document to annotate.,blogCombinación con data_files
Puedes usar tanto data_directory como data_files juntos:
# Load specific files first
data_files:
- "data/important_batch.jsonl"
# Then load everything from the directory
data_directory: "./data/incoming"
watch_data_directory: trueActualización de Instancias
Cuando un archivo se modifica mientras el monitoreo está habilitado:
- Instancias nuevas (IDs nuevos) se agregan a la cola de anotación
- Instancias existentes (mismos IDs) se actualizan, pero las anotaciones se preservan
- Instancias eliminadas permanecen en el sistema para preservar las anotaciones
Esto significa que los anotadores no perderán su trabajo si actualizas un archivo de datos.
Manejo de Errores
- Los archivos que no se pueden analizar se registran en el log y se omiten (los demás archivos se cargan normalmente)
- Falta
id_keyen una instancia: esa instancia se omite con una advertencia - Falta
text_keyen una instancia: la instancia se carga con una advertencia - Los errores de permisos del directorio se registran en el log
Consideraciones de Rendimiento
- Intervalo de sondeo: Valores más altos reducen el uso de CPU pero retrasan la detección de nuevos archivos
- Directorios grandes: Los archivos se escanean en cada intervalo; considera organizar los archivos en subdirectorios
- Archivos grandes: Los archivos se vuelven a analizar completamente cuando se modifican; considera usar archivos de lote más pequeños
Registro de Actividad
El monitor de directorio registra su actividad a nivel 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
Habilita el registro DEBUG para ver los detalles del procesamiento de archivos individuales.
Lectura Adicional
- Formatos de datos - Formatos de datos compatibles
- Conceptos básicos de configuración - Configuración general
Para detalles de implementación, consulta la documentación fuente.