Как загрузить модели, обученные на GPU, в память процессора (системы)? - PullRequest
1 голос
/ 17 октября 2019

Я обучил модель на графическом процессоре, и теперь я пытаюсь оценить ее на процессоре (графический процессор используется для другого поезда). Однако, когда я пытаюсь загрузить его, используя:

with tf.device('/cpu:0'):
    model = tf.keras.models.load_model('models/resnet50_untrained.h5', compile=False)

, я получаю CUDA_ERROR_OUT_OF_MEMORY:

2019-10-17 09:25:23.088408: W tensorflow/compiler/xla/service/platform_util.cc:256] unable to create StreamExecutor for CUDA:0: failed initializing StreamExecutor for CUDA device ordinal 0: Internal: failed call to cuDevicePrimaryCtxRetain: CUDA_ERROR_OUT_OF_MEMORY: out of memory; total memory reported: 7981694976
2019-10-17 09:25:23.088505: F tensorflow/stream_executor/lib/statusor.cc:34] Attempting to fetch value instead of handling error Internal: no supported devices found for platform CUDA

(я также пытался установить compile=True с тем же результатом.)

Кажется, что модель загружается в графический процессор, который уже используется другим экземпляром. Как я могу заставить keras / tenorflow загружать его в системную память и запускать его на CPU?

1 Ответ

1 голос
/ 17 октября 2019

Можете ли вы определить все внутри with tf.device('/cpu:0'):, кроме библиотеки импорта части и тестирования.

Если это не сработает, создайте виртуальную среду и установите обычный тензор потока, а не версию gpu, а затем попробуйте. Если это все еще ошибка OOM, то это из-за используемого ЦП, и у него недостаточно памяти для загрузки этой обученной модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...