1
resposta

Alocação de Memória do CUDA

Olá pessoal.

Estou fazendo uma CNN pelo Pytorch utilizando a GPU(CUDA), mas na hora do treino ele alega que o CUDA não consegue alocar toda a memória disponível. O erro é o seguinte:

OutOfMemoryError: CUDA out of memory. Tried to allocate 9.57 GiB (GPU 0; 15.78 GiB total capacity; 9.64 GiB already allocated; 5.00 GiB free; 9.66 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

Sendo que tenho 64 GB de GPU para rodar, são 4 placas de vídeo de 16 GB cada. Como faria para contornar esse erro?

1 resposta

Olá, Maurício

É ótimo ver que você está trabalhando em um projeto de CNN com PyTorch e GPU. O erro que você está enfrentando é comum e geralmente ocorre quando a alocação de memória excede a capacidade da GPU disponível. Aqui estão algumas estratégias para contornar esse erro:

  • Reduzir o tamanho do lote (batch size): Uma das maneiras mais simples de reduzir o uso de memória é diminuir o tamanho do lote durante o treinamento. Você pode fazer isso ajustando o valor do parâmetro batch_size em seu código de treinamento.

  • Utilizar uma única GPU: Se você tem quatro GPUs de 16 GB cada, pode tentar treinar sua CNN em uma única GPU. Isso pode ser feito especificando o dispositivo da GPU como "cuda:0" ao criar seu modelo e carregar os dados. Isso limitará a alocação de memória a uma única GPU.

  • Reduzir o tamanho do modelo: Se o seu modelo for muito grande e complexo, considere reduzir o número de camadas, filtros ou parâmetros. Modelos menores ocuparão menos memória.

Essas são algumas sugestões, mas tenha em mente que você pode precisar fazer um ajuste fino para encontrar o equilíbrio certo entre o uso de memória e o desempenho do treinamento.

Bons estudos e boa sorte com seu projeto de CNN!