Transformers documentation

الإنشاء

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

الإنشاء

يحتوي كل إطار عمل على طريقة generate لتوليد النص، وهي مُنفَّذة في فئة GenerationMixin الخاصة به:

يمكنك تخصيص طريقة generate باستخدام كائن من فئة GenerationConfig. يُرجى الرجوع إلى هذه الفئة للحصول على القائمة الكاملة لمعايير التوليد، التي تتحكم في سلوك طريقة التوليد.

لتعلّم كيفية فحص إعدادات توليد النموذج، وما هي القيم الافتراضية، وكيفية تغيير المعلمات بشكل مؤقت، وكيفية إنشاء وإعدادات توليد مخصصة وحفظها، يُرجى الرجوع إلى دليل استراتيجيات توليد النص. يشرح الدليل أيضاً كيفية استخدام الميزات ذات الصلة، مثل بث الرموز.

GenerationConfig

فئة transformers.GenerationConfig

< >

( **kwargs )

المعاملات التي تتحكم في طول المخرجات

  • max_length (int، اختياري) — يُوصى باستخدام max_new_tokens للتحكم في عدد الرموز التي يولّدها النموذج. أما max_length فقد أُبقيت من أجل التوافق مع الإصدارات السابقة.
  • max_new_tokens (int, اختياري) — الحد الأقصى لعدد الرموز التي سيتم توليدها، مع تجاهل عدد الرموز الموجودة في الاستعلام.
  • min_length (int، اختياري) — الحد الأدنى لطول التسلسل الذي سيتم توليده. يتوافق مع طول موجه الإدخال + min_new_tokens. يتم تجاوز تأثيره بواسطة min_new_tokens إذا تم ضبطه أيضاً.
  • min_new_tokens (int، اختياري) — الحد الأدنى لعدد الرموز التي يجب توليدها، مع تجاهل عدد الرموز الموجودة في الاستعلام.
  • early_stopping (bool أو str، اختياري) — يتحكم في شرط التوقف للطرق المعتمدة على الحزم (beam-based methods)، مثل beam-search. يقبل القيم التالية: True، حيث يتوقف التوليد بمجرد وجود num_beams مرشحين مكتملين؛ False، حيث يُطبَّق معيار تقريبي (heuristic) ويتوقف التوليد عندما يصبح من غير المرجح جدًا العثور على مرشحين أفضل؛ "never"، حيث لا تتوقف عملية البحث بالحزم إلا عندما لا يمكن وجود مرشحين أفضل (خوارزمية البحث بالحزم القياسية).
  • max_time (float, اختياري) — الحد الأقصى للوقت المسموح به لتنفيذ العملية بالثواني. سيُكمل التوليد المرور الحالي بعد انقضاء الوقت المخصص.
  • stop_strings (str أو list[str]، اختياري) — نص أو قائمة نصوص يجب أن تُنهي عملية التوليد إذا أخرجها النموذج.

المعاملات التي تتحكم في استراتيجية التوليد المستخدمة

  • do_sample (bool) — ما إذا كان سيتم استخدام العينة أم لا؛ وإلا فسيتم استخدام فك الترميز الجشع.
  • num_beams (int، اختياري) — عدد الحزم في بحث الحزم. القيمة 1 تعني عدم استخدام بحث الحزم.
  • use_mtp — (bool): ما إذا كان سيتم استخدام التنبؤ متعدد الرموز (MTP) أم لا، في حال دعم النموذج لهذه الميزة.

المعاملات التي تتحكم في ذاكرة التخزين المؤقت

  • use_cache (bool) — ما إذا كان يجب على النموذج استخدام انتباهات المفاتيح/القيم الأخيرة السابقة (إذا كان ذلك ينطبق على النموذج) لتسريع فك الترميز.
  • cache_implementation (str, اختياري) — اسم فئة الكاش التي سيتم إنشاء مثيل منها في generate, لتسريع فك الترميز. القيم الممكنة هي:

    إذا لم يُحدَّد أي شيء، سنستخدم ذاكرة التخزين المؤقت الافتراضية للنموذج (والتي غالباً ما تكون DynamicCache). راجع توثيق ذاكرة التخزين المؤقت لدينا لمزيد من المعلومات.

  • cache_config (dict، اختياري، القيمة الافتراضية None) — يمكن تمرير الحُجج المستخدمة في فئة ذاكرة التخزين المؤقت للمفاتيح والقيم عبر cache_config.
  • max_cache_len (int, اختياري) — يُستخدم فقط مع ذاكات التخزين الثابتة (عند ضبط cache_implementation على "static" أو "offloaded_static"). يحدد حجم ذاكرة التخزين مسبقًا على هذا الطول بدلاً من max_length الخاص بالاستدعاء الحالي. اضبطه مرة واحدة على أكبر استدعاء تتوقعه، بحيث تعيد استدعاءات generate() المتكررة التي تتضمن موجهًا أطول أو قيمة أكبر لـ max_new_tokens (حتى هذا الحد الأقصى) استخدام نفس ذاكرة التخزين بدلاً من تحفيز إعادة تخصيص وإعادة تجميع torch.compile.

معاملات لتلاعب في قيم اللوجيتات الناتجة عن النموذج

  • temperature (float، اختياري) — القيمة المستخدمة لتعديل احتمالات الرمز التالي. يتم تعيين هذه القيمة في ملف generation_config.json الخاص بالنموذج. إذا لم يتم تعيينها، فإن القيمة الافتراضية هي 1.0
  • top_k (int, اختياري) — عدد رموز المفردات ذات أعلى احتمالات التي يجب الاحتفاظ بها لتصفية top-k. يتم تعيين هذه القيمة في ملف generation_config.json الخاص بالنموذج. إذا لم يتم تعيينها، فإن القيمة الافتراضية هي 50.
  • top_p (float، اختياري) — إذا تم ضبطه على قيمة float < 1، فسيتم الاحتفاظ فقط بأصغر مجموعة من الرموز الأكثر احتمالاً التي تضاف احتمالاتها لتساوي top_p أو أعلى، وذلك لتوليد النص. يتم ضبط هذه القيمة في ملف generation_config.json الخاص بالنموذج. إذا لم يتم ضبطها، فإن القيمة الافتراضية هي 1.0
  • min_p (float, اختياري) — أدنى احتمال للرمز، والذي يُضرب في احتمال الرمز الأكثر احتمالاً. يجب أن يكون قيمة بين 0 و 1. القيم النموذجية تقع في نطاق 0.01-0.2، وهي انتقائية بمقدار يقارب ضبط top_p في نطاق 0.99-0.8 (استخدم القيم المعاكسة لقيم top_p المعتادة).
  • top_h (float, اختياري) — عامل تحجيم ميزانية الإنتروبيا، الذي يتحكم في مقدار إنتروبيا التوزيع الذي يُحافظ عليه عند أخذ العينات. يجب أن تكون القيمة بين 0 و 1. في كل خطوة، تُرتَّب الرموز حسب الاحتمال، ويُحتفظ بأصغر بادئة من الرموز تكون إنتروبياها المعاد تطبيعها أقل من أو تساوي top_h مضروبًا في إنتروبيا التوزيع الكامل. تؤدي القيم الأصغر (مثل 0.2–0.5) إلى مخرجات أكثر تركيزًا وحتمية، بينما تسمح القيم الأقرب إلى 1.0 بمزيد من العشوائية والتنوع. القيم النموذجية تقع في نطاق 0.3–0.6.
  • typical_p (float, اختياري) — تقيس المحلية النموذجية مدى تشابه الاحتمال الشرطي للتنبؤ بالرمز المستهدف التالي مع الاحتمال الشرطي المتوقع للتنبؤ برمز عشوائي تالٍ، بالنظر إلى النص الجزئي الذي تم توليده بالفعل. إذا تم ضبطه على قيمة float < 1، فسيتم الاحتفاظ بأصغر مجموعة من الرموز الأكثر محلية نموذجية التي تضاف احتمالاتها لتساوي typical_p أو أعلى، وذلك للتوليد. راجع هذا الورقة لمزيد من التفاصيل.
  • epsilon_cutoff (float، اختياري) — إذا تم ضبطه على قيمة float تقع بصرامة بين 0 و 1، فسيتم أخذ عينات فقط من الرموز التي تتجاوز احتمالية الشرط epsilon_cutoff. في الورقة البحثية، تتراوح القيم المقترحة بين 3e-4 و 9e-4، اعتمادًا على حجم النموذج. راجع Truncation Sampling as Language Model Desmoothing لمزيد من التفاصيل.
  • eta_cutoff (float, اختياري) — تُعدّ عيّنة إيتا (Eta) هجينة بين العيّنة المحلية النموذجية والعيّنة إبسيلون. إذا تم ضبطها على قيمة float تقع بصرامة بين 0 و1، فإن الرمز يُعتبر فقط إذا كان أكبر من eta_cutoff أو sqrt(eta_cutoff) * exp(-entropy(softmax(next_token_logits))). الحدّ الثاني هو الحدّ المتوقع لاحتمالية الرمز التالي، مُقيَّسًا بواسطة sqrt(eta_cutoff). في الورقة البحثية، تتراوح القيم المقترحة بين 3e-4 و2e-3، بحسب حجم النموذج. راجع Truncation Sampling as Language Model Desmoothing لمزيد من التفاصيل.
  • repetition_penalty (float، اختياري) — معامل عقوبة التكرار. القيمة 1.0 تعني عدم وجود عقوبة. راجع هذا الورق لمزيد من التفاصيل.
  • encoder_repetition_penalty (float, اختياري) — المعامل الخاص بـ encoder_repetition_penalty. عقوبة أُسّية على التسلسلات التي لا توجد في المدخلات الأصلية. القيمة 1.0 تعني عدم وجود عقوبة.
  • length_penalty (float, اختياري) — عقوبة أُسّية على الطول تُستخدم مع التوليد القائم على الحزم (beam-based generation). تُطبَّق هذه العقوبة كقوة أُسّية على طول التسلسل، والذي يُستخدم بدوره لقسم درجة التسلسل. وبما أن الدرجة هي الاحتمال اللوغاريتمي للتسلسل (أي أنها سالبة)، فإن length_penalty > 0.0 يشجّع على تسلسلات أطول، بينما length_penalty < 0.0 يشجّع على تسلسلات أقصر.
  • no_repeat_ngram_size (int, اختياري) — إذا تم تعيينه إلى int > 0، فلا يمكن أن تظهر جميع ngrams بهذا الحجم إلا مرة واحدة.
  • bad_words_ids (list[list[int]]، اختياري) — قائمة من قوائم معرّفات الرموز التي لا يُسمح بتوليدها. راجع NoBadWordsLogitsProcessor للحصول على مزيد من التوثيق والأمثلة.
  • renormalize_logits (bool) — ما إذا كان يجب إعادة تطبيع القيم اللوجستية (logits) بعد تطبيق جميع معالجات القيم اللوجستية (بما في ذلك المخصصة). يُوصى بشدة بتعيين هذا العلم إلى True لأن خوارزميات البحث تفترض أن القيم اللوجستية للنتائج مُطبَّعة، لكن بعض معالجات القيم اللوجستية تُخرق هذا التطبيع.
  • forced_bos_token_id (int، اختياري، القيمة الافتراضية هي model.config.forced_bos_token_id) — المعرّف الخاص بالرمز الذي يجب إجباره ليكون الرمز الأول المُولَّد بعد decoder_start_token_id. مفيد في النماذج متعددة اللغات مثل mBART حيث يجب أن يكون الرمز الأول المُولَّد هو رمز لغة الهدف.
  • forced_eos_token_id (int or list[int], *optional*, defaults to model.config.forced_eos_token_id) -- The id of the token to force as the last generated token when max_length` is reached. Optionally, use a list to set multiple end-of-sequence tokens.
  • remove_invalid_values (bool) — ما إذا كان يجب إزالة قيم nan وinf المحتملة الناتجة عن النموذج لمنع طريقة التوليد من التعطّل. يُرجى ملاحظة أنّ استخدام remove_invalid_values قد يُبطئ عملية التوليد.
  • exponential_decay_length_penalty (tuple(int, float)، اختياري) — تضيف هذه المجموعة (Tuple) عقوبة طول متزايدة أُسّياً بعد توليد عدد معين من الرموز. يجب أن تتكون المجموعة من: (start_index, decay_factor) حيث يشير start_index إلى نقطة بدء العقوبة، ويمثل decay_factor معامل الاضمحلال الأُسّي.
  • suppress_tokens (list[int]، اختياري) — قائمة من الرموز التي سيتم كبتها أثناء التوليد. سيقوم معالج الاحتمالات SuppressTokens بإعداد احتمالاتها اللوغاريتمية إلى -inf بحيث لا يتم اختيارها.
  • begin_suppress_tokens (list[int]، اختياري) — قائمة برموز سيتم كبتها في بداية التوليد. سيقوم معالج اللوجيت SuppressBeginTokens بإعداد احتمالات اللوج الخاصة بها إلى -inf حتى لا يتم اختيارها.
  • sequence_bias (dict[tuple[int], float], اختياري) — قاموس يربط تسلسلًا من الرموز (tokens) بحده الانحياز (bias term). تزيد الانحيازات الموجبة من احتمالية اختيار التسلسل، بينما تفعل الانحيازات السالبة العكس. راجع SequenceBiasLogitsProcessor للحصول على مزيد من التوثيق والأمثلة.
  • token_healing (bool) — إصلاح الرموز النهائية للموجّهات عن طريق استبدالها بامتداداتها المناسبة. يعزز هذا جودة الإكمالات للموجّهات المتأثرة بتحيز الترميز الجشع.
  • guidance_scale (float، اختياري) — مقياس التوجيه للتوجيه الحر من التصنيف (CFG). يتم تفعيل CFG عن طريق تعيين guidance_scale > 1. تشجيع مقياس توجيه أعلى يدفع النموذج إلى توليد عينات أكثر ارتباطًا بالموجّه المُدخل، وعادةً على حساب جودة أدنى.
  • watermarking_config (BaseWatermarkingConfig أو dict، اختياري) — الحجج المستخدمة لإضافة علامة مائية إلى مخرجات النموذج عن طريق إضافة انحياز صغير إلى مجموعة عشوائية محددة من الرموز "الخضراء". راجع توثيق SynthIDTextWatermarkingConfig وWatermarkingConfig لمزيد من التفاصيل. إذا تم تمريره على شكل Dict، فسيتم تحويله داخليًا إلى WatermarkingConfig.

المعاملات التي تُعرّف متغيرات الإخراج الخاصة بـ generate

  • num_return_sequences (int, اختياري) — عدد التسلسلات المستقلة المحسوبة والمُعاد إرجاعها لكل عنصر في الدفعة.
  • output_attentions (bool) — ما إذا كان يجب إرجاع تينسورات الانتباه لطبقات الانتباه جميعها أم لا. راجع attentions ضمن التينسورات المُرجعة لمزيد من التفاصيل.
  • output_hidden_states (bool) — ما إذا كان يجب إرجاع حالات الإخفاء (hidden states) لجميع الطبقات. راجع hidden_states ضمن الموترات المُرجعة لمزيد من التفاصيل.
  • output_scores (bool) — ما إذا كان يجب إرجاع درجات التنبؤ أم لا. راجع scores ضمن الموترات المُرجعة لمزيد من التفاصيل.
  • output_logits (bool) — ما إذا كان يجب إرجاع درجات التنبؤ اللوجستية (logit) غير المعالجة أم لا. راجع logits ضمن المصفوفات المُرجعة لمزيد من التفاصيل.
  • return_dict_in_generate (bool) — ما إذا كان يجب إرجاع ModelOutput أم إرجاع التسلسل المولَّد فقط. يجب ضبط هذا العلم على True لإرجاع ذاكرة التخزين المؤقت للتوليد (عندما يكون use_cache هو True) أو المخرجات الاختيارية (انظر الأعلام التي تبدأ بـoutput_)

رموز خاصة يمكن استخدامها أثناء التوليد

  • pad_token_id (int, اختياري) — المعرّف الخاص برموز الحشو.
  • bos_token_id (int, اختياري) — المعرّف الخاص برمz بداية التسلسل.
  • eos_token_id (Union[int, list[int]], اختياري) — المعرّف الخاص برموز نهاية التسلسل. يمكن اختيارياً استخدام قائمة لتحديد عدة رموز نهاية التسلسل.

معاملات التوليد الحصرية لنماذج المُشفِّر-المُفكِّك

  • encoder_no_repeat_ngram_size (int, اختياري) — إذا تم تعيينه إلى int > 0، فلا يمكن أن تظهر جميع ngrams من ذلك الحجم التي توجد في encoder_input_ids في decoder_input_ids.
  • decoder_start_token_id (int أو list[int]، اختياري) — إذا بدأ نموذج المُشفِّر-المُفكِّك عملية فك التشفير برمز مختلف عن bos، فيُستخدم معرّف ذلك الرمز أو قائمة بطول batch_size. يُتيح استخدام قائمة تحديد معرّفات بداية مختلفة لكل عنصر في الدفعة (مثلًا، النماذج متعددة اللغات التي تحتوي على لغات هدف مختلفة في دفعة واحدة)

معاملات التوليد الحصرية لتوليد المساعد

  • is_assistant (bool) — ما إذا كان النموذج نموذجًا مساعدًا (مسودة).
  • num_assistant_tokens (int, اختياري) — يحدد عدد الرموز التخمينية التي يجب أن يولدها نموذج المساعد قبل أن يفحصها النموذج المستهدف في كل تكرار. تزيد القيم الأعلى لـ num_assistant_tokens من التخمينية في عملية التوليد: إذا كان نموذج المساعد ذا أداء عالٍ، يمكن تحقيق تسارعات أكبر، أما إذا احتاج نموذج المساعد إلى تصحيحات كثيرة، فإن التسارعات المحققة ستكون أقل.
  • num_assistant_tokens_schedule (str, اختياري) — يحدد الجدول الزمني لتغيير الحد الأقصى لعدد رموز المساعد أثناء الاستدلال.
    • "heuristic": عندما تكون جميع الرموز التخمينية صحيحة، يُزاد num_assistant_tokens بمقدار 2، وإلا يُنقص بمقدار 1. قيمة num_assistant_tokens تبقى ثابتة عبر عدة استدعاءات للتوليد باستخدام نفس نموذج المساعد.
    • "heuristic_transient": مماثل لـ "heuristic" لكن num_assistant_tokens يُعاد ضبطه إلى قيمته الأولية بعد كل استدعاء للتوليد.
    • "constant": يبقى num_assistant_tokens دون تغيير أثناء التوليد
  • assistant_confidence_threshold (float، اختياري) — حد الثقة لنموذج المساعد. إذا كانت ثقة نموذج المساعد في توقعه للرمز الحالي أقل من هذا الحد، يتوقف نموذج المساعد عن تكرار توليد الرمز الحالي، حتى لو لم يتم بعد الوصول إلى عدد الرموز التخمينية (المعرّف بواسطة num_assistant_tokens). يتم ضبط حد ثقة المساعد على مدار التكرارات التخمينية لتقليل عدد عمليات المرور الأمامي غير الضرورية للمسودة والهدف، مع ميل لتجنب السلبات الخاطئة. قيمة assistant_confidence_threshold دائمة عبر عدة استدعاءات للتوليد باستخدام نفس نموذج المساعد. إنه نسخة غير مُشرَفة من الاستباق الديناميكي للنظر إلى الأمام من Dynamic Speculation Lookahead Accelerates Speculative Decoding of Large Language Models https://huggingface.co/papers/2405.04304.
  • prompt_lookup_num_tokens (int، اختياري) — عدد الرموز التي سيتم إخراجها كرموز مرشحة.
  • max_matching_ngram_size (int، اختياري) — أقصى حجم لـ ngram يُؤخذ في الاعتبار عند المطابقة في الاستدعاء. القيمة الافتراضية هي 2 إذا لم يُحدد.
  • assistant_early_exit(int, optional) — إذا تم تعيينه إلى عدد صحيح موجب، فسيتم استخدام الخروج المبكر للنموذج كمساعد. يمكن استخدامه فقط مع النماذج التي تدعم الخروج المبكر (أي النماذج التي يمكن تفسير logits من الطبقات الوسيطة بواسطة رأس LM).
  • assistant_lookbehind(int, اختياري) — إذا تم تعيينه إلى عدد صحيح موجب، فإن عملية إعادة الترميز ستأخذ في الاعتبار أيضًا آخر assistant_lookbehind من رموز المساعد لمحاذاة الرموز بشكل صحيح. يمكن استخدامه فقط مع مُرمّزات مختلفة في فك التشفير التخميني. راجع هذا المدونة لمزيد من التفاصيل.
  • target_lookbehind(int, اختياري) — إذا تم تعيينه إلى عدد صحيح موجب، فإن عملية الترميز التكراري ستأخذ في الاعتبار أيضًا آخر target_lookbehind من رموز الهدف لمحاذاة الرموز بشكل صحيح. لا يمكن استخدامه إلا مع مُرمّزات مختلفة في فك التشفير التخميني. راجع هذا المدونة لمزيد من التفاصيل.
  • assistant_ensemble_weight (float, اختياري) — يُفعّل التحقق من التجميع الثابت في فك التشفير التخميني. إذا تم تعيينه إلى قيمة ضمن (0.0, 1.0)، يقبل المُتحقِّق الرموز مقابل الخليط w * p_target + (1 - w) * q_draft بدلاً من p_target، مما يقدّم انحيازاً توزيعياً مُتحكَّماً فيه مقابل معدل قبول أعلى. القيمة الافتراضية هي None، مما يحافظ على فك التشفير دون فقدان. يتطلب أن تُعيد نموذج المساعد القيم اللوغاريتمية (logits)، لذا فهو غير متوافق مع فك التشفير عبر البحث في الاستدعاء (prompt lookup decoding).
  • speculation_type (str، اختياري) — نوع التخمين المطلوب. القيم المقبولة هي dflash.

المعاملات المتعلقة بالأداء والتجميع

  • compile_config (CompileConfig، اختياري) — عند استخدام ذاكرة تخزين مؤقتة قابلة للتجميع، يتحكم هذا في كيفية قيام generate بتجميع compile المرور الأمامي للحصول على استدلال أسرع.
  • disable_compile (bool) — ما إذا كان سيتم تعطيل التجميع التلقائي لمرور الأمامي. يحدث التجميع التلقائي عند استيفاء معايير محددة، بما في ذلك استخدام ذاكرة تخزين مؤقت قابلة للتجميع. يرجى فتح مشكلة إذا وجدتَ حاجةً لاستخدام هذا العلم.

فئة تحتوي على إعدادات لمهمة توليد. يدعم استدعاء generate طرق التوليد التالية للنماذج التي تعمل على فك ترميز النص، والنص إلى نص، والكلام إلى نص، والرؤية إلى نص:

  • فك الترميز الجشع إذا كان num_beams=1 وdo_sample=False
  • العينة متعددة الحدود إذا كان num_beams=1 وdo_sample=True
  • فك الترميز بالبحث الحزمي إذا كان num_beams>1 وdo_sample=False
  • عينة متعددة الحدود البحث الحزمي إذا كان num_beams>1 وdo_sample=True
  • التفكيك بمساعدة إذا تم تمرير assistant_model أو prompt_lookup_num_tokens إلى .generate()

للاطلاع على مزيد من المعلومات حول استراتيجيات فك الترميز، يُرجى الرجوع إلى دليل استراتيجيات توليد النص.

تتحكم مجموعة كبيرة من هذه الأعلام في القيم الأولية (logits) أو معايير التوقف للتوليد. تأكد من الاطلاع على الفئات المتعلقة بالتوليد للحصول على وصف كامل للتعديلات الممكنة، وكذلك أمثلة على استخدامها.

ملاحظة: ستتم تجاوز حقول الإعدادات التي لا تزال None بواسطة GenerationConfig._get_default_generation_params() أثناء حلقة التوليد. إذا كنت ترغب في استخدام قيم مختلفة لهذه الحقول، فتأكد من تعيينها صراحةً في إعدادات التوليد.

from_pretrained

< >

( pretrained_model_name: str | os.PathLikeconfig_file_name: str | os.PathLike | None = Nonecache_dir: str | os.PathLike | None = Noneforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'**kwargs ) → GenerationConfig

المعاملات

  • pretrained_model_name (str أو os.PathLike) — يمكن أن يكون هذا:
    • سلسلة نصية، وهي معرّف النموذج لإعدادات نموذج مُدرَّب مسبقًا مستضاف داخل مستودع نموذج على huggingface.co.
    • مسار إلى مجلد يحتوي على ملف إعدادات تم حفظه باستخدام طريقة save_pretrained()، على سبيل المثال ./my_model_directory/.
  • config_file_name (str أو os.PathLike، اختياري، القيمة الافتراضية "generation_config.json") — اسم ملف تكوين التوليد بصيغة JSON الذي سيتم تحميله من pretrained_model_name.
  • cache_dir (str أو os.PathLike، اختياري) — المسار إلى مجلد يجب تخزين إعدادات النموذج المسبق التدريب المُحمّل فيه مؤقتًا إذا لم يُستخدم المجلد المؤقت القياسي.
  • force_download (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب إجبار إعادة تنزيل ملفات الإعدادات وتجاوز النسخ المخزنة مؤقتاً في حال وجودها.
  • proxies (dict[str, str], اختياري) — قاموس لخوادم الوكيل (proxy) للاستخدام حسب البروتوكول أو نقطة النهاية، على سبيل المثال {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. تُستخدم هذه الوكلاء في كل طلب.
  • token (str أو bool، اختياري) — الرمز الذي يُستخدم كتفويض حامل HTTP للملفات البعيدة. إذا كان True، أو لم يُحدد، فسيتم استخدام الرمز الذي تم إنشاؤه عند تشغيل hf auth login (المخزَّن في ~/.huggingface).
  • revision (str, اختياري, الافتراضي هو "main") — إصدار النموذج المحدد الذي سيتم استخدامه. يمكن أن يكون اسم فرع، أو اسم وسم، أو معرف التزامن (commit id)، حيث نستخدم نظامًا قائمًا على git لتخزين النماذج والموارد الأخرى على huggingface.co، لذا revision يمكن أن يكون أي معرّف يسمح به git.

    لاختبار طلب سحب قمت بإنشائه على Hub، يمكنك تمرير revision="refs/pr/<pr_number>".

  • return_unused_kwargs (bool, اختياري, الافتراضي هو False) — إذا كان False, فإن هذه الدالة تُرجع كائن الإعداد النهائي فقط. إذا كان True، فإن هذه الدالة تُرجع Tuple(config, unused_kwargs) حيث unused_kwargs هو قاموس يتكون من أزواج المفاتيح والقيم التي مفاتيحها ليست من سمات الإعداد: أي الجزء من kwargs الذي لم يُستخدم لتحديث config ويُتجاهل في الحالات الأخرى.

    إذا كانت True، فإن هذه الدالة تُرجع Tuple(config, unused_kwargs) حيث unused_kwargs هو قاموس يتكوّن من أزواج المفاتيح والقيم التي لا تُعدّ مفاتيحها من سمات الإعداد: أي الجزء من kwargs الذي لم يُستخدم لتحديث config ويُتجاهل في حالته الأخرى.

  • subfolder (str، اختياري، الافتراضي "") — في حال كانت الملفات ذات الصلة موجودة داخل مجلد فرعي من مستودع النموذج على huggingface.co، يمكنك تحديد اسم المجلد هنا.
  • kwargs (dict[str, Any]، اختياري) — تُستخدم القيم الموجودة في kwargs لأي مفاتيح تكون من سمات الإعداد لتجاوز القيم المحمّلة. يتم التحكم في السلوك المتعلق بالأزواج المفتاح/قيمة التي مفاتيحها ليست من سمات الإعداد بواسطة معامل الكلمة المفتاحية return_unused_kwargs.

كائن الإعداد المُستخدَم من هذا النموذج المُسبق التدريب.

أنشئ كائن GenerationConfig من ملف إعدادات التوليد.

أمثلة:

>>> from transformers import GenerationConfig

>>> # Download configuration from huggingface.co and cache.
>>> generation_config = GenerationConfig.from_pretrained("openai-community/gpt2")

>>> # E.g. config was saved using *save_pretrained('./test/saved_model/')*
>>> generation_config.save_pretrained("./test/saved_model/")
>>> generation_config = GenerationConfig.from_pretrained("./test/saved_model/")

>>> # You can also specify configuration names to your generation configuration file
>>> generation_config.save_pretrained("./test/saved_model/", config_file_name="my_configuration.json")
>>> generation_config = GenerationConfig.from_pretrained("./test/saved_model/", "my_configuration.json")

>>> # If you'd like to try a minor variation to an existing configuration, you can also pass generation
>>> # arguments to `.from_pretrained()`. Be mindful that typos and unused arguments will be ignored
>>> generation_config, unused_kwargs = GenerationConfig.from_pretrained(
...     "openai-community/gpt2", top_k=1, foo=False, do_sample=True, return_unused_kwargs=True
... )
>>> generation_config.top_k
1

>>> unused_kwargs
{'foo': False}

from_model_config

< >

( model_config: typing.Union[ForwardRef('PreTrainedConfig'), dict] ) → GenerationConfig

المعاملات

  • model_config (PreTrainedConfig | dict) — إعدادات النموذج التي ستُستخدم لإنشاء إعدادات التوليد.

كائن الإعداد المُستخدَم من تلك المعاملات.

يُحدِث كائن GenerationConfig من PreTrainedConfig. تُعد هذه الدالة مفيدة لتحويل كائنات PreTrainedConfig القديمة، التي قد تحتوي على معاملات توليد، إلى GenerationConfig مستقل.

save_pretrained

< >

( save_directory: str | os.PathLikeconfig_file_name: str | os.PathLike | None = Nonepush_to_hub: bool = False**kwargs )

المعاملات

  • save_directory (str أو os.PathLike) — المجلد الذي سيتم حفظ ملف الإعدادات بصيغة JSON فيه (سيتم إنشاؤه إذا لم يكن موجودًا).
  • config_file_name (str أو os.PathLike، اختياري، القيمة الافتراضية "generation_config.json") — اسم ملف JSON الخاص بإعدادات التوليد الذي سيتم حفظه في save_directory.
  • push_to_hub (bool، اختياري، الافتراضي False) — ما إذا كان سيتم دفع نموذجك إلى مركز نماذج Hugging Face بعد حفظه. يمكنك تحديد المستودع الذي تريد الدفع إليه باستخدام repo_id (سيكون الافتراضي هو اسم save_directory في نطاقك).
  • kwargs (dict[str, Any]، اختياري) — حجج إضافية بأسماء تُمرَّر إلى طريقة push_to_hub().

احفظ كائن إعدادات التوليد في المجلد save_directory حتى يمكن إعادة تحميله باستخدام طريقة الفئة from_pretrained().

تحديث

< >

( defaults_only = Falseallow_custom_entries = False**kwargs ) → dict[str, Any]

المعاملات

  • defaults_only (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم تحديث جميع المفاتيح في الإعدادات باستخدام kwargs أم فقط تلك التي قيمتها None (أي القيمة الافتراضية).
  • allow_custom_entries (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يُسمح بتحديث إدخالات مخصصة في الإعدادات باستخدام kwargs إذا لم تكن موجودة في الإعدادات الحالية.
  • kwargs (dict[str, Any]) — قاموس من السمات لتحديث هذا الصنف بشكل مؤقت.

يعيد

dict[str, Any]

قاموس يحتوي على جميع أزواج المفتاح والقيمة التي لم تُستخدم لتحديث الكائن.

تحديث خصائص هذا المثال من الفئة بخصائص من kwargs إذا كانت مطابقة لخصائص موجودة، مع إرجاع جميع خصائص kwargs غير المستخدمة.

validate

< >

( strict = Falseuser_set_attributes: set[str] | None = None )

المعاملات

  • strict (bool) — إذا كانت القيمة True، فسيتم رفع استثناء لأي مشكلة يتم العثور عليها. أما إذا كانت False، فسيتم تسجيل المشكلات فقط.
  • user_set_attributes (set[str], اختياري) — أسماء السمات التي حددها المستدعي صراحةً. عند توفيرها، لا تُطلق تحذيرات «المشكلة البسيطة» المتعلقة بتعارضات تركيبات الأعلام (مثل ضبط أعلام خاصة بالتعيّن فقط بينما do_sample=False) إلا إذا كان العلم المتعارض ضمن هذا المجموع — وذلك لتجنّب تحذيرات مزعجة عندما تكون القيمة موروثة من ملف generation_config.json الافتراضي للنموذج. عند أن تكون None، تُعتبر جميع السمات المضبوطة محددةً من قِبل المستخدم (سلوك متوافق مع الإصدارات السابقة لاستدعاءات validate() المباشرة).

يتحقق من قيم سمات كائن GenerationConfig. يرمي استثناءات في حال وجود تهيئة معلمات يمكن اكتشافها على أنها غير صحيحة من كائن الإعداد وحده.

لاحظ أن بعض المعاملات التي لا يتم التحقق منها هنا يُفضَّل التحقق منها في وقت التشغيل عند التوليد، إذ قد تعتمد على مدخلات أخرى و/أو على النموذج، مثل المعاملات المتعلقة بطول التوليد.

get_generation_mode

< >

( assistant_model: typing.Optional[ForwardRef('PreTrainedModel')] = None ) → GenerationMode

المعاملات

  • assistant_model (PreTrainedModel، اختياري) — نموذج المساعد الذي سيُستخدم للتوليد المُساعَد. إذا تم تعيينه، فسيكون وضع التوليد هو التوليد المُساعَد.

يعيد

GenerationMode

وضع التوليد الذي يُفعَّل بواسطة الكائن.

يعيد وضع التوليد الذي يُفعَّل بواسطة كائن GenerationConfig.

GenerationMixin

فئة transformers.GenerationMixin

< >

( )

فئة تحتوي على جميع الدوال الخاصة بتوليد النص التلقائي (auto-regressive)، وتُستخدم كخلطة (mixin) في فئات النماذج. الوراثة من هذه الفئة تمنح النموذج سلوكًا خاصًا يتعلق بالتوليد، مثل تحميل GenerationConfig عند وقت التهيئة، أو التأكد من تشغيل الاختبارات المتعلقة بـgenerate في بيئة transformers CI.

يجب أن ترث فئة النموذج من GenerationMixin لتفعيل استدعاء طرق مثل generate، أو عندما تكون قد عرّفت طريقة generate مخصصة تعتمد على GenerationMixin بشكل مباشر أو غير مباشر، والتي تشترك تقريبًا في نفس الواجهة مع طرق عامة مثل generate. ثلاثة أمثلة:

  • يجب أن يرث LlamaForCausalLM من GenerationMixin لتفعيل استدعاء generate وغيرها من الطرق العامة في المخلوطة؛
  • يتميز BlipForQuestionAnswering بطريقة generate مخصصة تشترك تقريبًا في نفس الواجهة مع GenerationMixin.generate (فإنها تحتوي على بعض الحُجج الإضافية، وتُنتج نفس المخرجات). كما تستدعي تلك الدالة GenerationMixin.generate بشكل غير مباشر، من خلال نموذج داخلي. وعليه، ينبغي أن يرث BlipForQuestionAnswering من GenerationMixin للاستفادة من جميع أتمتة المهام المتعلقة بالتوليد في قاعدة أكوادنا؛
  • يتميز BarkModel بطريقة generate مخصصة، ويستدعي أحد نماذجه الداخلية GenerationMixin.generate. ومع ذلك، لا تشارك طريقة generate الخاصة به نفس الواجهة التي تشاركها GenerationMixin.generate. في هذه الحالة، يجب ألا يرث BarkModel من GenerationMixin، لأن ذلك يكسر واجهة generate.

تُعرّض الفئة generate()، والتي يمكن استخدامها لـ:

  • فك الترميز الجشع إذا كان num_beams=1 وdo_sample=False
  • العينة متعددة الحدود إذا كان num_beams=1 وdo_sample=True
  • فك الترميز بالبحث الحزمي إذا كان num_beams>1 وdo_sample=False
  • عينة متعددة الحدود البحث الحزمي إذا كان num_beams>1 وdo_sample=True
  • التفكيك بمساعدة إذا تم تمرير assistant_model أو prompt_lookup_num_tokens إلى .generate()

للاطلاع على مزيد من المعلومات حول استراتيجيات فك الترميز، يُرجى الرجوع إلى دليل استراتيجيات توليد النص.

generate

< >

( inputs: typing.Optional[torch.Tensor] = Nonegeneration_config: transformers.generation.configuration_utils.GenerationConfig | None = Nonelogits_processor: transformers.generation.logits_process.LogitsProcessorList | None = Nonestopping_criteria: transformers.generation.stopping_criteria.StoppingCriteriaList | None = Noneprefix_allowed_tokens_fn: collections.abc.Callable[[int, torch.Tensor], list[int]] | None = Nonesynced_gpus: bool | None = Noneassistant_model: typing.Optional[ForwardRef('PreTrainedModel')] = Nonestreamer: typing.Optional[ForwardRef('BaseStreamer')] = Nonenegative_prompt_ids: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Nonecustom_generate: str | collections.abc.Callable | None = None**kwargs ) → ModelOutput or torch.LongTensor

المعاملات

  • inputs (torch.Tensor بأشكال متغيرة حسب النمط، اختياري) — التسلسل المستخدم كموجّه للتوليد أو كمدخلات للنموذج إلى المُشفِّر. إذا كانت None فسيُهيّئ الدالة هذا التسلسل باستخدام bos_token_id وحجم دفعة يساوي 1. بالنسبة لنماذج المُفكِّك فقط، يجب أن تكون inputs بصيغة input_ids. أما بالنسبة لنماذج المُشفِّر-المُفكِّك، فيمكن أن يمثل inputs أيّاً من input_ids أو input_values أو input_features أو pixel_values.
  • generation_config (GenerationConfig, اختياري) — إعدادات التوليد التي تُستخدم كإعدادات أساسية لاستدعاء التوليد. أي **kwargs مرر إلى generate تطابق سمات generation_config ستُلغي قيمها. إذا لم يُقدَّم generation_config، فسيُستخدم الإعداد الافتراضي، الذي له أولوية تحميل كالتالي: 1) من ملف النموذج generation_config.json، إن وُجد؛ 2) من إعدادات النموذج. يُرجى ملاحظة أن المعاملات غير المحددة ستورث القيم الافتراضية لـ GenerationConfig، والتي يجب الرجوع إلى توثيقها لتهيئة التوليد.
  • logits_processor (LogitsProcessorList، اختياري) — معالجات logits مخصصة تكمل المعالجات الافتراضية المبنية من المعاملات وإعدادات التوليد. إذا تم تمرير معالج logits تم إنشاؤه مسبقًا باستخدام المعاملات أو إعدادات التوليد، فسيتم طرح خطأ. هذه الميزة مخصصة للمستخدمين المتقدمين.
  • stopping_criteria (StoppingCriteriaList، اختياري) — معايير إيقاف مخصصة تكمل معايير الإيقاف الافتراضية المبنية من الحجج وإعدادات التوليد. إذا تم تمرير معيار إيقاف تم إنشاؤه مسبقًا باستخدام الحجج أو إعدادات التوليد، فسيتم طرح خطأ. إذا كان معيار الإيقاف الخاص بك يعتمد على مدخل scores، فتأكد من تمرير return_dict_in_generate=True, output_scores=True إلى generate. هذه الميزة مخصصة للمستخدمين المتقدمين.
  • prefix_allowed_tokens_fn (Callable[[int, torch.Tensor], list[int]]، اختياري) — إذا تم توفيره، فإن هذه الدالة تُقيّد بحث الحزمة (beam search) على الرموز المسموح بها فقط في كل خطوة. إذا لم يُوفَّر، فلا يُطبَّق أي قيد. تستقبل هذه الدالة حجتين: معرّف الدفعة batch_id و input_ids. يجب أن تُرجع قائمة بالرموز المسموح بها لخطوة التوليد التالية، مشروطةً بمعرّف الدفعة batch_id والرموز المولَّدة سابقًا inputs_ids. يُعدّ هذا الحُجّة مفيدًا للتوليد المقيد المشروط على البادئة، كما هو موصوف في Autoregressive Entity Retrieval.
  • synced_gpus (bool, اختياري) — ما إذا كان يجب مواصلة تشغيل حلقة while حتى max_length. ما لم يتم تجاوز هذا العلم، فسيتم تعيينه إلى True عند استخدام FullyShardedDataParallel أو DeepSpeed ZeRO Stage 3 مع عدة وحدات معالجة رسومية لتجنب التعطّل إذا انتهت وحدة معالجة رسومية واحدة من التوليد قبل وحدات المعالجة الرسومية الأخرى. وإلا، فالقيمة الافتراضية هي False.
  • assistant_model (PreTrainedModel، اختياري) — نموذج مساعد يمكن استخدامه لتسريع عملية التوليد. يجب أن يكون لدى النموذج المساعد نفس المرمّز (tokenizer) تمامًا. يتحقق التسريع عندما يكون التنبؤ بالرموز المرشحة باستخدام النموذج المساعد أسرع بكثير من تشغيل التوليد باستخدام النموذج الذي تستدعي منه generate. وعليه، يجب أن يكون النموذج المساعد أصغر بكثير.
  • streamer (BaseStreamer، اختياري) — كائن Streamer الذي سيُستخدم لبثّ التسلسلات المولّدة. يتم تمرير الرموز المولّدة عبر streamer.put(token_ids)، ويتحمّل الـ streamer مسؤولية أي معالجة إضافية.
  • negative_prompt_ids (torch.LongTensor من الشكل (batch_size, sequence_length)، اختياري) — الموجّه السلبي المطلوب لبعض المعالجات مثل CFG. يجب أن يتطابق حجم الدفعة مع حجم دفعة الإدخال. هذه ميزة تجريبية، وقد تخضع لتغييرات كاسرة في واجهة برمجة التطبيقات في الإصدارات المستقبلية.
  • negative_prompt_attention_mask (torch.LongTensor of shape (batch_size, sequence_length), اختياري) — Attention_mask الخاص بـ negative_prompt_ids.
  • custom_generate (str أو Callable, اختياري) — أحد ما يلي:
    • str (اسم مستودع Hugging Face Hub): يشغّل دالة generate المخصصة المعرّفة في custom_generate/generate.py داخل ذلك المستودع بدلاً من طريقة generate القياسية. يستبدل المستودع منطق التوليد بالكامل، وقد يختلف نوع الإرجاع.
    • str (مسار المستودع المحلي): نفس ما سبق لكن من مسار محلي. كما تتطلب المجلدات المحلية trust_remote_code=True لأن custom_generate/generate.py المحلي يُنفَّذ.
    • Callable: سيقوم generate بتنفيذ خطوات إعداد المدخلات المعتادة، ثم استدعاء الدالة القابلة للاستدعاء المُقدَّمة لتشغيل حلقة فك الترميز. لمزيد من المعلومات، راجع التوثيق.
  • kwargs (dict[str, Any], اختياري) — تحديد معلمات بشكل مؤقت لـ generation_config و/أو معلمات إضافية خاصة بالنموذج سيتم تحويلها إلى دالة forward الخاصة بالنموذج. إذا كان النموذج من نوع المُشفِّر-المُفكِّك (encoder-decoder)، فيجب عدم إضافة بادئة للمعلمات الخاصة بالمُشفِّر، بينما يجب إضافة بادئة decoder_ للمعلمات الخاصة بالمُفكِّك.

يعيد

ModelOutput أو torch.LongTensor

ModelOutput (إذا كان return_dict_in_generate=True أو عندما يكون config.return_dict_in_generate=True) أو torch.LongTensor.

إذا لم يكن النموذج نموذجاً من نوع المُشفِّر-المُفكِّك (model.config.is_encoder_decoder=False)، فإن أنواع ModelOutput الممكنة هي:

إذا كان النموذج من نوع مُشفِّر-مُفكِّك (encoder-decoder) (model.config.is_encoder_decoder=True)، فإن أنواع ModelOutput الممكنة هي:

يولّد تسلسلات من معرّفات الرموز (token ids) للنماذج التي تحتوي على رأس لنمذجة اللغة.

تُضبط معظم المعلمات التي تتحكم في التوليد في generation_config، والتي إذا لم تُمرَّر، فسيتم ضبطها على إعدادات التوليد الافتراضية للنموذج. يمكنك تجاوز أي generation_config عن طريق تمرير المعلمات المقابلة إلى generate()، على سبيل المثال .generate(inputs, num_beams=4, do_sample=True).

لمراجعة عامة لاستراتيجيات التوليد وأمثلة الأكواد، راجع الدليل التالي.

compute_transition_scores

< >

( sequences: Tensorscores: tuplebeam_indices: typing.Optional[torch.Tensor] = Nonenormalize_logits: bool = False ) → torch.Tensor

المعاملات

  • sequences (torch.LongTensor) — التسلسلات المولّدة. يكون البُعد الثاني (sequence_length) مساوياً لـmax_length أو أقصر منه إذا انتهت جميع الدفعات مبكراً بسبب eos_token_id.
  • scores (tuple(torch.Tensor)) — درجات الانتقال لكل رمز في قاموس اللغة في كل خطوة من خطوات التوليد. تتكون درجات الانتقال في الحزمة (Beam) من احتمالات السجلات (log probabilities) للرموز المشروطة على لوج سوفتماكس (log softmax) للرموز المولدة سابقًا في هذه الحزمة. مجموعة (Tuple) من torch.Tensor تحتوي على ما يصل إلى max_new_tokens عنصرًا (عنصر واحد لكل رمز مولّد)، حيث يكون شكل كل متجه (batch_size*num_beams, config.vocab_size).
  • beam_indices (torch.LongTensor، اختياري) — فهارس الحزم (Beam indices) لمعرّف الرمز المولّد في كل خطوة من خطوات التوليد. torch.LongTensor من الشكل (batch_size*num_return_sequences, sequence_length). مطلوب فقط إذا كان num_beams>1 في وقت التوليد.
  • normalize_logits (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب تطبيع القيم اللوجستية (logits) (والتي قد تكون غير مطبّعة لأسباب تتعلق بالتوافق مع الإصدارات القديمة).

يعيد

torch.Tensor

A torch.Tensor of shape (batch_size*num_return_sequences, sequence_length) containing the transition scores (logits)

يحسب درجات الانتقال للترتيبات المعطاة درجات التوليد (ومؤشرات الحزمة إذا تم استخدام بحث الحزمة). هذه طريقة مريحة للحصول بسرعة على درجات الرموز المختارة أثناء التوليد.

أمثلة:

>>> from transformers import GPT2Tokenizer, AutoModelForCausalLM
>>> import numpy as np

>>> tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
>>> model = AutoModelForCausalLM.from_pretrained("openai-community/gpt2")
>>> tokenizer.pad_token_id = tokenizer.eos_token_id
>>> inputs = tokenizer(["Today is"], return_tensors="pt")

>>> # Example 1: Print the scores for each token generated with Greedy Search
>>> outputs = model.generate(**inputs, max_new_tokens=5, return_dict_in_generate=True, output_scores=True)
>>> transition_scores = model.compute_transition_scores(
...     outputs.sequences, outputs.scores, normalize_logits=True
... )
>>> # input_length is the length of the input prompt for decoder-only models, like the GPT family, and 1 for
>>> # encoder-decoder models, like BART or T5.
>>> input_length = 1 if model.config.is_encoder_decoder else inputs.input_ids.shape[1]
>>> generated_tokens = outputs.sequences[:, input_length:]
>>> for tok, score in zip(generated_tokens[0], transition_scores[0]):
...     # | token | token string | log probability | probability
...     print(f"| {tok:5d} | {tokenizer.decode(tok):8s} | {score.numpy():.3f} | {np.exp(score.numpy()):.2%}")
|   262 |  the     | -1.414 | 24.33%
|  1110 |  day     | -2.609 | 7.36%
|   618 |  when    | -2.010 | 13.40%
|   356 |  we      | -1.859 | 15.58%
|   460 |  can     | -2.508 | 8.14%

>>> # Example 2: Reconstruct the sequence scores from Beam Search
>>> outputs = model.generate(
...     **inputs,
...     max_new_tokens=5,
...     num_beams=4,
...     num_return_sequences=4,
...     return_dict_in_generate=True,
...     output_scores=True,
... )
>>> transition_scores = model.compute_transition_scores(
...     outputs.sequences, outputs.scores, outputs.beam_indices, normalize_logits=False
... )
>>> # If you sum the generated tokens' scores and apply the length penalty, you'll get the sequence scores.
>>> # Tip 1: recomputing the scores is only guaranteed to match with `normalize_logits=False`. Depending on the
>>> # use case, you might want to recompute it with `normalize_logits=True`.
>>> # Tip 2: the output length does NOT include the input length
>>> output_length = np.sum(transition_scores.numpy() < 0, axis=1)
>>> length_penalty = model.generation_config.length_penalty
>>> reconstructed_scores = transition_scores.sum(axis=1) / (output_length**length_penalty)
>>> print(np.allclose(outputs.sequences_scores, reconstructed_scores))
True

ContinuousMixin

فئة transformers.ContinuousMixin

< >

( )

فئة مزيج (Mixin) للنماذج لإضافة قدرات الدفع المستمر (Continuous Batching). يحتوي الدفع المستمر على ثلاث نقاط دخول:

  • init_continuous_batching، وهو نقطة الدخول الفعلية للتجميع المستمر
  • continuous_batching_context_manager، وهو نفسه غلاف حول init_continuous_batching
  • generate_batch، وهو في الواقع غلاف حول continuous_batching_context_manager

يُعرَّفون بهذا الترتيب. يجب أن يُعكس أي تغيير يُجرى على أيٍّ من نقاط الدخول الثلاث في النقطتين الأخريين.

continuous_batching_context_manager

< >

( generation_config: transformers.generation.configuration_utils.GenerationConfig | None = Noneblock: bool = Truetimeout: float | None = Nonecontinuous_batching_config: transformers.generation.configuration_utils.ContinuousBatchingConfig | None = Nonepersistent_manager: bool = Falsewarmup: bool = Trueworkload_hints: transformers.generation.continuous_batching.utils.WorkloadHints | None = None )

مدير سياق لاستخدام مدير الدفع المستمر بأمان. تتشابه الحجج مع تلك الخاصة بـ init_continuous_batching باستثناء:

  • block: ما إذا كان يجب منع الخيط (thread) عند إيقاف المدير. القيمة الافتراضية هي True.
  • timeout: الحد الأقصى للوقت الذي يجب انتظاره حتى يتوقف الخيط. القيمة الافتراضية هي None (بدون مهلة زمنية).
  • warmup: ما إذا كان يجب التقاط رسوميات CUDA مسبقاً عند أكبر الأحجام قبل التشغيل. القيمة الافتراضية هي True.

destroy_cached_continuous_batching_manager

< >

( )

تدمير مدير الدفع المستمر المخزّن مؤقتاً وتحرير موارد وحدة معالجة الرسوميات.

generate_batch

< >

( inputs: listgeneration_config: transformers.generation.configuration_utils.GenerationConfig | None = Nonecontinuous_batching_config: transformers.generation.configuration_utils.ContinuousBatchingConfig | None = Nonerecord_timestamps: bool = Falseprogress_bar: bool = Falsepersistent_manager: bool = Falsewarmup: bool = True**kwargs ) → dict[str, GenerationOutput]

المعاملات

  • inputs — قائمة تسلسلات الرموز المدخلة (الموجّهات)
  • generation_config — تكوين توليد اختياري
  • continuous_batching_config — تكوين اختيارية للتجميع المستمر
  • record_timestamps — إذا تم ضبطه على true، فستحتوي الطلبات على طابع زمني لكل رمز يتم توليده
  • progress_bar — إذا تم ضبطه على true، فسيتم عرض شريط تقدم
  • persistent_manager — ما إذا كان يجب الإبقاء على المُدير بعد انتهاء التوليد. القيمة الافتراضية هي False.
  • warmup — ما إذا كان يجب التقاط رسوميات CUDA مسبقًا قبل معالجة الطلبات. القيمة الافتراضية هي True.

يعيد

dict[str, GenerationOutput]

قاموس من معرّفات الطلبات إلى كائنات GenerationOutput

أنشئ تسلسلات لدفعة من الأوامر باستخدام الدفع المستمر.

init_continuous_batching

< >

( generation_config: transformers.generation.configuration_utils.GenerationConfig | None = Nonecontinuous_batching_config: transformers.generation.configuration_utils.ContinuousBatchingConfig | None = Noneworkload_hints: transformers.generation.continuous_batching.utils.WorkloadHints | None = None ) → ContinuousBatchingManager

المعاملات

  • generation_config — تكوين توليد اختياري، قد يحتوي على كائن CompileConfig
  • continuous_batching_config — تكوين اختياري للتجميع المستمر
  • workload_hints — WorkloadHints اختيارية لمساعدة مدير الدفع المستمر (continuous batching) على اتخاذ قرارات أفضل للقيم الافتراضية

يعيد

ContinuousBatchingManager

مثيل المدير لإضافة الطلبات واسترجاع النتائج.

قم بتهيئة مدير للاستدلال مع الدفع المستمر.

ContinuousBatchingManager

فئة transformers.ContinuousBatchingManager

< >

( model: ProtoPretrainedModelgeneration_config: GenerationConfigcontinuous_batching_config: ContinuousBatchingConfigworkload_hints: transformers.generation.continuous_batching.utils.WorkloadHints | None = None )

مديرٌ للتعامل مع الدفع المستمر لطلبات التوليد. يوفر واجهة مستخدم لتقديم طلبات التوليد، واستخراج النتائج، وإدارة خيط التوليد في الخلفية. يجب ألا يتم إنشاء هذا الصنف مباشرةً، بل من خلال أحد نقاط الدخول التالية (جميعها طرق من مزيج ContinuousMixin):

  • init_continuous_batching
  • continuous_batching_context_manager
  • generate_batch

add_request

< >

( input_ids: listrequest_id: str | None = Nonemax_new_tokens: int | None = Nonestreaming: bool = Falserecord_timestamps: bool = Falseeos_token_id: int | list[int] | None = None**logit_processor_kwargs: Any ) → str | None

المعاملات

  • input_ids — معرّفات الرموز المدخلة التي تُستخدم كموجّه
  • request_id — معرّف طلب مخصص اختياري (يتم توليده تلقائيًا إذا كان فارغًا)
  • max_new_tokens — الحد الأقصى لعدد الرموز الجديدة التي سيتم توليدها
  • streaming — ما إذا كان سيتم بث الرموز أثناء توليدها
  • record_timestamps — ما إذا كان سيتم تسجيل الطوابع الزمنية لكل رمز مُولَّد
  • eos_token_id — معرفات رمز نهاية التسلسل
  • logit_processor_kwargs — معاملات الكلمات المفتاحية لمعالج القيم الاحتمالية (logits).

يعيد

str | None

معرّف الطلب إذا كان العملية سائق TP، وإلا فهي None.

أضف طلب توليد جديدًا إلى قائمة الانتظار. إذا لم يكن العملية سائق TP، فإن هذا إجراء لا شيء.

add_requests

< >

( inputs: listmax_new_tokens: int | None = Nonestreaming: bool = Falserecord_timestamps: bool = False**logit_processor_kwargs: Any )

دالة مساعدة لتجميع add_request وإرجاع معرّفاتها. راجع توثيقها لمزيد من التفاصيل.

cancel_request

< >

( request_id: str )

إلغاء طلب معرّفه ID. إذا تم استدعاء هذه العملية من عملية ليست سائق TP، فإنها لا تؤدي أي إجراء: فعمليات سائق TP فقط هي التي تتفاعل مع المدير.

destroy

< >

( )

أنهِ المدير وأطلق الموارد الموزعة. يُعدّ استدعاء هذه الدالة عدة مرات آمناً. بعد استدعائها، لا يمكن إعادة تشغيل المدير.

get_result

< >

( request_id: str | None = Nonetimeout: float | None = None )

استرجاع نتيجة واحدة من طابور المخرجات. إذا تم توفير معرّف، تُرجع أول طلب مطابق. إذا تم توفير مهلة زمنية، تُرجع None بعد انتهاء المهلة (بالثواني).

is_running

< >

( )

يعيد True إذا كان خيط توليد الخلفية قد بدأ وما زال نشطًا.

join

< >

( stop_trigger_time: floattimeout: float | None = None )

انتظر حتى ينتهي الخيط في الخلفية. يمكن تحديد حد أقصى لـ Wait باستخدام معامل timeout (بالثواني).

إيقاف مؤقت

< >

( )

مدير سياق يوقف حلقة التوليد، مما يتيح للخييط المستدعي استخدام النموذج، وعادةً لتحديثه في مكانه. لا يدخل الخيط هذا السياق إلا بعد إيقاف الحلقة مؤقتاً، وتُستأنف الحلقة عند الخروج منه، مع الحفاظ على ذاكرتها المؤقتة وطلباتها الجارية: لا يتم تصريف أي شيء ولا تُفقد أي طلب. قد يحتفظ عدة خيوط بإيقاف الحلقة في الوقت نفسه، وتُستأنف الحلقة بمجرد خروج آخر خيط. إذا كان TP مفعلاً، فيجب على جميع الرتب الدخول إلى هذا السياق، وإلا ستعلق الرتب الأخرى إلى الأبد.

register_result_handler

< >

( request_id: strcallback: Callable )

المعاملات

  • request_id (str) — معرّف الطلب لاستلام المخرجات الخاصة به.
  • callback (callable) — تُستدعى مع GenerationOutput لكل نتيجة.

سجّل مستدعٍ (callback) لتسليم النتائج (بثّ متواصل أو غير متواصل).

يتم استدعاء مُعيد الاستدعاء (callback) عبر حلقة الأحداث (event loop) بواسطة call_soon_threadsafe في كل مرة يُنتج فيها نتيجة لهذا الطلب. ففي حالات الطلبات التدفّقية (streaming)، يحدث ذلك عند كل رمز (token)؛ أما في الطلبات غير التدفّقية، فيحدث فقط عند اكتمال الطلب. كما يتم تنظيف المُعالِج (handler) تلقائياً عند انتهاء الطلب.

request_id_iter

< >

( request_id: str )

التكرار على النتائج المطابقة لـ request id معيّن (حجب).

يستخدم طابور المخرجات المشترك مع إعادة الطابور. لخدمة عالية التوازي، استخدم register_result_handler بدلاً من ذلك.

بدء

< >

( )

ابدأ خيط توليد الخلفية.

إيقاف

< >

( block: bool = Truetimeout: float | None = Nonekeep_for_next_session: bool = Falsehard_stop: bool = False )

أوقف خيط التوليد في الخلفية. إذا تم تعيين علم block إلى True، فإن هذه الطريقة تنتظر توقف الخيط لمدة قصوى تبلغ timeout ثانية (حيث يعني None عدم وجود مهلة زمنية). إذا تم تعيين علم keep_for_next_session إلى True، يتم تخزين المدير مؤقتًا على النموذج للاستخدام في المستقبل. إذا تم تعيين علم hard_stop، فسيتم إيقاف خيط التوليد في الخلفية فورًا وستفشل الطلبات المعلقة.

switch_to_cb_friendly_attn

< >

( model: ProtoPretrainedModelauto_switch_to_flash: bool = True )

بدّل تنفيذ attn إلى تنفيذ متوافق مع CB. إذا كان auto_switch_to_flash بقيمة True، وكان تنفيذ attn هو SDPA أو eager، فبدّل أيضاً إلى flash إذا كان مدعوماً ومتوفراً.

الإحماء

< >

( )

التقاط مسارات CUDA graphs مسبقًا لمسارات varlen و decode من خلال تشغيل دفعات وهمية. يقوم بمعالج الدفعة (batch processor) إذا لم يتم ذلك بعد.

المجدول

فئة transformers.generation.Scheduler

< >

( cache: PagedAttentionCachesafety_margin: floatmax_requests_per_batch: int )

فئة أساسية مجردة لجدولة الطلبات في معالج الدفعات المستمر. تُدير مجدولات دورة حياة الطلبات من لحظة إضافتها إلى قائمة الانتظار حتى لحظة جدولتها للمعالجة. تنفّذ المجدولات المختلفة استراتيجيات مختلفة لأولوية الطلبات وتجميعها في دفعات.

add_waiting_request

< >

( state: RequestState )

يضيف طلباً إلى قائمة الانتظار.

clear_cancelled_requests

< >

( )

إزالة جميع الطلبات الملغاة من طوابير النشطة والانتظار.

finish_request

< >

( request_id: str )

تُكمل معالجة الطلب وتُحرر كتل ذاكرة التخزين المؤقت المخصصة له. يُستدعى هذا الأسلوب عندما ينتهي الطلب من التوليد أو عندما يواجه خطأً.

get_active_request_static_outputs

< >

( request_id: str )

يحصل على الرموز المولّدة لطلب نشط.

has_pending_requests

< >

( )

يتحقق مما إذا كانت هناك طلبات جاهزة للمعالجة.

request_is_cancelled

< >

( request_id: str )

يتحقق مما إذا كان الطلب قد أُلغي أو حُذف.

إعادة تعيين

< >

( )

إعادة تعيين حالة المجدول (scheduler) لحلقة توليد جديدة.

schedule_batch

< >

( token_budget: intcache_budget: int )

يُجدول الطلبات للدفعة التالية بناءً على ميزانيات الرموز والذاكرة المؤقتة المتاحة. تختار هذه الطريقة الطلبات التي يجب معالجتها في الدفعة الحالية، مع مراعاة الميزانيات وقواعد أولوية الجدولة. حيث يمثل token_budget الحد الأقصى لعدد الرموز التي يمكن معالجتها في دفعة واحدة، ويمثل cache_budget الحد الأقصى لعدد إدخالات ذاكرة KV التي يمكن قراءتها في دفعة واحدة. تُرجع قائمة الطلبات المجدولة بصيغة FutureRequestState، وقيمة منطقية تشير إلى ما إذا كان يمكن استخدام مسار فك الترميز السريع، والعدد الإجمالي لرموز الاستعلام، والحد الأقصى لعدد رموز kv التي تم قراءتها.

set_request_cancellation

< >

( request_id: str )

يشير إلى طلب للإلغاء.

FIFOScheduler

فئة transformers.generation.FIFOScheduler

< >

( cache: PagedAttentionCachesafety_margin: float | Nonemax_requests_per_batch: int )

يعالج هذا المجدول الطلبات بالترتيب الذي تصل به، مما يعني أن طلبات فك الترميز لها الأولوية على طلبات التمهيد.

PrefillFirstScheduler

فئة transformers.generation.PrefillFirstScheduler

< >

( cache: PagedAttentionCachesafety_margin: float | Nonemax_requests_per_batch: int )

جدول أولويات يعطي الأولوية لطلبات التمهيد المقسّم على طلبات فك الترميز. يضمن هذا الجدول إكمال طلبات التمهيد المقسّم (وهي استمرارات للموجّهات التي تمّ معالجتها جزئيًا) قبل معالجة طلبات فك الترميز الجديدة.

Update on GitHub