-
-
Notifications
You must be signed in to change notification settings - Fork 344
Open
Labels
help wantedExtra attention is neededExtra attention is needed
Description
Столкнулся с проблемой утечки памяти на модели 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 neededExtra attention is needed