MHD011 commited on
Commit
d43bf55
·
verified ·
1 Parent(s): 485ccf4

Upload 3 files

Browse files
Files changed (3) hide show
  1. Dockerfile +3 -17
  2. app.py +8 -7
  3. requirements.txt +2 -1
Dockerfile CHANGED
@@ -1,39 +1,25 @@
1
- # استخدام صورة أساسية خفيفة الوزن مع بايثون
2
  FROM python:3.9-slim
3
 
4
- # أضف بعد FROM
5
- RUN apt-get update && apt-get install -y libopenblas-dev
6
-
7
- # تعيين مجلد العمل
8
  WORKDIR /app
9
 
10
- # تثبيت الاعتمادات النظامية المطلوبة
11
  RUN apt-get update && apt-get install -y \
12
  build-essential \
13
  libpq-dev \
14
  && rm -rf /var/lib/apt/lists/*
15
 
16
- # قبل COPY
17
- RUN pip install --upgrade pip setuptools wheel
18
- RUN pip install numpy==1.24.4
19
-
20
- # نسخ ملفات المشروع
21
  COPY . .
22
 
23
- # إنشاء مجلد للذاكرة المؤقتة
24
  RUN mkdir -p /app/model_cache && chmod -R 777 /app
25
 
26
- # تثبيت متطلبات بايثون
 
27
  RUN pip install --no-cache-dir -r requirements.txt
28
 
29
- # تعيين متغيرات البيئة
30
  ENV FLASK_APP=app.py
31
  ENV FLASK_ENV=production
32
  ENV TRANSFORMERS_CACHE=/app/model_cache
33
  ENV TORCH_CACHE=/app/model_cache
34
 
35
- # فتح المنفذ
36
  EXPOSE 7860
37
 
38
- # تشغيل التطبيق مع Gunicorn
39
- CMD ["gunicorn", "--workers", "2", "--threads", "4", "--bind", "0.0.0.0:7860", "--timeout", "120", "app:app"]
 
 
1
  FROM python:3.9-slim
2
 
 
 
 
 
3
  WORKDIR /app
4
 
 
5
  RUN apt-get update && apt-get install -y \
6
  build-essential \
7
  libpq-dev \
8
  && rm -rf /var/lib/apt/lists/*
9
 
 
 
 
 
 
10
  COPY . .
11
 
 
12
  RUN mkdir -p /app/model_cache && chmod -R 777 /app
13
 
14
+ RUN pip install --upgrade pip setuptools wheel
15
+ RUN pip install numpy==1.24.4
16
  RUN pip install --no-cache-dir -r requirements.txt
17
 
 
18
  ENV FLASK_APP=app.py
19
  ENV FLASK_ENV=production
20
  ENV TRANSFORMERS_CACHE=/app/model_cache
21
  ENV TORCH_CACHE=/app/model_cache
22
 
 
23
  EXPOSE 7860
24
 
25
+ CMD ["gunicorn", "--workers", "1", "--threads", "2", "--bind", "0.0.0.0:7860", "--timeout", "300", "--preload", "app:app"]
 
app.py CHANGED
@@ -11,15 +11,15 @@ import json
11
  app = Flask(__name__)
12
  CORS(app)
13
 
14
- # --- إعداد السجل ---
15
  logging.basicConfig(level=logging.INFO)
16
  logger = logging.getLogger(__name__)
17
 
18
- # --- إعداد النموذج ---
19
- MODEL_NAME = "tscholak/cxmefzzi"
20
  SUPABASE_DB_URL = os.getenv('SUPABASE_DB_URL')
21
 
22
- # تأكد من وجود مجلد الذاكرة المؤقتة
23
  os.makedirs("model_cache", exist_ok=True)
24
  os.environ["TRANSFORMERS_CACHE"] = "model_cache"
25
  os.environ["TORCH_CACHE"] = "model_cache"
@@ -30,7 +30,7 @@ model = None
30
  def initialize():
31
  global tokenizer, model
32
  try:
33
- logger.info("جاري تحميل النموذج...")
34
  tokenizer = AutoTokenizer.from_pretrained(
35
  MODEL_NAME,
36
  cache_dir="model_cache",
@@ -39,7 +39,9 @@ def initialize():
39
  model = AutoModelForSeq2SeqLM.from_pretrained(
40
  MODEL_NAME,
41
  cache_dir="model_cache",
42
- device_map="auto"
 
 
43
  )
44
  model.eval()
45
  logger.info("تم تحميل النموذج بنجاح")
@@ -48,7 +50,6 @@ def initialize():
48
  raise
49
 
50
  initialize()
51
-
52
  # --- سكيمة قاعدة البيانات ---
53
  DB_SCHEMA = """
54
  CREATE TABLE public.profiles (
 
11
  app = Flask(__name__)
12
  CORS(app)
13
 
14
+ # إعدادات التسجيل
15
  logging.basicConfig(level=logging.INFO)
16
  logger = logging.getLogger(__name__)
17
 
18
+ # إعدادات النموذج
19
+ MODEL_NAME = "tscholak/1wnr2e8q" # نموذج أصغر
20
  SUPABASE_DB_URL = os.getenv('SUPABASE_DB_URL')
21
 
22
+ # تهيئة مجلد الذاكرة المؤقتة
23
  os.makedirs("model_cache", exist_ok=True)
24
  os.environ["TRANSFORMERS_CACHE"] = "model_cache"
25
  os.environ["TORCH_CACHE"] = "model_cache"
 
30
  def initialize():
31
  global tokenizer, model
32
  try:
33
+ logger.info("جاري تحميل النموذج بتهيئة منخفضة الذاكرة...")
34
  tokenizer = AutoTokenizer.from_pretrained(
35
  MODEL_NAME,
36
  cache_dir="model_cache",
 
39
  model = AutoModelForSeq2SeqLM.from_pretrained(
40
  MODEL_NAME,
41
  cache_dir="model_cache",
42
+ device_map="auto",
43
+ torch_dtype=torch.float16,
44
+ low_cpu_mem_usage=True
45
  )
46
  model.eval()
47
  logger.info("تم تحميل النموذج بنجاح")
 
50
  raise
51
 
52
  initialize()
 
53
  # --- سكيمة قاعدة البيانات ---
54
  DB_SCHEMA = """
55
  CREATE TABLE public.profiles (
requirements.txt CHANGED
@@ -5,4 +5,5 @@ flask==2.3.2
5
  flask-cors==3.0.10
6
  psycopg2-binary==2.9.7
7
  gunicorn==20.1.0
8
- accelerate==0.21.0
 
 
5
  flask-cors==3.0.10
6
  psycopg2-binary==2.9.7
7
  gunicorn==20.1.0
8
+ accelerate==0.21.0
9
+ python-dotenv==1.0.0