У меня есть образ Docker с Caffe, скомпилированный с поддержкой cudnn. CUDA и все остальные зависимости правильно установлены в образе и правильно работают при использовании nvidia-docker
для предоставления драйверов с хост-компьютера.
Я хотел бы запустить этот же образ без использования nvidia-docker
и просто установить Caffe в режим ЦП. Однако, когда я это делаю, я все еще вижу ошибки, связанные с тем, что правильные драйверы Nvidia не могут быть найдены. Как будто сборка Caffe с поддержкой cudnn приводит к тому, что Caffe требует драйверы графического процессора. Это проблематично для моего варианта использования: предоставление одного образа Docker, который можно использовать взаимозаменяемо либо как образ на основе процессора, либо как образ на основе графического процессора.
Как я могу установить Caffe с включенной поддержкой cudnn / GPU, но при этом запускать его без зависимости времени выполнения от каких-либо зависимостей CUDA / GPU?
Примечание: это не вопрос об отключении поддержки GPU с флагом CPU_ONLY
во время сборки Caffe. Скорее, речь идет о том, чтобы Caffe был создан для использования графического процессора, а затем запускал его так, чтобы не требовалось никаких драйверов, библиотек CUDA и т. д., в режиме runtime только для ЦП. .
Тип ошибки, которую я вижу во время выполнения, приведен ниже:
I0523 21:09:42.175459 14 layer_factory.hpp:77] Creating layer conv1
I0523 21:09:42.175561 14 net.cpp:84] Creating Layer conv1
I0523 21:09:42.175606 14 net.cpp:406] conv1 <- data
I0523 21:09:42.175660 14 net.cpp:380] conv1 -> conv1
F0523 21:09:42.177079 14 cudnn_conv_layer.cpp:52] Check failed: error == cudaSuccess (35 vs. 0) CUDA driver version is insufficient for CUDA runtime version
*** Check failure stack trace: ***
Aborted (core dumped)
Здесь я просто загружаю модель prototxt после вызова caffe.set_mode_cpu()
с использованием привязки Caffe Python.
Если я компилирую в режиме CPU_ONLY, все работает, или если я запускаю nvidia-docker на машине с нужными драйверами. Но я специально ищу один образ Docker, который можно было бы переносить между хост-компьютерами, которые имеют и не имеют графических процессоров или необходимых зависимостей драйверов.
cudnn_conv_layer
несмотря наcaffe.set_mode_cpu()
— этого не происходит при прямом проходе по сети в режиме CPU_ONLY. - person ely   schedule 25.05.2017docker
иset_mode_cpu
. - person ely   schedule 25.05.2017USE_CUDNN
иCPU_ONLY
является взаимоисключающим, что безумие, но я думаю, хорошо знать, что ограничение присуще Caffe. - person ely   schedule 26.05.2017