Spaces:
Runtime error
Runtime error
File size: 3,732 Bytes
b2cc17d aaed90f c4181d2 aaed90f cdfaa37 2649793 b2cc17d aaed90f cdfaa37 aaed90f cdfaa37 aaed90f c4181d2 2649793 e7c4f2a aaed90f e7c4f2a 2649793 aaed90f 2649793 aaed90f e7c4f2a aaed90f 2649793 c4181d2 aaed90f c4181d2 aaed90f c4181d2 aaed90f c4181d2 aaed90f c4181d2 aaed90f 2649793 b2cc17d aaed90f 2649793 e7c4f2a aaed90f e7c4f2a aaed90f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
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() # دوباره بررسی حافظه
|