Каковы источники недетерминизма в параллельных вычислениях Tensorflow?

Для достижения детерминированных результатов в Keras/Tensorflow необходимо (среди прочего) «деактивировать параллелизм», как указано в Keras doc:

# Force TensorFlow to use single thread.
# Multiple threads are a potential source of
# non-reproducible results.
# For further details, see: https://stackoverflow.com/questions/42022950/which-seeds-have-to-be-set-where-to-realize-100-reproducibility-of-training-res

session_conf = tf.ConfigProto(intra_op_parallelism_threads=1, inter_op_parallelism_threads=1)

Этот поток также утверждает, что (в комментариях):

You also need to remove parallelism from your computation because that is often non-deterministic

Что делает параллельные вычисления Tensorflow недетерминированными?


person Phylliade    schedule 09.08.2018    source источник
comment
Этот вопрос связан с тем, что обычные параллельные вычисления (например, операции BLAS) являются детерминированными.   -  person Phylliade    schedule 09.08.2018
comment
На самом деле это происходит на задачах ЦП (intra_op_parallelism_threads=1 не существует для графических процессоров)   -  person Phylliade    schedule 09.08.2018