Однако, когда я запускаю код на виртуальной машине Windows «Standard NC4as T4 v3» с одним графическим процессором Tesla T4 с 16 ГБ ОЗУ, он очень быстро выдает эту ошибку: CUDA не хватает памяти. Пытался выделить XXX ГиБ. GPU
По моим расчетам, этот код должен работать нормально, учитывая доступную оперативную память. Тем не менее, я попытался сделать сценарий более эффективным с точки зрения использования памяти:
- Изменение механизма внимания — путем установки attn_implementation при создании экземпляра модели — сначала «sdpa». Затем попытался использовать Flash-внимание, но обнаружил, что невозможно установить пакет flashattn в Windows
- Использование xformers для запуска Enable_xformers_memory_efficient_attention - думаю, это также о механизме внимания, но не смог его установить/запустить.
- Используя torch.inference_mode()
- Установив такие флаги, как low_cpu_mem_usage = True во время создания экземпляра модели.
- Явное задание torch_dtype значения torch.float16 или torch.bfloat16 во время создания экземпляра модели.< /li>
Использование BitsAndBytesConfig для запуска 8-битного и 4-битного квантования.
Итак, я Я с подозрением отношусь к дальнейшей оптимизации кода. Следующим шагом, очевидно, будет вручную сопоставить все слои модели с графическим процессором и процессором соответственно, определив device_map.
Итак, мой вопросы:
- Вероятно, это действительно проблема с памятью или это отвлекающий маневр?
- Если это память, что я могу сделать, кроме того, что уже пробовал?Это действительно проблема с памятью или это отвлекающий маневр?
- Если это память, что я могу сделать, помимо того, что уже пробовал? li>
Если это не так, есть ли очевидные вещи, которые следует проверить? (Я подозреваю, что это связано с настройкой системы или установкой пакетов...)
Подробнее здесь: https://stackoverflow.com/questions/792 ... -inference
Мобильная версия