Buckets:
| # DiffusionPipeline | |
| تتكون نماذج الانتشار من عدة مكونات مثل UNets أو محولات الانتشار (DiTs)، ومشفرات النص، ومشفرات الترميز التباينية (VAEs)، ومجدولات. يلتف [DiffusionPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline) حول جميع هذه المكونات في واجهة برمجة تطبيقات واحدة سهلة الاستخدام دون التخلي عن المرونة في تعديل مكوناتها. | |
| ستوضح لك هذه الدليل كيفية تحميل [DiffusionPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline). | |
| ## تحميل خط أنابيب | |
| [DiffusionPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline) هو فئة خط أنابيب أساسية تختار تلقائيًا وتعيد نسخة من فئة فرعية لخط أنابيب النموذج، مثل [QwenImagePipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/qwenimage#diffusers.QwenImagePipeline)، من خلال فحص ملف `model_index.json` بحثًا عن اسم الفئة. | |
| مرّر معرّف النموذج إلى [from_pretrained()](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained) لتحميل خط أنابيب. | |
| ```py | |
| import torch | |
| from diffusers import DiffusionPipeline | |
| pipeline = DiffusionPipeline.from_pretrained( | |
| "Qwen/Qwen-Image", dtype=torch.bfloat16, device_map="cuda" # or "mps", "xpu", "cpu" | |
| ) | |
| ``` | |
| يتميز كل نموذج بفئة فرعية محددة من خط الأنابيب ترث من [DiffusionPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline). عادةً ما تتمتع الفئة الفرعية بتركيز ضيق وتكون مخصصة لمهمة معينة. راجع الجدول أدناه لمثال. | |
| | فئة فرعية من pipeline | المهمة | | |
| |---|---| | |
| | [QwenImagePipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/qwenimage#diffusers.QwenImagePipeline) | النص إلى صورة | | |
| | [QwenImageImg2ImgPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/qwenimage#diffusers.QwenImageImg2ImgPipeline) | صورة إلى صورة | | |
| | [QwenImageInpaintPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/qwenimage#diffusers.QwenImageInpaintPipeline) | inpaint | | |
| يمكنك استخدام الفئة الفرعية مباشرةً عن طريق تمرير معرّف النموذج إلى [from_pretrained()](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained). | |
| ```py | |
| import torch | |
| from diffusers import QwenImagePipeline | |
| pipeline = QwenImagePipeline.from_pretrained( | |
| "Qwen/Qwen-Image", dtype=torch.bfloat16, device_map="cuda" # or "mps", "xpu", "cpu" | |
| ) | |
| ``` | |
| > [!TIP] | |
| > راجع وثائق [تنسيق الملف الواحد](./other-formats#single-file-format) لمعرفة كيفية تحميل نماذج الملف الواحد. | |
| ### خطوط الأنابيب المحلية | |
| يمكن أيضًا تشغيل خطوط الأنابيب محليًا. استخدم [snapshot_download](https://huggingface.co/docs/huggingface_hub/v2.4.0/en/package_reference/file_download#huggingface_hub.snapshot_download) لتنزيل مستودع نموذج. | |
| ```py | |
| from huggingface_hub import snapshot_download | |
| local_dir = snapshot_download(repo_id="Qwen/Qwen-Image") | |
| ``` | |
| مرّر ذلك المسار إلى [from_pretrained()](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained) لتحميله. | |
| ```py | |
| import torch | |
| from diffusers import QwenImagePipeline | |
| pipeline = QwenImagePipeline.from_pretrained( | |
| local_dir, dtype=torch.bfloat16, device_map="cuda" # or "mps", "xpu", "cpu" | |
| ) | |
| ``` | |
| لن يقوم أسلوب [from_pretrained()](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained) بتنزيل الملفات من Hub عند اكتشافه لمسار محلي. لكن هذا يعني أيضاً أنه لن يقوم بتنزيل أي تحديثات تمت على النموذج أو تخزينها مؤقتاً. | |
| ## أنواع بيانات خط الأنابيب | |
| استخدم معامل `dtype` في [from_pretrained()](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained) لتحميل نموذج بنوع بيانات محدد. يتيح لك ذلك تحميل نماذج مختلفة بدقة مختلفة. على سبيل المثال، يقلل تحميل نموذج transformer كبير بدقة نصفية من الذاكرة المطلوبة. | |
| مرّر نوع البيانات لكل نموذج كقاموس إلى `dtype`. استخدم المفتاح `default` لضبط نوع البيانات الافتراضي. إذا لم يكن النموذج موجودًا في القاموس ولم يُقدَّم `default`، يتم تحميله بدقة كاملة (`torch.float32`). | |
| ```py | |
| import torch | |
| from diffusers import QwenImagePipeline | |
| pipeline = QwenImagePipeline.from_pretrained( | |
| "Qwen/Qwen-Image", | |
| dtype={"transformer": torch.bfloat16, "default": torch.float16}, | |
| ) | |
| print(pipeline.transformer.dtype, pipeline.vae.dtype) | |
| ``` | |
| لا تحتاج إلى استخدام قاموس إذا كنت تقوم بتحميل جميع النماذج في نفس نوع البيانات. | |
| ```py | |
| import torch | |
| from diffusers import QwenImagePipeline | |
| pipeline = QwenImagePipeline.from_pretrained( | |
| "Qwen/Qwen-Image", dtype=torch.bfloat16 | |
| ) | |
| print(pipeline.transformer.dtype, pipeline.vae.dtype) | |
| ``` | |
| ## توزيع الأجهزة | |
| يضع الحجة `device_map` خط الأنابيب على الأجهزة. في وقت التشغيل، يقبل Diffusers القيم `"balanced"` و`"cpu"` وسلسلة المُسرِّع الخاصة بالجهاز الذي تعمل عليه (عادةً `"cuda"` أو `"mps"` أو `"xpu"`). | |
| | معامل | الوصف | | |
| |---|---| | |
| | سلسلة accelerator | يضع خط الأنابيب على ذلك الجهاز. مرّر المُسرِّع الذي يدعمه جهازك، مثل `"cuda"` أو `"mps"` أو `"xpu"`. | | |
| | `"balanced"` | يوزّع مكوّنات خطّ الأنابيب على وحدات معالجة الرسوميات المرئية. استخدمه مع `max_memory` عندما تحتاج إلى حدود لكل جهاز. | | |
| | `"cpu"` | يضع خط الأنابيب على وحدة المعالجة المركزية (CPU). | | |
| استخدم الحجة `max_memory` في [from_pretrained()](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained) لتخصيص الحد الأقصى لكمية الذاكرة المستخدمة على كل جهاز. افتراضيًا، يستخدم Diffusers الحد الأقصى المتاح. | |
| ```py | |
| import torch | |
| from diffusers import DiffusionPipeline | |
| max_memory = {0: "16GB", 1: "16GB"} | |
| pipeline = DiffusionPipeline.from_pretrained( | |
| "Qwen/Qwen-Image", | |
| dtype=torch.bfloat16, | |
| device_map="balanced", | |
| max_memory=max_memory, | |
| ) | |
| ``` | |
| يسمح لك السمة `hf_device_map` بالوصول إلى `device_map` وعرضه. | |
| ```py | |
| print(pipeline.hf_device_map) | |
| # {'transformer': 1, 'vae': 1, 'text_encoder': 0} | |
| ``` | |
| أعد تعيين `device_map` لخط المعالجة باستخدام طريقة [reset_device_map()](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline.reset_device_map). هذا ضروري إذا كنت ترغب في استخدام طرق مثل `.to()` و[enable_sequential_cpu_offload()](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline.enable_sequential_cpu_offload) و[enable_model_cpu_offload()](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline.enable_model_cpu_offload). | |
| ```py | |
| pipeline.reset_device_map() | |
| ``` | |
| ## التحميل المتوازي | |
| غالبًا ما تُقسَّم النماذج الكبيرة إلى ملفات أصغر [مجزأة](../optimization/memory#sharded-checkpoints) لتسهيل تحميلها. يدعم Diffusers تحميل المجزئات بالتوازي لتسريع عملية التحميل. | |
| اضبط `HF_ENABLE_PARALLEL_LOADING` على `"YES"` لتفعيل التحميل المتوازي للشظايا. | |
| يجب تعيين الحجة `device_map` إلى `"cuda"` لإسناد مساحة كبيرة من الذاكرة مسبقًا بناءً على حجم النموذج. يقلل هذا بشكل كبير من وقت تحميل النموذج لأن تسخين مُسند الذاكرة يتجنب الآن العديد من الاستدعاءات الأصغر حجمًا للمُسند لاحقًا. | |
| ```py | |
| import os | |
| import torch | |
| from diffusers import DiffusionPipeline | |
| os.environ["HF_ENABLE_PARALLEL_LOADING"] = "YES" | |
| pipeline = DiffusionPipeline.from_pretrained( | |
| "Wan-AI/Wan2.2-I2V-A14B-Diffusers", dtype=torch.bfloat16, device_map="cuda" # or "mps", "xpu", "cpu" | |
| ) | |
| ``` | |
| ## استبدال النماذج في خط الأنابيب | |
| [DiffusionPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline) مرن ويتيح تحميل نماذج أو مجدولات أخرى. يمكنك تجربة مجدولات مختلفة لتحسين سرعة التوليد أو جودته، كما يمكنك استبدال النماذج بنماذج أكثر كفاءة. | |
| يستخدم المثال أدناه إصدارًا أكثر استقرارًا من VAE. | |
| ```py | |
| import torch | |
| from diffusers import DiffusionPipeline, AutoModel | |
| vae = AutoModel.from_pretrained( | |
| "madebyollin/sdxl-vae-fp16-fix", dtype=torch.float16 | |
| ) | |
| pipeline = DiffusionPipeline.from_pretrained( | |
| "stabilityai/stable-diffusion-xl-base-1.0", | |
| vae=vae, | |
| dtype=torch.float16, | |
| device_map="cuda" # or "mps", "xpu", "cpu" | |
| ) | |
| ``` | |
| ## إعادة استخدام النماذج في خطوط أنابيب متعددة | |
| عند العمل مع خطوط أنابيب متعددة تستخدم نفس النموذج، تتيح لك الطريقة [from_pipe()](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline.from_pipe) إعادة استخدام النموذج بدلاً من إعادة تحميله في كل مرة. وهذا يتيح لك استخدام خطوط أنابيب متعددة دون زيادة استهلاك الذاكرة. | |
| يُحدَّد استهلاك الذاكرة بواسطة خط الأنابيب الذي يتطلب أعلى قدر من الذاكرة بغض النظر عن عدد خطوط الأنابيب. | |
| يُحمّل المثال أدناه خط أنابيب ثم يُحمّل خط أنابيب ثانٍ باستخدام [from_pipe()](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline.from_pipe) لاستخدام [إرشاد الانتباه المُعطَّل (PAG)](../api/pipelines/pag) لتحسين جودة التوليد. | |
| > [!WARNING] | |
| > استخدم [AutoPipelineForText2Image](/docs/diffusers/v0.43.0/ar/api/pipelines/auto_pipeline#diffusers.AutoPipelineForText2Image) لأن [DiffusionPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline) لا يدعم PAG. راجع وثائق [AutoPipeline](../tutorials/autopipeline) لمعرفة المزيد. | |
| ```py | |
| import torch | |
| from diffusers import AutoPipelineForText2Image | |
| pipeline_sdxl = AutoPipelineForText2Image.from_pretrained( | |
| "stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, 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 | |
| """ | |
| image = pipeline_sdxl(prompt).images[0] | |
| print(f"Max memory reserved: {torch.cuda.max_memory_allocated() / 1024**3:.2f} GB") | |
| # Max memory reserved: 10.47 GB | |
| ``` | |
| اضبط `enable_pag=True` في خط الأنابيب الثاني لتفعيل PAG. يستخدم خط الأنابيب الثاني نفس كمية الذاكرة لأنه يتشارك أوزان النموذج مع خط الأنابيب الأول. | |
| ```py | |
| pipeline = AutoPipelineForText2Image.from_pipe( | |
| pipeline_sdxl, enable_pag=True | |
| ) | |
| 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 | |
| """ | |
| image = pipeline(prompt).images[0] | |
| print(f"Max memory reserved: {torch.cuda.max_memory_allocated() / 1024**3:.2f} GB") | |
| # Max memory reserved: 10.47 GB | |
| ``` | |
| > [!WARNING] | |
| > تشارك خطوط الأنابيب التي أنشأها [from_pipe()](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline.from_pipe) نفس النماذج و*الحالة*. يعدّل تغيير حالة نموذج في خط أنابيب واحد جميع خطوط الأنابيب الأخرى التي تشارك نفس النموذج. | |
| Some methods may not work correctly on pipelines created with [from_pipe()](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline.from_pipe). For example, [enable_model_cpu_offload()](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline.enable_model_cpu_offload) relies on a unique model execution order, which may differ in the new pipeline. To ensure proper functionality, reapply these methods on the new pipeline. | |
| ## الخطوات التالية | |
| بعد تحميل خط الأنابيب، تقوم عادةً بضبط جدول إزالة الضوضاء، أو تبديل صيغ الأوزان، أو إرفاق المُكيِّفات. | |
| - يتناول [المجدولون](./schedulers) تبديل خوارزمية إزالة الضوضاء وإعدادها. | |
| - يتناول [صيغ النماذج](./other-formats) صيغة GGUF ونقاط التفتيش أحادية الملف وتخطيطات الأوزان الأخرى. | |
| - يتناول [تقليل استهلاك الذاكرة](../optimization/memory) عمليات الإزاحة وأدوات الذاكرة الأخرى. | |
| - يتناول [LoRA](../tutorials/using_peft_for_inference) تحميل المُكيّفات على خطّ الأنابيب. | |
| - يتناول [نقاط التفتيش القديمة](./legacy_checkpoints#safety-checker) أداة فحص الأمان الخاصة بنقاط تفتيش Stable Diffusion الأقدم. | |
Xet Storage Details
- Size:
- 14.4 kB
- Xet hash:
- b8525865b1568669f63967454f61f921686f8dffcde8c498302d221d185b1e50
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.