Skip to content

Memory Leak / Утечка памяти  #282

@Freeeeeet

Description

@Freeeeeet

Столкнулся с проблемой утечки памяти на модели tts. При каждом обращении к модели занятая оперативка растет на ~100МБ.

Вызывается сразу несколько инстансов, работает через FastAPI, но я думаю, можно обойтись без деталей и оставил только то, что связано с моделью(если что-то ещё нужно будет докинуть - докину)
вызываю примерно вот таким образом, чтобы получить итоговое аудио:

model = get_model()
    file_path = generate_audio_file(model, query.id, query.text_to_speech)
    return_model(model)

А вот тут в различных файликах описано, что я, собственно, вызываю:

device = 'cpu'
model_pool = ModelPool(size=2, device=device)



def get_model():
    return model_pool.get_model()


def return_model(model):
    model_pool.return_model(model)
class ModelPool:
    def __init__(self, size, device='cpu'):
        self.pool = queue.Queue()
        self.device = torch.device(device)  # Устройство, на котором будет выполняться модель
        self.load_models(size)

    def load_models(self, size):
        for _ in range(size):
            model, __ = torch.hub.load(repo_or_dir='snakers4/silero-models',
                                   model='silero_tts',
                                   language='ru',
                                   speaker='v3_1_ru')
            model.to(self.device)
            self.pool.put(model)

    def get_model(self):
        return self.pool.get()

    def return_model(self, model):
        self.pool.put(model)
def generate_audio_file(model, id, text: str, speaker='xenia', sample_rate=24000) -> str:
    file_path = f"some_filename--{id}.wav"
    model.save_wav(text=text, speaker=speaker, sample_rate=sample_rate, audio_path=file_path)
    return file_path

Не сталкивались с таким?
torch.no_grad() пробовал добавлять в различные места кода, не помогло

Metadata

Metadata

Assignees

Labels

help wantedExtra attention is needed

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions