¿Cómo se comparten las variables entre las llamadas `session.run (…)` concurrentes en tensorflow?

Si realiza dos llamadas simultáneas a la misma sesión, sess.run(...) , ¿cómo se accede simultáneamente a las variables en tensorflow?

¿Verá cada llamada una instantánea de las variables a partir del momento en que se run la run , consistente a lo largo de la llamada? ¿O verán actualizaciones dinámicas de las variables y solo garantizarán actualizaciones atómicas de cada variable?

Estoy considerando ejecutar la evaluación del conjunto de pruebas en un subproceso de CPU separado y quiero verificar que sea tan trivial como ejecutar la operación de inferencia en un dispositivo de CPU en paralelo.

Estoy teniendo problemas para averiguar exactamente qué garantías se proporcionan para que las sesiones sean “seguras para subprocesos”.

Después de hacer un poco de experimentación, parece que cada llamada a sess.run(...) sí ve una instantánea consistente de un punto en el tiempo de las variables.

Para probar esto, realicé 2 operaciones de multiplicación de matriz grande (tardé unos 10 segundos en completarse) y actualicé una variable única, dependiente, antes, entre y después. En otro hilo, agarré e imprimí esa variable cada 1/10 de segundo para ver si detectaba el cambio que ocurría entre las operaciones mientras el primer hilo aún se estaba ejecutando. No fue así, solo vi sus valores iniciales y finales. Por lo tanto, concluyo que los cambios de variables solo son visibles fuera de una llamada específica a sess.run(...) al final de esa ejecución.