Rdyh commited on
Commit
c8b5d6e
·
verified ·
1 Parent(s): 2aaf04e

Upload 4 files

Browse files
Files changed (4) hide show
  1. README_HF.md +69 -0
  2. app.py +338 -0
  3. deploy_to_hf.md +99 -0
  4. requirements_hf.txt +4 -0
README_HF.md ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Creative Agent - الوكيل الإبداعي
3
+ emoji: 🎨
4
+ colorFrom: green
5
+ colorTo: blue
6
+ sdk: gradio
7
+ sdk_version: 4.8.0
8
+ app_file: app.py
9
+ pinned: false
10
+ license: mit
11
+ language:
12
+ - ar
13
+ tags:
14
+ - arabic
15
+ - creative-writing
16
+ - marketing
17
+ - advertising
18
+ - saudi
19
+ - allam
20
+ - content-generation
21
+ ---
22
+
23
+ # 🎨 Creative Agent - الوكيل الإبداعي
24
+
25
+ مساعد ذكي لإنشاء المحتوى الإبداعي والإعلاني باللغة العربية باستخدام نموذج علام.
26
+
27
+ ## ✨ المميزات
28
+
29
+ - **🤖 نموذج علام المتقدم**: يستخدم ALLaM-7B-Instruct-preview للحصول على محتوى عربي طبيعي ومقنع
30
+ - **🎯 محتوى مخصص**: ينشئ نصوص إعلانية تتناسب مع علامتك التجارية وجمهورك
31
+ - **🇸🇦 لمسة محلية**: يراعي الثقافة والسوق السعودي
32
+ - **⚡ سريع وسهل**: واجهة بسيطة ونتائج فورية
33
+
34
+ ## 🎯 كيفية الاستخدام
35
+
36
+ 1. **أدخل اسم العميل** - اسم العلامة التجارية أو الشركة
37
+ 2. **وصف المنتج** - تفاصيل المنتج أو الخدمة المراد التسويق لها
38
+ 3. **الجمهور المستهدف** - حدد من هم عملاؤك (العمر، الاهتمامات، المنطقة)
39
+ 4. **صوت العلامة** - اختر طابع التواصل (مرح، جدي، ودود، إلخ)
40
+ 5. **اضغط إنشاء** - احصل على محتوى إبداعي مخصص
41
+
42
+ ## 💡 أمثلة للتجربة
43
+
44
+ ### مطعم تراثي
45
+ - **العميل**: مطعم الأصالة
46
+ - **المنتج**: مطعم يقدم الأكلات السعودية التراثية
47
+ - **الجمهور**: العائلات السعودية ومحبو التراث
48
+ - **الصوت**: تراثي - دافئ - أصيل - عائلي
49
+
50
+ ### متجر تقني
51
+ - **العميل**: متجر التقنية
52
+ - **المنتج**: أجهزة ذكية وإكسسوارات تقنية
53
+ - **الجمهور**: الشباب التقني (18-35 سنة)
54
+ - **الصوت**: عصري - ذكي - سريع - مبتكر
55
+
56
+ ## 🔧 التقنيات المستخدمة
57
+
58
+ - **النموذج**: ALLaM-7B-Instruct-preview
59
+ - **المنصة**: Gradio
60
+ - **اللغة**: Python
61
+ - **التخصص**: المحتوى العربي والسوق السعودي
62
+
63
+ ## 🎨 مطور بواسطة
64
+
65
+ فريق الوكالة الإبداعية - الرياض، السعودية 🇸🇦
66
+
67
+ ---
68
+
69
+ **ملاحظة**: هذا التطبيق مصمم خصيصاً للسوق السعودي ويستخدم نموذج علام المطور محلياً لضمان الجودة والملاءمة الثقافية.
app.py ADDED
@@ -0,0 +1,338 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """
3
+ Creative Agent - HuggingFace Space
4
+ التطبيق البسيط لإنشاء المحتوى الإبداعي باستخدام نموذج علام
5
+ """
6
+
7
+ import gradio as gr
8
+ import torch
9
+ from transformers import AutoModelForCausalLM, AutoTokenizer
10
+ from typing import Optional
11
+ import os
12
+
13
+ class AllamCreativeAgent:
14
+ """الوكيل الإبداعي باستخدام نموذج علام"""
15
+
16
+ def __init__(self):
17
+ self.model_name = "ALLaM-AI/ALLaM-7B-Instruct-preview"
18
+ self.model: Optional[AutoModelForCausalLM] = None
19
+ self.tokenizer: Optional[AutoTokenizer] = None
20
+ self.device = "cuda" if torch.cuda.is_available() else "cpu"
21
+ self.is_loaded = False
22
+ print(f"🔄 تهيئة النظام على {self.device}")
23
+
24
+ def load_model(self, progress=gr.Progress()):
25
+ """تحميل نموذج علام"""
26
+ if self.is_loaded:
27
+ return
28
+
29
+ try:
30
+ progress(0.1, desc="تحميل التوكينايزر...")
31
+ self.tokenizer = AutoTokenizer.from_pretrained(
32
+ self.model_name,
33
+ trust_remote_code=True
34
+ )
35
+
36
+ progress(0.4, desc="تحميل نموذج علام...")
37
+ self.model = AutoModelForCausalLM.from_pretrained(
38
+ self.model_name,
39
+ torch_dtype=torch.float16 if self.device == "cuda" else torch.float32,
40
+ device_map="auto" if self.device == "cuda" else None,
41
+ trust_remote_code=True,
42
+ low_cpu_mem_usage=True
43
+ )
44
+
45
+ if self.device == "cpu":
46
+ self.model = self.model.to(self.device)
47
+
48
+ progress(1.0, desc="تم تحميل النموذج بنجاح!")
49
+ self.is_loaded = True
50
+ print(f"✅ تم تحميل نموذج علام على {self.device}")
51
+
52
+ except Exception as e:
53
+ print(f"❌ خطأ في تحميل نموذج علام: {str(e)}")
54
+ raise
55
+
56
+ def generate_creative_content(self, client_name: str, product_description: str,
57
+ target_audience: str, brand_voice: str,
58
+ progress=gr.Progress()) -> str:
59
+ """إنشاء محتوى إبداعي"""
60
+
61
+ if not all([client_name, product_description, target_audience, brand_voice]):
62
+ return "⚠️ يرجى ملء جميع الحقول المطلوبة"
63
+
64
+ progress(0.1, desc="تحضير النموذج...")
65
+
66
+ try:
67
+ # تحميل النموذج إذا لم يكن محمل
68
+ if not self.is_loaded:
69
+ self.load_model(progress)
70
+
71
+ progress(0.6, desc="إنشاء المحتوى الإبداعي...")
72
+
73
+ # تحضير النص التوجيهي
74
+ prompt = f"""أنت مبدع إعلاني محترف في وكالة إبداعية بالرياض. مهمتك إنشاء محتوى إبداعي للعملاء.
75
+
76
+ معلومات العميل:
77
+ - اسم العميل: {client_name}
78
+ - وصف المنتج: {product_description}
79
+ - الجمهور المستهدف: {target_audience}
80
+ - صوت العلامة التجارية: {brand_voice}
81
+
82
+ المطلوب:
83
+ أنشئ نصاً إعلانياً جذاباً باللغة العربية يتناسب مع صوت العلامة التجارية، يستخدم أسلوباً سردياً مقنعاً يربط بين المنتج وحياة الجمهور اليومية، ويثير المشاعر ويحفز على الفعل، مع استخدام عبارات تفاعلية ومحلية تناسب الجمهور السعودي.
84
+
85
+ النص الإعلاني:"""
86
+
87
+ # تحضير الرسائل
88
+ messages = [
89
+ {"role": "system", "content": "أنت مبدع إعلاني محترف متخصص في السوق السعودي وخبير في كتابة المحتوى الإبداعي باللغة العربية"},
90
+ {"role": "user", "content": prompt}
91
+ ]
92
+
93
+ # تطبيق قالب المحادثة
94
+ inputs = self.tokenizer.apply_chat_template(
95
+ messages,
96
+ tokenize=False,
97
+ add_generation_prompt=True
98
+ )
99
+
100
+ # تحضير المدخلات
101
+ inputs = self.tokenizer(
102
+ inputs,
103
+ return_tensors='pt',
104
+ return_token_type_ids=False
105
+ )
106
+
107
+ # نقل للجهاز المناسب
108
+ inputs = {k: v.to(self.device) for k, v in inputs.items()}
109
+
110
+ progress(0.8, desc="معالجة النص...")
111
+
112
+ # توليد المحتوى
113
+ with torch.no_grad():
114
+ response = self.model.generate(
115
+ **inputs,
116
+ max_new_tokens=1024,
117
+ do_sample=True,
118
+ top_k=50,
119
+ top_p=0.95,
120
+ temperature=0.7,
121
+ pad_token_id=self.tokenizer.eos_token_id
122
+ )
123
+
124
+ # استخراج النص المولد
125
+ if inputs['input_ids'].shape[1] > 0:
126
+ original_length = inputs['input_ids'].shape[1]
127
+ generated_tokens = response[:, original_length:]
128
+ generated_text = self.tokenizer.batch_decode(
129
+ generated_tokens,
130
+ skip_special_tokens=True
131
+ )[0]
132
+ else:
133
+ generated_text = self.tokenizer.batch_decode(
134
+ response,
135
+ skip_special_tokens=True
136
+ )[0]
137
+
138
+ progress(1.0, desc="تم إنشاء المحتوى!")
139
+
140
+ # تنظيف الذاكرة
141
+ if self.device == "cuda":
142
+ torch.cuda.empty_cache()
143
+
144
+ return f"""# 🎨 المحتوى الإبداعي لـ {client_name}
145
+
146
+ {generated_text.strip()}
147
+
148
+ ---
149
+ ✨ تم إنشاء هذا المحتوى بواسطة نموذج علام - مطور محلياً في السعودية
150
+ 🤖 نموذج: ALLaM-7B-Instruct-preview
151
+ 🔗 Creative Agent | الوكيل الإبداعي
152
+ """
153
+
154
+ except Exception as e:
155
+ progress(1.0, desc="حدث خطأ!")
156
+ return f"❌ حدث خطأ في إنشاء المحتوى: {str(e)}"
157
+
158
+ def get_model_status(self) -> str:
159
+ """حالة النموذج"""
160
+ cuda_available = torch.cuda.is_available()
161
+ gpu_name = torch.cuda.get_device_name(0) if cuda_available else "غير متوفر"
162
+
163
+ status = f"""## 📊 حالة النموذج
164
+
165
+ **النموذج**: ALLaM-7B-Instruct-preview
166
+ **الجهاز**: {self.device.upper()}
167
+ **GPU**: {gpu_name}
168
+ **حالة التحميل**: {"✅ محمل" if self.is_loaded else "⏳ غير محمل"}
169
+ **CUDA متوفر**: {"✅ نعم" if cuda_available else "❌ لا"}
170
+ """
171
+ return status
172
+
173
+ def create_gradio_interface():
174
+ """إنشاء واجهة Gradio"""
175
+
176
+ agent = AllamCreativeAgent()
177
+
178
+ # تصميم الواجهة
179
+ with gr.Blocks(
180
+ title="Creative Agent - الوكيل الإبداعي",
181
+ theme=gr.themes.Soft(),
182
+ css="""
183
+ .rtl { direction: rtl; text-align: right; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; }
184
+ .main-title { text-align: center; color: #2E7D32; margin-bottom: 20px; }
185
+ .info-box { background: #f5f5f5; padding: 15px; border-radius: 10px; margin: 10px 0; border-right: 4px solid #4CAF50; }
186
+ .status-box { background: #e3f2fd; padding: 10px; border-radius: 8px; margin: 10px 0; }
187
+ """
188
+ ) as demo:
189
+
190
+ # العنوان الرئيسي
191
+ gr.Markdown(
192
+ """
193
+ # 🎨 Creative Agent - الوكيل الإبداعي
194
+ ### مساعدك الذكي في إنشاء المحتوى الإبداعي باستخدام نموذج علام
195
+ #### مطور باستخدام نموذج ALLaM-7B من الذكاء الاصطناعي السعودي
196
+ """,
197
+ elem_classes=["main-title"]
198
+ )
199
+
200
+ with gr.Row():
201
+ with gr.Column(scale=2):
202
+ gr.Markdown("## 📝 معلومات الحملة الإعلانية")
203
+
204
+ client_name = gr.Textbox(
205
+ label="اسم العميل *",
206
+ placeholder="مثال: مقهى الرياض الذهبي",
207
+ elem_classes=["rtl"]
208
+ )
209
+
210
+ product_description = gr.Textbox(
211
+ label="وصف المنتج أو الخدمة *",
212
+ placeholder="مثال: مقهى عصري يقدم القهوة السعودية الأصيلة مع لمسة حديثة، يقع في حي الملز",
213
+ lines=3,
214
+ elem_classes=["rtl"]
215
+ )
216
+
217
+ target_audience = gr.Textbox(
218
+ label="الجمهور المستهدف *",
219
+ placeholder="مثال: الشباب والمهنيون في الرياض (25-40 سنة)، محبو القهوة المميزة والأجواء العصرية",
220
+ lines=3,
221
+ elem_classes=["rtl"]
222
+ )
223
+
224
+ brand_voice = gr.Textbox(
225
+ label="صوت العلامة التجارية *",
226
+ placeholder="مثال: عصري - دافئ - أصيل - مميز - مضياف",
227
+ elem_classes=["rtl"]
228
+ )
229
+
230
+ generate_btn = gr.Button(
231
+ "🚀 إنشاء المحتوى الإبداعي",
232
+ variant="primary",
233
+ size="lg"
234
+ )
235
+
236
+ with gr.Column(scale=1):
237
+ gr.Markdown("## 💡 نصائح للحصول على أفضل النتائج")
238
+ gr.Markdown(
239
+ """
240
+ <div class="info-box">
241
+ <strong>للحصول على محتوى مميز:</strong><br><br>
242
+ 🎯 <strong>كن محدداً</strong> في وصف منتجك أو خدمتك<br>
243
+ 👥 <strong>حدد الجمهور بدقة</strong> (العمر، المنطقة، الاهتمامات)<br>
244
+ 🗣️ <strong>اختر صوت العلامة</strong> بعناية (مرح، رسمي، ودود)<br>
245
+ 🇸🇦 <strong>فكر محلياً</strong> - استخدم مصطلحات سعودية مناسبة<br>
246
+ </div>
247
+ """,
248
+ elem_classes=["rtl"]
249
+ )
250
+
251
+ # معلومات النموذج
252
+ model_status = gr.Markdown(
253
+ agent.get_model_status(),
254
+ elem_classes=["rtl", "status-box"]
255
+ )
256
+
257
+ refresh_btn = gr.Button("🔄 تحديث حالة النموذج", size="sm")
258
+
259
+ # منطقة النتائج
260
+ gr.Markdown("## ✨ المحتوى الإبداعي المُنشأ")
261
+ output_content = gr.Markdown(
262
+ """
263
+ <div class="info-box">
264
+ سيظهر المحتوى الإبداعي هنا بعد الضغط على زر الإنشاء...<br><br>
265
+ <strong>ما ستحصل عليه:</strong><br>
266
+ • نص إعلاني مخصص لعلامتك التجارية<br>
267
+ • أسلوب يناسب جمهورك المستهدف<br>
268
+ • لغة عربية طبيعية ومقنعة<br>
269
+ • لمسة محلية تناسب السوق السعودي<br>
270
+ </div>
271
+ """,
272
+ elem_classes=["rtl"]
273
+ )
274
+
275
+ # ربط الأحداث
276
+ generate_btn.click(
277
+ fn=agent.generate_creative_content,
278
+ inputs=[client_name, product_description, target_audience, brand_voice],
279
+ outputs=output_content,
280
+ show_progress=True
281
+ )
282
+
283
+ refresh_btn.click(
284
+ fn=agent.get_model_status,
285
+ outputs=model_status
286
+ )
287
+
288
+ # معلومات إضافية
289
+ gr.Markdown(
290
+ """
291
+ ---
292
+ <div style="text-align: center; color: #666; font-size: 14px;">
293
+ 🎨 <strong>Creative Agent</strong> - الوكيل الإبداعي<br>
294
+ مطور باستخدام نموذج علام من الذكاء الاصطناعي السعودي 🇸🇦<br>
295
+ <em>تطوير: فريق الوكالة الإبداعية | الرياض 2024</em>
296
+ </div>
297
+ """,
298
+ elem_classes=["rtl"]
299
+ )
300
+
301
+ # أمثلة سريعة
302
+ gr.Markdown(
303
+ """
304
+ <div class="info-box">
305
+ <strong>أمثلة سريعة للتجربة:</strong><br><br>
306
+
307
+ <strong>مطعم:</strong><br>
308
+ العميل: مطعم الأصالة<br>
309
+ المنتج: مطعم تراثي يقدم الأكلات السعودية الشعبية<br>
310
+ الجمهور: العائلات السعودية ومحبو التراث<br>
311
+ الصوت: تراثي - دافئ - أصيل - عائلي<br><br>
312
+
313
+ <strong>متجر إلكتروني:</strong><br>
314
+ العميل: متجر التقنية<br>
315
+ المنتج: متجر إلكتروني للأجهزة التقنية والإكسسوارات<br>
316
+ الجمهور: الشباب التقني (18-35 سنة)<br>
317
+ الصوت: عصري - ذكي - سريع - مفيد<br>
318
+ </div>
319
+ """,
320
+ elem_classes=["rtl"]
321
+ )
322
+
323
+ return demo
324
+
325
+ def main():
326
+ """تشغيل التطبيق"""
327
+ demo = create_gradio_interface()
328
+
329
+ # تشغيل التطبيق مع النشر العام
330
+ demo.launch(
331
+ share=True,
332
+ server_port=int(os.environ.get("GRADIO_SERVER_PORT", 7860)),
333
+ show_api=False,
334
+ show_error=True
335
+ )
336
+
337
+ if __name__ == "__main__":
338
+ main()
deploy_to_hf.md ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # نشر التطبيق البسيط على HuggingFace Spaces 🚀
2
+
3
+ ## الملفات المطلوبة للنشر:
4
+
5
+ ### 1. الملفات الأساسية:
6
+ - `app.py` - التطبيق الرئيسي
7
+ - `README_HF.md` - وصف المشروع (سيُعيد تسميته README.md)
8
+ - `requirements_hf.txt` - المتطلبات (سيُعيد تسميته requirements.txt)
9
+
10
+ ## 📋 خطوات النشر:
11
+
12
+ ### 1. إنشاء Space جديد:
13
+ - اذهب إلى [HuggingFace Spaces](https://huggingface.co/spaces)
14
+ - اضغط "Create new Space"
15
+ - اختر اسم: `creative-agent-arabic`
16
+ - اختر SDK: `Gradio`
17
+ - اجعله Public
18
+
19
+ ### 2. رفع الملفات:
20
+ ```bash
21
+ # انسخ الملفات التالية للـ Space:
22
+
23
+ # 1. التطبيق الرئيسي
24
+ cp app.py → app.py
25
+
26
+ # 2. ملف الوصف
27
+ cp README_HF.md → README.md
28
+
29
+ # 3. المتطلبات
30
+ cp requirements_hf.txt → requirements.txt
31
+ ```
32
+
33
+ ### 3. إعدادات المساحة:
34
+ ```yaml
35
+ # في README.md للـ Space (تلقائي):
36
+ ---
37
+ title: Creative Agent - الوكيل الإبداعي
38
+ emoji: 🎨
39
+ colorFrom: green
40
+ colorTo: blue
41
+ sdk: gradio
42
+ sdk_version: 4.8.0
43
+ app_file: app.py
44
+ pinned: false
45
+ ---
46
+ ```
47
+
48
+ ### 4. التحقق من النشر:
49
+ بمجرد رفع الملفات:
50
+ - ✅ سيبدأ التطبيق تلقائياً
51
+ - ✅ سيحمل نموذج علام
52
+ - ✅ سيصبح متاح للجمهور
53
+ - ✅ سيحصل على رابط: `https://huggingface.co/spaces/[username]/creative-agent-arabic`
54
+
55
+ ## 🎯 المميزات بعد النشر:
56
+
57
+ ### للمستخدمين:
58
+ - **وصول مجاني** لنموذج علام
59
+ - **واجهة عربية** سهلة الاستخدام
60
+ - **نتائج فورية** بدون تثبيت
61
+ - **مشاركة الروابط** مع الفريق
62
+
63
+ ### للمطور (أنت):
64
+ - **إحصائيات الاستخدام** من HuggingFace
65
+ - **تعليقات المستخدمين**
66
+ - **انتشار أوسع** للمشروع
67
+ - **بناء سمعة** في مجتمع AI
68
+
69
+ ## 🛠️ إضافات مستقبلية للـ Space:
70
+
71
+ ### يمكن إضافة:
72
+ - **أمثلة تفاعلية** في الواجهة
73
+ - **معرض للنتائج** المميزة
74
+ - **تقييم المستخدمين** للمحتوى المُنشأ
75
+ - **تكامل مع API** خارجية
76
+
77
+ ## ⚡ الملاحظات المهمة:
78
+
79
+ ### الأداء:
80
+ - النموذج سيحمل عند أول استخدام (قد يستغرق دقائق)
81
+ - بعدها سيكون سريع جداً
82
+ - HuggingFace يوفر GPU مجاناً للـ Spaces
83
+
84
+ ### الاستخدام:
85
+ - **مجاني** للجميع
86
+ - **لا حدود** على عدد المحاولات
87
+ - **متاح 24/7**
88
+
89
+ ---
90
+
91
+ ## 🎉 النتيجة النهائية:
92
+
93
+ بمجرد النشر ستحصل على:
94
+ - **رابط عام**: `https://huggingface.co/spaces/[username]/creative-agent-arabic`
95
+ - **تطبيق ويب كامل** باللغة العربية
96
+ - **استخدام نموذج علام** مجاناً
97
+ - **مشاركة سهلة** مع العملاء والفريق
98
+
99
+ **التطبيق جاهز تماماً للنشر! 🚀**
requirements_hf.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ gradio==4.8.0
2
+ transformers==4.36.2
3
+ torch==2.1.2
4
+ accelerate==0.25.0