Skip to content

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:

yaml
# 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:

yaml
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ónTipoPredeterminadoDescripción
data_directorystring-Ruta al directorio que contiene los archivos de datos
watch_data_directorybooleanfalseSi se deben monitorear archivos nuevos/modificados
watch_poll_intervalnumber5.0Segundos 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

  1. Se escanean todos los archivos con extensiones compatibles en data_directory
  2. Cada archivo se analiza según su extensión
  3. Las instancias se agregan a la cola de anotación
  4. Si watch_data_directory está habilitado, un hilo en segundo plano comienza a monitorear

Durante la Ejecución (cuando el monitoreo está habilitado)

  1. Cada watch_poll_interval segundos, se escanea el directorio
  2. Los archivos nuevos se analizan y sus instancias se agregan
  3. Los archivos modificados se vuelven a analizar:
    • Las instancias nuevas se agregan
    • Las instancias existentes se actualizan (las anotaciones se preservan)
  4. Archivos eliminados: las instancias permanecen en el sistema (para preservar las anotaciones)

Ejemplo de Estructura de Directorio

text
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)

json
{"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)

json
[
  {"id": "item_004", "text": "Fourth document."},
  {"id": "item_005", "text": "Fifth document."}
]

Formato CSV (batch_003.csv)

csv
id,text,category
item_006,Sixth document to annotate.,news
item_007,Seventh document to annotate.,blog

Combinación con data_files

Puedes usar tanto data_directory como data_files juntos:

yaml
# Load specific files first
data_files:
  - "data/important_batch.jsonl"
 
# Then load everything from the directory
data_directory: "./data/incoming"
watch_data_directory: true

Actualizació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_key en una instancia: esa instancia se omite con una advertencia
  • Falta text_key en 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:

text
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

Para detalles de implementación, consulta la documentación fuente.