SabziAi / app.py
apaxray's picture
Update app.py
aaed90f verified
raw
history blame
3.73 kB
from transformers import pipeline
import os
import openai
import gc # برای آزاد کردن حافظه
import psutil # برای مانیتور کردن حافظه
class MultiModelSystem:
def __init__(self):
self.models = {}
def load_model(self, task, model_id, use_auth_token=None):
"""مدل‌ها را به صورت lazy بارگذاری می‌کند."""
if model_id == "OpenAI":
return self.load_openai_model()
else:
return pipeline(
task=self.get_task_type(task),
model=model_id,
use_auth_token=use_auth_token
)
def unload_model(self, task):
"""مدل بارگذاری شده را از حافظه پاک می‌کند."""
if task in self.models:
del self.models[task]
gc.collect() # جمع‌آوری حافظه
@staticmethod
def load_openai_model():
"""مدل ریاضی OpenAI."""
return "OpenAI (Math)"
@staticmethod
def get_task_type(task):
task_map = {
"translation": "translation",
"qa": "question-answering",
"persian_nlp": "text-classification",
"custom_ai": "text-generation",
"math": "text-generation",
}
return task_map.get(task, "text-generation")
def process_task(self, task, model_id, **kwargs):
"""مدیریت وظایف."""
if task not in self.models:
self.models[task] = self.load_model(task, model_id, use_auth_token=os.getenv("Passsssssss"))
model = self.models[task]
# پردازش وظیفه
if task == "math":
return self.process_math_task(kwargs.get("text"))
else:
return model(**kwargs)
def process_math_task(self, text):
"""مدیریت وظایف ریاضی OpenAI."""
try:
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": text}]
)
return response['choices'][0]['message']['content'].strip()
except Exception as e:
print(f"Error processing math task: {e}")
return None
# مانیتورینگ حافظه
def check_memory_usage():
mem = psutil.virtual_memory()
print(f"Memory usage: {mem.percent}% ({mem.used / (1024 ** 3):.2f} GB used)")
# نمونه استفاده
if __name__ == "__main__":
MODEL_CONFIG = {
"translation": "PontifexMaximus/opus-mt-iir-en-finetuned-fa-to-en",
"qa": "HooshvareLab/bert-fa-base-uncased",
"math": "OpenAI",
"persian_nlp": "HooshvareLab/bert-fa-zwnj-base",
"custom_ai": "universitytehran/PersianMind-v1.0",
}
system = MultiModelSystem()
tasks = [
{"task": "translation", "model_id": MODEL_CONFIG["translation"], "kwargs": {"text": "سلام دنیا!", "src_lang": "fa", "tgt_lang": "en"}},
{"task": "qa", "model_id": MODEL_CONFIG["qa"], "kwargs": {"question": "پایتخت ایران چیست؟", "context": "ایران کشوری در خاورمیانه است و پایتخت آن تهران است."}},
{"task": "math", "model_id": MODEL_CONFIG["math"], "kwargs": {"text": "What is the integral of x^2?"}},
]
for task_info in tasks:
check_memory_usage() # نمایش میزان حافظه
result = system.process_task(task_info["task"], task_info["model_id"], **task_info["kwargs"])
print(f"Result for task '{task_info['task']}':", result)
system.unload_model(task_info["task"]) # آزادسازی حافظه
check_memory_usage() # دوباره بررسی حافظه