Buckets:
| # خطوط أنابيب ومكوّنات المجتمع | |
| خطوط أنابيب المجتمع هي فئات [DiffusionPipeline](/docs/diffusers/main/ar/api/pipelines/overview#diffusers.DiffusionPipeline) تختلف عن التنفيذ الأصلي للورقة البحثية. فهي توفر وظائف إضافية أو توسّع تنفيذ خط الأنابيب الأصلي. | |
| > [!TIP] | |
| > اطّلع على خطوط الأنابيب المجتمعية في [diffusers/examples/community](https://github.com/huggingface/diffusers/tree/main/examples/community) مع أمثلة على الاستدلال والتدريب حول كيفية استخدامها. | |
| تُخزَّن خطوط أنابيب المجتمع إما على Hub أو في مستودع GitHub الخاص بـ Diffusers. خطوط أنابيب Hub قابلة للتخصيص بالكامل (المجدول، النماذج، كود خط الأنابيب، إلخ) بينما خطوط أنابيب GitHub محدودة بكود خط الأنابيب المخصص فقط. قارن بين نوعي خطي الأنابيب في الجدول أدناه. | |
| | | GitHub | المركز | | |
| |---|---|---| | |
| | الاستخدام | `custom_pipeline="<filename_without_.py>"` | معرّف مستودع Hub أو `trust_remote_code=True` عندما يشير `_class_name` إلى مخصص | | |
| | عملية المراجعة | افتح طلب سحب (Pull Request) على GitHub وخضع لعملية مراجعة من فريق Diffusers قبل الدمج. هذه الخيار أبطأ. | ارفع مباشرةً إلى مستودع في Hub دون مراجعة. هذه هي الخيار الأسرع. | | |
| | الظهور | مشمولة في مستودع Diffusers الرسمي وتوثيقه. | مُدرج في ملفك الشخصي على Hub ويعتمد على استخدامك الخاص والترويج لكسب الظهور. | | |
| ## تحميل خط أنابيب مجتمعي | |
| قم بتحميل أي نوع من خطوط أنابيب المجتمع عن طريق تمرير `custom_pipeline` إلى [from_pretrained()](/docs/diffusers/main/ar/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained). | |
| ```py | |
| import torch | |
| from diffusers import DiffusionPipeline | |
| pipeline = DiffusionPipeline.from_pretrained( | |
| "stabilityai/stable-diffusion-3-medium-diffusers", | |
| custom_pipeline="pipeline_stable_diffusion_3_instruct_pix2pix", | |
| dtype=torch.float16, | |
| device_map="cuda" # or "mps", "xpu", "cpu" | |
| ) | |
| ``` | |
| أضف الحجة `custom_revision` إلى [from_pretrained()](/docs/diffusers/main/ar/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained) لتحميل خط أنابيب المجتمع من إصدار محدد (على سبيل المثال، `v0.30.0` أو `main`). بشكل افتراضي، يتم تحميل خطوط أنابيب المجتمع من أحدث إصدار مستقر من Diffusers. | |
| ```py | |
| import torch | |
| from diffusers import DiffusionPipeline | |
| pipeline = DiffusionPipeline.from_pretrained( | |
| "stabilityai/stable-diffusion-3-medium-diffusers", | |
| custom_pipeline="pipeline_stable_diffusion_3_instruct_pix2pix", | |
| custom_revision="main", | |
| dtype=torch.float16, | |
| device_map="cuda" # or "mps", "xpu", "cpu" | |
| ) | |
| ``` | |
| > [!WARNING] | |
| > في حين يقوم [مستودع Hugging Face](https://huggingface.co/docs/hub/security-malware) بمسح الملفات، يجب عليك أيضاً فحص كود خط أنابيب المستودع والتأكد من أنه آمن. | |
| توجد عدة طرق لتحميل خط أنابيب المجتمع. | |
| - مرّر مسارًا إلى `custom_pipeline` لتحميل خط أنابيب مجتمعي محلي. يجب أن يحتوي المجلد على ملف `pipeline.py` يحتوي على فئة خط الأنابيب. | |
| ```py | |
| import torch | |
| from diffusers import DiffusionPipeline | |
| pipeline = DiffusionPipeline.from_pretrained( | |
| "stabilityai/stable-diffusion-3-medium-diffusers", | |
| custom_pipeline="path/to/pipeline_directory", | |
| trust_remote_code=True, | |
| dtype=torch.float16, | |
| device_map="cuda" # or "mps", "xpu", "cpu" | |
| ) | |
| ``` | |
| - يُؤيَّد الحُجّة `custom_pipeline` أيضًا بواسطة [from_pipe()](/docs/diffusers/main/ar/api/pipelines/overview#diffusers.DiffusionPipeline.from_pipe)، وهو مفيد لـ [إعادة استخدام خطوط الأنابيب](./loading#reusing-models-in-multiple-pipelines) دون استخدام ذاكرة إضافية. فهو يحدّ من استخدام الذاكرة إلى أكبر خط أنابيب محمّل فقط. | |
| ```py | |
| import torch | |
| from diffusers import DiffusionPipeline | |
| pipeline_sd = DiffusionPipeline.from_pretrained( | |
| "emilianJR/CyberRealistic_V3", dtype=torch.float16, device_map="cuda" # or "mps", "xpu", "cpu" | |
| ) | |
| pipeline_lpw = DiffusionPipeline.from_pipe( | |
| pipeline_sd, custom_pipeline="lpw_stable_diffusion" | |
| ) | |
| ``` | |
| يُعدّ أسلوب [from_pipe()](/docs/diffusers/main/ar/api/pipelines/overview#diffusers.DiffusionPipeline.from_pipe) مفيداً بشكل خاص لتحميل خطوط أنابيب المجتمع، لأن العديد منها لا يحتوي على أوزان مُسبقة التدريب. تضيف خطوط أنابيب المجتمع عادةً ميزة فوق خط أنابيب قائم. | |
| ## مكوّنات المجتمع | |
| تتيح لك مكوّنات المجتمع بناء خطوط أنابيب باستخدام محوّلات وUNets وVAEs ومجدولات مخصّصة لا تدعمها مكتبة Diffusers. وتحتاج هذه المكوّنات إلى وحدات Python خاصة بها. | |
| تُظهر هذه القسم كيفية استخدام المستخدمين لمكونات المجتمع لبناء خط أنابيب مجتمع باستخدام [showlab/show-1-base](https://huggingface.co/showlab/show-1-base) كمثال. | |
| 1. حمّل المكونات المطلوبة، وهي المجدول ومعالج الصور. يتم استيراد مشفر النص بشكل عام من [Transformers](https://huggingface.co/docs/transformers/index). | |
| ```python | |
| from transformers import T5Tokenizer, T5EncoderModel, CLIPImageProcessor | |
| from diffusers import DPMSolverMultistepScheduler | |
| pipeline_id = "showlab/show-1-base" | |
| tokenizer = T5Tokenizer.from_pretrained(pipeline_id, subfolder="tokenizer") | |
| text_encoder = T5EncoderModel.from_pretrained(pipeline_id, subfolder="text_encoder") | |
| scheduler = DPMSolverMultistepScheduler.from_pretrained(pipeline_id, subfolder="scheduler") | |
| feature_extractor = CLIPImageProcessor.from_pretrained(pipeline_id, subfolder="feature_extractor") | |
| ``` | |
| > [!WARNING] | |
| > في الخطوتين 2 و3، يجب أن تتطابق تنسيقات التنفيذ المخصص لـ [UNet](https://github.com/showlab/Show-1/blob/main/showone/models/unet_3d_condition.py) و [pipeline](https://huggingface.co/sayakpaul/show-1-base-with-code/blob/main/unet/showone_unet_3d_condition.py) مع التنسيقات المعروضة في ملفاتهما حتى يعمل هذا المثال. | |
| 2. حمّل [UNet مخصصًا](https://github.com/showlab/Show-1/blob/main/showone/models/unet_3d_condition.py) مُنفَّذًا مسبقًا في [showone_unet_3d_condition.py](https://huggingface.co/sayakpaul/show-1-base-with-code/blob/main/unet/showone_unet_3d_condition.py). تم تغيير اسم فئة [UNet3DConditionModel](/docs/diffusers/main/ar/api/models/unet3d-cond#diffusers.UNet3DConditionModel) إلى التنفيذ المخصص `ShowOneUNet3DConditionModel`، لأن [UNet3DConditionModel](/docs/diffusers/main/ar/api/models/unet3d-cond#diffusers.UNet3DConditionModel) موجودة مسبقًا في Diffusers. يجب وضع جميع المكونات المطلوبة لفئة `ShowOneUNet3DConditionModel` في `showone_unet_3d_condition.py`. | |
| ```python | |
| from showone_unet_3d_condition import ShowOneUNet3DConditionModel | |
| unet = ShowOneUNet3DConditionModel.from_pretrained(pipeline_id, subfolder="unet") | |
| ``` | |
| 3. حمّل كود خط الأنابيب المخصص (المنفَّذ مسبقًا في [pipeline_t2v_base_pixel.py](https://huggingface.co/sayakpaul/show-1-base-with-code/blob/main/pipeline_t2v_base_pixel.py)). يحتوي هذا النص البرمجي على فئة `TextToVideoIFPipeline` مخصصة لتوليد مقاطع الفيديو من النص. تمامًا كما هو الحال مع UNet المخصص، يجب وضع أي كود مطلوب لـ `TextToVideoIFPipeline` في `pipeline_t2v_base_pixel.py`. | |
| قم بتهيئة `TextToVideoIFPipeline` باستخدام `ShowOneUNet3DConditionModel`. | |
| ```python | |
| import torch | |
| from pipeline_t2v_base_pixel import TextToVideoIFPipeline | |
| pipeline = TextToVideoIFPipeline( | |
| unet=unet, | |
| text_encoder=text_encoder, | |
| tokenizer=tokenizer, | |
| scheduler=scheduler, | |
| feature_extractor=feature_extractor, | |
| ) | |
| pipeline = pipeline.to("cuda") # or "mps", "xpu", "cpu" | |
| ``` | |
| 4. ادفع خط الأنابيب إلى Hub لمشاركته مع المجتمع. | |
| ```python | |
| pipeline.push_to_hub("custom-t2v-pipeline") | |
| ``` | |
| بعد دفع خط الأنابيب بنجاح، أجرِ التغييرات التالية. | |
| - غيّر خاصية `_class_name` في [model_index.json](https://huggingface.co/sayakpaul/show-1-base-with-code/blob/main/model_index.json#L2) إلى `["pipeline_t2v_base_pixel", "TextToVideoIFPipeline"]`. | |
| - ارفع `showone_unet_3d_condition.py` إلى مجلد [unet](https://huggingface.co/sayakpaul/show-1-base-with-code/blob/main/unet/showone_unet_3d_condition.py) الفرعي. | |
| - ارفع `pipeline_t2v_base_pixel.py` إلى مستودع خط الأنابيب [repository](https://huggingface.co/sayakpaul/show-1-base-with-code/tree/main). | |
| لتشغيل الاستدلال، أضف الحجة `trust_remote_code` أثناء تهيئة خط الأنابيب للتعامل مع كل "السحر" خلف الكواليس. | |
| ```python | |
| import torch | |
| from diffusers import DiffusionPipeline | |
| pipeline = DiffusionPipeline.from_pretrained( | |
| "<change-username>/<change-id>", trust_remote_code=True, dtype=torch.float16 | |
| ) | |
| ``` | |
| > [!WARNING] | |
| > كإجراء احترازي إضافي عند استخدام `trust_remote_code=True`، قم بتمرير تجزئة الالتزام (commit hash) إلى معامل `revision` في [from_pretrained()](/docs/diffusers/main/ar/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained) للتأكد من أن الكود لم يتم تحديثه بكود خبيث جديد (ما لم تكن تثق تماماً بأصحاب النموذج). | |
| ## الخطوات التالية | |
| - اطّلع على المشكلة [#841](https://github.com/huggingface/diffusers/issues/841) لمزيد من السياق حول سبب إضافة خطوط أنابيب المجتمع لمساعدة الجميع على مشاركة أعمالهم بسهولة دون أن يتباطأوا. | |
| - اطّلع على مستودع [stabilityai/japanese-stable-diffusion-xl](https://huggingface.co/stabilityai/japanese-stable-diffusion-xl/) كمثال إضافي على خط أنابيب مجتمعي يستخدم أيضًا ميزة `trust_remote_code`. | |
Xet Storage Details
- Size:
- 11.1 kB
- Xet hash:
- f5cdf763548c4757f47938ec44cec9997480f8c1cc9217af8d1d1f24699fc528
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.