Una GPU inactiva apunta a la falta de disponibilidad de datos para que la GPU procese.
Hay dos situaciones en que esto puede suceder:
- Hay un tiempo significativo de transferencia de datos de la CPU a la GPU.
Este es el escenario más común. La única forma de resolver este problema es buscar previamente los datos en el dispositivo GPU. De esa manera, mientras la GPU procesa un lote, el siguiente lote se transfiere a la GPU. Por lo tanto, el tiempo de espera de la GPU se reduce.
En TensorFlow, por lo que sé, solo hay una forma de hacerlo:tf.contrib.data.prefetch_to_device().
Se espera que esto se salga decontrib
enr1.8
. Hasta el momento, es compatible conone-shot-iterators
, y recientemente se ha comprometido a dominar que también sea compatible conreinitializable iterators
. Todavía tengo que probarlo con éxito. Sin embargo, una vez estabilizado, esta será una de las características más importantes de TensorFlow.- ¿Existe algún conjunto de datos disponible públicamente para la clasificación étnica / nacionalidad de los nombres humanos?
- ¿Cuáles son algunas estructuras de datos esenciales y conocimiento de algoritmos necesarios para estudiar ciencia de datos?
- Cómo comenzar a aprender lenguaje máquina a partir de tutoriales
- ¿Cómo se puede aplicar el aprendizaje automático para predecir el tiempo de entrega de un producto?
- ¿Cómo debo comenzar a escribir una IA que jugará FIFA?
- La CPU no está preprocesando datos lo suficientemente rápido.
Este escenario se presenta cuando tiene que realizar un preprocesamiento muy complicado de los datos antes de enviarlos a la GPU. A veces, los datos no se procesan previamente lo suficientemente rápido y esto combinado con el punto anterior ( ver punto 1 ) crea un importante cuello de botella en el rendimiento.
En TensorFlow puede resolver este problema utilizando el parámetrotf.data.Dataset::map
métodotf.data.Dataset::map
. Establecer este valor en el número de núcleos de CPU permite el preprocesamiento paralelo. También puede ver otros métodos entf.data.Dataset
como__init__
para ver parámetros comonum_parallel_reads
, que ayudan en la lectura paralela de E / S de datos. Estos métodos funcionan bastante bien para aumentar la velocidad del preprocesamiento de datos, mitigando así este problema.