Riy777 commited on
Commit
f9ebd2d
·
verified ·
1 Parent(s): 049bd19

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -24
app.py CHANGED
@@ -1,50 +1,54 @@
1
  import gradio as gr
2
  import torch
3
- from diffusers import WanVideoPipeline
4
  from diffusers.utils import export_to_video
5
  import tempfile
6
 
7
- # إعداد النموذج - نسخة 1.3B هي الأخف والأقوى حالياً
8
- model_id = "Wan-AI/Wan2.1-T2V-1.3B"
9
 
10
- print("جاري تحميل النموذج بتقنيات توفير الذاكرة...")
11
- # تحميل النموذج مع تحديد نوع البيانات float32 للـ CPU
12
- pipe = WanVideoPipeline.from_pretrained(
13
- model_id,
14
  torch_dtype=torch.float32,
15
- # هذه الخاصية تمنع تحميل المكونات إلا عند الحاجة إليها
16
- low_cpu_mem_usage=True
17
  )
18
 
19
- # تحسين استهلاك الرام للمساحات المجانية
20
  pipe.enable_model_cpu_offload()
21
 
22
  def generate_video(prompt):
23
  if not prompt:
24
  return None
25
 
26
- # السر في السرعة والقوة: 5 خطوات فقط تعطي نتيجة مذهلة في Wan2.1
27
- video_frames = pipe(
28
  prompt=prompt,
29
- num_frames=9, # فيديو قصير جداً للسرعة
30
- num_inference_steps=5, # عدد خطوات قليل جداً لتناسب الـ CPU
31
- height=320,
32
  width=320,
33
- guidance_scale=6.0,
 
 
34
  ).frames[0]
35
 
 
36
  temp_file = tempfile.NamedTemporaryFile(suffix='.mp4', delete=False)
37
- export_to_video(video_frames, temp_file.name, fps=8)
38
  return temp_file.name
39
 
40
- # واجهة Gradio
41
- with gr.Blocks() as demo:
42
- gr.Markdown("### Wan2.1 Tiny: Fastest Strong Model")
 
 
43
  with gr.Row():
44
- input_text = gr.Textbox(label="Prompt", placeholder="A cute robot waving...")
45
- btn = gr.Button("Generate (Takes 2-5 mins on CPU)")
46
- output_video = gr.Video()
 
 
47
 
48
- btn.click(fn=generate_video, inputs=input_text, outputs=output_video)
49
 
50
  demo.launch()
 
1
  import gradio as gr
2
  import torch
3
+ from diffusers import SanaVideoPipeline
4
  from diffusers.utils import export_to_video
5
  import tempfile
6
 
7
+ # إعداد النموذج: نسخة 0.6B هي الأخف في العالم حالياً
8
+ model_id = "NVLabs/Sana-1.1-0.6B" # أو النسخة المتاحة في بيئتك
9
 
10
+ print("جاري تحميل نموذج Sana الذكي...")
11
+ # تحميل النموذج بوضعية توفير الطاقة القصوى
12
+ pipe = SanaVideoPipeline.from_pretrained(
13
+ model_id,
14
  torch_dtype=torch.float32,
15
+ use_safetensors=True
 
16
  )
17
 
18
+ # تفعيل خاصية نقل الأجزاء غير المستخدمة من الذاكرة
19
  pipe.enable_model_cpu_offload()
20
 
21
  def generate_video(prompt):
22
  if not prompt:
23
  return None
24
 
25
+ # Sana يتميز بقدرته على إنتاج جودة عالية بـ 4-8 خطوات فقط!
26
+ output = pipe(
27
  prompt=prompt,
28
+ height=320,
 
 
29
  width=320,
30
+ num_frames=8,
31
+ num_inference_steps=4, # السرعة هنا!
32
+ guidance_scale=5.0,
33
  ).frames[0]
34
 
35
+ # حفظ النتيجة
36
  temp_file = tempfile.NamedTemporaryFile(suffix='.mp4', delete=False)
37
+ export_to_video(output, temp_file.name, fps=8)
38
  return temp_file.name
39
 
40
+ # واجهة المستخدم
41
+ with gr.Blocks(theme=gr.themes.Soft()) as demo:
42
+ gr.Markdown("# 🚀 Sana Video: Ultra-Light CPU Gen")
43
+ gr.Markdown("هذا النموذج يعمل بتقنية Linear Attention لضمان السرعة على المساحات المجانية.")
44
+
45
  with gr.Row():
46
+ with gr.Column():
47
+ prompt = gr.Textbox(label="وصف الفيديو", placeholder="A cinematic shot of a golden retriever puppy playing in the snow...")
48
+ btn = gr.Button("توليد الفيديو (دقيقتين تقريباً)", variant="primary")
49
+ with gr.Column():
50
+ result = gr.Video(label="النتيجة")
51
 
52
+ btn.click(fn=generate_video, inputs=prompt, outputs=result)
53
 
54
  demo.launch()