Задать вопрос
pred8or
@pred8or

GeForce GTX 1650 > RTX A2000 — как такое возможно?

Решил заняться оцифровкой старых фотографий. Фотографий много, руками не поретушируешь. Есть вот такой проект: https://github.com/microsoft/Bringing-Old-Photos-B... и довольно сильно ушедший от него форк: https://github.com/cdb-boop/ComfyUI-Bringing-Old-P...

В свою очередь, немного поподкручивал скрипты, в частности, унифицировал параметры, потому что исходники кажется писало довольно много народу, которые друг с другом видимо совсем не общались. Но то что касается основной функциональности пока не трогал. Для начала остановился на 1 этапе: обработка дефектов (царапины и предположительно пыль и волосы) и общий улучшайзинг - чтобы понять, как оно вообще работает. И вот запускаю на первой пачке фоток. 42 фотографии разного размера, качества, цветности. Скрипт работает медленно и печально. На одной фотке из 42 выбрасывает exception:

Exception <class 'torch.OutOfMemoryError'>
CUDA out of memory.
Tried to allocate 5.19 GiB.
GPU 0 has a total capacity of 4.00 GiB of which 0 bytes is free.
Of the allocated memory 16.69 GiB is allocated by PyTorch, and 702.98 MiB is reserved by PyTorch but unallocated.
If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation.
See documentation for Memory Management  (https://pytorch.org/docs/stable/notes/cuda.html#environment-variables)


Данные системы:
  • OS: Windows 10
  • CPU: Xeon
  • RAM: 32GB
  • GPU: NVIDIA GeForce GTX 1650 4GB
  • Driver Version: 560.94
  • CUDA Version: 12.6
  • Python 3.12.8


Ладно, думаю, у меня есть сервер с виртуалкой в которую проброшен A2000. Там у меня работает сервис Machine Learning для Immich и вроде никто не жаловался.

  • OS: Ubuntu Server 24.04
  • CPU: выделено 2 ядра
  • RAM: 4GB
  • GPU: NVIDIA RTX A2000 12GB
  • Driver Version: 565.57.01
  • CUDA Version: 12.7
  • Python 3.12.3


Как видно, ничего общего, зато памяти у видеокарты более чем дофига. Казалось бы.

Запускаю на том же наборе фоток. Всё бежит очень шустро, и вдруг бац, бац, бац. Из 42 фоток - 4 exception. В том числе и на той что под виндой:

Exception <class 'torch.OutOfMemoryError'>
CUDA out of memory.
Tried to allocate 5.19 GiB.
GPU 0 has a total capacity of 11.65 GiB of which 3.25 GiB is free.
Including non-PyTorch memory, this process has 8.40 GiB memory in use.
Of the allocated memory 5.81 GiB is allocated by PyTorch, and 2.47 GiB is reserved by PyTorch but unallocated.
If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation.
See documentation for Memory Management  (https://pytorch.org/docs/stable/notes/cuda.html#environment-variables)


Как вообще такое возможно? Откуда под виндой он берёт 16ГБ Shared Memory в дополнение к 4ГБ из адаптера?

67febc5e882f2208438553.jpeg

Как сделать что-то такое под убунтой? Оперативы виртуалке я добавлял, только это не помогло. Что ещё можно сделать чтобы модель начала помещаться в память - в винде или в убунте?
  • Вопрос задан
  • 61 просмотр
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы