Buckets:
FlowMapEulerDiscreteScheduler
FlowMapEulerDiscreteScheduler هو مُعيّن بأسلوب أويلر مصمَّم لنماذج الانتشار المُقطّرة عبر خرائط التدفق. تتعلّم نماذج خريطة التدفق انتقالات بفواصل زمنية اختيارية $\mathbf{z}_t \to \mathbf{z}_r$ بدلاً من إسقاط $\mathbf{z}_t \to \mathbf{z}_0$ الثابت في نماذج الاتساق. كلا طرفَي الخطوة يُحدَّدان من قِبل المُستدعي، وهو ما يُتيح العيّن بعدد خطوات أيّ: يمكن تقييم نقطة تفتيش مُقطّرة واحدة عند 1 أو 2 أو 4 أو 8 أو 16... NFE دون إعادة تدريب.
تم تقديم المجدول في AnyFlow: Any-Step Video Diffusion Model with On-Policy Flow Map Distillation ويُشحن مع تكاملات AnyFlowPipeline وAnyFlowFARPipeline، لكنه ليس خاصًا بـ AnyFlow — إذ يمكن لأي نقطة تحقق مُقطّرة عبر خريطة التدفق استخدامه.
FlowMapEulerDiscreteScheduler[[diffusers.FlowMapEulerDiscreteScheduler]]
diffusers.FlowMapEulerDiscreteScheduler[[diffusers.FlowMapEulerDiscreteScheduler]]
diffusers.FlowMapEulerDiscreteScheduler(num_train_timesteps: int = 1000, shift: float = 1.0)
المعاملات:
num_train_timesteps (int، القيمة الافتراضية 1000) : عدد خطوات الانتشار المستخدمة لتدريب نموذج خريطة التدفق الأساسي.
shift (float، القيمة الافتراضية 1.0) : إزاحة توقيت الضرب المطبقة على جدول الاستدلال. shift=1.0 هو الهوية؛ والقيم الأكبر من 1.0 تدفع الجدول نحو إزالة المزيد من الضوضاء في الخطوات اللاحقة (على سبيل المثال، shift=5 يتطابق مع القيمة الافتراضية في Wan2.1).
مُعيّن بأسلوب أويلر لنماذج الانتشار المُقطّرة عبر خرائط التدفق.
تتعلم نماذج خريطة التدفق انتقالات بفواصل زمنية اختيارية بدلاً من إسقاط الثابت في نماذج الاتساق، لذا يمكن تقييم نقطة تحقق واحدة مُقطّرة عند 1، 2، 4، 8، ... NFE دون إعادة تدريب. تتقدم طريقة step العينة من timestep إلى r_timestep على طول السرعة المتوقعة.
تم تقديمه في AnyFlow: Any-Step Video Diffusion Model with On-Policy Flow Map Distillation بواسطة Yuchao Gu وGuian Fang وآخرون.
يرث هذا المجدول من [SchedulerMixin] و [ConfigMixin]. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع المجدولات (التحميل، الحفظ، إلخ).
apply_shift[[diffusers.FlowMapEulerDiscreteScheduler.apply_shift]]
apply_shift(sigmas: Tensor)
تطبيق تحويل الإزاحة المُهيّأ على متجه سيجما.
index_for_timestep[[diffusers.FlowMapEulerDiscreteScheduler.index_for_timestep]]
index_for_timestep(timestep: typing.Union[float, torch.FloatTensor])
أعد فهرس timestep على الجدول الزمني الحالي، أو None إذا كان خارج الجدول.
يتم البحث في self.timesteps مع تسامح بسيط في الفاصلة العائمة. يُستخدم لاستعادة قيمة sigma المقابلة دون افتراض العلاقة الخطية timesteps = sigmas * num_train_timesteps — وبذلك تُحلّ الجداول الزمنية المخصصة (مثل الإزاحة غير الخطية، أو الخطوات الزمنية المُعيّنة يدويًا) بشكل صحيح.
scale_model_input[[diffusers.FlowMapEulerDiscreteScheduler.scale_model_input]]
scale_model_input(sample: Tensor, *args, **kwargs)
تصعيد هوية بلا تأثير. يُوفَّر من أجل توافق واجهة البرمجة مع مجدولات Diffusers الأخرى.
scale_noise[[diffusers.FlowMapEulerDiscreteScheduler.scale_noise]]
scale_noise(sample: FloatTensor, timestep: typing.Union[float, torch.FloatTensor], noise: typing.Optional[torch.FloatTensor] = None)
استيفاء خطي لـsample نحو noise وفقًا لـtimestep المُعايَر.
set_begin_index[[diffusers.FlowMapEulerDiscreteScheduler.set_begin_index]]
set_begin_index(begin_index: int = 0)
حدد فهرس البداية للمجدول. تستدعي خطوط الأنابيب التي تبدأ في منتصف الجدول (مثل image-to-image) هذه الدالة بين set_timesteps وأول step لتثبيت مسار التنفيذ.
set_timesteps[[diffusers.FlowMapEulerDiscreteScheduler.set_timesteps]]
set_timesteps(num_inference_steps: typing.Optional[int] = None, device: typing.Union[str, torch.device] = None, sigmas: typing.Optional[typing.List[float]] = None, timesteps: typing.Optional[typing.List[float]] = None)
المعاملات:
num_inference_steps (int، اختياري) : عدد خطوات الاستدلال. إذا كانت None، يجب تمرير sigmas أو timesteps.
device (str أو torch.device، اختياري) : الجهاز المستهدف لـ self.sigmas / self.timesteps.
sigmas (*List[float]*، اختياري) : جدول سيجما مخصص بطول num_inference_steps. يُضاف سيجما النهائي 0 تلقائيًا. يُطبَّق shift المُعدّ فوق ذلك.
timesteps (*List[float]*، اختياري) : جدول خطوات زمنية مخصص بطول num_inference_steps، بنفس وحدات self.timesteps (أي مُقيَّم بواسطة num_train_timesteps). يتم تحويله إلى قيم sigmas داخليًا. إذا تم تمرير كل من sigmas وtimesteps، فيجب أن يتطابق طولهما.
أنشئ جدول خطوات الاستدلال.
يتتبع داخليًا self.sigmas بطول num_inference_steps + 1 (الإزاحة المُعدّة المطبّقة على linspace من 1.0 إلى 0.0 افتراضيًا)؛ يعرض self.timesteps أول num_inference_steps قيم sigma مُقيّسة بواسطة num_train_timesteps — أي خطوة زمنية واحدة لكل خطوة استنتاج، بما يتوافق مع FlowMatchEulerDiscreteScheduler. القيمة النهائية لـ sigma (0) هي نقطة النهاية الضمنية لـ r للخطوة الأخيرة وتُضاف تلقائيًا عند تقديم sigmas / timesteps من قِبل المستخدم.
خطوة[[diffusers.FlowMapEulerDiscreteScheduler.step]]
step(model_output: FloatTensor, timestep: typing.Union[float, torch.FloatTensor], sample: FloatTensor, r_timestep: typing.Union[float, torch.FloatTensor, NoneType] = None, return_dict: bool = True)
المعاملات:
model_output (torch.Tensor) : المخرجات المباشرة من نموذج خريطة التدفق (متوسط السرعة المتوقع).
timestep (float أو torch.Tensor) : خطوة الزمن المصدر t بنفس وحدات self.timesteps.
sample (torch.Tensor) : العينة الحالية .
r_timestep (float أو torch.Tensor، اختياري) : خطوة الزمن المستهدفة r. الافتراضي هو الخطوة التالية في الجدول الزمني عند None؛ مرّر قيمة صريحة لأي خطوة أخذ عينات. r_timestep == timestep لا يؤدي إلى أي تغيير.
return_dict (bool، القيمة الافتراضية True) : ما إذا كان يجب إرجاع [FlowMapEulerDiscreteSchedulerOutput] (وهو الافتراضي) أو مجرد tuple.
يعيد: [FlowMapEulerDiscreteSchedulerOutput] أو tuple
عندما يكون return_dict=True، تُرجع كائنًا من نوع [FlowMapEulerDiscreteSchedulerOutput] يكون حقله prev_sample هو . وإلا تُرجع مجموعة من عنصر واحد (prev_sample,).
تقدّم sample من timestep إلى r_timestep باستخدام السرعة المتوقعة من النموذج.
على عكس مُجدول أويلر القياسي، يمكن أن يوفر المُستدعي كلا طرفَي الفترة، مما يجعل أخذ العينات بأي عدد من الخطوات ممكنًا: فمكالمة نموذج واحدة يمكنها الانتقال من t إلى أي هدف r مُختار (بما في ذلك r=0 لتوليد دفعة واحدة). عند إغفال r_timestep، يكون الافتراضي هو الخطوة الزمنية التالية في الجدول (مطابقًا لدلالات FlowMatchEulerDiscreteScheduler).
داخليًا، يتم استرجاع قيم سيجما للمصدر والهدف عن طريق فهرسة self.sigmas عبر index_for_timestep بدلاً من قسمة خطوات الزمن المدخلة على num_train_timesteps، وبالتالي تبقى أي جدولة تكون العلاقة بين خطوة الزمن وقيمة سيجما فيها غير خطية (مثل إزاحة مخصصة) صحيحة. أما بالنسبة لقيمة r_timestep خارج الجدولة، فإن المجدول يلجأ إلى r_timestep / num_train_timesteps لضمان استمرار دعم أخذ العينات بأي خطوة خارج الجدولة.
Xet Storage Details
- Size:
- 11 kB
- Xet hash:
- 8a47e3d6e21dbfb6d79044cd3649b43e45406939eb50c90d77302bfae2d1a7c5
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.