Buckets:

hf-doc-build/doc / diffusers /v0.43.0 /ar /stable_diffusion.md
mishig's picture
|
download
raw
7.2 kB
# الأداء الأساسي
عملية الانتشار هي عملية عشوائية تتطلب جهدًا حاسوبيًا كبيرًا. قد تحتاج إلى تشغيل [DiffusionPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline) عدة مرات قبل الحصول على المخرجات المطلوبة. ولهذا السبب، من المهم الموازنة بعناية بين سرعة التوليد واستخدام الذاكرة من أجل التسريع في عملية التكرار،
توصي هذه الدليل ببعض النصائح الأساسية للأداء عند استخدام [DiffusionPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline). راجع وثائق قسم تحسين الاستدلال مثل [Accelerate inference](./optimization/fp16) أو [Reduce memory usage](./optimization/memory) للحصول على أدلة أداء أكثر تفصيلاً.
## استهلاك الذاكرة
إن تقليل كمية الذاكرة المستخدمة يسرّع بشكل غير مباشر عملية التوليد ويمكن أن يساعد في ملاءمة النموذج على الجهاز.
تنقل طريقة [enable_model_cpu_offload()](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline.enable_model_cpu_offload) النموذج إلى وحدة المعالجة المركزية (CPU) عندما لا يكون قيد الاستخدام، وذلك لتوفير ذاكرة وحدة معالجة الرسوميات (GPU).
```py
import torch
from diffusers import DiffusionPipeline
pipeline = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
dtype=torch.bfloat16,
device_map="cuda" # or "mps", "xpu", "cpu"
)
pipeline.enable_model_cpu_offload()
prompt = """
cinematic film still of a cat sipping a margarita in a pool in Palm Springs, California
highly detailed, high budget hollywood movie, cinemascope, moody, epic, gorgeous, film grain
"""
pipeline(prompt).images[0]
print(f"Max memory reserved: {torch.cuda.max_memory_allocated() / 1024**3:.2f} GB")
```
## سرعة الاستدلال
تُعد عملية إزالة الضوضاء هي الأكثر استهلاكًا للموارد الحسابية أثناء الانتشار. تُسرّع الأساليب التي تُحسّن هذه العملية سرعة الاستدلال. جرّب الأساليب التالية لتحقيق تسريع.
- أضف `device_map="cuda"` لوضع خط الأنابيب على وحدة معالجة رسومية. يؤدي وضع النموذج على مُسرِّع، مثل وحدة معالجة رسومية، إلى زيادة السرعة لأنه يُنفّذ العمليات الحسابية بالتوازي.
- اضبط `dtype=torch.bfloat16` لتنفيذ خط الأنابيب بدقة نصفية. يقلل خفض دقة نوع البيانات من الوقت اللازم لإجراء العمليات الحسابية، مما يزيد من السرعة.
```py
import torch
import time
from diffusers import DiffusionPipeline, DPMSolverMultistepScheduler
pipeline = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
dtype=torch.bfloat16,
device_map="cuda
)
```
- استخدم مجدولاً أسرع، مثل [DPMSolverMultistepScheduler](/docs/diffusers/v0.43.0/ar/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler)، والذي يتطلب ما يقرب من 20-25 خطوة فقط.
- اضبط `num_inference_steps` على قيمة أدنى. يقلل خفض عدد خطوات الاستدلال من إجمالي عدد العمليات الحسابية. ومع ذلك، قد يؤدي ذلك إلى انخفاض جودة التوليد.
```py
pipeline.scheduler = DPMSolverMultistepScheduler.from_config(pipeline.scheduler.config)
prompt = """
cinematic film still of a cat sipping a margarita in a pool in Palm Springs, California
highly detailed, high budget hollywood movie, cinemascope, moody, epic, gorgeous, film grain
"""
start_time = time.perf_counter()
image = pipeline(prompt).images[0]
end_time = time.perf_counter()
print(f"Image generation took {end_time - start_time:.3f} seconds")
```
## جودة التوليد
توفر العديد من نماذج الانتشار الحديثة صورًا عالية الجودة دون أي إعداد مسبق. ومع ذلك، يمكنك تحسين جودة التوليد من خلال تجربة ما يلي.
- جرّب استخدام موجه (Prompt) أكثر تفصيلاً ووصفاً. شمل تفاصيل مثل وسط الصورة (Medium)، والموضوع، والأسلوب، والجماليات. قد يساعد أيضاً استخدام موجه سلبي (Negative Prompt) بتوجيه النموذج بعيداً عن الميزات غير المرغوبة من خلال استخدام كلمات مثل "جودة منخفضة" أو "مغبش".
```py
import torch
from diffusers import DiffusionPipeline
pipeline = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
dtype=torch.bfloat16,
device_map="cuda" # or "mps", "xpu", "cpu"
)
prompt = """
cinematic film still of a cat sipping a margarita in a pool in Palm Springs, California
highly detailed, high budget hollywood movie, cinemascope, moody, epic, gorgeous, film grain
"""
negative_prompt = "low quality, blurry, ugly, poor details"
pipeline(prompt, negative_prompt=negative_prompt).images[0]
```
لمزيد من التفاصيل حول إنشاء أوامر تلميح أفضل، راجع وثيقة [تقنيات التلميح](./using-diffusers/weighted_prompts).
- جرّب مجدولاً مختلفاً، مثل [HeunDiscreteScheduler](/docs/diffusers/v0.43.0/ar/api/schedulers/heun#diffusers.HeunDiscreteScheduler) أو [LMSDiscreteScheduler](/docs/diffusers/v0.43.0/ar/api/schedulers/lms_discrete#diffusers.LMSDiscreteScheduler)، الذي يتنازل عن سرعة التوليد من أجل الجودة.
```py
import torch
from diffusers import DiffusionPipeline, HeunDiscreteScheduler
pipeline = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
dtype=torch.bfloat16,
device_map="cuda" # or "mps", "xpu", "cpu"
)
pipeline.scheduler = HeunDiscreteScheduler.from_config(pipeline.scheduler.config)
prompt = """
cinematic film still of a cat sipping a margarita in a pool in Palm Springs, California
highly detailed, high budget hollywood movie, cinemascope, moody, epic, gorgeous, film grain
"""
negative_prompt = "low quality, blurry, ugly, poor details"
pipeline(prompt, negative_prompt=negative_prompt).images[0]
```
## الخطوات التالية
توفر مكتبة Diffusers تحسينات متقدمة وقوية مثل [group-offloading](./optimization/memory#group-offloading) و[regional compilation](./optimization/fp16#regional-compilation). لمعرفة المزيد حول كيفية تعظيم الأداء، راجع قسم تحسين الاستدلال.

Xet Storage Details

Size:
7.2 kB
·
Xet hash:
79052437e132537c349bebf7f94ad5d75df3d561b48ed8a5d4c70dbeb211d1fe

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.