tryed to unload model but it does not work jet

This commit is contained in:
Jaikinator
2023-11-10 15:43:01 +01:00
parent ea03bf1f06
commit b42d1d1faa
+25 -7
View File
@@ -32,13 +32,15 @@ Usage:
"""
import json
from math import pi
import os
import re
import gradio as gr
import threading
from tqdm import tqdm
import time
from scraibe import Scraibe, Transcript
@@ -226,11 +228,23 @@ class GradioTranscriptionInterface:
# Gradio Interface
####
def gradio_Interface(model : Scraibe = None):
def gradio_Interface(model : Scraibe = None, timeout = 1):
"""
Gradio Web interface for audio transcription.
:param model: Scraibe model, defaults to None
:type model: Scraibe, optional
:param timeout: Time until model is unloaded, defaults to 600 seconds
:type timeout: int, optional
:return: Gradio Interface
:rtype: gradio.Interface
"""
if model is None:
model = Scraibe()
save_model_params = model.params
pipe = GradioTranscriptionInterface(model)
def select_task(choice):
@@ -314,6 +328,10 @@ def gradio_Interface(model : Scraibe = None):
progress = gr.Progress(track_tqdm= True)):
# get *args which are not None
if not "model" in locals():
gr.Warning("Model unloaded due to inactivity. Reloading the model, please wait.")
model = Scraibe(**save_model_params)
pipe = GradioTranscriptionInterface(model)
# # tell the app that it is still in use
reset_user_activity()
@@ -373,21 +391,23 @@ def gradio_Interface(model : Scraibe = None):
return gr.update(value = str(trans)),gr.update(value = trans.get_json())
# Create a thread to monitor user activity
def monitor_activity():
def monitor_activity(model, pipe, timeout=timeout):
global USER_ACTIVE
while True:
time.sleep(60) # Check user activity every second
time.sleep(timeout) # Check user activity every second
with user_active_lock:
if not USER_ACTIVE:
del model
del pipe
print("Model deleted empty memory")
gr.Warning("Model unloaded due to inactivity. Please reload the model to continue.")
break
USER_ACTIVE = False
# Start the monitoring thread
activity_thread = threading.Thread(target=monitor_activity)
activity_thread = threading.Thread(target=monitor_activity, args=(model, pipe))
activity_thread.daemon = True
activity_thread.start()
@@ -476,8 +496,6 @@ def gradio_Interface(model : Scraibe = None):
annotate.click(fn = annotate_output, inputs=[annoation, out_json],
outputs=[out_txt, out_json])
return demo