world with tutorial started hello guide getting example data big parallel-processing tensorflow distributed

parallel-processing - with - tensorflow tutorial pdf



¿Cuál es la forma correcta de hacer el paralelismo modelo en tensorflow? (1)

Tengo múltiples nodos de GPU de 4 GB, así que quiero que ejecuten un gran modelo en paralelo. Espero que dividir las capas en varias piezas con los dispositivos adecuados solo permita el paralelismo del modelo, pero resulta que no reduce la huella de memoria para el nodo maestro (tarea 0). (Configuración de 10 nodos - maestro: 20g, seguidores: 2g, configuración de 1 nodo - maestro: 6 ~ 7g)

Sospechoso es que los gradientes no se distribuyen porque no configuré el alcance correcto del dispositivo para ellos.

mi modelo está disponible en github. ( https://github.com/nakosung/tensorflow-wavenet/tree/model_parallel_2 )

registro de ubicación del dispositivo está aquí: https://gist.github.com/nakosung/a38d4610fff09992f7e5569f19eefa57


Entonces, la buena noticia es que usa colocate_gradients_with_ops, lo que significa que se está asegurando de que los gradientes se calculan en el mismo dispositivo en el que se ubican las operaciones. ( https://github.com/nakosung/tensorflow-wavenet/blob/model_parallel_2/train.py#L242 )

Leer el registro de ubicación del dispositivo es un poco difícil, por lo que sugeriría usar TensorBoard para intentar visualizar el gráfico. Tiene opciones para poder visualizar cómo se colocan los nodos en los dispositivos.

En segundo lugar, puede intentar ver cómo los tamaños de sus operaciones se asignan a los dispositivos: es posible que las capas más grandes (las activaciones más grandes o las ponderaciones más grandes) se puedan colocar desproporcionadamente más en algunos nodos que en otras. Puede intentar usar https://github.com/tensorflow/tensorflow/blob/6b1d4fd8090d44d20fdadabf06f1a9b178c3d80c/tensorflow/python/tools/graph_metrics.py para analizar su gráfica y obtener una mejor idea de dónde se requieren los recursos en su gráfico.

A más largo plazo, nos gustaría tratar de resolver algunos de estos problemas de ubicación de forma automática, pero hasta ahora el paralelismo de modelos requiere un poco de cuidado para ubicar las cosas con precisión.