2017-12-27 19 views
0

mxnet을 사용할 때 모듈 mod을 작성하고 교육 한 후 mod.get_params() 메서드를 호출하여 모델의 가중치 및 바이어스를 검사했습니다.mxnet : 매개 변수는 항상 CPU에 있습니다.

그러나, 모듈 생성시에 I가 mx.gpu(0) 컨텍스트를 설정하더라도 get_params 방법의 출력은 항상 파라미터 (가중치 및 바이어스) cpu(0)에 있는지 표시하였습니다. 아래를 참조

results of get_params

내가 무게가 CPU에 정말로 있었다, 그래서 나는이 프로그램을 시간이 초과 내가 cpu(0)보다는 gpu(0)에 컨텍스트를 설정하는 경우, 그것은 실제로는 훨씬 빠른 것으로 나타났습니다 있는지 궁금합니다. 그러므로, 나는 무게가 사실상 GPP에 있다고 생각합니다. 그렇지 않으면 훈련이 그렇게 빠르지 않을 것입니다. 그러나, get_params 방법은 왜 내 가중치가 CPU에 있음을 보여 줍니까?

답변

1

호출 mod.get_params은 GPU 메모리의 매개 변수를 CPU 메모리에있는 복사본과 동기화합니다. 당신은 사본을 보았습니다, 그것은 CPU 상황에서입니다, 그래서 걱정할 필요는 없습니다.

매개 변수가 '더티'(즉, 동기화되지 않은 경우) 인 경우 _sync_params_from_devices이 호출됩니다. 여기서 '장치'는 GPU입니다.