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/ ¿Cómo mejoro la eficiencia del entrenamiento reduciendo la interacción con OBS?
Actualización más reciente 2023-10-09 GMT+08:00

¿Cómo mejoro la eficiencia del entrenamiento reduciendo la interacción con OBS?

Descripción del escenario

Cuando se utiliza ModelArts para el entrenamiento de aprendizaje profundo personalizado, los datos de entrenamiento generalmente se almacenan en OBS. Si el volumen de datos de entrenamiento es grande (por ejemplo, más de 200 GB), se requiere un grupo de recursos de GPU para el entrenamiento cada vez, lo que resulta en una baja eficiencia del entrenamiento.

Para mejorar la eficiencia del entrenamiento y reducir la interacción con OBS, realice las siguientes operaciones para su optimización.

Principios de optimización

Para el grupo de recursos de GPU proporcionado por ModelArts se conectan SSD NVMe de 500 GB a cada nodo de entrenamiento de forma gratuita. Los SSD están conectados al directorio /cache. El ciclo de vida de los datos en el directorio /cache es el mismo que el de un trabajo de entrenamiento. Una vez completado el trabajo de entrenamiento, se borra todo el contenido del directorio /cache para liberar espacio para el siguiente trabajo de entrenamiento. Por lo tanto, puede copiar datos de OBS al directorio /cache durante el entrenamiento para que los datos se puedan leer desde el directorio /cache cada vez hasta que se complete el entrenamiento. Una vez completada el entrenamiento, el contenido del directorio /cache se borrará automáticamente.

Métodos de optimización

El código de TensorFlow se utiliza como ejemplo.

El siguiente es código antes de la optimización:

1
2
3
4
...
tf.flags.DEFINE_string('data_url', '', 'dataset directory.')
FLAGS = tf.flags.FLAGS
mnist = input_data.read_data_sets(FLAGS.data_url, one_hot=True)

El siguiente es un ejemplo del código optimizado. Los datos se copian en el directorio /cache.

1
2
3
4
5
6
7
...
tf.flags.DEFINE_string('data_url', '', 'dataset directory.')
FLAGS = tf.flags.FLAGS
import moxing as mox
TMP_CACHE_PATH = '/cache/data'
mox.file.copy_parallel('FLAGS.data_url', TMP_CACHE_PATH)
mnist = input_data.read_data_sets(TMP_CACHE_PATH, one_hot=True)