2017-01-02 4 views
18

필자가 작성한 프로그램에는 런타임 중에 모델 간의 전환이 포함됩니다.텐서 흐름 모델을 메모리에 저장하기

여기에 지정된대로 디스크에서 모델을 저장 /로드하려면 Saver를 사용하고 있습니다 : https://www.tensorflow.org/api_docs/python/state_ops/saving_and_restoring_variables#Saver.

모델은 상당히 작아서 메모리에 저장할 수 있으므로 이러한 모델을 디스크에 저장하는 대신 메모리에 저장하고 복원하는 방법을 알고 있는지 궁금합니다.

모델을 메모리에 저장하려고 tensorflow 소스를 수정하려고 시도했지만 컴파일 시간에 gen_io_ops이 생성 된 것 같습니다. 또 다른 가능한 방법은 메모리 매핑 된 파일을 사용하는 것입니다. 누구든지 쉬운 방법을 알고 있습니까?

+4

tmpfs에 저장 하시겠습니까? –

답변

1

난 그냥 자신의 계산 그래프와 두 개의 서로 다른 세션이 있습니다. 또는 동일한 세션에서 계산 그래프 (변수, 연산 등의 두 사본)를 복제 할 수 있습니다. 그런 다음 sess.run(comp1 if useCompOne else comp2)으로 전화 하겠지만 설정하고 싶습니다.

+1

이 접근법 (두 세션이 모두 활성화되었다고 가정)은 GPU 메모리에있는 변수를 그대로 유지합니다. GPU 메모리가 병목 (종종있는 경우) 인 경우 OP는 비활성 세션 데이터를 GPU에서 더 싼/큰 시스템 RAM으로 이동시키는 솔루션이 필요합니다. – Peteris

+1

매우 사실입니다. 저는 그의 말로 "모델은 상당히 작아서 메모리에 저장할 수 있습니다." 난 당신이 RAM과 GPU 메모리에 계산에 설정된 두 세트의 사본을 가질 수 있다고 가정합니다. 그 다음에는 GPU에서 현재 값을 RAM과 viceversa로 복사하는 '전송'op를 작성합니다. , 나는 그들이 더 이상 함께 메모리에 들어 가지 않으면 다른 옵션을 탐구하는 방법을 조사 할 것이다. –

관련 문제