Сначала прошу прощения за этот вопрос — я хорошо знаю Python, но никогда не работал с ML-фреймворками. Кроме того, очень сложно создать полный пример проблемы, потому что я не могу настроить графический процессор на своей машине, а изменить код на производственной машине очень сложно.
Перейдем к проблеме, на на производственной машине у меня установлены CUDA и GPU. Я использую
Код: Выделить всё
import tensorflow as tf
with tf.device("/GPU:0"):
my_model = tf.keras.models.load_model(filepath=filepath)
чтобы загрузить модель в память. Насколько я знаю, он должен использовать графический процессор, но модель хранится как в оперативной памяти процессора, так и в графическом процессоре. Я пытался использовать gc.collect(), пробовал случайные вещи, такие как tf.keras.backend.clear_session() и такие флаги, как TF_FORCE_GPU_ALLOW_GROWTH или CUDA_VISIBLE_DEVICES, но ничего не работает - ОЗУ ЦП используется до тех пор, пока программа не завершится. Я не смог найти решения, которое заставило бы меня думать, что я не понимаю чего-то фундаментального.
Это нормально, что такая загруженная модель остается в оперативной памяти процессора? Если нет, что мне сделать, чтобы освободить эту память и оставить ее только в графическом процессоре?
Подробнее здесь:
https://stackoverflow.com/questions/790 ... tensorflow