Объекты VLLM вызывают ошибки памяти при создании в функции, даже при явной очистке кэша графического процессора, только ⇐ Python

Программы на Python
Anonymous
Объекты VLLM вызывают ошибки памяти при создании в функции, даже при явной очистке кэша графического процессора, только

Сообщение Anonymous »

Я столкнулся с проблемой при использовании библиотеки VLLM в Python. В частности, когда я создаю объект модели VLLM внутри функции, я сталкиваюсь с проблемами с памятью и не могу эффективно очистить память графического процессора даже после удаления объектов и использования torch.cuda.empty_cache().
Проблема возникает, когда я пытаюсь создать экземпляр объекта LLM внутри функции, но этого не происходит, если я создаю экземпляр объекта в родительском процессе или глобальной области. Это говорит о том, что у VLLM есть проблемы с созданием объектов в функциях и управлением ими, что приводит к удержанию памяти и нехватке графического процессора.
Вот упрощенная версия кода:

Код: Выделить всё

import torch
import gc
from vllm import LLM

def run_vllm_eval(model_name, sampling_params, path_2_eval_dataset):
# Instantiate LLM in a function
llm = LLM(model=model_name, dtype=torch.float16, trust_remote_code=True)

# Run some VLLM inference or evaluation here (simplified)
result = llm.generate([path_2_eval_dataset], sampling_params)

# Clean up after inference
del llm
gc.collect()
torch.cuda.empty_cache()

# After this, GPU memory is not cleared properly and causes OOM errors
run_vllm_eval()
run_vllm_eval()
run_vllm_eval()
но

Код: Выделить всё

llm = run_vllm_eval2()
llm = run_vllm_eval2(llm)
llm = run_vllm_eval2(llm)
Работает.
Даже после явного удаления объекта LLM и очистки кэша память графического процессора не освобождается должным образом, что приводит к выходу из строя. ошибки памяти (OOM) при попытке загрузить или запустить другую модель в том же сценарии.
Что я пробовал:
  • Удаление объекта LLM с помощью del.
  • Запуск gc.collect() для запуска сборки мусора Python.
  • Использование torch.cuda.empty_cache (), чтобы очистить память CUDA.
  • Убедиться, что в родительском процессе не создаются экземпляры объектов VLLM.
Ничего из похоже, они решают проблему, когда объект LLM создается внутри функции.
Вопросы:
  • Кто-нибудь сталкивался аналогичные проблемы с памятью при создании объектов VLLM внутри функций?
  • Существует ли рекомендуемый способ управления или очистки объектов VLLM в функции, чтобы предотвратить сохранение памяти графического процессора?
    < li>Существуют ли в этом контексте конкретные методы обработки VLLM, которые отличаются от стандартных моделей Hugging Face или PyTorch?


Подробнее здесь: https://stackoverflow.com/questions/789 ... explicitly

Вернуться в «Python»