У меня есть только один графический процессор (Titan X Pascal, 12 ГБ видеопамяти), и я хотел бы параллельно обучать несколько моделей на одном и том же графическом процессоре.
Я попытался инкапсулировать свою модель в одну программу Python (называемую model.py) и включил код в model.py, чтобы ограничить использование VRAM (на основе этот пример). Я смог запустить до 3 экземпляров model.py одновременно на моем графическом процессоре (каждый экземпляр занимал чуть менее 33% моей видеопамяти). Таинственным образом, когда я попробовал с 4 моделями, я получил сообщение об ошибке:
2017-09-10 13:27:43.714908: E tensorflow/stream_executor/cuda/cuda_dnn.cc:371] coul
d not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2017-09-10 13:27:43.714973: E tensorflow/stream_executor/cuda/cuda_dnn.cc:338] coul
d not destroy cudnn handle: CUDNN_STATUS_BAD_PARAM
2017-09-10 13:27:43.714988: F tensorflow/core/kernels/conv_ops.cc:672] Check failed
: stream->parent()->GetConvolveAlgorithms( conv_parameters.ShouldIncludeWinogradNon
fusedAlgo<T>(), &algorithms)
Aborted (core dumped)
Позже я заметил на tensorflow Github, что люди, похоже, считают небезопасным иметь больше чем один процесс тензорного потока, работающий на GPU. Так ли это и есть ли объяснение тому, почему это так? Почему мне удалось запустить 3 процесса тензорного потока на одном графическом процессоре, а не 4?
gpu_options.allow_growth=True
, чтобы предотвратить выделение TF большая часть оперативной памяти вашего графического процессора по умолчанию при создании сеанса - person GPhilo   schedule 11.09.2017