2017-05-02 2 views
0

나는 여러 그래프에서 동시에 작동합니다. 예를 들어 하나의 그래프는 CPU를 사용하고 다른 하나는 GPU를 사용하는 것과 같습니다. 어떻게해야합니까?TensorFlow에서 다른 장치 모드로 여러 그래프 실행

현재 접근 방식과 문제

I는 다음과 같이 작동 여전히 GPU를 사용하지 않는 tf.ConfigPrototf.Session()를 사용.

config = tf.ConfigProto(
      device_count = {'GPU': 0} 
     ) 

GPU 사용을 비활성화하려면 환경 변수 CUDA_VISIBLE_DEVICES을 사용해야합니다. 나중에이 변수를 제거하기 위해 os.unsetenv()을 사용합니다.

이러한 솔루션은 하나의 그래프에서 GPU를 사용하고 다른 GPU에서는 GPU 사용을 원하지 않기 때문에 유용하지 않습니다. os.environ()을 설정하면 두 그래프 모두에 영향을 미칩니다.

어떻게하면됩니까?

답변

1

tf.ConfigProto()가 작성한 구성은 세션에 대해 표시 장치를 설정할 수 있습니다. exmaple의 경우 :

config_cpu = tf.ConfigProto() 
config_cpu.gpu_options.visible_device_list='' 
sess_cpu = tf.Session(config=config_cpu) 

config_gpu = tf.ConfigProto() 
config_gpu.gpu_options.visible_device_list='0' 
sess_gpu = tf.Session(config=config_gpu) 

그런 다음 세션, sess_cpu의 그래프는, CPU 만 세션, sess_gpu의 그래프에서 실행해야합니다, GPU 0에서만 실행해야합니다. GPU 메모리 전체의 텐서 흐름을 막기 위해 config_gpu.gpu_options.allow_growth=True을 설정할 수 있습니다. 사용자 정의 된 요구 사항에 대해 유사한 구성을 채택 할 수 있습니다. 다른 구성을 사용하려면 tf.ConfigProto을 살펴보십시오.

+1

작동하지 않습니다. – Ujjwal

+0

코드에 대한 자세한 정보를 보여줄 수 있습니까? 이러한 구성은 tensorflow의 protobuf 소스 코드에 있습니다. 적어도 내 경우에는 효과가 있습니다. –

관련 문제