Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ ModelArts/ Preguntas frecuentes/ Trabajos de entrenamiento/ Lectura de datos durante el entrenamiento/ ¿Por qué la eficiencia de lectura de datos es baja cuando se leen un gran número de archivos de datos durante el entrenamiento?
Actualización más reciente 2023-10-09 GMT+08:00

¿Por qué la eficiencia de lectura de datos es baja cuando se leen un gran número de archivos de datos durante el entrenamiento?

Si un conjunto de datos contiene un gran número de archivos de datos (pequeños archivos masivos) y los datos se almacenan en OBS, los archivos deben leerse repetidamente desde OBS durante el entrenamiento. Como resultado, el proceso de entrenamiento está a la espera de la lectura de archivos, lo que resulta en una baja eficiencia de lectura.

Solución

  1. Comprima los archivos pequeños masivos en un paquete en su PC local, por ejemplo, un paquete .zip.
  2. Sube el paquete a OBS.
  3. Durante el entrenamiento, descargue directamente este paquete desde OBS al directorio /cache de su PC local. Realice esta operación solo una vez.
    Por ejemplo, puede usar mox.file.copy_parallel para descargar el paquete .zip en el directorio /cache, descomprimir el paquete y, a continuación, leer los archivos para el entrenamiento.
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    ...
    tf.flags.DEFINE_string('<obs_file_path>/data.zip', '', 'dataset directory.')
    FLAGS = tf.flags.FLAGS
    import os
    import moxing as mox
    TMP_CACHE_PATH = '/cache/data'
    mox.file.copy_parallel('FLAGS.data_url', TMP_CACHE_PATH)
    zip_data_path = os.path.join(TMP_CACHE_PATH, '*.zip')
    unzip_data_path = os.path.join(TEMP_CACHE_PATH, 'unzip')
    # You can also decompress .zip Python packages.
    os.system('unzip '+ zip_data_path + ' -d ' + unzip_data_path))
    mnist = input_data.read_data_sets(unzip_data_path, one_hot=True)